Локализуйте существующее PHP-приложение - PullRequest
0 голосов
/ 12 июля 2011

У меня есть существующее PHP-приложение, управляемое базой данных, где около 40 страниц печатают неизвестное (но довольно большое) количество английских строк. Строки в настоящее время все жестко закодированы. Существует также набор статических страниц документации. Теперь мне нужно добавить языковую поддержку для этого приложения.

Насколько я могу судить, gettext кажется стандартным решением этой проблемы, но gettext для меня очень напоминает "хак". Я также не уверен в дополнительных затратах (как при разработке, так и во время выполнения), которые это вызовет. Существуют ли другие решения или структуры, которые могли бы лучше соответствовать моим требованиям? Какие-нибудь лучшие практики или подводные камни, о которых я должен знать, начиная этот проект?

1 Ответ

2 голосов
/ 12 июля 2011

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

В конце концов, вам нужен способ разместить текст на языке вашего документа. Это означает «помечать» текст определенным образом, чтобы его можно было искать и заменять текстом на желаемом языке. Для сайта электронной коммерции, которым я управляю (3 языка), я использовал метод, полученный из системы тегов Facebook FBML.

Вы можете заключить текст в «теги» <trans id="slt">something like this</trans>. Затем используйте инструменты DOM в PHP для извлечения идентификатора, ищите переведенный текст на основе идентификатора, заменяйте содержимое между тегами текстом соответствующего языка. Вы все еще можете использовать gettext для своего механизма хранения или вашей базы данных. Ваш браузер будет игнорировать теги, поэтому ваша страница все равно будет хорошо выглядеть во время разработки.

Это только один пример тегирования. Вы можете использовать любой механизм тегов и использовать grep вместо того, чтобы извлекать, искать и заменять.

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

...