我使用nuxt-i18n nuxt-i18n documentation link这样在我的网站上获得不同的语言环境:
<nuxt-link v-for="locale in $i18n.locales"
v-if="locale.code !== $i18n.locale"
:key="locale.code"
:to="switchLocalePath(locale.code)"
class="locales white--text"
>{{ locale.code }}
</nuxt-link>
它工作得很好,但是我想将这段代码转换为选择元素:
<select v-model="selected" class="locales white--text" @change=" ??? ">
<option disabled value="">{{ $i18n.locale }}</option>
<option v-for="locale in $i18n.locales" :key="locale.code">{{ locale.code }}</option>
</select>
语言环境字符串看起来不错,但我没有找到在更改时启动switchLocalePath函数的解决方案。是否可以使用nuxt(vue.js)做到这一点?
答案 0 :(得分:1)
也不需要使用路由器来改变语言环境,API也可以使用this.$i18n.setLocale(locale)
<select v-model="activeLang" @change="changeLang" name="lang" id="">
<option
:selected="locale === activeLang"
v-for="locale in locales"
:key="locale"
:value="locale"
>
{{ locale }}
</option>
</select>
changeLang(event) {
this.$i18n.setLocale(event.target.value);
}
CodeSandbox here
答案 1 :(得分:0)
在这里,是下拉列表和onChange方法:
<select v-model="selectedValue" @change="onChange(selectedValue)">
<option disabled value>Please select one</option>
<option
v-for="(locale, index) in $i18n.locales"
:key="index"
:value="locale.code"
>{{locale.name}}</option>
</select>
methods: {
onChange(event) {
this.$router.replace(this.switchLocalePath(event));
}
}
如果您想检查工作状况,我已经在这里建立了CodeSandox Nuxt:
https://codesandbox.io/embed/codesandbox-nuxt-1bhug?fontsize=14&hidenavigation=1&theme=dark