2013-08-29 68 views
6

Tôi đang cố gắng sử dụng tiếng Nga với setlocale:"ru_ru" (Nga) setlocale không làm việc trên ngày và thời gian

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

Output là: Thứ năm Tháng Tám 29

dự kiến ​​là: четверг , Август 29

Mọi trợ giúp sẽ được đánh giá cao.

+0

Các "Locale" luôn luôn phụ thuộc vào cấu hình máy chủ. Bạn đã thêm người Nga vào máy chủ của mình chưa? –

+0

Bạn đã thử điều này: 'setlocale (LC_ALL, 'ru_RU');'? Tôi nghĩ trường hợp có vấn đề và bạn có thể cần viết hoa cả hai chữ cái trong "RU" thứ hai. – DeeDee

+0

Nền tảng nào? Tên miền địa phương Windows (ví dụ) hoàn toàn khác với tên miền * nix: tuy nhiên, bạn muốn [strftime()] (http://www.php.net/manual/en/function.strftime.php) cho các ngày địa phương , không phải ngày() –

Trả lời

11

Tìm thấy nó! nếu bạn đang sử dụng Linux hosting thì hãy thử:

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

sẽ hoạt động tốt. Trong trường hợp bạn đang sử dụng cửa sổ lưu trữ, hãy thử:

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

Hàm setlocale trả về kết quả của cuộc gọi hệ thống. Tôi nghĩ rằng nó phải là RU, chứ không phải Ru.

3

Đối với ngôn ngữ Nga và UTF-8, bạn có thể sử dụng mã như vậy. Làm việc trong Góa phụ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); 

Kết quả:

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