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