2014-10-01 83 views
2

我是西班牙語,並且正在進行測試internacionalizing文本寬度PHP,我只將它翻譯成英文。 我得到的文件這樣的結構:gettext僅在PHP中轉換爲英語

locale/en_US/LC_MESSAGES/con los ficheros messages.mo y messages.po 
locale/es_ES/LC_MESSAGES/con los ficheros messages.mo y messages.po 
locale/fr_FR/LC_MESSAGES/con los ficheros messages.mo y messages.po 

每一個文件都具有關鍵字「SERVICIOS」轉換爲每個languaje。

而在PHP我有這樣的代碼:

<?php 
putenv("LANG=en_US"); 
setlocale(LC_ALL, "en_US"); 
bindtextdomain("messages", "locale"); 
textdomain("messages"); 
?> 

當我把代碼「EN_US」示好翻譯,但是當我將其更改爲「es_ES」或「fr_FR目錄」是方法:

<?php 
putenv("LANG=es_ES"); 
setlocale(LC_ALL, "es_ES"); 
?> 

<?php 
putenv("LANG=fr_FR"); 
setlocale(LC_ALL, "fr_FR"); 
?> 

仍然顯示中英文翻譯

我工作的WIDNOWS 7和功能

echo $_SERVER['HTTP_ACCEPT_LANGUAGE'] ; 

返回 「ES-ES,ES; Q = 0.8」 始終,

哪些問題它可以嗎? 謝謝

回答

0

這很有可能語言沒有安裝在你運行腳本的服務器上 - 你有shell訪問服務器嗎?然後嘗試

locale -a 

查看安裝了哪些語言環境。這裏也有一看Is it feasible to rely on setlocale, and rely on locales being installed?

注:

小心的LC_ALL設置,因爲這可能會產生一些不必要的轉換。例如,我用

setlocale (LC_ALL, "Dutch"); 

讓我的工作日在荷蘭的頁面上。從那時起(我發現很多小時後),我的浮點數值來自MYSQL,因爲荷蘭語區域設置需要逗號(,)而不是小數點前的點(。),所以將其解釋爲整數。我試過printfnumber_format,floatval ....都無濟於事。 1.50總是打印爲1.00 :(

當我將區域設置爲:

setlocale (LC_TIME, "Dutch"); 

我平日現在是好的,我的浮點值過

+0

你好,對不起,我不明白。我有一個本地服務器apache \ r \ n Apache版本: 2.4.9 - 文檔 PHP版本: 5.5.12 - 文檔 服務器軟件: Apache/2.4.9(Win64)PHP/5.5.12謝謝! – cointreau17 2014-10-01 19:31:26

相關問題