我正在使用此功能设置网站的区域设置:
function set_locale($locale) { // ie. en, es
$language = $locale;
putenv("LANG=".$language);
setlocale(LC_ALL, $language);
$domain = "phd";
bindtextdomain($domain, "locale");
bind_textdomain_codeset($domain, 'UTF-8');
textdomain($domain);
} // end set_locale
当有人访问该网站时,他们可以更改其区域设置。我想要做的是在网站的其他地方检索当前的语言环境。
我该怎么做?
答案 0 :(得分:36)
您可以像这样调用setlocale,它将返回当前本地。
$currentLocale = setlocale(LC_ALL, 0);
echo $currentLocale; //outputs C/en_US.UTF-8/C/C/C/C on my machine
这是来自php.net的文档,由@JROB评论
区域设置
如果locale为“0”,则语言环境设置不受影响,仅返回当前设置。
如果locale为NULL或空字符串“”,则语言环境名称将根据与上述类别具有相同名称的环境变量的值设置,或者从“LANG”设置。
如果locale是一个数组或后跟其他参数,则尝试将每个数组元素或参数设置为新的语言环境,直到成功为止。如果在不同系统上以不同名称知道语言环境或为可能不可用的语言环境提供回退,这将非常有用。
答案 1 :(得分:6)
两年后的另一个答案!
您只需使用Locale::getDefault()
或locale_get_default
即可获取当前区域设置。