2013-10-25 82 views
2

在localhost上,西班牙語,俄語和羅馬尼亞語顯示的語言是正確的,但是當我們將站點移至AWS上的我們的生產服務器時,我們的文本顯示不正確。在生產中沒有正確顯示非ASCII字符

我們使用獲取文本和.po文件來顯示我們的語言。直接從我們的數據庫中顯示的文本很好,只有.po文件中的文本被破壞。

破碎例如: http://ru.artzoco.com/seller/102/YallooArt

如何它應該看看: http://en.artzoco.com/seller/102/YallooArt

我們的getText代碼:

//language sudomain process http://stackoverflow.com/q/18996503/1744357 
$host = explode(".",$_SERVER['HTTP_HOST']); 
switch ($host[0]) { 
    case 'en': 
    $locale = 'en_US'; 
    break; 
    case 'es': 
    $locale = 'es_ES'; 
    break; 
    case 'ru': 
    $locale = 'ru_RU'; 
    break; 
    case 'ro': 
    $locale = 'ro_RO'; 
    break; 
    default: 
    $locale = 'en_US'; 
    break; 
} 
putenv("LANG=$locale"); 
$loc_es = setlocale(LC_ALL, $locale); 
bindtextdomain("translations", "../../locale/"); 
textdomain("translations"); 
+0

如果您發佈調用'gettext' –

+0

我的gettext代碼更新的代碼可能會有所幫助。感謝您的迴應 – vinsanity38

回答

0

我發現了一個Linux服務器,我需要專門調用此行對我們的代碼:

bind_textdomain_codeset("translations", "utf-8"); 

因爲我們在一個窗口服務器在我們的本地主機,它沒有這個代碼行工作。

0

我看到這個在php manual entry for gettext

不e:

爲某些系統設置語言是不夠的,應使用putenv() 來定義當前語言環境。

您的本地計算機和生產服務器默認值之間可能存在差異,因此請嘗試將上述環境變量明確設置爲您所需的語言。

我的下一個最好的猜測是,它是來自數據庫的生產服務器上的字符編碼問題(不確定是否使用了它)。

您是從MySQL數據源查詢數據嗎?如果是這樣,請嘗試mysql_set_charset功能您檢索之前:

mysql_set_charset('utf8');