我正在移植一个从Joomla 1.5到2.5的JUMI元素中运行的小型Web应用程序(PHP + Javascript)。
基本上在翻译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-编辑:
关于我在评论中尝试过的内容的更多信息:
我也尝试过一些非正统的东西。 JText :: script行列表位于单独的PHP文件中。我已经尝试将该文件包含在随机模块中,并在与我的Web应用程序相同的页面上显示该模块。那时它确实有效。但是,这并不是解决问题的方法,而只是一种相当肮脏的解决方法。
然而,该测试确实证实代码本身没有真正的问题。我只是在某处遗漏某些东西。仍然难以忘记什么。关于它可能是什么的任何指示?
20130612-Edit2:
当包含在随机模块中时,以及在我的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>