Magento, переводите сообщения об ошибках валидации - PullRequest
8 голосов
/ 20 сентября 2009

Я успешно создал новые правила для проверки прототипа, теперь мне нужно перевести сообщения об ошибках (Location: String в Javascript). Тем не менее, я могу только перевести все сообщения, мои новые пользовательские не кажутся переводимыми. Как мне это изменить?

Ответы [ 6 ]

8 голосов
/ 05 сентября 2012

Может быть, вам нужен файл 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> - [один] корневой узел XML.
    • <some-message-name> - [ноль или более] дочерних элементов корневого узла с уникальным именем элемента XML во всех файлах jstranslator.xml (в противном случае последний в порядке загрузки на основе побед списка модулей).
      • Атрибуты:
      • translate="message" - (необязательно) подсказка о том, что переводимый дочерний элемент (-ы) называется "message", однако для файлов XML перевода js это жестко закодировано (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');

Дополнительные ссылки

6 голосов
/ 01 октября 2010

Чтобы перевести пользовательские сообщения об ошибках 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.

1 голос
/ 05 февраля 2013

Что мне помогло (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

1 голос
/ 09 февраля 2010

Вы можете отредактировать файл app/local/ur_language/Mage_Core.csv, добавив оригинальную строку в первый столбец и переведенную во второй. Все переводы javascript хранятся в этом файле.

0 голосов
/ 27 ноября 2009

Чтобы расширить это, вы должны добавить строки перевода в Mage / Core / Helper / Js.php.

0 голосов
/ 02 октября 2009

У нас была точно такая же проблема с одним из наших проектов magento. Мы обнаружили, что функция в app/design/frontend/default/default/template/page/htmlhead.phtml была закомментирована:

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

После установки это все равно не работало, потому что переводы не были вставлены в файл перевода. Проверьте эти две вещи, и они должны начать работать.

...