PHP gettext возвращает ввод как результат в Homestead - PullRequest
0 голосов
/ 02 января 2019

В проекте нашей компании мы используем 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');

Путь в домене bindtextdomen является правильным.Структура файла:

 - 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 ]

0 голосов
/ 10 января 2019

Локаль не была установлена ​​на усадьбе.Исправлено с помощью sudo locale-gen nl_NL

0 голосов
/ 02 января 2019

Должно работать из коробки после установки.Вы перезапустили 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.

Youможет включить модули 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
...