Skip to content

Cambios de compatibilidad en v11

Descontinuar el modo de API heredado

Motivo

El modo de API heredado era el modo de API compatible con v8 para Vue 2. Cuando se lanzó v9, se proporcionó la API heredada para facilitar la migración de v8 a v9.

El modo de API heredado será descontinuado en v11, ya que las versiones anteriores de vue-i18n ya han proporcionado lo siguiente para apoyar la migración al modo de API de composición

Por compatibilidad, el modo de API heredado sigue funcionando en v11, pero será eliminado completamente en v12, por lo que el modo de API heredado no funcionará después de esa versión.

Descontinuar la directiva personalizada v-t

Motivo

La ventaja de v-t era que podía optimizar el rendimiento utilizando la transformación del compilador de vue y la pre-traducción de vue-i18n-extension.

Esta característica fue compatible desde Vue 2. Para obtener más detalles, consulta el artículo del blog: https://medium.com/@kazu_pon/performance-optimization-of-vue-i18n-83099eb45c2d

En Vue 3, debido a la API de composición, la pre-traducción de vue-i18n-extension ahora está limitada solo al alcance global.

Además, se ha introducido la optimización del DOM virtual de Vue 3, y la optimización proporcionada por vue-i18n-extension ya no es muy efectiva. Necesitamos configuraciones adicionales para SSR, los beneficios de usar v-t han desaparecido. Además, la experiencia del desarrollador (DX) con plantillas que usan v-t no es buena. Las directivas personalizadas no funcionan con autocompletado de claves en editores (por ejemplo, vscode).

Por compatibilidad, el modo v-t sigue funcionando en v11, pero será eliminado completamente en v12, por lo que v-t no funcionará después de esa versión.

Para la migración

Puedes utilizar eslint-plugin-vue-i18n.

eslint-plugin-vue-i18n tiene la regla @intlify/vue-i18n/no-deprecated-v-t. https://eslint-plugin-vue-i18n.intlify.dev/rules/no-deprecated-v-t.html

Debes haber migrado con eslint antes de actualizar a vue-i18n v11

Eliminar tc y $tc para el modo de API heredado

Motivo: Estas APIs ya habían sido descontinuadas en una advertencia sobre su eliminación en v11. La documentación dice: https://vue-i18n.intlify.dev/guide/migration/breaking10.html#deprecate-tc-and-tc-for-legacy-api-mode