国际化
iBizHUB基于vue-i18n构建了一套符合企业级标准的国际化解决方案。支持动态语言切换和按需加载,为全球化应用提供稳定可靠的多语言支持能力。
多语言管理
基本支持
默认支持中英文静态资源,初始的默认语言设置为中文(zh-CN)。同时系统具备动态添加语言包的能力,允许开发者根据实际需求灵活扩展支持的语言种类,无需重新构建整个项目。
国际化 API
| 方法 | 参数说明 | 返回值 | 说明 |
|---|---|---|---|
setLang(lang: string) | 语言代码,例如 zh-CN、en-US 等 | void | 此方法用于设置当前项目所使用的语言。调用该方法后,界面上所有依赖于国际化的文本内容将自动切换为指定语言 |
getLang() | - | string | 获取当前项目所处的语言环境。开发者可以利用这个方法来根据不同的语言环境执行不同的逻辑,例如调整界面布局、加载特定的资源等 |
setLangConfigs(languages: Record<string, () => Promise<IData>>) | 语言资源,以对象形式提供,每个键为语言代码,对应的值是一个异步加载该语言资源的函数 | void | 该方法用于设置异步加载的多语言模块。在项目运行过程中,当需要切换到某种语言时,如果该语言的资源尚未加载,系统会自动调用相应的异步函数进行加载,从而实现按需加载,提高项目的性能 |
mergeLocaleMessage(dataOrLang: object|string, data?: object) | 当第一个参数为字符串时,表示语言代码;当为对象时,表示语言资源。第二个参数为语言资源 | void | 用于合并语言资源。在实际开发中,可能会遇到多个模块都有自己的国际化资源,或者需要在插件中覆盖主项目的某些资源,这时就可以使用该方法将不同的语言资源进行合并 |
t(tag: unknown, defaultMsg?: unknown, options?: unknown): string | 语言标记,用于定位具体的翻译内容;默认内容,当指定标记的翻译不存在时显示的文本;语言配置,可用于传递额外的参数 | string | 格式化指定标记的语言。开发者可以通过该方法获取特定标记对应的翻译文本,并根据需要进行格式化处理,例如插入动态参数 |
多语言实践
动态资源定义
iBizHUB支持定义动态语言资源,需在可视化配置工具ModelingIDE按如下流程进行建模:
在应用系统中配置应用多语言
在语言定义项中创建对应语言项,新建语言资源
在需要使用多语言功能处绑定上一步新建的语言资源项
静态资源定义
在项目中,我们可以通过定义静态资源文件来管理不同语言的文本内容。以下是一个中文(zh-CN)的示例:
js
// locales/fr-FR.js
export default {
buttons: {
submit: 'Soumettre',
cancel: 'Annulation'
},
messages: {
greeting: 'Bonjour, {name}!'
}
}新增语言
如果需要新增一种语言,例如法语(fr-FR),可以通过异步加载的方式来实现:
js
// 异步加载法语资源
const loadFrench = async () => ({
'fr-FR': await import('./locales/fr-FR')
})
ibiz.i18n.setLangConfigs(loadFrench())
// 切换语言
ibiz.i18n.setLang('fr-FR')动态模板渲染
当我们需要在模板中使用动态参数时,可以使用 t 方法进行格式化。以下是一个示例:
js
// 带参数的模板
ibiz.i18n.t('messages.greeting', { name: 'John' })
// 输出:Bonjour, John!资源覆盖
在某些情况下,我们可能需要在插件中覆盖主项目的某些资源。可以使用 mergeLocaleMessage 方法来实现:
js
// 在插件中覆盖主项目资源
ibiz.i18n.mergeLocaleMessage('zh-CN', {
app: {
logout: '安全退出'
}
})
// 或者
ibiz.i18n.mergeLocaleMessage({ 'zh-CN': { introduce: '介绍' }, 'en': { introduce: 'introduce' } });