【问题标题】:PHP gettext and vagrant running ubuntuPHP gettext 和 vagrant 运行 ubuntu
【发布时间】:2015-11-22 06:35:49
【问题描述】:

我在运行 Ubuntu 的 Vagrant 设置上获取 gettext 以翻译我的一个翻译文件时遇到问题。我的语言环境文件位于这样的目录中......

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");

更新

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

【问题讨论】:

    标签: php ubuntu vagrant gettext


    【解决方案1】:

    所以事实证明,按照这里的建议对我有用https://stackoverflow.com/a/20602983/682754

    sudo service php5-fpm restart
    

    我猜它可能源于以下原因之一:

    • 我一直在切换语言环境值 de_DE.UTF-8 以不使用连字符并尝试使用小写,我注意到在 Ubuntu 上它是 de_DE.utf8
    • 我还更改了 .po 和 .mo 文件的名称

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-07
      相关资源
      最近更新 更多