Какой самый эффективный способ настроить многоязычный сайт? - PullRequest
1 голос
/ 24 марта 2010

Я разрабатываю веб-сайт, который будет доступен на разных языках. Это настройка LAMP (Linux, Apache, MySQL, PHP), и она использует Smarty, в основном для механизма шаблонов.
В настоящее время мы переводим с помощью написанного самим плагином smarty, который распознает определенные теги в файлах HTML и найдет соответствующий тег в ранее определенном языковом файле.

HTML-код может выглядеть следующим образом:

<p>Hi, welcome to $#gamedesc;!</p>

И языковой файл может выглядеть так:

gamedesc:Poing 2009$;
welcome:this is another tag$;

Что бы потом вывести

<p>Hi, welcome to Poing 2009!</p>


Эта система очень проста, но ее довольно сложно контролировать, если я, например. хотел бы отслеживать то, что уже было переведено, или предоставить определенным пользователям права на перевод только определенных тегов.
Я искал альтернативные способы подойти к этому, либо заменив текстовый файл XML-файлами, которые могли бы хранить некоторые дополнительные метаданные, либо, возможно, сохранив весь текст в базе данных, и получив его там. /> Мой вопрос заключается в том, что было бы лучшим способом сделать эту систему и обслуживаемой, и работоспособной при высоком пользовательском трафике? Есть ли какие-нибудь (легковесные) плагины, на которые я мог бы взглянуть?

Ответы [ 5 ]

3 голосов
/ 24 марта 2010

Вы можете выстрелить в gettext . Это так, как это делается в большинстве приложений C / C ++ linux, и это тоже расширение для PHP. Идея не очень отличается от того, что вы уже делаете, но есть инструменты, которые облегчают управление переводами (т. Е. poedit ).

Для прав пользователей на перевод gettext не сильно поможет, я думаю, вам нужно будет сделать это самостоятельно или взглянуть на некоторые фреймворки, если у них есть более разумные решения.

3 голосов
/ 24 марта 2010

Может быть, взглянуть на gettext lib поможет вам получить подсказки http://php.net/manual/en/book.gettext.php надеюсь, это поможет!

1 голос
/ 04 апреля 2010

в нашем проекте, http://pkp.sfu.ca/ojs, мы используем файлы XML для хранения пар ключ-значение перевода. Просмотрите наш код: http://github.com/pkp/pkp-lib/blob/master/classes/i18n/PKPLocale.inc.php

Мы используем этот класс для чтения файлов XML для каждой локали, а в нашем коде мы используем Locale :: translate ('locale.key.name') ;. Аналогично gettext, но для облегчения обновления используется файл XML.

1 голос
/ 24 марта 2010

Вам потребуется таблица в вашей базе данных, которую вы можете использовать для хранения строк текста, каждая из которых имеет составной идентификатор. составной идентификатор будет состоять из идентификатора языка и идентификатора текстового узла.

Вам нужно будет дать пользователю возможность выбрать предпочитаемый язык. Вы должны убедиться, что у вас либо есть «по умолчанию не переведенный» язык для каждого используемого вами языка, либо язык по умолчанию, на котором может быть использован весь ваш сайт.

Для каждого фрагмента текста на вашем веб-сайте, а не для сохранения текста на странице, вы просто назначаете ему идентификатор.

При обслуживании страницы найдите идентификатор текстового узла и идентификатор предпочитаемого языка и загрузите эту строку текста или строку по умолчанию.

0 голосов
/ 24 марта 2010

Сегодня, глядя на веб-материал, я наткнулся на этот сайт: http://translateth.is/

Это выглядит просто в использовании ... скопировать вставить в некоторый JavaScript.

...