2013-08-29 8 views
6

Sto cercando di usare la lingua russa con setlocale:(russo) setlocale "ru_RU" non funziona su data e ora

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

uscita è: Giovedi, 29 mese di agosto

previsto è: четверг , Август 29

Qualsiasi aiuto sarebbe molto apprezzato.

+0

Il "locale" dipende sempre dalla configurazione del server. Hai aggiunto il russo al tuo server? –

+0

Avete provato questo: 'setlocale (LC_ALL, 'ru_RU');'? Penso che il caso contenga e potresti dover capitalizzare entrambe le lettere nella seconda "RU". – DeeDee

+0

Quale piattaforma? I nomi delle impostazioni locali di Windows (ad esempio) sono completamente diversi dai nomi locali * nix: tuttavia, si desidera [strftime()] (http://www.php.net/manual/en/function.strftime.php) per le date locali. , non la data() –

risposta

11

Trovato! se si utilizza l'hosting Linux, provare:

funzionerà correttamente. Nel caso in cui si utilizzi l'hosting di Windows, provare:

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

La funzione setlocale restituisce il risultato della chiamata di sistema. Penso che dovrebbe essere RU, non Ru.

3

Per le impostazioni locali russe e UTF-8 è possibile utilizzare tale codice. Lavorare in Widows e 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); 

Risultato:

вторник, Октябрь 13