我有下面的代碼片段:的setlocale具有PHP
setlocale(LC_ALL, "de");
print(strftime("%A %e %B %Y", time()));
,它的打印
日2010年5月4日
,而不是
Dienstag 4. Mai 2010
任何想法爲什麼?怎麼修?
我有下面的代碼片段:的setlocale具有PHP
setlocale(LC_ALL, "de");
print(strftime("%A %e %B %Y", time()));
,它的打印
日2010年5月4日
,而不是
Dienstag 4. Mai 2010
任何想法爲什麼?怎麼修?
您是否有de
區域設置可用; setlocale
爲您回報什麼?參見:return values for setlocale()。
此外,請檢查可用語言環境列表(例如locale -a
或適合您的操作系統的任何內容),以查看其中是否包含de
。可能的替代品包括de_DE
或等等。
在Debian中,生成一個新的語言環境,運行以下命令:
dpkg-reconfigure locales
,並選擇你想要的人。
如果語言環境未安裝在您的系統上,設置語言環境將不起作用。
嘗試將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
對我來說,下面的伎倆:
setlocale(LC_TIME, "");
在結合:
echo strftime("%d. %B %Y");
這就是我得到了在德國格式的當前日期。希望可以幫助。
我使用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_PT到pt_PT.utf8
也許你沒有安裝,所以如果語言環境你在ubuntu上,你可以在沒有cuotes的情況下用「locale -a」檢查列表,並檢查/ usr/share/i18n/SUPPORTED文件中的可用languajes,並且它們生成「locale-gen de_DE」所需的語言環境。
希望爲你工作。
請注意,在Linux中生成新語言環境後,您可能需要重新啓動httpd和php-fpm deamons。
不重新啓動php(7.2)找不到它們,即使在locale -a列出。
希望它會節約一些時間:)
locale -a
locale-gen nb_NO.UTF-8
locale-gen nb_NO
update-locale
locale -a
restart php5-fpm
請嘗試提供一些你正在發佈的解決方案的解釋。 – 2018-01-29 08:23:58
這是對我工作。我做的是安裝整個語言包,沒有特別指定: '/ usr/share/locales/install-language-pack es' – 2016-01-20 18:42:59
有一個錯字:「setlocale」而不是「etlocale」in示例代碼的第一行。無法編輯它,對不起! – 2017-10-19 12:05:58
謝謝@NEXTLEVELSHIT!已經更正 – alexscmar 2017-10-27 14:24:46