gok*_*uhs 0 php gettext internationalization ubuntu-server php-gettext
我在 PHP 中使用 gettext 时遇到问题;我有两台服务器,一台是本地服务器(我在其中开发),在 Windows 中(使用 vs.php)并工作查找,另一台在 Amazon EC2 中(更新了 Ubuntu 12.04),这是生产服务器,在这台服务器中,相同的代码不发现了。
这是我的代码:
我用这个来初始化 gettext 。
function initialize_i18n($locale) {
$locales_root = "./librerias/noAuto/locale";
putenv('LANG='.$locale);
putenv("LC_ALL=" . $locale);
setlocale(LC_ALL,$locale);
$domains = glob($locales_root.'/'.$locale.'/LC_MESSAGES/messages*.mo');
if (count ($domains) > 0)
{
$current = basename($domains[0],'.mo');
$timestamp = preg_replace('{messages-}i','',$current);
bindtextdomain($current,$locales_root);
bind_textdomain_codeset( $current, "UTF-8" );
textdomain($current);
if ($locale == "en_US")
{
if( _("Modificar") === "Modify" ) {
$system->setDebug( "Translated correctly");
} else {
$system->setDebug( "Gettext don't working");
}
}
}
}
initialize_i18n("en_US");
Run Code Online (Sandbox Code Playgroud)
我的项目中的所有文件均以 UTF-8(西班牙语)编码,并且 .mo 和 .po 是使用 poedit 生成的。
我尝试重新加载 apache 服务但没有成功。
任何想法?
新的一天新的想法!我有办法!
我也有同样的问题,您需要检查此步骤。
1 - 你的 Linux 安装了这种语言吗?
你可以用这个来检查:
locale -a
Run Code Online (Sandbox Code Playgroud)
如果没有列出您的语言,请安装它,例如您可以使用以下命令安装 englsh 本地化:
# aptitude install language-pack-en
Run Code Online (Sandbox Code Playgroud)
完成后重新启动 apache。
2 - PHP 中的语言代码是否正确?
如果您使用 locale -a 列出了语言代码列表,您将看到可以使用的语言代码,例如,对于英语,我的系统列出了: [...] en_NG.utf8 en_NZ.utf8 en_PH.utf8 en_SG.utf8 en_US .utf8 [...] 我的错误之一是,我使用了“en_US”而不是“en_US.utf8”。
3 - 该文件夹的名称与语言代码相同。(我的第二个错误)
PD> 抱歉我的英语不好