Magento,翻译验证错误消息

时间:2009-09-20 04:29:47

标签: validation prototype magento translation

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

6 个答案:

答案 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 for more here:


哦,如果你不喜欢这个解决方案,那么这将使你更好。 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。