PHP gettext在Homestead中返回输入结果

时间:2019-01-02 14:40:32

标签: php gettext homestead po

在我们公司的一个项目中,我们使用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');

bindtextdomain中的路径正确。文件结构为:

 - 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 :(得分:1)

语言环境未安装在Homestead上。使用sudo locale-gen nl_NL

对其进行了修复

答案 1 :(得分:-1)

安装后即可使用。您是否重新启动了Apache?请先在终端控制台上尝试sudo apache2ctl restart或sudo service apache2 restart。如果两种方法都不适合您的系统,请尝试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();

您可以在命令行上从多个已安装的PHP版本启用/禁用Apache2模块

sudo a2dismod php5
sudo a2enmod php7.0
sudo apache2ctl restart