跳转到内容

国际化

iBizHUB基于vue-i18n构建了一套符合企业级标准的国际化解决方案。支持动态语言切换和按需加载,为全球化应用提供稳定可靠的多语言支持能力。

多语言管理

基本支持

默认支持中英文静态资源,初始的默认语言设置为中文(zh-CN)。同时系统具备动态添加语言包的能力,允许开发者根据实际需求灵活扩展支持的语言种类,无需重新构建整个项目。

国际化 API

方法参数说明返回值说明
setLang(lang: string)语言代码,例如 zh-CNen-USvoid此方法用于设置当前项目所使用的语言。调用该方法后,界面上所有依赖于国际化的文本内容将自动切换为指定语言
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' } });
未来已来,立即拥抱应用融合的力量
Released under the MIT License.