Gettext работает с перебоями
Мне удалось успешно включить интернационализацию и тег {% trans %} в ветке, используя следующие строки:
$language = "...";
$domain = "project";
putenv("LC_MESSAGES=$language");
setlocale(LC_MESSAGES, $language);
bindtextdomain($domain, SITE_DIR . "locale");
textdomain($domain);
bind_textdomain_codeset($domain, "UTF-8");
И веточка шаблона:
...
{% trans "Translation.Key" %}
...
К сожалению, это работает случайно. Я имею в виду, что, хотя я продолжаю нажимать F5, скажем, каждую секунду или переходить между страницами, иногда он переключается на переведенную строку, как и должно ("Translation.Key" становится "Локализованным значением для вывода"), а иногда возвращается к вывод строки в теге {% trans %} ("Translation.Key").
Пока что я не вижу ошибок в своих журналах. Что я должен проверить, чтобы понять источник проблемы и заставить его работать последовательно?
Заранее спасибо.
3 ответа
В моем случае проблема решается путем перезапуска Apache (или php5-fpm, когда я использую nginx на удаленном сервере) каждый раз, когда я изменяю файлы переводов. В противном случае gettext работает с ошибками, как описано в вопросе.
Лично это пришло с php-fpm. Перезапуск Apache ничего не сделал.
Чтобы перезапустить php-fpm на centos7:
systemctl restart php-fpm
Для других ОС, пожалуйста, проверьте эту ссылку, чтобы перезапустить php-fpm: https://serverfault.com/questions/189940/how-do-you-restart-php-fpm