2012-12-12 76 views
14

我有這部分功能,它給了我英文月份的名字。我如何將它們翻譯成我的當地語言(塞爾維亞語)?PHP日期 - 獲取當地語言的月份名稱

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

'strftime',並安裝正確的語言環境,與當前區域設置爲塞爾維亞。 – Wrikken

回答

20

你應該使用setlocale()

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

在這種情況下,將其設置爲法語。對於你的情況應該是下列之一:

  1. sr_BA - 塞爾維亞語(黑山)
  2. sr_CS - 塞爾維亞語(塞爾維亞)
  3. sr_ME - 塞爾維亞語(塞爾維亞和黑山)
+0

謝謝你的幫助:) – Sasha

+7

我的'date'是locale不知道的,我的'strftime'不是。如果你的語言環境知道......你的PHP版本是什麼? – Wrikken

+2

但請注意['setlocale'設置區域進程範圍](http://php.net/manual/en/function.setlocale.php#refsect1-function.setlocale-notes)(使用多線程時會導致意外的行爲多線程)。線程安全的替代方法:[IntlDateFormatter](http://php.net/manual/en/class.intldateformatter.php) – Matmarbon

11

你應使用setlocale()strftime()

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

如果您使用setTimezone()並使用getTimestamp() – Thanatos11th

+0

這個工作,它在datetime對象上有時區問題對我來說,可悲的是在我的機器上'setLocale()'不會影響'date()' –

1

這裏是IntlDateFormatter

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

這是好主意,通過設置地方時編碼的例子:

<?php  
date_default_timezone_set('Europe/Belgrade'); 
setlocale(LC_TIME, array('sr_CS.UTF-8', 'sr.UTF-8'));