迁移指南
nuxtjs/i18n
v7.x 升级 从
createI18n
选项的已弃用 vueI18n
选项 不再接受
此更改旨在确保编译/构建时与运行时之间的稳定性和区分,因为 vue-i18n 在运行时使用。
有关更多详细信息,请参见 GitHub 拉取请求
您可以继续在 i18n.config
中定义 vueI18n
选项。有关如何执行此操作的示例,请参考 Vue i18n 和 基本使用 部分。
pages
选项中的路由键规则 更改
在 pages
选项中设置的路由键已更改为相对于 Nuxt 中的 pages/
目录的文件基础,并且 不包括前导 /
。
原因是更直观地与 Nuxt 的基于文件的路由匹配。
Nuxt2:
pages/
├── about.vue
├── users/
├──── _id/
├────── profile.vue
├── index.vue
i18n: {
parsePages: false,
pages: {
about: {
fr: '/a-propos',
},
'users/_id/profile': {
fr: '/u/:id/profil',
}
}
}
Nuxt3:
pages/
├── about.vue
├── users/
├──── [id]/
├────── profile.vue
├── index.vue
i18n: {
customRoutes: 'config',
pages: {
about: {
fr: '/a-propos',
},
'users/[id]/profile': {
fr: '/u/[id]/profil',
}
}
}
localeLocation()
已弃用
使用 localeRoute
替代,适用于选项 API 风格。弃用原因是围绕 Vue Router 的路由解析发生了接口/功能变化。
localeLocation()
已弃用 Nuxt 上下文 API 的
与 localeLocation()
选项 API 原因相同而被弃用。
$nuxtI18nHead()
已弃用
使用 localeHead()
替代,适用于选项 API 风格。
nuxtI18n
组件选项 已弃用
已被 defineI18nRoute()
编译宏替代,因为它可以通过打包工具进行优化。
Nuxt2:
<script>
import Vue from 'vue'
export default Vue.extend({
nuxtI18n: {
paths: {
pl: '/polish'
}
}
})
</script>
Nuxt3:
<script setup>
defineI18nRoute({
paths: {
pl: '/polish'
}
})
</script>
parsePages
选项 已弃用
使用 customRoutes
选项,因为 parsePages
选项名称不直观。
export default defineNuxtConfig({
modules: [
'@nuxtjs/i18n'
],
i18n: {
// ...
- parsePages: false,
+ customRoutes: 'config',
// ...
}
})
vuex
选项 已弃用
Nuxt i18n 模块不再需要 Vuex,使用 useSetI18nParams
组合式 API 来设置动态路由参数。
export default defineNuxtConfig({
modules: [
'@nuxtjs/i18n'
],
i18n: {
// ...
- vuex: true,
// ...
}
})
有关更多详细信息,请参见 语言切换器。
sortRoutes
选项 已弃用
此选项不再必要,因为 Nuxt 3 中的路由不再需要排序。
skipNuxtState
选项 已弃用
此选项不再必要,因为可以用 多文件懒加载 替代,该功能在 v8 中受支持。
i18n:extend-messages
钩子 已弃用
已被 i18n:registerModule
钩子替代,弃用原因如下:
- 在构建时,指定的本地化资源会被预编译为 JavaScript,这些资源会与 Nuxt 模板一起序列化到运行时上下文,这是不安全的。
- 巨大的本地化消息影响性能。
替代的 i18n:registerModule
钩子与懒加载翻译的工作方式相同。只有本地化消息的文件信息会被序列化并传递到运行时上下文。通过动态导入加载本地化消息,然后进行懒加载,不会对性能产生负面影响。
有关更多详细信息,请参见 扩展消息钩子。
vueI18nLoader
选项 已弃用
此选项不再必要,因为 i18n 自定义块由 unplugin-vue-i18n 默认 支持。
onBeforeLanguageSwitch
和 onLanguageSwitched
函数选项 已弃用
这些函数现在可以通过 Nuxt 运行时钩子触发。请参考 运行时钩子 了解如何使用这些功能。
更改 Nuxt 上下文中的一些导出 API 名称
以下 API 已更改为 $
:
i18n
->$i18n
getRouteBaseName()
->$getRouteBaseName()
localePath()
->$localePath()
localeRoute()
->$localeRoute()
switchLocalePath()
->$switchLocalePath()
已弃用 Vuex 中的导出 API
Vuex 扩展 API 已被移除,因为在 Nuxt3 中不再需要 Vuex。
以下 API 不再可用:
$i18n
getRouteBaseName()
localePath()
localeRoute()
localeLocation()
switchLocalePath()