• Vue-i18n在Routerd动态路由下实现国际化


    在Electron-vue-admin的项目中实现国际化的需求时,遇到一个问题,vue-i8n无法在router/index.js的路由菜单配置项内以下面常规的方法实现。

    1. //vue标签内使用(例:)
    2. $t('login.username')
    3. //例子
    4. name="password"
    5. v-model="loginForm.password"
    6. :placeholder="$t('login.password')"
    7. >
    8. //vue标签包含文本处使用
    9. {{ $t('login.logIn') }}
    10. //例子
    11. if="!loading">{{ $t('login.logIn') }}
    12. //js下各函数方法内引用
    13. this.$t('login.validateUsername')
    14. //例子
    15. const validateUsername = (rule, value, callback) => {
    16. if (!value.valueOf("")) {
    17. callback(new Error(this.$t('login.validateUsername')));
    18. } else {
    19. callback();
    20. }
    21. };

    在router中实现国际化, router 和 i18n 是同级的,所以在router中调用this.$t()会报错

    经过百度和测试,一下方法是最好最简单的解决方式:

    1.首先配置国际化文件夹内的zh.js 和 en.js

    1. //zh.js
    2. navbar: {
    3. dashboard: '主页',
    4. set: '设置',
    5. logOut: '退出登录',
    6. method: '方法',
    7. sample: '样品',
    8. user: '用户管理',
    9. language: '语言',
    10. version: '系统版本'
    11. },
    12. //en.js
    13. navbar: {
    14. dashboard: 'Dashboard',
    15. set: 'Set Up',
    16. logOut: 'Log Out',
    17. method: 'Method',
    18. sample: 'Sample',
    19. user: 'User',
    20. language: 'Language',
    21. version: 'Version',
    22. phone: 'After sales telephone'
    23. },

    2.在router路由文件夹下的js配置文件内,对应菜单的title位置写入国际化翻译对应的key。

    重点注意的是title位置的key需要单引号,便于动态路由页面加载时查找和实时翻译。

    1. export default [
    2. {
    3. path: '/form',
    4. component: Layout,
    5. meta: { roles: ['admin','guest'] },
    6. children: [
    7. {
    8. path: 'index',
    9. name: '方法',
    10. component: () => import('@/views/form/index'),
    11. meta: { title: 'navbar.method', icon: 'table' }
    12. }
    13. ]
    14. }
    15. ]

    3.在使用该路由title的地方使用{{$t(item.name)}}进行国际化

    1. <router-link v-else :to="resolvePath(child.path)" :key="child.name">
    2. <el-menu-item :index="resolvePath(child.path)">
    3. <svg-icon v-if="child.meta&&child.meta.icon" :icon-class="child.meta.icon">svg-icon>
    4. <span v-if="child.meta&&child.meta.title" slot="title">{{$t(item.meta.title)}}span>
    5. el-menu-item>
    6. router-link>

  • 相关阅读:
    CF461B Appleman and Tree题解
    关于MicroPython mpremote工具 的一些用例,闲聊
    现在入行程序员,等于49年入国军
    论 shared_ptr的线程安全
    机器学习(9)---线性回归中的公式推导(手推)、闭式解和数值解
    Javascript知识【JS数组】重点
    Codeforces Round 900 (Div. 3)
    创建型模式-原型模式(五)
    2010年11月02日 Go生态洞察:Go代码调试的现状报告
    Reddit是如何让几百万人不经意间拥有了NFT
  • 原文地址:https://blog.csdn.net/qq_34795929/article/details/126117508