{{ $t('common.confirm') }}
```
## 语言配置
在 `preferences.ts` 中设置默认语言:
```ts
import { defineOverridesPreferences } from '@vben/preferences';
export const overridesPreferences = defineOverridesPreferences({
app: {
locale: 'zh-CN', // 'en-US' | 'zh-CN' | ...
},
});
```
## 支持的语言
```ts
type SupportedLanguagesType =
| 'en-US'
| 'zh-CN'
| 'zh-TW'
| 'ko-KR'
| 'ru-RU'
| 'ja-JP';
```
## 语言包位置
```
packages/locales/
├── langs/ # 语言包文件
│ ├── en-US.json
│ ├── zh-CN.json
│ └── ...
└── src/ # 国际化相关代码
```
## 新增语言包
1. 在 `packages/locales/langs/` 目录下新建语言文件,如 `ja-JP.json`
2. 在 `packages/types/src.ts` 中添加类型定义
3. 在 `preferences.ts` 中配置 `locale: 'ja-JP'`
## 语言包结构示例
```json
{
"common": {
"confirm": "确认",
"cancel": "取消",
"save": "保存",
"delete": "删除",
"search": "搜索",
"reset": "重置"
},
"page": {
"home": {
"title": "首页",
"welcome": "欢迎"
}
},
"ui": {
"formRules": {
"required": "请输入{0}",
"selectRequired": "请选择{0}"
},
"placeholder": {
"input": "请输入",
"select": "请选择"
}
}
}
```
## 远程加载语言包
```ts
// 支持从远程服务器加载语言包
import { setI18nLanguage } from '@vben/locales';
async function loadLocaleMessages(locale: string) {
const messages = await fetch(`/locales/${locale}.json`).then(res => res.json());
setI18nLanguage(locale, messages);
}
```
## 切换语言
框架内置了语言切换组件,可通过偏好设置开启:
```ts
export const overridesPreferences = defineOverridesPreferences({
widget: {
languageToggle: true, // 显示语言切换按钮
},
});
```
## 在代码中切换
```ts
import { useLocale } from '@vben/locales';
const { changeLocale } = useLocale();
// 切换到英文
changeLocale('en-US');
```