Внесенные изменения в версии v11
Устаревший режим API
Причина
Режим устаревшего API был режимом API, совместимым с версией v8 для Vue 2. Когда была выпущена версия v9, устаревший API был предоставлен для сглаживания миграции с версии v8 до v9.
Режим устаревшего API будет устарел в версии v11, поскольку предыдущие выпуски vue-i18n уже предоставили следующее для поддержки миграции в режим Composition API
- Миграция из режима устаревшего API в режим Composition API: https://vue-i18n.intlify.dev/guide/migration/vue3.html
- Использование Composition API: https://vue-i18n.intlify.dev/guide/advanced/composition.html
Для совместимости режим устаревшего API продолжает работать в версии v11, но будет полностью удалён в версии v12, поэтому режим устаревшего API перестанет работать после этой версии.
Устаревшая пользовательская директива v-t
Причина
Преимуществом v-t было то, что она могла оптимизировать производительность с помощью преобразования компилятора vue и предварительного перевода vue-i18n-extension.
Эта функция поддерживалась начиная с Vue 2. Подробнее см. статью в блоге: https://medium.com/@kazu_pon/performance-optimization-of-vue-i18n-83099eb45c2d
В Vue 3, из-за Composition API, предварительный перевод vue-i18n-extension теперь ограничен только глобальной областью видимости.
Кроме того, была введена оптимизация виртуального DOM в Vue 3, и оптимизация, предоставляемая vue-i18n-extension, больше не очень эффективна. Мы должны требовать настройки для SSR, преимущества использования v-t исчезли. А также DX шаблонов, использующих v-t, неудобен. Пользовательские директивы не работают с автозавершением ключей в редакторах (например, vscode).
Для совместимости режим v-t продолжает работать в версии v11, но будет полностью удалён в версии v12, поэтому v-t перестанет работать после этой версии.
Для миграции
Вы можете использовать eslint-plugin-vue-i18n.
eslint-plugin-vue-i18n имеет правило @intlify/vue-i18n/no-deprecated-v-t. https://eslint-plugin-vue-i18n.intlify.dev/rules/no-deprecated-v-t.html
Вы должны были выполнить миграцию с помощью eslint перед обновлением до vue-i18n v11
Удалены tc и $tc для режима устаревшего API
Причина: Эти API уже были объявлены устаревшими с предупреждением о их удалении в версии v11. Документация говорит: https://vue-i18n.intlify.dev/guide/migration/breaking10.html#deprecate-tc-and-tc-for-legacy-api-mode