How to install a language pack in Magento 2?

Henry picture Henry · Dec 3, 2015 · Viewed 14.4k times · Source

I tried to follow the instructions from https://mage2.pro/t/topic/270 and http://devdocs.magento.com/guides/v2.0/config-guide/cli/config-cli-subcommands-i18n.html#config-cli-subcommands-xlate-example2 but I still failed.

I'm trying to change the text of the search box in the header from 'Search entire store here...' to 'Suche...'

Right now, I have the following files in app/i18n/Test/de_ch

  • composer.json
  • de_ch.csv
  • language.xml
  • registration.php

With this content in 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__);

In the admin, I configured the store (Stores > Configuration > General > General > Locale Options > Locale) with Deutsch (Schweiz).

Then, tried to php bin/magento setup:upgrade and php bin/magento cache:clean

But nothing, the text in the Search form is still 'Search entire store here...'

Answer

Maddy picture Maddy · Dec 3, 2015

I just tried it and got it working. You need to make few minor uppercase to lowercase changes and vice-versa.

  1. Rename folder app/i18n/Test/de_ch to app/i18n/test/de_ch (lowercase t)
  2. Rename file de_ch.csv to de_CH.csv (uppercase CH, this needs to be identical to the <code></code> in language.xml)
  3. In language.xml, change Test to test (of course also add <?xml version="1.0"?> to the beginning of the file). This is defined in App/Language/package.xsd
  4. In registration.php too, change it to test_de_ch

---- edited to add complete code ---

In /app/i18n/test/de_ch Create the following files:

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__
);