Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果未定义翻译,则gettext将使用标识符而不是英语_Php_Translation_Gettext - Fatal编程技术网

Php 如果未定义翻译,则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

我的gettext有一个问题,如果用户以西班牙语访问我的网站,并且该语言的翻译不可用,那么将显示标识符而不是英语翻译

有没有办法避免这种情况

以下是我代码中一些相关的部分:

$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);

嗯,这就是我想要的,但我的问题是如何做到这一点(设置一个特定的默认区域设置)!请注意,我的标识符是法语的消息(我不想更改它)。