我正在尝试使用 Intl 包实现语言环境支持。NumberFormatter
更改时工作并更改输出样式,Locale
但IntlDateFormatter
似乎没有检测到语言环境更改。
我正在使用这段代码设置语言环境,在“en_US”和“sv_SV”之间切换。
setlocale(LC_ALL, $locale . ".UTF-8");
return \Locale::setDefault($locale);
IntlDateFormatter
然后使用此代码初始化
// _locale is set on each pass, since locale may change during runtime
$this->_locale = \Locale::getDefault(); // en_US or sv_SV
$this->_dateFormatter = new \IntlDateFormatter($this->_locale, null, null);
当我现在尝试格式化日期名称时,例如星期三,我总是得到名称的英文表示 - 即使预期瑞典表示。
$this->_dateFormatter->setPattern("EEEE");
return mb_convert_case($this->_dateFormatter->format($this->getDateTime($argument)), MB_CASE_LOWER);
这应该输出“onsdag”,但两个语言环境都输出“wednesday”。我在这里做错了什么?