在php项目中使用gettext - 只翻译了一种语言

时间:2013-05-04 00:26:31

标签: php gettext php-gettext

我正在尝试将网页翻译成多种语言。但是,我只能让gettext为西班牙语工作。

我正在使用此代码:

$lang = "de_DE";
if (isset($_GET['lang'])) $lang = $_GET['lang'];
putenv("LC_ALL=$lang");
setlocale(LC_ALL, $lang);
bindtextdomain("messages", "locale");
bind_textdomain_codeset('messages', 'UTF-8');
textdomain("messages");

如果我设置$ lang =“es_ES”,字符串会被翻译成西班牙语,但如果我设置$ lang =“de_DE”翻译不起作用,我只会看到默认的英文版本。

我认为这可能与我的计算机区域设置有关(我使用西班牙语的Windows)。我正在使用Windows(使用Wamp localhost),我不知道是否需要安装更多内容,如果有的话,该怎么做。

如果我必须这样做,它会在我的在线托管中工作而不在那里安装任何东西吗?

谢谢! :)

1 个答案:

答案 0 :(得分:1)

setlocale()在PHP的官方文档本身中提到了Windows中的问题:

  

每个进程维护区域设置信息,而不是每个线程。如果   您正在IIS或Apache等多线程服务器API上运行PHP   在Windows上,您可能会遇到语言环境设置的突然更改   脚本正在运行,但脚本本身从未调用过   的setlocale()。这是由于其他脚本运行不同而发生的   同一个进程的线程同时改变了   使用setlocale()的进程范围的语言环境。

     

Windows用户可以在以下位置找到有关区域设置字符串的有用信息   微软的MSDN网站。支持的语言字符串可以在中找到   »language strings documentation和支持的国家/地区   »country/region strings documentation

中的字符串

主要是你需要意识到的是许多PHP函数都是* ix OS程序API的包装器。因此,它们将在Linux和其他兼容的操作系统中运行良好 - 在Windows中效果不佳。