如何在Magento 2中安装语言包?

11

我尝试按照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的说明进行操作,但仍然失败了。

我想要将页眉搜索框中的文本从“Search entire store here...”更改为“Suche...”

目前,在app/i18n/Test/de_ch文件夹中有以下文件:

  • composer.json
  • de_ch.csv
  • language.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。
但是仍然没有变化,搜索表单中的文本仍然是“在此处搜索整个商店...”。
3个回答

14

我刚试过了,成功了。您需要进行一些大小写的微小更改。

  1. 将文件夹 app/i18n/Test/de_ch 重命名为 app/i18n/test/de_ch(小写t)
  2. 将文件 de_ch.csv 重命名为 de_CH.csv(大写CH,这必须与language.xml中的<code></code>相同)
  3. language.xml中,将Test更改为test(当然还要在文件开头添加<?xml version="1.0"?>)。这在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__
);

太好了,现在它可以工作了!你可以发布整个代码来帮助其他人 :) - Henry
是的,我们昨天更新了文档。对于大写错误感到抱歉。如果您现在发现主题有问题,请告诉我们。 - Steve Johnson
是的,它可以工作,但如何覆盖它?我创建了 app/design/Theme/default/i18n/xx_XX.csv,但它没有被覆盖,因此如果不在原始 csv 中,我无法添加自定义内容。 - LucScu
@LucaS 这个例子是针对独立的语言包。嵌入主题的语言包的指令将会不同。 - Maddy
@Maddy,我认为你的回答超出了范围,也许我的问题没有表述清楚。那么,如何覆盖独立语言包呢?我不想改变原始的独立语言包,因为当我更新它时会失去更改,所以我必须扩展它。你同意吗? - LucScu
不起作用,显示错误[InvalidArgumentException] ku_IQ参数具有无效值,请运行info:language:list以获取可用语言环境列表 - matinict

2
您可以购买并安装它:) 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,我购买了你的扩展,但是当我执行“composer update”时,它要求提供用户名和密码。我应该提供什么? - Henry
你好,我已经回复了你的邮件,但我也会在这里回复。请确保您已为所购买的扩展设置了API密钥,并且API密钥名称为“用户名”,API密钥密码为“密码”。https://connect20.aveo-trade.cz/cat:ApiKey - Scholtz

-3
请尝试运行以下命令:

php bin/magento setup:static-content:deploy


尝试过后发现它以“请求语言:en_US”开头。翻译完成后,仍然无法工作。所以我尝试了php bin/magento setup:static-content:deploy de_CH。命令成功执行,但我仍然看不到翻译。 - Henry

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接