Magento2 локализация Javascript

16

Подобный вопрос уже задавался здесь: переводы текстов JavaScript на Magento 2 , но Magento обновил эту технику перевода в бета-версии.

Как я могу добавить или обновить переводы, используемые Javascript?

Я понял, что Magento создает файл с именем «js-translation.json» в статической папке. Если я редактирую этот файл напрямую, я вижу, что мои переводы обновляются. Но где этот файл создан и как я могу добавить переводы, чтобы Magento автоматически добавлял его в js-translation.json при его создании?

Обновить

Правильный ответ на этот вопрос до сих пор не дан, хотя Mage2.PRO указал мне правильное направление, это не полный ответ. Мой js-translation.json все еще пуст при генерации.

Например, мне нравится переводить кнопку «Добавить в корзину». Эта кнопка имеет три состояния: Добавить в корзину, Добавлять ... и Добавлять ... Как я могу перевести эти слова? Другой пример: «У вас нет товаров в корзине». текст в миникарте. Я думаю, что все эти фразы должны быть переведены из js-translation.json, но где их добавить, чтобы эти файлы были заполнены этими переводами?

леший
источник
Я не уверен на 100% в этом, но я думаю, что ответ, предоставленный mage2.pro, является правильным. Если у вас есть, например, это в одном из файлов js, $.mage.__('Add To Cart')он будет автоматически подобран setup:static-content:deployкомандой. Единственная загвоздка в том, что в файлах локалей должен быть другой перевод текста. Тексты, имеющие в качестве перевода один и тот же текст, не добавляются в файл json, чтобы не увеличивать размер без причины.
Мариус

Ответы:

10

Не уверен, что вы уже поняли, но я все равно решил ответить ..

Я предполагаю, что другие ответы движутся в правильном направлении.

Если у вас уже установлены переводы, если нет, пожалуйста:

bin/magento i18n:pack -m replace -d source_nl_NL.csv . nl_NL

Итак, прежде всего, пожалуйста, очистите кеш (как и другие):

rm -rf var/cache var/generation var/page_cache var/view_preprocessed

Во-вторых, пожалуйста, очистите папку pub / static:

rm -rf pub/static/*/

Затем мы восстанавливаем статический контент: (я пропустил langcode в других ответах ..)

bin/magento setup:static-content:deploy nl_NL - Убедитесь, что вы добавили Langcode

Теперь проверьте, был ли создан js-translation.json:

find pub/static/ -name "js-translation.json"

Скорее всего, вы получите список js-translation.jsonфайлов. Пожалуйста, проверьте эти файлы и удалите их, если они пусты или содержат что-то вроде[] .

Тимон де Гроот
источник
1
Спасибо Тимон, это действительно путь! Я сам понял это некоторое время назад, но пока не опубликовал ответ. Это отличное дополнение к вопросу.
Сильван
@Silvan В моей установке в файле js-translation.json уже есть некоторые фразы, переведенные в мою локаль, но все еще есть фразы, которые не переводятся, стоит ли добавлять их вручную в этот файл?
Луис Гарсия
Я бы не рекомендовал это, потому что файл js-translation будет перезаписан при следующем развертывании статических файлов. В этом случае вы должны добавлять фразы вручную каждый раз, когда вы выполняли развертывание. Эти фразы присутствуют в языковом пакете?
Сильван
1

Попробуйте добавить переводы в файлы .csv, затем убедитесь, что выполнены следующие шаги:

  1. Кэш-память должна быть очищена (в основном, папки var / cache и var / view_preprocessed должны быть очищены)
  2. Статические файлы должны быть повторно развернуты (удалите все папки в pub / static и запустите bin / magento setup: static-content: deploy)
Аркадий Чижов
источник
0

Удалите весь кеш и удалите содержимое папки / статической папки.

Перейдите в корневой каталог и выполните команду ниже: -

php bin / magento setup: static-content: deploy

Надеюсь, ваша проблема будет решена.

Ракеш Верма
источник
ArkadiyCh также сказал мне, чтобы удалить кэш и заново развернуть статические файлы, к сожалению, это не решает мою проблему.
Сильван
0

У меня была такая же проблема, как "Не могу перевести фразы в $ .mage .__ ('XXX')", когда фраза в phtml работала идеально. Итак, решение было гениально простым.

$ t (...) и $ .mage анализируют только файлы * .js

Следовательно, оно не попадает в словарь js-перевода.

Поэтому при рендеринге скрипта раздела в phtml-файлах вы должны напрямую вставлять уже переведенные фразы с помощью обёрток __('Translated phrase').

Галина
источник