プロトタイプ検証用の新しいルールの作成に成功したので、エラー メッセージ (場所: Javascript の文字列) を翻訳する必要があります。ただし、すべてのメッセージしか翻訳できません。新しいカスタム メッセージは翻訳できないようです。これを変更するにはどうすればよいですか?
6 に答える
たぶんあなたはフォルダ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>
-[0個以上]すべてのjstranslator.xml
ファイルで一意のXML要素名を持つルートノードの子要素(それ以外の場合は、モジュールリストに基づく読み込み順序の最後が優先されます)。- 属性:
translate="message"
-(オプション)翻訳される子要素の名前が「message
」であるというヒント。ただし、これはjs翻訳XMLファイル(Magento CE 1.9、「*/message
」を検索)用にハードコーディングされており、この属性は「」である必要はありません。使用済み。module="mymodule"
-(オプション)モジュールの名前。省略した場合、値は「core
」です。これは、後で(そのモジュールから)データヘルパーをインスタンス化するために使用され、その後、(CSVファイルなどから)翻訳をロードする責任があります。
<message>
-[親ごとに0または1]メッセージを翻訳します。この要素のテキスト値node-valueは、javascriptTranslatorオブジェクトデータに追加されるものと見なされます。
アクティブ化されたモジュールのすべての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');
その他の参考資料
カスタム 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 でのみテストしました。
何が役に立ったか (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 検証で使用します
ファイルを編集app/local/ur_language/Mage_Core.csv
して、最初の列に元の文字列を追加し、2 番目の列に翻訳された文字列を追加できます。すべての JavaScript 翻訳はこのファイルに保存されます。
これを拡張するには、翻訳文字列を Mage/Core/Helper/Js.php に追加する必要があります。