assign('l-6ren">
gpt4 book ai didi

php - Smarty gettext 本地化

转载 作者:行者123 更新时间:2023-12-05 05:28:20 26 4
gpt4 key购买 nike

我在使用 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 是我的默认语言 - 斯洛伐克语和一些罗马尼亚语,例如:romanianro_ROro_RO.1250 , Romanian_Romania, Romanian_Romania.1250。它们每个都包含一个带有翻译的 pot 文件 - \LC_MESSAGES\messages.pot

发生的事情是:文件夹 sk_SK 中的任何翻译都会被翻译。如果我重命名文件夹,我就能正确翻译所有内容。但是无论我做什么,都不会占用其他文件夹。我处理这个问题已经有一段时间了,我尝试了几种语言设置和很多不同的文件夹名称。

示例 1:

在 sk_SK 文件夹中,我有 pot 文件,其中包含字符串 'Login' - 'SKSKSK' 的翻译

在 ro_RO 文件夹中,我有 pot 文件,其中包含字符串 'Login' - 'RORORO' 的翻译

在浏览器中我看到“SKSKSK”

示例 2:

在 sk_SK 文件夹中,我有 pot 文件,其中包含字符串 'Login' - 'RORORO' 的翻译

在 ro_RO 文件夹中,我有 pot 文件,其中包含字符串 'Login' - 'SKSKSK' 的翻译

在浏览器中我看到“RORORO”

请问是不是和Smarty有关。你有什么想法吗?

最佳答案

阅读它并查看下面的 URL,我认为它对您很有帮助。

What to use for localization (php/smarty/pear application)?

要不依赖于 php 扩展的可用性,您应该回退到 http://launchpad.net/php-gettext它提供了 gettext 的纯 php 实现。

gettext 还有一个很大的优势,那就是有许多工具可以轻松翻译这些文件。

关于php - Smarty gettext 本地化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12249966/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com