【发布时间】:2012-06-15 07:02:48
【问题描述】:
Windows 7 中 PHP 5.3 中的 setlocale 函数存在问题。
我需要使用 UTF-8 编码设置俄语语言环境。我看到了一些解决方案,其中是 Russian_Russia.65001,但是具有这种语言环境的函数返回 FALSE。
所有解决方案都是为在 Windows XP 中使用而设计的,其中语言环境列表位于控制面板中。在 Windows 7 中,此功能已被删除。
【问题讨论】:
Windows 7 中 PHP 5.3 中的 setlocale 函数存在问题。
我需要使用 UTF-8 编码设置俄语语言环境。我看到了一些解决方案,其中是 Russian_Russia.65001,但是具有这种语言环境的函数返回 FALSE。
所有解决方案都是为在 Windows XP 中使用而设计的,其中语言环境列表位于控制面板中。在 Windows 7 中,此功能已被删除。
【问题讨论】:
It's not possible to use UTF-8 locales on windows systems.:
如果您提供像 UTF-7 或 UTF-8 这样的代码页,setlocale 将失败,返回 NULL。
只有 Windows 代码页 Russian_Russia.1251 可以工作(参见 Moodle's table of locales)。
您仍然可以尝试设置两者,看看哪一个出现:
if ($newLocale = setLocale(LC_CTYPE, 'ru_RU.UTF-8', 'Russian_Russia.1251'))
{
echo 'Locale is now set to: ' . $newLocale;
}
【讨论】:
这在 Windows 7 上对我有用
putenv('LANG=fr_CA.UTF-8');
setlocale(LC_ALL,'fr_CA.UTF-8');
bindtextdomain('translation','./language');
bind_textdomain_codeset('translation','UTF-8');
textdomain('translation');
.po/.mo 文件的路径
./language -> fr_CA.UTF-8 -> LC_MESSAGES -> translation.po
./language -> fr_CA.UTF-8 -> LC_MESSAGES -> translation.mo
【讨论】: