【发布时间】:2014-04-11 05:35:44
【问题描述】:
我在这里陷入了困境。浏览我的本地化网站的翻译版本时,翻译随机停止,我不知道为什么;我不确定这是否与我设置区域设置的方式有关,但它会随机停止翻译并恢复为英语。完成此操作后,唯一的取回方法是转到主页,在地址栏中突出显示 URL,然后按 Enter。
我希望有人可以看看我在 PHP 中设置语言环境的方式,看看我是否遗漏了什么或搞砸了。
<?php
explode(";", setlocale(LC_ALL, 0));
$pageURL = (@$_SERVER["HTTPS"] == "on") ? "https://" : "http://";
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
if (strpos($pageURL,'es.') !== false) {
$language = 'es_ES.utf8';
}
elseif (strpos($pageURL,'it.') == true) {
explode(";", setlocale(LC_ALL, 0));
$language = 'it_IT.utf8';
}
elseif (strpos($pageURL,'de.') == true) {
explode(";", setlocale(LC_ALL, 0));
$language = 'de_DE.utf8';
}
elseif (strpos($pageURL,'pt.') == true) {
explode(";", setlocale(LC_ALL, 0));
$language = 'pt_PT.utf8';
}
elseif (strpos($pageURL,'fr.') == true) {
explode(";", setlocale(LC_ALL, 0));
$language = 'fr_FR.utf8';
}
else {
explode(";", setlocale(LC_ALL, 0));
$language = 'en_US.utf8';
}
putenv("LANG=" . $language);
explode(";", setlocale(LC_ALL, 0));
setlocale(LC_ALL, $language);
// Set the text domain as "messages"
$domain = "messages";
bindtextdomain($domain, "Locale");
bind_textdomain_codeset($domain, 'UTF-8');
textdomain($domain);
?>
如果您对 gettext 随机停止工作的原因有任何想法,请告诉我。另外,请让我知道您是否需要查看其他地方的 sn-p 代码以解决该问题。我真的很感激!
【问题讨论】:
-
如果 REQUEST_URI 包含一个名为“itdept.php”的文件,它将选择什么语言?会不会是解析整个 url 中的字符串?
-
可能是,但如果是这样的话,那么这行不通: if (strpos($pageURL,'es.url.com') !== false) { $language = 'es_ES .utf8'; }
标签: php gettext po php-gettext mo