Перевод пользовательских строк в шаблоны тем оформления


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 и т. Д. И запустил все команды.

Строки все еще на английском языке.

Мне действительно нужно создать новый языковой пакет для перевода нескольких строк в кассе? В чем причина?

РЕДАКТИРОВАТЬ Онлайн переводы работают для всех строк. Это может быть способ исправить это временно, но не окончательное решение.


1
я также добавил бы, что другие переводы работают с использованием этого метода
springerin

Ответы:


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>\\": ""
    }
  }
}

и т.д. / 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 отдает приоритет переводам языковых пакетов. Но это другая история.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.