Вопрос локализации PHP - PullRequest
       18

Вопрос локализации PHP

5 голосов
/ 27 января 2010

Я создаю продукт с открытым исходным кодом и думаю о локализации, я читал о gettext , но, похоже, существует много проблем, чтобы заставить его работать в разных системах (серверах, ОС и т.д.).

Как бы вы справились с этим? Есть ли безопасный способ помочь gettext работать на нескольких системах? Возможно, это уже есть?

С уважением, из Швеции / Тобиас

Ответы [ 3 ]

6 голосов
/ 27 января 2010

Я рекомендую вам взглянуть на Zend_translate , Zend_locale и Zend_Date . Я только начинаю с ними баловаться, но для меня они уже выглядят как действительно хорошее, чистое и современное решение интернационализации, в отличие от хаоса gettext.

Во введении к Zend_translate перечислен ряд веских аргументов, почему стоит выбрать его (или что-то подобное) вместо gettext.

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

Несовместимый API: единого API для другого источника не существует форматы. Использование gettext для пример очень сложный.

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

Нет определения языка по умолчанию: язык по умолчанию пользователь не может быть обнаружен без более глубокого знание предпосылок для разные веб-браузеры.

Gettext не является поточно-ориентированным: PHP-библиотека gettext не является поточной безопасно, и это не должно использоваться в многопоточная среда. Это до к проблемам с самим gettext, а не PHP, но это существующая проблема.

3 голосов
/ 27 января 2010

Zend Framework Zend_Translate является наиболее гибким из того, что я видел. Ему не обязательно нужен модуль поддержки gettext на стороне PHP, поскольку он читает сам формат .mo-binary.

0 голосов
/ 27 января 2010

Языковые блоки должны храниться вне программы. Они могут быть в базе данных или в файлах XML. Это позволит добавить другие языки в более поздний момент времени.

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

...