我有一个使用gettext功能翻译文本的php项目。我的项目中有两种语言,西班牙语和英语。
语言文件结构是下一个:
/locale/en_US/LC_MESSAGES/plantasenelaire.mo
/locale/es_ES/LC_MESSAGES/plantasenelaire.mo
我用来选择一种或另一种语言的PHP代码是下一个:
if($languageCode == "en")
{
$languageEncode = "en_US";
}
elseif($languageCode == "es")
{
$languageEncode = "es_ES";
}
else
{
$languageEncode = "en_US";
}
putenv("LC_ALL=$languageEncode");
setlocale(LC_ALL, $languageEncode);
bindtextdomain("plantasenelaire", "./locale/");
textdomain("plantasenelaire");
bind_textdomain_codeset("plantasenelaire", 'UTF-8');
在我的Windows 7 64位上使用带有Apache 2.4.4和PHP 5.4.16的wamp 2.4(32bits)时,代码工作得很好。
使用PHP 5.6或PHP 7时,代码在我的linux共享主机上也能正常工作
今天我决定卸载我的wamp 2.4并使用Apache 2.4.23升级到wamp 3 - PHP 5.6.25 / 7.0.10。我已经安装了所需的所有Visual C ++包,然后安装了3位64位。
代码有效,但无论我做什么,语言总是用西班牙语。无论我使用的是PHP 5.6还是7,总是西班牙语。
我已经尝试过多次使用我在互联网上找到的putenv和setlocale函数的组合和代码而没有任何运气:/
在尝试使用wamp 3(32和64版本)后,我回到了wamp 2.4,只是为了检查我安装的任何Visual C ++包是否在我的Windows上搞砸了......
使用Apache 2.4.4和PHP 5.4.16在wamp 2.4上一切正常。正如我在PHP 5.6和7中所说的,它在我的托管中也可以正常工作。
我真的不知道还有什么可以尝试。
任何人都可以帮助我吗?欢迎提出任何建议。
非常感谢你!