7

我正在尝试使用带有 setlocale 的俄语:

setlocale(LC_TIME,"ru_RUS.utf8");
echo strftime("%A, %B %d", time());

输出为:8 月 29 日,星期四

预期为 : четверг, Август 29

任何帮助将不胜感激。

4

4 回答 4

15

找到了!如果您使用的是 Linux 主机,请尝试:

setlocale(LC_ALL, 'ru_RU.UTF-8');

会正常工作。如果您使用的是 Windows 托管,请尝试:

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
setlocale(LC_ALL, 'russian');
于 2013-08-30T16:56:36.513 回答
4

对于俄罗斯语言环境和 UTF-8,可以使用这样的代码。在寡妇Unix中工作。

header('Content-type: text/html; charset=utf-8');

$locale_time = setlocale (LC_TIME, 'ru_RU.UTF-8', 'Rus');

function strf_time($format, $timestamp, $locale)
{
    $date_str = strftime($format, $timestamp);
    if (strpos($locale, '1251') !== false)
    {
        return iconv('cp1251', 'utf-8', $date_str);
    }
    else
    {
        return $date_str;
    }
}

echo strf_time("%A, %B %d", time(), $locale_time);

结果:

вторник, Октябрь 13
于 2015-10-13T16:29:06.203 回答
2
var_dump(setlocale(LC_ALL, 'ru_RU.utf8'));

函数 setlocale 返回系统调用的结果。我认为应该是RU,而不是Ru。

于 2013-08-29T14:32:23.010 回答
0

我遇到了类似的问题。我刚刚在我的系统上添加了缺少的语言环境。对于 Ubuntu,如果您需要在下面添加俄语语言环境类型:

sudo locale-gen ru_RU
sudo locale-gen ru_RU.UTF-8
sudo update-locale 

不要忘记在它之后重新启动你的 php-fpm

于 2021-07-13T11:15:17.897 回答