2012-12-12 29 views
14

Tôi có một phần chức năng này, cung cấp cho tôi tên của các tháng bằng tiếng Anh. Làm thế nào tôi có thể dịch chúng sang ngôn ngữ địa phương của tôi (Tiếng Serbia)?Ngày PHP - nhận tên của các tháng bằng ngôn ngữ địa phương

$month_name = date('F', mktime(0, 0, 0, $i)); 
+0

'strftime', và cài đặt locale thích hợp, và thiết lập miền địa phương hiện tại của bạn để serbian . – Wrikken

Trả lời

20

Bạn nên sử dụng setlocale():

setlocale(LC_TIME, 'fr_FR'); 
$month_name = date('F', mktime(0, 0, 0, $i)); 

Trong trường hợp này nó sẽ đặt nó là tiếng Pháp. Đối với trường hợp của bạn nên là một trong các nội dung sau:

  1. sr_BA - Serbia (Montenegro)
  2. sr_CS - Serbia (Serbia)
  3. sr_ME - Serbia (Serbia và Montenegro)
+0

Cảm ơn bạn đã giúp đỡ của bạn :) – Sasha

+7

My 'date' là miền địa phương không biết,' strftime' của tôi là không. Nếu bạn là người địa phương biết ... phiên bản PHP của bạn là gì? – Wrikken

+2

Nhưng lưu ý rằng ['setlocale' đặt quá trình đị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ủ đề an toàn thay thế: [IntlDateFormatter] (http://php.net/manual/en/class.intldateformatter.php) – Matmarbon

11

Bạn nên sử dụng setlocale()strftime():

setlocale(LC_TIME, 'sr_CS'); 
$month_name = strftime('%B', mktime(0, 0, 0, $i)); 
+0

nó có vấn đề với múi giờ trên đối tượng datetime nếu bạn sử dụng setTimezone() và sử dụng getTimestamp() – Thanatos11th

+0

công việc này đối với tôi, thật đáng buồn trên máy tính của tôi 'setLocale()' không ảnh hưởng đến 'date()' –

1

Dưới đây là một ví dụ với IntlDateFormatter

$format = new IntlDateFormatter('sr_CS', IntlDateFormatter::NONE, 
       IntlDateFormatter::NONE, NULL, NULL, "MMM"); 
$monthName = datefmt_format($format, mktime(0, 0, 0, $i)); 
1

Đó là ý tưởng tốt để vượt qua mã hóa khi thiết lập các ngôn ngữ:

<?php  
date_default_timezone_set('Europe/Belgrade'); 
setlocale(LC_TIME, array('sr_CS.UTF-8', 'sr.UTF-8')); 
Các vấn đề liên quan