2012-05-07 41 views
6

thể trùng lặp:
strtotime With Different Languages?
Get list of localized monthsNgày PHP, tên tháng quốc tế?

tôi nhận được thời gian ngày ra khỏi cơ sở dữ liệu của tôi và định dạng nó như vậy:

$row['datetime'] = date('jS F Y',strtotime($row['datetime'])); 

Điều này sẽ đặt trong một định dạng:

28th March 2012 

Làm cách nào để bản địa hóa tên của các tháng, vì vậy đối với người dùng tiếng Pháp, nó sẽ hiển thị sao Hỏa thay vì tháng 3?

Cảm ơn

Trả lời

8

Sử dụng setlocalestrftime để nhận phiên bản địa phương của chuỗi ngày.

Ví dụ từ PHP Documents - http://php.net/manual/en/function.setlocale.php:

/* Set locale to Dutch */ 
setlocale(LC_ALL, 'nl_NL'); 

/* Output: vrijdag 22 december 1978 */ 
echo strftime("%A %e %B %Y", mktime(0, 0, 0, 12, 22, 1978)); 

/* try different possible locale names for german as of PHP 4.3.0 */ 
$loc_de = setlocale(LC_ALL, '[email protected]', 'de_DE', 'de', 'ge'); 
echo "Preferred locale for german on this system is '$loc_de'"; 
+3

Nhưng lưu ý rằng ['setlocale' đặt quá trình miền địa phương rộng] (http://php.net/manual/en/function.setlocale.php#refsect1-function.setlocale-notes) (gây ra hành vi không mong muốn với nhiều luồng khi sử dụng đa luồng). Chủ đề thay thế an toàn: [IntlDateFormatter] (http://php.net/manual/en/class.intldateformatter.php) – Matmarbon

2

dễ dãi, sử dụng strftime et setlocale.

setlocale(LC_ALL, 'fr_FR.utf-8'); // ou LC_TIME 
echo strftime('%A'); 
"lundi" 

Fais sự chú ý utiliser la phiên bản utf-8 si tu tham dự rút thăm unicode une, Sinon, la phiên bản normale te donnera du iso-8859-1 (5).

Bằng tiếng Anh cho phần còn lại của cộng đồng, strftime tôn trọng bộ miền địa phương và sử dụng glibc (ở chế độ nền). Nếu date sẽ luôn trả lại tiếng Anh strftime sẽ tôn trọng setlocale và cung cấp cho bạn kết quả mong đợi bằng ngôn ngữ của bạn.

+17

tiếng Anh xin vui lòng. đây là một trang web ** tiếng anh ** ... – Neal

+0

Ah, đánh bại tôi quá! –

+0

tha thứ tiếng Pháp của tôi, nó rất hấp dẫn. – greut