2012-09-04 69 views
1

我处理这个问题很长一段时间,这不是我的第一个问题,但仍然无法让本地化工作正常。 我使用WAMP服务器和php gettext。 一个简单的代码我为我的问题的示范制作:服务器忽略我的setlocale设置

/* dirs */ 
$directory = realpath('../locale'); 
$domain = 'messages'; 

/* trying to find out correct setting - last one is winner */ 
$locale ="ro";    
$locale ="ro_utf8"; 
$locale ="ro_RO"; 
$locale ="ro_RO.UTF-8"; 
$locale ="Romanian_Romania.1250"; 

putenv("LANG=".$locale); 

print setlocale(LC_ALL, $locale); 
setlocale(LC_ALL, $locale); 

bindtextdomain($domain, $directory); 
textdomain($domain); 
bind_textdomain_codeset($domain, 'UTF-8'); 

/* STRING TO BE TRANSLATED */ 
echo _('string'); 

../locale目录中也有很多这样的文件夹 - $language_name/LC_MESSAGES/。这些包含相应的.po和。莫文件,像这样翻译:

msgid "string" 
msgstr "string SK" 

sk_SK文件夹 或本

msgid "string" 
msgstr "string RO" 

roro_ROro_RO.UTF8ro_RO.UTF-8romanianRomanian_RomaniaRomanian_Romania.1250文件夹。

什么文件看起来像:

Romanian_Romania.1250串SK

所以,你可以清楚地看到 - 我的setLocale()到罗马尼亚,但我文本使用翻译翻译于sk_SK目录。我究竟做错了什么?

是否有一些函数可用于获取有关$ locale字符串和我的服务器期望找到的目录名称的信息?

回答

1

尝试做你的代码是这样的:

setlocale(LC_ALL, 'ro_RO','Romanian'); 

它已经在我的项目工作

0

可以帮助:

locale -a

你可以whach语言存在你的电脑。

sudo locale-gen pt_PT 
sudo locale-gen pt_PT.utf8 
sudo update-locale