上篇有讲到国际化的基本配置,并不是很全,这篇讲一下,国际化切换的路由变化情况。
正确使用:
1.文件结构:
|--pages
|--textA
|--_lang
|--_text
|--index.vue
2.nuxt-link 使用
<nuxt-link
:to="{ name: 'textA-lang-text', params: { lang: $store.state.locale ,text: '111'} }"
class="uk-link-reset"
>
</nuxt-link>
$store.state.locale 获取store存储的语言记录
产生的路由:localhost:3000/textA/en/111
其他情况
1,当_lang文件在最外面,且有可直接接受参数的文件。
|--pages
|--_lang
|--index.vue
|--_textA
|--index.vue
|--index.vue
<nuxt-link
:to="{ name: 'lang-textA', params: { lang: $store.state.locale ,textA: '111'} }"
class="uk-link-reset"
>
</nuxt-link>
看一下,具体的路由变化
app.i18n.path = (link) => {
if (app.i18n.locale === app.i18n.fallbackLocale) {
return `/${link}`
}
return `/${app.i18n.locale}/${link}`
}
当切换到默认语言时,预计路由结果:http://192.168.XX.XXX:3000/111 (_lang下的index文件)
实际路由结果:http://192.168.XX.XXX:3000/111 (_textA下的index文件)
当选择默认语言时,路由挂载的参数,第一个lang 会被省略,不会进入_lang 文件,第二个参数会匹配pages下接受参数的文件,也就是_textA 文件。
2,当_lang文件在最外面,且无接受参数的文件。
|--pages
|--_lang
|--index.vue
|--textB
|--index.vue
|--index.vue、
当切换到默认语言时,预计路由结果:http://192.168.XX.XXX:3000/111 (_lang下的index文件)
实际路由结果:no found
当选择默认语言时,路由挂载的参数,第一个lang 会被省略,不会进入_lang 文件,第二个参数会匹配pages下接受参数的文件,但是目前没有接受参数的文件,也没有参数同名的 111 这个文件,所以直接报错。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。