2013-12-19 71 views
1

我在本地機器上運行apache web服務器,並且php內置日期本地化在那裏不起作用。 正如strftime documentation規定,下面的代碼應該以不同的語言顯示當前日期:如何在Ubuntu上安裝php本地化字符串

setlocale(LC_TIME, "C"); 
echo strftime("%A translates to "); 
setlocale(LC_TIME, "fr_FR"); 
echo strftime("%A in French"); 

但我得到:「週四轉化爲週四在法國」。

在另一個(配置良好)的服務器上,相同的代碼返回:「星期四翻譯爲法語中的jeudi」。我認爲我的語言環境機器缺少一些php法語字符串,但我找不到如何安裝它。

我使用PHP版本5.3.10-1ubuntu3.9。 這裏是區域設置-a命令的(截短的)輸出:

C 
C.UTF-8 
... 
fr_FR.utf8 
... 
POSIX 

fr_FR不存在但fr_FR.utf8存在。我不得不使用setlocale(LC_TIME, "fr_FR.utf8");來使它工作。如何使fr_FR版本正常工作?

回答

0

它接縫,該語言包不具有在不同的服務器完全相同的名稱(這取決於操作系統,版本,安裝包,... ?)。對於法國人,有時它只是fr_FR,有時fr_FR.utf8,有時fr_FR.UTF8,...

幸運的是,PHP setlocale功能拍攝這種情況下的護理,並接受現場名稱的列表。所以你可以指定所有這些不同的名字,並且php會得到第一個正確的名字。

setlocale('fr_FR', 'fr_FR.utf8', 'fr_FR.UTF8', 'French');

1

法語語言包似乎沒有安裝。如你願意,可以添加儘可能多的語言包:

sudo dpkg-reconfigure locales

+0

是的,我已經做了這個沒有任何影響。我以精確的方式編輯了我的問題,實際上顯示的是語言包。 –

+0

你確定所有的法語都安裝了嗎?當我執行該命令時,我爲法語(Debian sid)提供以下選項:'fr_CA ISO-8859-1 fr_CA.UTF-8 UTF-8 fr_CH ISO-8859-1 fr_CH.UTF-8 fr_FRI SO-8859-1 fr_FR.UTF-8 UTF-8' – ldrumm

+0

沒關係,只是看到你的更新。在這種情況下我不知道答案。 – ldrumm