カスタム文字列をテーマノックアウトテンプレートに変換する


8

この問題はこのフォーラムで数回処理されていることを知っています

Magento2ローカリゼーションJavascript

Magento 2-JSテンプレートの翻訳の問題

Magento2がJavascript(KO)テンプレートテキストを変換する

Magento 2.1.9プロジェクトにイタリア語の言語パックをインストールしました。ほとんどの文字列は正しく翻訳されています。

テーマに新しい翻訳辞書を追加しました。

vendor/<Vendor>/<Theme>/i18n/it_IT.csv

ここで、いくつかの翻訳を変更し、翻訳するテーマの新しい文字列を追加しました。phtmlファイルに含まれる文字列はすべて正常に動作します。

チェックアウトのノックアウトテンプレートにいくつかのカスタム文字列を追加しました。たとえば

<My-theme>/Magento_Checkout/web/template/authentication.html 

追加した

<span data-bind="i18n: 'Do you already have an account?'"></span>

次に、私のテーマit_IT.csvで:

"Do you already have an account?","Hai già un account?"

もちろん、キャッシュ、pub / static / 、var / view_preprocessed /、var / generationなどを空にして、すべてのコマンドを実行しました。

文字列はまだ英語です。

チェックアウトでいくつかの文字列を翻訳するには、新しい言語パッケージを作成する必要がありますか?どういう理由ですか?

EDITオンライン翻訳はすべての文字列で機能します。それは一時的にそれを修正する方法であるかもしれませんが、決定的な解決策ではありません。


1
私はまた、他の翻訳がこの方法を使用して機能することを追加します
スプリンネリン

回答:


2

言語パッケージを拡張する必要があります。テーマで翻訳ファイルを作成するだけでは不十分です。

この拡張モジュールには、以下が含まれている必要があります。

composer.json

{
  "name": "snowdog/project-language-translations",
  "description": "Some translations for some project",
  "type": "magento2-language",
  "require": {
    "magento/framework": "^100.0.0"
  },
  "autoload": {
    "files": [
      "registration.php"
    ]
  }
}

language.xml

<?xml version="1.0"?>
<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/Language/package.xsd">
    <code>en_US</code>
    <vendor>snowdog</vendor>
    <package>en_us_custom</package>
</language>

registration.php

<?php
\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::LANGUAGE,
    'snowdog_en_us_custom',
    __DIR__
);

そしてもちろん、希望の言語での翻訳を含むファイル。


0

代替ソリューション(最終的に採用したもの)は、テーマではなくモジュールに翻訳ファイルを含めることです。

奇妙なことに、csvモジュールはjs文字列を簡単に変換できます。

新しいモジュールを作成するには:

<?php
use \Magento\Framework\Component\ComponentRegistrar;
ComponentRegistrar::register(ComponentRegistrar::MODULE,
    '<Vendor>_<Module>',
    __DIR__
);

composer.json

{
  "name": "vendor/module",
  "description": "Project custom translations",
  "require": {
    "php": "7.0.2|7.0.4|~7.0.6"
  },
  "type": "magento2-module",
  "autoload": {
    "files": [ "registration.php" ],
    "psr-4": {
      "<Vendor>\\<Module>\\": ""
    }
  }
}

etc / module.xml

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
    <module name="<Vendor>_<Module>" setup_version="1.0.0" />
</config>

ここで、すべての言語ファイルを追加します。

i18n / it_IT

i18n / en_US

..

私たちが取り組んでいるプロジェクトには多くの言語があり、あまり多くの言語パッケージを含めたくなかったので、このシステムを選択しました。

Magentoは言語パックの翻訳を優先するため、新しい文字列に対してのみ機能することに注意してください。しかし、これは別の話です。

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