我遇到了使用gettext的问题。
这是我设置区域语言的方法:
$lang = 'romanian';
putenv("LANG=$lang");
$smarty->assign('lang',$lang);
setlocale(LC_ALL, $lang);
if (setlocale(LC_ALL, $lang)==false) print ' false'; else print setlocale(LC_ALL, $lang);
bindtextdomain("messages", realpath("../locale"));
textdomain("messages");
这将打印出
Romanian_Romania.1250
,所以我认为setlocale函数运行良好。来自我的.tpl文件的示例:
{_('Login')}:<br>
<b style="color:blue;">{$user.name}</b>
<br>
<a href="logout.php">{_('Logout')}</a>
我已经在
\locale
文件夹中创建了一些包含翻译的文件夹。其中,sk_SK
是我的默认语言 - 斯洛伐克语,还有几个罗马尼亚语,如:romanian
、ro_RO
、ro_RO.1250
、Romanian_Romania
、Romanian_Romania.1250
。每个文件夹都包含一个带有翻译的 pot 文件 - \LC_MESSAGES\messages.pot
。问题是:任何在
sk_SK
文件夹中的翻译都会被翻译。如果我重新命名文件夹,我就可以正确地翻译所有内容。但无论我做什么,其他文件夹都不起作用。我已经处理这个问题很长时间了,尝试过多种语言设置和不同的文件夹名称。示例 1:
在
sk_SK
文件夹中,我有一个翻译字符串“登录”的 pot 文件 - “SKSKSK”。在
ro_RO
文件夹中,我有一个翻译字符串“登录”的 pot 文件 - “RORORO”。在浏览器中,我看到的是“SKSKSK”。
示例 2:
在
sk_SK
文件夹中,我有一个翻译字符串“登录”的 pot 文件 - “RORORO”。在
ro_RO
文件夹中,我有一个翻译字符串“登录”的 pot 文件 - “SKSKSK”。在浏览器中,我看到的是“RORORO”。
我想知道这个问题是否与Smarty有关。你有什么想法吗?