Интернационализация в VUE i18n для длинного текстового абзаца

#vue.js #internationalization #vue-i18n

#vue.js #интернационализация #vue-i18n

Вопрос:

Каков наилучший подход к использованию VUE i18n для длинного текстового абзаца? Я знаю, что могу использовать обратные метки (`) и даже сохранить возврат каретки, но правильно ли это? Или лучше условно загружать разные файлы JSON в соответствии с настройками локали?

Ответ №1:

Вы можете использовать следующее в своем шаблоне, чтобы иметь некоторый контент i18n’ed: {{ $t('deeply.nested.key') }} и ссылаться на JSON со сверхдлинным значением. Если вашему блоку не требуется ничего большего, чем просто чистый текст, все будет в порядке. введите описание изображения здесь

Если вам нужно добавить некоторый стиль, новую строку, некоторый условный рендеринг или что-то большее, чем просто текст, я бы рекомендовал использовать компонентную интерполяцию. Это предотвратит появление уродливого встроенного html / css в вашем JSON.

По совершенно другой теме, действительно, отложенная загрузка локалей — тоже хорошая идея.

Вот небольшой фрагмент кода о том, как этого добиться, более подробную информацию можно найти на специальной странице.

 // If the language hasn't been loaded yet
return import(/* webpackChunkName: "lang-[request]" */ `@/i18n/messages/${lang}.js`).then(
  messages => {
    i18n.setLocaleMessage(lang, messages.default)
    loadedLanguages.push(lang)
    return setI18nLanguage(lang)
  }
)
 

Комментарии:

1. Откуда у вас длинная строка с разрывами строк? Это eslint или пакет vscode?

2. @A.com это настройка VSCode, как перенос строк. Кстати, Prettier тоже может это сделать (ширина строки).

3. Спасибо! нашел его в раскрывающемся списке VSCode «view»

4. @A.com можно также использовать палитру ( ctrl shift p ).