2009-08-25 16 views
16

Tôi có một tập lệnh cần hiển thị dữ liệu ngày cho đối tượng quốc tế - ví dụ:Ngày PHP() bằng tiếng nước ngoài - ví dụ: Mar 25 Aoû 09

"nộp Tue 25 Tháng Tám 09"

Có một/cách sạch dễ dàng hơn để có được điều này chuyển đổi sang Pháp (vv) tương đương với "25 Tháng Ba Aoû 09" hơn:

Setting một hằng số LANG và một mảng $LANGUAGES của bao gồm các file &:

if(LANG != 'EN') 
{ 
include $LANGUAGES['LANG']; 
} 

& thì trong tệp cluded ánh xạ các ngày & tháng & thay thế cho ngôn ngữ thích hợp?

Cảm ơn

David

+0

Xem http://stackoverflow.com/questions/1114488/php-date-function-output-in-italian –

Trả lời

37

Tôi nghĩ rằng bạn không thể thoát khỏi làm như vậy mà không cần thiết lập LOCALE:

<?php 
setlocale(LC_ALL, 'fr_FR'); 

echo strftime("%A %e %B %Y"); 
?> 

Một số chi tiết về strftime: http://us2.php.net/manual/en/function.strftime.php

+4

Đây là đúng/PHP cách xử lý ngôn ngữ trong chuỗi ngày tháng. 'strftime()' được ưu tiên hơn 'date()' khi bạn cần tính toán miền địa phương. – dcousineau

+2

không hoạt động đối với tôi: (https://eval.in/189841 – Vikram

+0

Mã trên sẽ không hoạt động trên Windows vì tham số '% e' không hoạt động trên Windows như đã nêu trong tài liệu. Bạn phải thực hiện một kiểm tra bổ sung, ví dụ được hiển thị dưới ** Ví dụ # 3 Ví dụ tương thích nền tảng chéo sử dụng% e modifier ** của [strftime() docs] (http://us2.php.net/manual/en/function.strftime .php) – Stan

5

Theo date trang hướng dẫn sử dụng chức năng, bạn nên sử dụng setlocale. Các phương thức như strftime sau đó sẽ sử dụng ngôn ngữ được chỉ định. Tuy nhiên, date sẽ không vì lý do nào đó.

0

Bạn cũng có thể muốn xem Zend_Date.

+1

Liên kết của bạn hiển thị lỗi 404. – Soaku

+0

https://framework.zend.com/manual/1.11/en/zend.date.html –

1

Tôi nghĩ rằng cách tốt nhất để làm điều đó với các chức năng strftimesetlocale. Nhưng nó sẽ không hoạt động nếu máy chủ của bạn không cần cài đặt miền địa phương cần thiết (trong các câu hỏi hiện tại là fr_FR).

Mã Bellow ném một ngoại lệ nếu thay đổi địa phương sẽ không thành công

<?php 

$result = setlocale(LC_ALL, 'fr_FR'); 

if($result === false){ 
    throw new \RuntimeException(
     'Got error changing locale, check if locale is installed on the system' 
    ); 
} 

$dayOfMonth = '%e'; 
//if it is Windows we will use %#d as %e is not supported 
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { 
    $dayOfMonth = '%#d'; 
} 

//Mar 25 Aoû 09 - month shortname, day of month, day shortname, year last two digits 
echo strftime("%b $dayOfMonth %a %y"); 
Các vấn đề liên quan