2013-08-29 7 views
6

に取り組んでいないのsetlocale:"ru_RU"(ロシア)が、私はのsetlocaleでロシア語を使用しようとしています日時

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

出力は次のとおりです。 8月29日(木曜日)

予想は以下のとおりです。 четверг 、Август29

ご協力いただければ幸いです。

+0

"ロケールは、" 常にサーバの設定に依存します。あなたのサーバーにロシア語を追加しましたか? –

+0

これを試したことがありますか? 'setlocale(LC_ALL、 'ru_RU');'?私は大文字と小文字を区別し、2番目の「RU」の両方の文字を大文字にする必要があるかもしれません。 – DeeDee

+0

どのプラットフォームですか? Windowsのロケール名(たとえば)は* nixロケール名とはまったく異なりますが、locale-datesには[strftime()](http://www.php.net/manual/en/function.strftime.php)が必要です、not date() –

答えて

11

見つけました! Linuxホスティングを使用している場合は、

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

となります。ロシアのロケールとUTF-8には、このようなコードを使用することが可能であるために

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

関数setlocaleは、システムコールの結果を返します。私はそれがRUでなければならないと思う、Ruではない。

3

:場合は、あなたがしようその後、ホスティングWindowsを使用しています。 未亡人および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 
関連する問題