Каковы хорошие инструменты / фреймворки для i18n кодовой базы php?
-
03-07-2019 - |
Вопрос
Я рассмотрел несколько вариантов включения локализации и интернационализации динамического php-приложения.По-видимому, доступно множество инструментов, таких как gettext и R3 от Yahoo, и мне интересно услышать как от разработчиков, так и от переводчиков о том, какие инструменты хороши в использовании и какая функциональность важна для облегчения задачи внедрения и перевода.
Решение
Реализация PHP gettext работает очень плавно.И po-файлы с po edit и gettext - это примерно тот же хороший способ, которым вы можете справиться с локализацией, принимая во внимание, что ни одно решение такого рода не может полностью справиться со сложностями различных языков.Например, метод gettext очень хорош для форм множественного числа, но ничто из того, что я видел, не может справиться с такими вещами, как спряжение.
Для получения дополнительной информации смотрите мой пост здесь: Как вы создаете многоязычный веб-сайт?
Другие советы
Мы тут повозились сZend_Translate ( Зенд_трансляция ), поскольку мы все равно используем Zend Framework.Это очень хорошо задокументировано и пока что чрезвычайно достоверно.
В прошлом я в значительной степени пользовался своим собственным выращенный в домашних условиях в основном, решение.Который включает в себя языковые файлы с константами или переменными, которые содержат все текстовые части и позже просто повторяются в представлении / шаблоне.
Что касается gettext, в прошлом я слышал ссылки на то, что реализация gettext в PHP была ошибочной, но я не могу подтвердить это, и у меня нет никаких ссылок прямо сейчас.
В pecl есть ряд полезных расширений:http://pecl.php.net/packages.php?catpid=28&catname=Internationalization
В частности, вы можете захотеть ознакомиться с php-intl, который предоставляет большинство ключевых функций i18n из международных компонентов для Unicode (ICU)
решение для отображения сообщений, основанное на базе данных, не всегда является хорошим, я работал на сайте с более чем 15 языками, и перевод был проблемой.
таким образом, наш дизайн был:
- приложение для перевода на php-mysql (доступ к переводу и т.д.)
- затем переводы пишутся на php arrrays
- эти массивы также кэшируются в APC для ускорения работы сайта.
итак, чтобы локализовать разные языки, вам нужно всего лишь включить
Нравится
<?php
include('lang/en.php');
include('lang/en_us.php'); // this file overrides few keys from the last one.
?>
Xataface может быть использован для довольно простой интернационализации произвольного приложения PHP / MySQL.Он поддерживает перевод как вашего статического текста, так и данных вашей базы данных.Все, что вам нужно сделать, это добавить строку или 2 кода в пару мест вашего приложения, и все готово.
http://xataface.com/documentation/tutorial/internationalization-with-dataface-0.6