nuxtjs/i18n
v7.x 升级vueI18n
选项,不接受 createI18n
选项这确保了编译/构建时和运行时之间的稳定性和区分,因为 vue-i18n 在运行时使用。
有关更多细节,请参见 GitHub Pull request
您可以继续在 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
替代 Options API 风格。弃用的原因是与 Vue Router 中路由解析相关的接口变化。
localeLocation()
原因与 localeLocation()
Options API 相同。
$nuxtI18nHead()
使用 localeHead()
替代 Options 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
组合函数来设置动态路由参数。
export default defineNuxtConfig({
modules: [
'@nuxtjs/i18n'
],
i18n: {
// ...
- vuex: true,
// ...
}
})
有关更多细节,请参阅 语言切换器。
sortRoutes
选项由于 Nuxt 3 的路由不再需要排序,因此此选项不再必要。
skipNuxtState
选项此选项不再必要,因为它可以通过 多个文件懒加载 替代,该功能在 v8 中得到支持。
i18n:extend-messages
钩子被 i18n:registerModule
钩子替代,弃用的理由如下:
替代的 i18n:registerModule
钩子方式与懒加载翻译相同。只有区域信息的文件信息会被序列化并传递到运行时上下文。区域信息通过动态导入加载,然后懒加载,对性能没有负面影响。
有关更多细节,请参见 扩展消息钩子。
vueI18nLoader
选项此选项不再必要,因为 i18n 自定义块默认支持 unplugin-vue-i18n。
onBeforeLanguageSwitch
和 onLanguageSwitched
函数选项现在可以使用 Nuxt 运行时钩子触发这些函数。请参考 运行时钩子 以了解如何使用这些。
以下 API 已更改为 $
:
i18n
-> $i18n
getRouteBaseName()
-> $getRouteBaseName()
localePath()
-> $localePath()
localeRoute()
-> $localeRoute()
switchLocalePath()
-> $switchLocalePath()
Vuex 扩展 API 被移除,因为在 Nuxt3 中不再需要 Vuex。
以下 API 不再可用:
$i18n
getRouteBaseName()
localePath()
localeRoute()
localeLocation()
switchLocalePath()