Skip to content

多语言

Dux Refine 使用了 i18nProvider 进行多语言的默认初始化配置。在框架中,已经内置了中文和英文的常用语言包,您只需在您的模块中添加语言即可全局使用。

配置方法

语言配置一般放置在 init 生命周期中,您可以将语言文件以 JSON 格式导入。

js
import { appContext, createApp } from '@duxweb/dux-refine'
import zhLang from './locales/zh/common.json'
import enLang from './locales/en/common.json'

const init = (context: appContext) => {
  context.createApp('admin', createApp())

  context.addI18n('zh', 'common', zhLang)
  context.addI18n('en', 'common', enLang)
}
import { appContext, createApp } from '@duxweb/dux-refine'
import zhLang from './locales/zh/common.json'
import enLang from './locales/en/common.json'

const init = (context: appContext) => {
  context.createApp('admin', createApp())

  context.addI18n('zh', 'common', zhLang)
  context.addI18n('en', 'common', enLang)
}

语言包示例如下,您可以根据模块的需要自定义语言文件:

json
// en
{
  "home": "Home"
}
// en
{
  "home": "Home"
}
json
// zh
{
  "home": "主页"
}
// zh
{
  "home": "主页"
}

方法使用

在 React 中,您可以使用以下 hook 方法来调用翻译功能:

jsx
import { useTranslate } from "@refinedev/core";

const translate = useTranslate();
return <button>{translate("home")}</button>;
import { useTranslate } from "@refinedev/core";

const translate = useTranslate();
return <button>{translate("home")}</button>;

如果您的配置中需要多语言,框架已全局初始化 i18n,因此您可以使用以下原生方法:

js
import { i18n } from '@duxweb/dux-refine'

i18n.t('home')
import { i18n } from '@duxweb/dux-refine'

i18n.t('home')

有关更多使用方法,请参考文档中的 translate 部分。