Замена i18n — небольшая реализация на основе Symfony

Всякий раз, когда вы пытаетесь найти или попросить поддержку механизма перевода для Vue.js, почти все / каждая статья будет указывать на i18n. Я дал ему небольшой шанс, так как Эй, это так популярно, это должно быть вещью, однако я должен сказать, что процесс удаления i18n проходит довольно гладко.

Что мне не нравится в i18n, так это то, что есть документация по настройке плагина. «Я имею в виду, что есть документация, так что это хорошо, верно?» — и да, и нет. Дело в том, что я ожидал какую-то очень минимальную конфигурацию или что-то в этом роде (и на самом деле она есть — я нашел ее позже), но в итоге я получил несколько более сложных примеров, которые заставили меня пожать плечами.

«Для этого должен быть другой путь» — подумал я.

Конфигурация i18 действительно так плоха?

Это не так, но я нашел его позже — однако я не жалею об этом, так как я уже придумал свою реализацию trans, используемую Symfony, и это позволило мне узнайте, как работают плагины Vue.js, так что это все еще выигрыш + это работает.

Внешние пакеты

  • jsonpath (позволяет искать строки перевода в json aa.bb.cc )

Реализация метода trans (доступен в Symfony/Twig)

Крутая вещь в одной из последних версий TS (насколько я знаю — раньше это было невозможно), мы можем импортировать весь json в переменную, просто сделав это:

import Translations rom './translations/frontend/messages.json';

Служба перевода

Плагин для перевода

Расширение Vue.js с помощью подключаемого модуля

Как это используется в действии

{{ trans('pages.security.login.form.inputs.username.label') }}

Заключительные мысли

Моя реализация не поддерживает переключение языков, но с этим можно было бы справиться очень просто, используя switch блок/условную загрузку файла перевода.

Плюсы

  • простая реализация метода trans на основе Symfony,
  • уже известный синтаксис trans ,
  • способен напрямую работать с файлами перевода на основе json,
  • понятный и простой в использовании,

Минусы

  • не имея файлов перевода json, необходимо вывести файлы json из yaml, используя, например, мою команду для этого:

Прежде чем вы не согласитесь

  1. Хотя может возникнуть неприязнь к использованию команды для создания json из yaml, при правильной настройке Symfony json > можно использовать непосредственно для переводов — это означает, что команду на этом этапе можно пропустить. Однако я выбрал командное решение, так как просто уже использовал его в другом проекте (поскольку я понятия не имел, что файлы перевода можно просто хранить в отдельных папках, чтобы лучше организовать их — и они обрабатываются Symfony). «из коробки»).
  2. Также второй неприязнь может заключаться в том, что «выходной файл содержит множество внутренних переводов, которые не нужны во внешнем интерфейсе» (в таком случае нет ничего против хранения внутренних и внешних строк в отдельных файлах). ).