将自定义字符串转换为主题删除模板


8

我知道这个论坛已经处理过几次了

Magento2本地化Javascript

Magento 2-JS模板中的翻译问题

Magento2翻译Javascript(KO)模板文本

我已经在Magento 2.1.9项目中安装了意大利语语言包,并且大多数字符串都已正确翻译。

我在主题中添加了新的翻译词典。

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

在这里,我修改了一些翻译,并添加了主题的新字符串以进行翻译。对于phtml文件中包含的字符串,一切正常。

我在结帐的knokout模板中添加了一些自定义字符串。例如在

<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

Answers:


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 / zh_CN

..

我们选择此系统是因为我们正在处理的项目具有多种语言,并且我们不想包含太多语言包。

请注意,它仅适用于新字符串,因为Magento优先考虑语言包翻译。但这是另一个故事。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.