С веб-сайтами у вас действительно есть несколько категорий контента для локализации:
- Элементы контента типа статьи, которые вы во многих случаях будете создавать, редактировать и публиковать в CMS.
- Меньшие блоки контента, которые являются общими для каждой страницы (или подгруппы страниц), такие как слоган, реклама, текст вокруг формы контакта, но также и импортированный контент, такой как новостная лента или рекламные объявления и партнерская программа.ссылки.Некоторые из них могут отображаться только для одного языка (например, если вы не предлагаете некоторые услуги в некоторых регионах или не имеете , скажем, импортируемого контента соответствующего языка для определенного языка: онможет быть лучше удалить элемент, чем предлагать английский для людей, которые могут не говорить на нем).
- Чисто функциональные элементы, такие как «Нажмите здесь, чтобы оставить комментарий», «Еще ...», высокоуровневая навигация и т. Д., Которые иногда являются частью вашего шаблона.Некоторые из них могут быть внутри изображений.
Для 1. Основным решением является использование CMS или нет.Если да, вам обязательно нужно выбрать тот, который поддерживает несколько языков.Я не в курсе последних событий в PHP CMS, но некоторые из приложений Django CMS (Django-CMS-2, FeinCMS) поддерживают многоязычный контент.Не забывайте, например, что штампы даты также должны быть локализованы (или вы можете обойти это, выбрав даты ISO, хотя это не всегда возможно).Если вы не используете CMS, и все в ваших HTML-файлах, тогда gettext
- это путь, и вы можете хранить файлы .mo (и ваши автономные файлы .po) в папках по языкам.
Для 2. , если у вас есть CMS с хорошей многоязычной поддержкой, получите как можно больше внутри CMS.Причина в том, что эти биты меняются, и вы хотите отредактировать свой шаблон как можно меньше.Если вы пишете код самостоятельно, подумайте о способах экспорта всех строк в CMS для каждого языка, чтобы передать их переводчикам.В противном случае снова gettext
.Основная проблема заключается в том, что для этих элементов может потребоваться жестко заданный код выбора языка (if $language = X display content1 ...
)
Для 3. Если это в вашем шаблоне, используйте gettext
.Для изображений папки на языке пригодятся, и ради всего святого сделайте выбор изображений, генерация которых может быть автоматизирована, или вы (или ваш графический художник) сойдете с ума от редактирования сотен пользовательских изображений со строками на языках, которые выне понимаю.
Для 2. и 3. абстрагирование от выбора языка может помочь в выборе соответствующих блоков или каталога содержимого (где хранятся локализованные изображения или файлы .mo).
Что вы определенно хотите избежать, так это хранить кучу HTML-файлов с обширным текстовым содержимым, которое было бы кошмаром.
РЕДАКТИРОВАТЬ: все о файлах gettext, .po и .mo находится в руководстве по gettext GNU (больше, чем вы когда-либо хотели знать) или в немного устаревшем, но более дружелюбном учебном пособии .Для PHP есть функции PHP gettext , а также документация Zend Locale