【发布时间】: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