我正在移植一个在 JUMI 元素中运行的小型 Web 应用程序(PHP + Javascript),从 Joomla 1.5 到 2.5。
基本上在 1.5 的翻译中,我们使用 jsJText 使翻译后的字符串在 Javascript 中可用。根据我在几个教程中的理解,2.5 应该使这更容易,因为集成了对 Javascript 翻译的支持。
在检查了几个站点和谷歌结果后,他们都说:首先使用 JText::script('key'); 将字符串添加到 PHP 中的 javascript 语言存储中;然后使用 Joomla.JText._('key') 或 Joomla.JText.strings.key 在 javascript 中检索它们。
但是,我在让它工作时遇到了很多麻烦。PHP 中的翻译工作得非常好,但在 Javascript 中我最终得到未定义而不是正确的翻译文本。
我拍摄了一个小屏幕截图,说明了我的方法和问题。
包含语言字符串的 PHP 文件包含在显示内容的 PHP 主页面中。这几乎是页面中的第一个包含。
我很确定我在某个地方犯了一个愚蠢的错误,但老实说,我一辈子都找不到它。任何能指出我正确搜索方向的人都将不胜感激。
谢谢你。
20130612-编辑:
关于我在评论中建议的东西的更多信息:
- 启用 joomla 调试没有帮助。那里没有错误。
- Mootools 已加载,版本 1.4.5。
我也尝试过一些有点不正统的东西。JText::script 行列表位于单独的 PHP 文件中。我尝试将该文件包含到一个随机模块中,并将该模块显示在与我的 Web 应用程序相同的页面上。那时它确实奏效了。但是,这并不是真正解决问题的方法,而只是一个相当肮脏的解决方法。
然而,该测试确实确认代码本身没有真正的问题。我只是在某处遗漏了一些东西。仍然对缺少什么感到困惑。关于它可能是什么的任何指示?
20130612-编辑2:
当包含在随机模块中以及在我的 webapp 中时,我已经比较了页面源。唯一的区别似乎是页面中添加了以下 Javascript,我认为它应该由 JText::script 代码生成,所以......我真的很难过。
<script type="text/javascript">
(function() {
var strings = {"PA_ITEM_BLOWD":"Blow-dryer"...};
if (typeof Joomla == 'undefined') {
Joomla = {};
Joomla.JText = strings;
}
else {
Joomla.JText.load(strings);
}
})();
</script>