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
- Migración del modo de API heredado al modo de API de composición: https://vue-i18n.intlify.dev/guide/migration/vue3.html
- Uso del API de composición: https://vue-i18n.intlify.dev/guide/advanced/composition.html
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