Skip to content

Внесенные изменения в версии v11

Устаревший режим API

Причина

Режим устаревшего API был режимом API, совместимым с версией v8 для Vue 2. Когда была выпущена версия v9, устаревший API был предоставлен для сглаживания миграции с версии v8 до v9.

Режим устаревшего API будет устарел в версии v11, поскольку предыдущие выпуски vue-i18n уже предоставили следующее для поддержки миграции в режим Composition API

Для совместимости режим устаревшего 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