我已經在我的網絡服務器上安裝了荷蘭本地(nl_NL utf8
)(當我執行locale -a
我看到nl_NL utf8
所以這是好事)。setlocale()返回false
但是,我網頁上的日期是英文的(我把setlocale(LC_ALL, 'nl_NL');
放在了我的頁面頂部)。我在編譯php之後安裝了一個語言環境包時已經閱讀,我必須重新編譯php。
但是,有沒有其他解決方案,沒有重新編譯php,讓它工作?
謝謝!
我已經在我的網絡服務器上安裝了荷蘭本地(nl_NL utf8
)(當我執行locale -a
我看到nl_NL utf8
所以這是好事)。setlocale()返回false
但是,我網頁上的日期是英文的(我把setlocale(LC_ALL, 'nl_NL');
放在了我的頁面頂部)。我在編譯php之後安裝了一個語言環境包時已經閱讀,我必須重新編譯php。
但是,有沒有其他解決方案,沒有重新編譯php,讓它工作?
謝謝!
這可以通過設計:setlocale()
不會自動改變使用date()
和strftime()
日期輸出的格式的輸出。它所做的是本地化工作日和月份名稱,但沒有別的。
你能舉例說明你如何輸出日期,以及它們如何轉換失敗?
我正在使用Smarty(即:{$ memberdate | date_format:「%A,%d%B%Y」}),但我在另一個web服務器上使用了相同的代碼,沒有任何問題(在編譯php之前已經安裝了語言環境文件)。 – Arjen 2010-09-12 09:19:11
@Arjen啊,我明白了。然後我的回答沒有排序。添加語言環境需要*重新安裝* PHP對我來說聽起來有點奇怪,但是:是官方信息嗎? – 2010-09-12 09:25:54
見http://www.php.net/manual/en/function.setlocale.php#86246 – Arjen 2010-09-12 09:27:22
我在這裏總結了我發現面臨類似問題的原因,因爲在這裏顯然沒有建設性的答案(錯誤的答案,的確如此:setlocale()
確實會改變strftime()
的輸出),並且對其他人可能有用。
返回值
返回當前新的語言環境,或FALSE如果區域功能 是不是你的平臺上實現,指定的語言環境不 存在或類別名稱爲無效。
所以對於diagnosys,首先檢查正確的區域設置安裝(nl_NL,nl_NL.UTF-8等),或者使用一個殼或PHP system('locale -a')
。在一些Ubuntu系統上有一個腳本來安裝一個語言環境,例如。 /usr/share/locales/install-language-pack nl_NL
,但也可以考慮使用apt-get進行安裝。 (對於異國語言環境,還要檢查是否支持語言環境:在某些系統/usr/share/i18n/SUPPORTED
上)。
然後你可以使用var_dump(setlocale('nl_NL'));
得到setlocale()的輸出(因爲setlocale()
本身不輸出任何東西)。
對於固化可能是再生區域與區域設置根nl_NL,nl_NL
此後,update-locale
(和dpkg-reconfigure locales
)可以在某些系統是需要的。
在我看來,'setlocale()'是一個*災難*,因爲它沒有一致的區域設置命名方案 - 它們因服務器而異。我全心全意地推薦尋找諸如Zend Framework的[本地化功能](http://framework.zend.com/manual/en/zend.locale.parsing.html)的替代方案。 – 2010-09-12 09:15:37