这里是菜单遍历,不知道语法怎么写,用i18n。求大佬指教一二。
i18n我会用来国际化静态页面的数据,像这种动态数据我找遍了也没找合适的方法来国际化
<template v-for="item in menuList">
<template>
<Submenu :name="item.name" :key="item.name">
<!-- 父菜单 -->
<template slot="title">
<Icon :type="item.icon" :size="iconSize"></Icon>
<span class="layout-text">{{ itemTitle(item) }}</span> <!-- {{$t('main.Automaticlogin')}} -->
</template>
<!-- 子菜单 -->
<template v-for="child in item.children">
<MenuItem :name="child.name" :key="'menuitem' + child.name">
<Icon :type="child.icon" :size="iconSize" :key="'icon' + child.name"></Icon>
<span class="layout-text" :key="'title' + child.name">{{ itemTitle(child) }}</span>
</MenuItem>
</template>
</Submenu>
</template>
</template>
使用的vue组件props 父子组件传值,请问各位大佬,怎么国际化后端传递的数据
<script>
export default {
name: "sidebarMenu",
data() {
return {
singleOpenName: [],
};
},
props: {
menuList: Array,
iconSize: Number,
menuTheme: {
type: String,
default: "dark"
},
openNames: {
type: Array
}
},
methods: {
changeMenu(active) {
this.$emit("on-change", active);
},
handleSelect(name) {
this.$emit("on-select", name);
},
itemTitle(item) {
return item.title;
},
getOpenedNamesByActiveName(name) {
return this.$route.matched
.map(item => item.name)
.filter(item => item !== name);
}
},
updated() {
this.$nextTick(() => {
if (this.$refs.sideMenu) {
this.$refs.sideMenu.updateOpened();
}
});
},
watch: {
// 监听路由变化
$route(to, from) {
this.singleOpenName = [this.$route.matched[0].name];
}
},
mounted() {
this.singleOpenName = [this.$route.matched[0].name];
}
};
</script>
要么后端直接返回翻译好的语言,要么就是前端本地翻译好,但是加一次东西前端就得翻译一次,多语言真是烦死了