我已成功为原型验证创建了新规则,现在我需要翻译错误消息(Javascript中的Location:String)。但是,我只能翻译所有消息,我的新自定义消息似乎不可翻译。我该如何改变?
答案 0 :(得分:8)
也许您需要jstranslator.xml
文件夹中的etc
文件:
<?xml version="1.0" encoding="UTF-8"?>
<jstranslator>
<some-message-name translate="message" module="mymodule">
<message>This is the text in my own js validation</message>
</some-message-name>
</jstranslator>
具有以下结构和含义:
<jstranslator>
- [one] XML根节点。
<some-message-name>
- [零个或多个]根节点子元素,在所有jstranslator.xml
文件中具有唯一的XML元素名称(否则根据模块列表获胜的最后加载顺序)。
translate="message"
- (可选)提示正在翻译的子元素名为“message
”,但这是对js翻译XML文件进行了硬编码(Magento CE 1.9,搜索“*/message
”)并且不需要使用此属性。module="mymodule"
- (可选)模块的名称,如果省略,则值为“core
”。它将用于稍后(从该模块)实例化数据助手,然后负责翻译(例如从CSV文件)。<message>
- [每个父项为零或一个]要翻译的消息。此元素node-value的文本值将被添加到javascript 转换器对象数据中。处理已激活的模块的所有jstranslator.xml
个文件。
然后将您的翻译行放入Something_Mymodule.csv
文件:
"This is the text in my own js validation", "(translated in a different language or speech)"
然后在您的js脚本中,您可以通过翻译:
使用您自己的翻译Translator.translate('This is the text in my own js validation');
答案 1 :(得分:6)
要翻译自定义的javascript错误消息,您还需要将它们添加到以下文件中:
\app\code\core\Mage\Core\Helper\Js.php
找到一个函数 _getTranslateData() 你会在那里看到一堆消息。
只需在数组中的某处添加您的消息,如下所示:
'This is my validation message' => $this->__('This is my validation message')
不要忘记逗号(,)。
然后将翻译放入一些翻译文件中。
在您使用此消息的文件中(我在 opcheckout.js 文件中使用它),您需要在Translator.translate('This is my validation message')
中包装文本。
我还没弄清楚是否重要的翻译文件是什么。您可以尝试Mage_Core.csv
。
我在Mage_Checkout.csv
中需要它,它可以在那里工作。
无论如何,对于那些对更多感兴趣的人,我注意到这些javascript消息被打印在每个html页面的标题中,并且有些担心它与SEO混淆。无论如何,这是打印在文件中
\app\design\frontend\bmled\default\template\page\html\head.phtml
代码。
<?php echo $this->helper('core/js')->getTranslatorScript() ?>
哦,如果你不喜欢这个解决方案,那么这将使你更好。 Check here:
我希望这会有所帮助,我希望无处不在,到目前为止我只在Onepage Checkout上进行了测试。
答案 2 :(得分:1)
您可以编辑app/local/ur_language/Mage_Core.csv
文件,在第一列中添加原始字符串,在第二列中添加原始字符串。所有javascript翻译都存储在此文件中。
答案 3 :(得分:1)
对我有什么帮助(Magento EE 1.6) - 我添加了新的翻译对象:
<script>
var _data = {
'This is a required field.':
"<?php echo $this->__('This is a required field.'); ?>",
'Please make sure your passwords match.':
"<?php echo $this->__('Please make sure your passwords match');?>",
'validate telephone error':
"<?php echo $this->__('validate telephone error');?>"
};
var Translator = new Translate(_data);
</script>
如果已定义VarienForm在js验证中使用它
答案 4 :(得分:0)
我们的一个magento项目遇到了完全相同的问题。我们发现app/design/frontend/default/default/template/page/htmlhead.phtml
中的函数已被注释掉了:
<?php echo $this->helper('core/js')->getTranslatorScript() ?>
将其放入后,仍然无效,因为翻译尚未插入翻译文件中。检查这两件事,它应该开始工作。
答案 5 :(得分:-2)
要扩展此功能,您必须将翻译字符串添加到Mage / Core / Helper / Js.php。