【问题标题】:How to install a language pack in Magento 2?如何在 Magento 2 中安装语言包?
【发布时间】:2015-12-03 13:35:36
【问题描述】:

我尝试按照https://mage2.pro/t/topic/270http://devdocs.magento.com/guides/v2.0/config-guide/cli/config-cli-subcommands-i18n.html#config-cli-subcommands-xlate-example2 的说明进行操作 但我还是失败了。

我正在尝试将标题中的搜索框文本从“在此处搜索整个商店...”更改为“Suche...”

现在,我在 app/i18n/Test/de_ch 中有以下文件

  • composer.json
  • de_ch.csv
  • 语言.xml
  • registration.php

composer.json

中有此内容
{
  "name": "test/de_ch",
  "description": "German (Switzerland) language",
  "version": "100.0.1",
  "license": [
    "OSL-3.0",
    "AFL-3.0"
  ],
  "require": {
    "magento/framework": "100.0.*"
  },
  "type": "magento2-language",
  "autoload": {
    "files": [
      "registration.php"
    ]
  }
}

de_ch.csv

"Search entire store here...","Suche..."

language.xml

<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/Language/package.xsd">
   <code>de_CH</code>
   <vendor>Test</vendor>
   <package>de_ch</package>
</language>

registration.php

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

在管理员中,我使用 Deutsch (Schweiz) 配置了商店(商店 > 配置 > 常规 > 常规 > 区域设置选项 > 区域设置)。

然后,尝试 php bin/magento setup:upgrade 和 php bin/magento cache:clean

但没什么,搜索表单中的文本仍然是“在此处搜索整个商店...”

【问题讨论】:

    标签: translation magento2


    【解决方案1】:

    我刚试了一下,它就可以工作了。您需要对小写进行一些小的大写更改,反之亦然。

    1. 将文件夹 app/i18n/Test/de_ch 重命名为 app/i18n/test/de_ch(小写 t)
    2. 将文件de_ch.csv重命名为de_CH.csv(大写CH,这需要与language.xml中的&lt;code&gt;&lt;/code&gt;相同)
    3. language.xml中,把Test改成test(当然还要在文件开头加上&lt;?xml version="1.0"?&gt;)。这是在App/Language/package.xsd 中定义的
    4. registration.php中也改成test_de_ch

    ----编辑添加完整代码---

    /app/i18n/test/de_ch 创建以下文件:

    composer.json

    {
    "name": "test/de_ch",
      "description": "German (Switzerland) language",
      "version": "100.0.1",
      "license": [
        "OSL-3.0",
        "AFL-3.0"
      ],
      "require": {
        "magento/framework": "100.0.*"
      },
      "type": "magento2-language",
      "autoload": {
        "files": [
          "registration.php"
        ]
      }
    }
    

    de_CH.csv

    "Search entire store here...","Suche TESTING..."
    

    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>de_CH</code>
        <vendor>test</vendor>
        <package>de_ch</package>
    </language>
    

    registration.php

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

    【讨论】:

    • 太好了,现在可以使用了!您可以发布整个代码以帮助其他人:)
    • 是的,我们昨天更新了文档。对大小写错误感到抱歉。如果您现在发现该主题有问题,请告诉我们。
    • 是的,它可以工作,但是如何覆盖它呢?我创建了 app/design/Theme/default/i18n/xx_XX.csv,但它没有覆盖,所以如果不在原始 csv 中,我无法添加自定义。
    • @LucaS 这个例子是一个独立的语言包。嵌入主题的语言说明会有所不同。
    • @Maddy 我认为您的回复超出了范围,也许我的问题不清楚。那么,如何可能覆盖独立语言包?我不想更改原来的独立语言包,更新时我会丢失更改,所以我必须扩展它。你同意吗?
    【解决方案2】:

    你可以buy it and install it :)

    composer config repositories.atconnect composer https://connect20.aveo-trade.cz composer require atconnect/magento-two-language-de-de

    我们使用这个 composer 包结构: magento-two-language-de-de/composer.json

    {
        "name": "atconnect/magento-two-language-de-de",
        "description": "Magento 2.0.0: de_DE",
        "version": "2.0.0.2-stable",
        "license": [
            "proprietary"
        ],
        "type": "magento2-language",
        "autoload": {
            "files": [
                "registration.php"
            ]
        }
    }
    

    magento-two-language-de-de/language.xml

    <?xml version="1.0"?>
    <!--
    /**
     * @copyright Copyright (c) AveoTrade
     Licence: https://connect20.aveo-trade.cz/cat:Agreement
     */
    -->
    <language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/Language/package.xsd">
        <code>de_DE</code>
        <vendor>atconnect</vendor>
        <package>magento-two-language-de-de</package>
    </language>
    

    magento-two-language-de-de/registration.php

    <?php
    /**
     * Copyright © 2015 AveoTrade
     */
    \Magento\Framework\Component\ComponentRegistrar::register(
        \Magento\Framework\Component\ComponentRegistrar::LANGUAGE,
        'atconnect_magento-two-language-de-de',
        __DIR__
    );
    

    magento-two-language-de-de/de_DE.csv

    "1 Hour","1 Stunde",module,Magento_AdminNotification
    "12 Hours","12 Stunden",module,Magento_AdminNotification
    "2 Hours","2 Stunden",module,Magento_AdminNotification
    "24 Hours","24 Stunden",module,Magento_AdminNotification
    "6 Hours","6 Stunden",module,Magento_AdminNotification
    

    【讨论】:

    • 你好 Scholtz,我买了你的扩展,但是当我“更新作曲家”时它要求输入用户名和密码。我应该提供什么?
    • 嗨,已经给你回了邮件,但我也会在这里回复。确保你已经为购买的扩展设置了 api 密钥,api 密钥名称是用户名和 api 密钥秘密是密码。 connect20.aveo-trade.cz/cat:ApiKey
    【解决方案3】:

    请试试这个命令:

    php bin/magento setup:static-content:deploy

    【讨论】:

    • 试过了,然后发现它以“请求的语言:en_US”开头。完成后,翻译仍然无法正常工作。所以我尝试了 php bin/magento setup:static-content:deploy de_CH。命令成功了,但还是看不到翻译。
    猜你喜欢
    • 1970-01-01
    • 2016-03-07
    • 2019-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-26
    • 2016-01-03
    相关资源
    最近更新 更多