PHP- 获取当前语言环境

php
2022-08-30 16:58:48

我正在使用此功能设置网站的区域设置:

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

当有人访问该网站时,他们能够更改其区域设置。我试图做的是网站中的其他地方检索当前区域设置是什么。

我该怎么做?


答案 1

您可以像这样调用 setlocale,它将返回当前的 local。

$currentLocale = setlocale(LC_ALL, 0);
echo $currentLocale; //outputs C/en_US.UTF-8/C/C/C/C on my machine

以下是 php.net 的文档,由@JROB

现场

如果区域设置为“0”,则区域设置不受影响,仅返回当前设置。

如果区域设置为 NULL 或空字符串 “”,则区域设置名称将从与上述类别同名的环境变量的值或“LANG”进行设置。

如果 locale 是一个数组或后跟其他参数,则尝试将每个数组元素或参数设置为新的区域设置,直到成功为止。如果某个区域设置在不同系统上以不同的名称已知,或者对于为可能不可用的区域设置提供回退,这将非常有用。


答案 2

两年后的另一个答案!

您可以简单地使用 或 获取当前区域设置。Locale::getDefault()locale_get_default()

http://php.net/manual/en/locale.getdefault.php

国际类是旧功能的现代替代品。开始使用它后,您需要通过 php.net/manual/en/locale.setdefault.php 功能更新本地Locale


推荐