PHP - перевод всего сайта на несколько языков [дубликат]

Я думаю, что это может быть возможной причиной. В java-файле может быть только один открытый класс, потому что имя java-файла совпадает с именем открытого класса. И, очевидно, мы не можем иметь файл с двумя разными именами.

5
задан user2075899 11 March 2013 в 16:45
поделиться

2 ответа

Локализация сложна. Это действительно сложно. Это не просто "pairs of words" => "Wortpaare", это намного сложнее. Большинство людей забывают, когда они смотрят на gettext и идут «Ух, уродливый» в том, что процесс локализации намного важнее технических деталей реализации. Это потому, что фактические переводчики, как правило, не являются программистами и, вероятно, даже не являются собственными. Это вызывает гораздо больше головных болей, чем вы думаете. gettext действительно старенький, протестирован в битве и имеет за собой огромную инструментальную цепочку, настроенную для поддержки этого процесса. Если вы хотите правильно работать с i18n и l10n, вам нужна мощная система. gettext - это то, что имеет поддержку из широкого спектра инструментов. [*]

В первую очередь вам нужна надежная система для переводимых строк extract . Не имея возможности автоматически и воспроизводимо извлекать переводимые строки из исходного кода, у вас есть гора работы для каждой новой строки, которую вы хотите перевести. В gettext, xgettext делает это.

Затем вам понадобится инструмент для синхронизации извлеченных строк с уже существующими переводами таким образом, чтобы переводы не были потеряны и что, если это возможно, сохраняются только слегка измененные переводы. В gettext это делает msgmerge.

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

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

Не стоит недооценивать задачу локализации, выбирать инструмент, который хорошо подходит для процесса и учиться Это. gettext - отличный инструмент, если, по общему признанию, не самый дружелюбный для новичков.

Для чего это стоит мое расширение gettext для Twig , что делает gettext для PHP еще лучше.

14
ответ дан deceze 15 August 2018 в 18:17
поделиться
  • 1
    Отличный ответ - благодарю вас за то, что вы указали небольшие проблемы, которые возникают с помощью доморощенного решения. В то время как пользовательское решение будет работать первоначально для большинства, поскольку проект растет по сложности / количеству поддерживаемых языков, похоже, что пользовательское решение в конечном итоге будет отменено в пользу полной реализации gettext. – rinogo 8 July 2015 в 20:02

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

2
ответ дан Fluitketel 15 August 2018 в 18:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: