Я рекомендую использовать gettext
, я делаю это в PHP в течение 5 лет с хорошими результатами.
Прежде всего, если вы используете echo _('my text to translate')
и не имеете перевода для него, вы увидите исходную строку в выводе, что хорошо. Используя массивы типа echo $translation['were is my translation']
и их нет, вы просто ничего не увидите. но будьте осторожны, использование poedit и выполнение echo _('');
не очень хорошая идея, poedit использует msgid ""
для информации о проекте, которую, скорее всего, вы не хотите показывать своей аудитории, поэтому нужно позаботиться о том, чтобы не пытаться перевести пустые строки:)
Кроме того, это очень быстро и имеет некоторые дополнительные функции для множественного числа и тому подобного, также poedit, например, облегчает жизнь благодаря наличию БД перевода, поэтому вы не должны переводить одно и то же снова и снова, те, что вы уже делали, будут предварительно заполнены и помечены как «проверьте, правильно ли». Очень удобно.
theby middus отметил недостаток, что вам нужно скомпилировать po-файл, в то время как вы можете легко перезаписать php-файл при использовании массивов - хорошо, вы просто перезаписываете свой mo-файл, и если вы используете poedit, он выполняет компиляцию после сохранения файла , Таким образом, вы нажимаете сохранить и скопировать файл, как при редактировании php-файла.
Но реальный недостаток, если вы используете mod_php
. Имейте в виду, что с mod_php
это не потокобезопасно, хотя у меня никогда не было трудных проблем.
В основном вам просто нужно перезапустить ваш Apache при использовании mod_php, иначе ваши gettext
вызовы не будут выполнены (иногда переводы не возвращаются, иногда вы получаете любимую белую страницу без содержимого). Но используя что-то вроде mod_itk (я считаю, что cgi / fastcgi может сделать это), у вас даже не возникнет этой проблемы.