Замена 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, используя, например, мою команду для этого:
Прежде чем вы не согласитесь
- Хотя может возникнуть неприязнь к использованию команды для создания json из yaml, при правильной настройке Symfony json > можно использовать непосредственно для переводов — это означает, что команду на этом этапе можно пропустить. Однако я выбрал командное решение, так как просто уже использовал его в другом проекте (поскольку я понятия не имел, что файлы перевода можно просто хранить в отдельных папках, чтобы лучше организовать их — и они обрабатываются Symfony). «из коробки»).
- Также второй неприязнь может заключаться в том, что «выходной файл содержит множество внутренних переводов, которые не нужны во внешнем интерфейсе» (в таком случае нет ничего против хранения внутренних и внешних строк в отдельных файлах). ).