“ru_RU”(俄语)setlocale没有在日期和时间工作

时间:2013-08-29 14:29:22

标签: php locale

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

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

输出是: 8月29日星期四

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

任何帮助都将受到高度赞赏。

4 个答案:

答案 0 :(得分:12)

发现它!如果您使用的是Linux主机,请尝试:

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

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

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
setlocale(LC_ALL, 'russian');

答案 1 :(得分:4)

对于俄语语言环境和UTF-8,可以使用此类代码。在 Widows 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

答案 2 :(得分:2)

var_dump(setlocale(LC_ALL, 'ru_RU.utf8'));

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

答案 3 :(得分:0)

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

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

不要忘记重启你的php-fpm