Что лучше:
Gettext – это своего рода встроенная функция, поэтому я предполагаю, что она настроена на производительность. Использование poedit – это боль и невозможно показать любому клиенту.
Пользовательская функциональность позволяет использовать простой интерфейс перевода. Но может быть тяжело использовать php / db.
Полагаю, какой из них вы бы использовали, когда?
Локализация сложна. Это действительно сложно. Это не просто "pairs of words" => "Wortpaare"
, это намного сложнее. То, что большинство людей забывает, когда они смотрят на gettext и идут «Ух, уродливо», заключается в том, что процесс локализации намного важнее технических деталей реализации. Это потому, что фактические переводчики, как правило, не являются программистами и, вероятно, даже не являются собственными. Это вызывает гораздо больше головных болей, чем вы думаете. gettext действительно старенький, протестирован в битве и имеет за собой огромную инструментальную цепочку, настроенную для поддержки этого процесса. Если вы хотите правильно работать с i18n и l10n, вам нужна мощная система. gettext – это то, что имеет поддержку из широкого спектра инструментов. У вашего Homebrewed Translation System ™ нет.
Прежде всего, вам нужна надежная система для извлечения переводимых строк. Не имея возможности автоматически и воспроизводимо извлекать переводимые строки из исходного кода, у вас есть гора работы для каждой новой строки, которую вы хотите перевести. В gettext xgettext
делает xgettext
.
Затем вам понадобится инструмент для синхронизации извлеченных строк с уже существующими переводами таким образом, чтобы никакие переводы не терялись и что, если это возможно, сохраняются только слегка измененные переводы. В gettext, msgmerge
делает это.
Затем вам нужно добавить дополнительную информацию в строки. Вы хотите иметь возможность группировать их по категориям, «домену» и контексту, вы можете добавить комментарии для переводчика к исходному коду, и вы можете захотеть, чтобы переводчики могли добавлять комментарии к переводам. gettext поддерживает все это.
Затем вам нужен формат файла, который имеет хорошую поддержку из множества инструментов, поскольку вы можете отправлять свои файлы в Китай, чтобы перевести их там. Причина, по которой вы можете отправить их внешним переводчикам, также является причиной того, что вам нужен хороший инструмент для слияния для слияния изменений, поскольку это может быть очень асинхронный процесс. Файлы PO очень хорошо поддерживаются, потому что gettext настолько стар. Существует множество открытых и коммерческих инструментов, которые поддерживают процесс локализации на многих уровнях, в зависимости от ваших конкретных потребностей.
Не стоит недооценивать задачу локализации, выбирать инструмент, который хорошо подходит для процесса и изучать его. gettext – отличный инструмент, если, по общему признанию, не самый начинающий.
Для чего это стоит, вот мое расширение gettext для Twig , которое делает gettext для PHP еще лучше.
Возможно, вам стоит заглянуть в Memcached, который вы можете использовать в сочетании с MySQL. Это очень полезно для получения данных, которые не меняются слишком часто, как переводы.