9

我已经成功地为原型验证创建了新规则,现在我需要翻译错误消息(位置:Javascript 中的字符串)。但是,我只能翻译所有消息,我的新自定义消息似乎不可翻译。我该如何改变?

4

6 回答 6

10

也许您需要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>- [零个或多个] 在所有文件中具有唯一 XML 元素名称的根节点子元素jstranslator.xml(否则基于模块列表的最后加载顺序获胜)。
      • 属性:
      • translate="message"- (可选)提示正在翻译的子元素被命名为“ message”,但是这是针对 js 翻译 XML 文件(Magento CE 1.9,搜索“ */message”)的硬编码,并且该属性不需要是用过的。
      • module="mymodule"- (可选)模块名称,如果省略,值为“ core”。它将用于稍后(从该模块)实例化数据助手,然后负责加载翻译(例如从 CSV 文件)。
    • <message>- [每个父母零个或一个]要翻译的消息。此元素节点值的文本值被添加到 javascript Translator对象数据中。

处理激活模块的所有jstranslator.xml文件。

然后将您的翻译行放入Something_Mymodule.csv文件中:

"This is the text in my own js validation", "(translated in a different language or speech)"

然后在您的 js 脚本中,您可以通过 Translator 使用您自己的翻译

Translator.translate('This is the text in my own js validation');

更多参考资料

于 2012-09-05T17:20:19.930 回答
5

要翻译自定义 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() ?>

在此处查看更多信息:


我希望这会有所帮助,我只是希望这适用于任何地方,到目前为止,我仅在 Onepage Checkout 上对其进行了测试。

于 2010-10-01T13:07:44.310 回答
1

您可以编辑app/local/ur_language/Mage_Core.csv文件,在第一列中添加原始字符串,在第二列中添加翻译的字符串。所有的 javascript 翻译都存储在这个文件中。

于 2010-02-09T00:17:43.640 回答
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 验证中使用它

于 2013-02-05T09:04:33.300 回答
0

我们的一个 magento 项目遇到了完全相同的问题。我们发现里面的函数app/design/frontend/default/default/template/page/htmlhead.phtml被注释掉了:

<?php echo $this->helper('core/js')->getTranslatorScript() ?>

放进去之后还是不行,因为翻译文件还没有插入翻译。检查这两件事,它应该开始工作。

于 2009-10-02T06:41:25.190 回答
-2

要对此进行扩展,您必须将翻译字符串添加到 Mage/Core/Helper/Js.php。

于 2009-11-27T13:14:37.880 回答