PHP gettext和stream浪ubuntu运行

我在使用gettext转换运行Ubuntu的Vagrant安装程序中的一个翻译文件时出现问题。 我的区域设置文件在像这样的目录中…

locales\de_DE\LC_MESSAGES\default.po 

我相信,翻译文件是好的,因为我有一个本地版本的xampp指向完全相同的文件,它工作正常。

我已经尝试了以下,几乎只是想弄清楚发生了什么,因为我花了很长时间来研究它

  • 权限 – 我可以在网页上输出default.mo文件的内容
  • 启用“/etc/locale.gen”中的语言环境,运行“locale-gen”并重新启动apache

有什么我可能错过了?

 <?php define('LOCALES_DIR', "../locales"); if (! file_exists(LOCALES_DIR)) { exit("Locales not found from here"); } $content = file_get_contents(LOCALES_DIR . "/de_DE/LC_MESSAGES/default.mo"); if (strlen($content) < 1) { exit("File could not be read"); } $language = "de_DE.UTF-8"; putenv('LANG=' . $language); setlocale(LC_ALL, $language); $domain = "default"; bindtextdomain($domain, LOCALES_DIR); textdomain($domain); bind_textdomain_codeset($domain, 'UTF-8'); echo _("Sign In"); 

更新

  • 由于某种原因,它现在是间歇性的半工作,在第三次刷新它将显示正确的文字。
  • 我的PHP版本稍有不同
    • 游民:5.4.42
    • 本地:5.4.7
  • 不知道是否有帮助,但vagrant上的php_sapi_name()是“fpm-fcgi”,在本地它是“apache2handler”,只是猜测不是100%肯定的差异,但可以解释为什么Apache重启不够stream浪

所以事实证明,下面的建议在这里为我工作https://stackoverflow.com/a/20602983/682754

 sudo service php5-fpm restart 

我猜测它可能源于下列之一:

  • 我一直在切换区域值de_DE.UTF-8不使用连字符并尝试小写,我注意到在Ubuntu上它是de_DE.utf8
  • 我也改变了我的.po和.mo文件的名字