Magento2javascriptテキスト翻訳
-
12-12-2019 - |
質問
[編集]
これは古くなっています。以下で説明するように、翻訳はもう行われません
[/編集]
Magentoの1では、javascriptで必要な翻訳可能なテキストが追加されました jstranslate.xml
ファイル内の etc
モジュールのフォルダとそれらは自動的に翻訳jsオブジェクトに追加されました。
Magento2のjavascriptで使用する翻訳可能なテキストを追加するにはどうすればよいですか?
Magento2でテキスト翻訳を使用する方法を見つけましたが、新しい翻訳を追加する方法がわかりません。
ここでは、それらを使用する方法の例です:
alert($.mage.__('Text to translate here'));
解決
わかった私は解決策を見つけましたが、それは私には醜いです。
ページのレイアウトハンドルにこれを追加する必要があります:
<referenceContainer name="after.body.start">
<block class="Magento\Framework\View\Element\Template" name="some-name-here" template="[Namespace]_[Module]::translate.phtml"/>
</referenceContainer>
次に、テンプレートを作成します translate.phtml
で [Namespace]/[Module]/view/[frontend|adminhtml]/templates
このコンテンツでは、:
<?php
$_data = array(
'Text one to translate' => __('Text one to translate'),
'Text two to translate' => __('Text two to translate'),
);
?>
<script type="text/javascript">
require(["jquery","mage/translate"], function($){
$.mage.translate.add(<?php echo Zend_Json::encode($_data) ?>)
});
</script>
私はこれを行う他の方法があることを本当に願っています。
他のヒント
フロントエンドの翻訳のデフォルトのsrcは次のようになります /アプリ/コード/Magentoの/翻訳/ビュー/ベース/テンプレート/翻訳。phtml
このブロックを指す /app/code/Magento/Translation/Block/Js。php
これはdataproviderとしてこれを持っています /app/code/Magento/Translation/Model/Js/DataProvider。php
したがって、依存関係を独自のdataproviderに変更するか、これを傍受して独自の翻訳を追加するか、独自のdataproviderでこのタイプの独自のブロックを追加できます。