#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
).