我在使用 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 文件夹中,我有带有字符串“Login”-“SKSKSK”翻译的 pot 文件
在 ro_RO 文件夹中,我有带有字符串“登录”-“RORORO”的翻译的 pot 文件
在浏览器中我看到“SKSKSK”
示例 2:
在 sk_SK 文件夹中,我有带有字符串“登录”-“RORORO”的翻译的 pot 文件
在 ro_RO 文件夹中,我有带有字符串“登录”-“SKSKSK”翻译的 pot 文件
在浏览器中我看到“RORORO”
我想知道这个问题是否与Smarty有关。你有什么想法?