2013-10-25 40 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');