Skip to content

I18n 国际化

在软件开发过程中,如果有向海外市场拓展的需求,就必须得进行国际化配置,例如多语言环境配置。

locale 目录是存放国际化配置的标准目录。

🕸️目录组织

js
📁 locale/
  └── 📁src/
    └── 📁lang/       // 多语言
          └── 📁en/
          └── 📁zh-CN/
    └── config.ts
    └── helper.ts
    └── setup-i18n.ts
    └── store.ts
    └── use-i18n.ts
    └── use-locale.ts

🧩依赖安装

bash
pnpm add vue-i18n@9

🔥快速使用

1. 路由菜单使用

首先,进入 packages/locale/src/lang/ 目录的 enzh-CN 目录下,在 routes.ts 文件中定义中文和英文的菜单名:

ts
export default {
  base: {
    login: 'Login',
    lock: 'LockScreen'
  }
  //...
}
ts
export default {
  base: {
    login: '登录',
    lock: '锁屏'
  }
  //...
}

然后,在路由文件 router/src/routes/下创建modules.ts进行引用。

我们定义了 t() 函数对路由菜单进行多语言参数转换。其它模块使用 useI18n hooks即可。

ts
// modules.ts
// 1. 引入 t() 函数
import {t} from '@vben/locale'

// 2. 定义路由
const LOGIN_ROUTE: RouteRecordItem = {
  path: '/login',
  name: 'Login',
  component: () => import('@/pages/sys/login/login.vue'),
  meta: {
    title: t('routes.basic.login')
  }
}

const LOCK_SCREEN_ROUTE: RouteRecordItem = {
  path: '/lock',
  name: 'Lock',
  component: () => import('@/pages/sys/lock/index.vue'),
  meta: {
    title: t('routes.basic.lock')
  }
}

2. 页面模块使用

首先,在 lang目录下创建或定义指定的值👇

ts
export default {
  test: {
    type: 'the quick brown fox jumps over the lazy dog.'
  }
}
ts
export default {
  test: {
    type: '一只棕色的🦊跳过一只懒惰的🐕.'
  }
}

然后,导入 useI18n 进行配置👇

js
// 某个vue页面
import {useI18n} from "@vben/locale"

const { t } = useI18n();

<template>
  <dir>
    {{ t(test.type) }}
  </dir>
</template>

📃更多功能

调整默认配置

要调整默认配置,只需修改模块目录 src/setting/project.ts 文件即可。

手动切换某个页面的语言

要切换某个页面的语言,使用 useLocale hooks.

ts
import { useLocale } from "@vben/locale"

const { changeLocale } = useLocale();

changeLocale('en');

新增语言配置

locale/src/lang 目录下添加对应语言的目录即可。

目前项目自带语言只有 zh_CNen 两种。如果需要新增,按以下步骤👇

  • locale/src/lang下创建对应语言目录。
  • locale/src/config.ts中添加类型定义。
  • modules/src/settings/project.ts中配置语言。

[待补充...]

✨优化体验

如果你使用 VS Code 进行开发,则推荐你安装 i18n Ally,