W końcu udało mi się rozwiązać problem.
Wydaje się, że odczytywane jest tłumaczenie szablonu JS, z js-translation.json
którego generowane jest podczas setup:static-content:deploy
wykonywania. Aby wypełnić dane w tym pliku, należy utworzyć nowy pakiet językowy dla projektu.
Zamiast dodawać CSV na poziomie motywu, tak jak app/design/<area>/<vendor>/<theme-name>/i18n/xx_XX.csv
musimy dodać go w pakiecie językowym.
Aby najpierw utworzyć nowy pakiet językowyproject document root
, musimy utworzyć następujące katalogi:
mkdir -p app/i18n/<project-name>/<xx_xx>
Ważne : UŻYWAJ WYŁĄCZNIE TYLNYCH NAZW KATALOGOWYCH Nazwy folderów zamaskowanych nie będą działać
Następnie zmień katalog na nowo utworzone foldery:
cd app/i18n/<project-name>/<xx_xx>
Teraz możesz utworzyć composer.json
(opcjonalny) plik o następującej treści:
{
"name": "<project-name>/<xx_xx>",
"description": "<sample description>", //Ex:English (United States) language
"version": "<version-number>", //100.0.1
"license": [
"OSL-3.0",
"AFL-3.0"
],
"require": {
"magento/framework": "100.0.*"
},
"type": "magento2-language",
"autoload": {
"files": [
"registration.php"
]
}
}
Następnie utwórz language.xml
plik z następującą zawartością:
<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/Language/package.xsd">
<code>xx_XX</code> <!-- example: <code>en_US</code> -->
<vendor><project-name></vendor>
<package><xx_xx></package> <!-- example: <package>en_us</package> -->
</language>
Później niż registration.php
zawiera następującą treść:
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::LANGUAGE,
'<project-name>_<xx_xx>',
__DIR__
);
Teraz możemy utworzyć nasz CSV tłumaczenia. Jeśli masz go już w folderze motywu, app/design/<area>/<vendor>/<theme-name>/i18n/xx_XX.csv
możesz go po prostu przenieśćapp/i18n/<project-name>/<xx_xx>/xx_XX.csv
Teraz project document root
musimy uruchomić następujące polecenia:
find pub/static -name js-translation.json -exec rm -rf {} \;
Musimy usunąć ten, js-translation.json
który został już utworzony przed uruchomieniemsetup:static-content:deploy
Teraz uruchamiamy wdrażanie zawartości statycznej:
php bin/magento setup:static-content:deploy <xx_XX>
Gdy to zrobisz, wyczyścimy pamięć podręczną:
php bin/magento cache:clean
php bin/magento cache:flush
Możemy sprawdzić, czy pliki tłumaczeń dla szablonu JS zostały wygenerowane, znajdując cały js-translation.json
folder pub / static.
find pub/static -name js-translation.json
Spowoduje to wyświetlenie listy wszystkich plików tłumaczeń wygenerowanych dla szablonów JS.
Odniesienie:
- Magento DevDocs
- Powiązany problem z Github
js-translation.json
pliki są tworzone poprawnie ze statycznego wdrażania zawartości, nawet jeśli pliki .csv są wstawioneapp/design/frontend/vendor/theme-name/i18n/xx_XX.csv
. Jedyne, co należy zrobić, to usunąć wszystkojs-translation.json
przed uruchomieniem wdrażania zawartości statycznej.design/<vender>/<theme>/i18n/xx_XX.csv
.js-translation.json
plik i skonfigurowanie serwera WWW, który będzie dostarczał odpowiednie typy żądańJak opisałem w numerze Github ( https://github.com/magento/magento2/issues/7525#issuecomment-316690100 ) istnieje inne (łatwiejsze) rozwiązanie tego problemu.
Musisz tylko wdrożyć każdy język osobno.
Zamiast używać:
posługiwać się
Jest to prawdopodobnie spowodowane faktem, że
static-content:deploy
pliki są kompilowane tylko raz, a następnie kopiowane do innych języków.źródło