po mo 翻译仅适用于 en-GB 和 en-US,不适用于其他语言
我使用 poedit 创建了翻译文件并生成了 mo 文件并将它们保存在各自的文件夹中。但不知何故,我只能访问 en_GB 和 en_US 文件夹中的翻译。即使我将 DE 翻译放在这些文件夹中它也能工作。
为什么它无法与其他语言环境一起使用?是否有我需要进行的配置或者我遗漏了什么?
这是我正在使用的代码。
switch ($_GET['language']) {
case 'de' : $locale = 'de_DE'; break;
case 'us' : $locale = 'en_US'; break;
case 'fr' : $locale = 'fr_FR'; break;
case 'es' : $locale = 'es_ES'; break;
case 'it' : $locale = 'it_IT'; break;
default : $locale = 'en_GB'; break;
}
putenv("LC_ALL=$locale");
setlocale(LC_ALL, $locale . '.UTF-8');
$domname = 'default';
bindtextdomain($domname, 'locale');
textdomain($domname);
bind_textdomain_codeset($domname, 'UTF-8');
echo gettext ("test123");
echo gettext ("hello every one");
I have created the translation files using poedit and generated the mo files and kept them in their respective folders. But somehow I can only access the translations which are in en_GB and en_US folders. even I place DE translation in these folders it works.
Why It is unable to work with other locale? Is there any configration which I need to make or I am missing something?
this is the code which I am using.
switch ($_GET['language']) {
case 'de' : $locale = 'de_DE'; break;
case 'us' : $locale = 'en_US'; break;
case 'fr' : $locale = 'fr_FR'; break;
case 'es' : $locale = 'es_ES'; break;
case 'it' : $locale = 'it_IT'; break;
default : $locale = 'en_GB'; break;
}
putenv("LC_ALL=$locale");
setlocale(LC_ALL, $locale . '.UTF-8');
$domname = 'default';
bindtextdomain($domname, 'locale');
textdomain($domname);
bind_textdomain_codeset($domname, 'UTF-8');
echo gettext ("test123");
echo gettext ("hello every one");
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您确定要使用的所有其他区域设置都是 UTF-8 吗?在您的示例中,您在 setlocale() 中添加“.UTF-8”。
Are you sure that all the other locales you want to use are in UTF-8 ? In your example you add '.UTF-8' in setlocale().