2013-08-29 12 views
6

Staram się używać języka rosyjskiego z setlocale:"ru_RU" (rosyjski) setlocale nie działa na dacie i godzinie

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

wyjścia: czwartek, 29 sierpnia

Oczekiwany jest: четверг , Август 29

Każda pomoc będzie bardzo ceniona.

+0

"locale" zawsze zależy od konfiguracji serwera. Czy do swojego serwera dodano rosyjski? –

+0

Czy próbowałeś tego: 'setlocale (LC_ALL, 'ru_RU');'? Myślę, że sprawa ma znaczenie i może być konieczne zamapowanie obu liter w drugim "RU". – DeeDee

+0

Jaka platforma? Nazwy locale Windows (na przykład) są całkowicie różne od nazw ustawień * nix: jednak chcesz [strftime()] (http://www.php.net/manual/en/function.strftime.php) dla ustawień narodowych , nie date() –

Odpowiedz

11

Znaleziono! jeśli korzystasz z hostingu Linux, spróbuj:

będzie działać dobrze. Jeśli korzystasz z systemu Windows, spróbuj:

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

Funkcja setlocale zwraca wynik wywołania systemowego. Myślę, że powinno to być RU, a nie Ru.

3

Dla rosyjskiego locale i UTF-8 możliwe jest użycie takiego kodu. Praca w Wdrożach i 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); 

Wynik:

вторник, Октябрь 13 
Powiązane problemy