Magento2翻訳Javascript(KO)テンプレートテキスト


24

私は、テキストの翻訳を追加しようとしています<!-- ko i18n: 'Store credit available' --><!-- /ko -->に存在するvendor/magento/module-customer-balance/view/frontend/web/template/payment/customer-balance.htmlが、私は私の中でテキストを変更しようとした場合i18n/en_US.csv、まだその動作していません、。

キャッシュをフラッシュし、静的コンテンツの展開を使用しました。

KOテンプレートの翻訳を追加する別の方法はありますか?

回答:


39

だから私はついに問題を理解することができました。

実行js-translation.json中に生成されるJSテンプレート変換が読み取られるようですsetup:static-content:deploy。このファイルにデータを取り込むために、新しいは、プロジェクト用に言語パッケージを作成する必要があります。

そのため、テーマレベルでCSVを追加する代わりに app/design/<area>/<vendor>/<theme-name>/i18n/xx_XX.csvに、言語パッケージに追加する必要があります。

最初に新しい言語パッケージproject document rootを作成するには、次のディレクトリを作成する必要があります。

mkdir -p app/i18n/<project-name>/<xx_xx>

重要:小文字のディレクトリ名のみを使用して、キャメルケースされたフォルダ名は機能しません

次に、ディレクトリを新しく作成したフォルダーに変更します。

cd app/i18n/<project-name>/<xx_xx>

これcomposer.jsonで、次の内容の(オプションの)ファイルを作成できます。

{                                                     
    "name": "<project-name>/<xx_xx>",                             
    "description": "<sample description>", //Ex:English (United States) language
    "version": "<version-number>", //100.0.1                             
    "license": [                                      
        "OSL-3.0",                                    
        "AFL-3.0"                                     
    ],                                                
    "require": {                                      
        "magento/framework": "100.0.*"                
    },                                                
    "type": "magento2-language",                      
    "autoload": {                                     
        "files": [                                    
            "registration.php"                        
        ]                                             
    }                                                 
}                                                     

次にlanguage.xml、次の内容のファイルが必要です。

<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/Language/package.xsd">
    <code>xx_XX</code> <!-- example: <code>en_US</code> -->
    <vendor><project-name></vendor>
    <package><xx_xx></package> <!-- example: <package>en_us</package> -->
</language>

registration.php次のコンテンツを含むよりも後が必要です。

\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::LANGUAGE,
    '<project-name>_<xx_xx>',
    __DIR__
);

これで、翻訳CSVを作成できます。テーマフォルダ内に既にあるものがある場合app/design/<area>/<vendor>/<theme-name>/i18n/xx_XX.csv移動できます。app/i18n/<project-name>/<xx_xx>/xx_XX.csv

ここから、project document rootこれらのコマンドを実行する必要があります。

find pub/static -name js-translation.json -exec rm -rf {} \;

js-translation.json実行する前に、すでに作成されているを削除する必要がありますsetup:static-content:deploy

次に、静的コンテンツデプロイを実行します。

php bin/magento setup:static-content:deploy <xx_XX>

それが完了したら、キャッシュをクリアします。

php bin/magento cache:clean
php bin/magento cache:flush

JSテンプレートの翻訳ファイルが生成されたかどうかを確認するにはjs-translation.json、pub / staticフォルダー内をすべて検索します。

find pub/static -name js-translation.json

これにより、JSテンプレート用に生成されたすべての翻訳ファイルのリストが提供されます。

参照:

  1. Magento DevDocs
  2. 関連するGithubの問題

私のプロジェクトでjs-translation.jsonは、.csvファイルがに挿入されていても、静的コンテンツデプロイからファイルが正しく作成されapp/design/frontend/vendor/theme-name/i18n/xx_XX.csvます。唯一の注意は、js-translation.json静的コンテンツのデプロイを実行する前にすべて削除することです。
LucScu

どのバージョンのmagentoを使用していますか?
アティシュゴスワミ

Vender / Themeだから、これからあなたの上記のコードごとに<project-name>はどうあるべきでしょうか??
カウシャルサタール

1
これが本当にこれを行う唯一の方法ですか?つまり、ドキュメント(devdocs.magento.com/guides/v2.1/frontend-dev-guide/translations/…)でさえ、翻訳ファイルをに入れることができると述べていますdesign/<vender>/<theme>/i18n/xx_XX.csv
Giel Berkers

1
Magentoの2は、これに関連するバグをたくさん持っている、私たちのために最善の方法は、手動で作成するスクリプトを作成することであったjs-translation.jsonリクエストの右の種類でそれを実現し、ファイルやメイクWebサーバの設定
cjohansson

1

Githubの問題で説明したように( https://github.com/magento/magento2/issues/7525#issuecomment-316690100)でその問題に対する別の(簡単な)ソリューションがあります。

すべての言語を個別に展開する必要があります。

使用する代わりに:

php bin/magento setup:static-content:deploy en_US de_DE it_IT fr_FR es_ES

つかいます

php bin/magento setup:static-content:deploy en_US
php bin/magento setup:static-content:deploy de_DE
php bin/magento setup:static-content:deploy it_IT
php bin/magento setup:static-content:deploy fr_FR
php bin/magento setup:static-content:deploy es_ES

これはおそらくstatic-content:deploy、ファイルを一度だけコンパイルし、後で他の言語にコピーするという事実が原因です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.