PHP gettext возвращает ввод как результат в Homestead
В проекте нашей компании мы используем gettext для перевода текста. Это работает уже несколько лет, но сейчас я пытаюсь запустить проект в Homestead, все работает отлично, кроме gettext. Когда использовать например gettext('input_string')
это возвращается input_string
, На нашем сервере и в MAMP все работает нормально. В чем может быть проблема? Я запускаю проект на Apache и PHP 7.0 (так же, как сервер и MAMP)
Домен для локалей связан так:
bindtextdomain('projectname', APPLICATION_PATH. DIRECTORY_SEPARATOR . 'locale');
textdomain('projectname');
bind_textdomain_codeset('projectname', 'UTF-8');
Путь в домене bindtext правильный. Структура файла:
- locale
- en_US
- LC_MESSAGES
- projectname.mo
- projectname.po
- fr_FR
- LC_MESSAGES
- projectname.mo
- projectname.po
- nl_NL
- LC_MESSAGES
- projectname.mo
- projectname.po
- pt_PT
- LC_MESSAGES
- projectname.mo
- projectname.po
2 ответа
Локаль не была установлена на усадьбе. Исправлено с помощью sudo locale-gen nl_NL
Должно работать из коробки после установки. Вы перезапустили Apache? Попробуйте сначала перезапустить sudo apache2ctl или перезапустить sudo service apache2 на консоли терминала. Если оба не работают в вашей системе, попробуйте sudo /etc/init.d/apache2 restart.
Проверьте, существует ли файл /etc/php/7.0/apache2/conf.d/20-gettext.ini (или аналогичный путь в вашей системе), содержащий строку
extension=gettext.so
Не должно быть точки с запятой, иначе это будет закомментировано. В некоторых установках эта строка также может быть сконфигурирована в базовом конфигурационном файле php /etc/php/php/7.0/php.ini, однако способ производного debian состоит в использовании дополнительных файлов в папке conf.d.
Вы можете включить модули PHP (например, gettext) в командной строке
sudo phpenmod -v 7.0 gettext
Если это не работает, отредактируйте конфигурацию вручную.
Наконец, перезапустите службу Apache, как описано выше.
Проверьте также, работает ли Apache ожидаемой версии PHP 7.0 со следующей строкой на вашей странице PHP
echo phpversion();
Вы можете включить / отключить модули Apache2 из нескольких установленных версий PHP в командной строке
sudo a2dismod php5
sudo a2enmod php7.0
sudo apache2ctl restart