2010-05-04 32 views
6
沒有效果

我有下面的代碼片段:的setlocale具有PHP

setlocale(LC_ALL, "de"); 
print(strftime("%A %e %B %Y", time())); 

,它的打印

日2010年5月4日

,而不是

Dienstag 4. Mai 2010

任何想法爲什麼?怎麼修?

回答

14

您是否有de區域設置可用; setlocale爲您回報什麼?參見:return values for setlocale()

此外,請檢查可用語言環境列表(例如locale -a或適合您的操作系統的任何內容),以查看其中是否包含de。可能的替代品包括de_DE或等等。

在Debian中,生成一個新的語言環境,運行以下命令:

dpkg-reconfigure locales 

,並選擇你想要的人。

5

如果語言環境未安裝在您的系統上,設置語言環境將不起作用。

3

嘗試將LC_ALL設置爲「de_DE」。在我的系統上,直到我這樣做纔會起作用。

$ LC_ALL=de date 
Tue May 4 07:40:13 CDT 2010 
$ LC_ALL=de_DE date 
Di 4. Mai 07:39:27 CDT 2010 
4

對我來說,下面的伎倆:

setlocale(LC_TIME, ""); 

在結合:

echo strftime("%d. %B %Y"); 

這就是我得到了在德國格式的當前日期。希望可以幫助。

3

我使用Ubuntu上樹莓派,曾試圖用葡萄牙語本地日期相同的問題:

setlocale(LC_TIME, "C"); 
echo strftime("%A"); 
echo setlocale(LC_TIME, "pt_PT"); 
echo strftime(" in Portuguese %A"); 

然後用命令檢查當地-a,PT_PT不在名單上,所以我再次添加它須藤的/ usr /共享/區域設置/安裝語言包PT_PT和運行當地-a:它就在那裏pt_PT.utf8。 之後,結果仍然相同:pt_PT的輸出仍然是英文。 這裏是做事情的工作對我來說略有區別:

··· 
echo setlocale(LC_TIME, "pt_PT.utf8"); 
··· 

所以,我不得不把PT_PTpt_PT.utf8

+0

這是對我工作。我做的是安裝整個語言包,沒有特別指定: '/ usr/share/locales/install-language-pack es' – 2016-01-20 18:42:59

+0

有一個錯字:「setlocale」而不是「etlocale」in示例代碼的第一行。無法編輯它,對不起! – 2017-10-19 12:05:58

+0

謝謝@NEXTLEVELSHIT!已經更正 – alexscmar 2017-10-27 14:24:46

0

也許你沒有安裝,所以如果語言環境你在ubuntu上,你可以在沒有cuotes的情況下用「locale -a」檢查列表,並檢查/ usr/share/i18n/SUPPORTED文件中的可用languajes,並且它們生成「locale-gen de_DE」所需的語言環境。

希望爲你工作。

0

請注意,在Linux中生成新語言環境後,您可能需要重新啓動httpd和php-fpm deamons。

不重新啓動php(7.2)找不到它們,即使在locale -a列出。

希望它會節約一些時間:)

1
locale -a 
locale-gen nb_NO.UTF-8 
locale-gen nb_NO 
update-locale 
locale -a 
restart php5-fpm 
+0

請嘗試提供一些你正在發佈的解決方案的解釋。 – 2018-01-29 08:23:58