2012-04-24 49 views
2

好的,這裏有什麼問題?WAMP上的PHP setlocale失敗pt_BR

header('Content-type: text/html; charset=utf-8'); 

setlocale(LC_ALL, NULL); 
setlocale(LC_ALL, 'pt_BR'); 

echo "<p>São Paulo, " . date("d \d\e F \d\e Y", time()) . "</p>"; 

echo "<p>Preferred locale on this system is '" . setlocale(LC_ALL, NULL) . "'</p>"; 

回聲:

São Paulo, 24 de April de 2012 
Preferred locale on this system is 'Portuguese_Brazil.1252' 

也試過類似:

setlocale(LC_ALL, 'Portuguese_Brazil.1252', 'bra', 'brazil', 'pt_BR', 'pt_BR.iso-8859-1', 'pt_BR.utf-8', 'portuguese', 'portuguese-brazil', 'ptb'); 

但沒有使 '月' 變成了 '四月'。

thx。

PS:文檔是UTF.8(沒有BOM)在IDE上格式化。

+1

這是一個常見的問題 - 我已經看到了這個問題[在此之前]的不同版本(http://stackoverflow.com/questions/10030437)。也許[this](http://www.tek-tips.com/viewthread.cfm?qid=664705)會有幫助嗎?缺點是你需要在你的服務器上安裝pt_BR語言環境。 – DaveRandom 2012-04-24 16:08:19

+0

@DaveRandom我已經檢查了服務器配置,apache和php本身。 (甚至是時區配置)。沒有配置錯誤。同樣在上面的測試中看到,setlocale正確返回,因爲systes的首選語言環境已經是portuguese_brasil.1252。 – 2012-04-24 16:52:50

+0

您是否檢查過pt_BR是否正確設置月份名稱?我的意思是也許它是在地區本身的'四月'。 – c2h5oh 2012-06-07 22:29:22

回答

3

我在共享主機上有同樣的問題,只是做了我自己的區域設置功能。

UPDATE:

那麼,如果你已經安裝了語言只是使用的strftime()而不是日期()

從PHP文件:

To format dates in other languages, you should use the setlocale() and strftime() functions instead of date().

試試這個:

header('Content-type: text/html; charset=utf-8'); 

setlocale(LC_ALL, NULL); 
setlocale(LC_ALL, 'Portuguese_Brazil.1252'); 

echo "<p>São Paulo, " . strftime("%d de %B de %Y", time()) . "</p>"; 

echo "<p>Preferred locale on this system is '" . setlocale(LC_ALL, NULL) . "'</p>"; 
+0

似乎是一個很好的功能,但我正在尋找的是如何正確設置。謝謝。 – 2012-06-08 17:08:36

+1

更新了我的答案。 – 2012-06-08 21:01:29

+0

錯誤:該網頁不適合您的Windows,適合讀者,並且它們不是「charset Windows 1252」用戶,它們使用UTF8(!)。使用'setlocale(LC_ALL,'pt_BR.utf-8')'更正確。 – 2014-03-07 14:54:20

-1

strftime("%d de %B de %Y", time()). 工作!