Php 如果未定义翻译,则gettext将使用标识符而不是英语
我的gettext有一个问题,如果用户以西班牙语访问我的网站,并且该语言的翻译不可用,那么将显示标识符而不是英语翻译 有没有办法避免这种情况 以下是我代码中一些相关的部分:Php 如果未定义翻译,则gettext将使用标识符而不是英语,php,translation,gettext,Php,Translation,Gettext,我的gettext有一个问题,如果用户以西班牙语访问我的网站,并且该语言的翻译不可用,那么将显示标识符而不是英语翻译 有没有办法避免这种情况 以下是我代码中一些相关的部分: $lc = 'es_ES.utf8'; putenv('LC_ALL='.$lc); setlocale(LC_ALL, $lc); $languageFileName = 'default'; bindtextdomain($languageFileName, ROOT_PATH.'/locale'); bind_te
$lc = 'es_ES.utf8';
putenv('LC_ALL='.$lc);
setlocale(LC_ALL, $lc);
$languageFileName = 'default';
bindtextdomain($languageFileName, ROOT_PATH.'/locale');
bind_textdomain_codeset($languageFileName, 'UTF-8');
textdomain($languageFileName);
这是我的树木园:
-en_US
--LC_MESSAGES
---default.mo
---default.po
-es_ES
--LC_MESSAGES
---default.mo
---default.po
-fr_FR
--LC_MESSAGES
---default.mo
---default.po
请注意,我使用的是PHP5.4,我的系统是法语的。我可能会检查所需的翻译是否可用,如果不可用,则设置一个特定的默认语言环境(可能是en_US) 另一种方法是使用默认语言消息(即英语)作为标识符本身。每当系统显示“标识符”时,用户将自动看到英文文本 (2013年1月31日增补:) 要设置区域设置:
$locale = "en_US";
putenv("LANG=$locale");
putenv("LC_MESSAGES=$locale");
putenv("LC_NUMERIC=$locale");
putenv("LC_ALL=$locale");
$setlocale = setlocale(LC_MESSAGES, $locale);
$setlocale = setlocale(LC_TIME, $locale);
$setlocale = setlocale(LC_NUMERIC, $locale);
$setlocale = setlocale(LC_ALL, $locale);
嗯,这就是我想要的,但我的问题是如何做到这一点(设置一个特定的默认区域设置)!请注意,我的标识符是法语的消息(我不想更改它)。