在使用antd框架实现国际化功能时,antd官方的教程是:
LocaleProvider 使用 React 的 context 特性,只需在应用外围包裹一次即可全局生效。
如下:
import { LocaleProvider } from 'antd';
import zh_CN from 'antd/lib/locale-provider/zh_CN';
import 'moment/locale/zh-cn';
...
return <LocaleProvider locale={zh_CN}><App /></LocaleProvider>;
请问我在umi中如何设置?
我目前的解决方案是将上述代码放在layouts/index.js 整体布局文件内:
render() {
...
return <LocaleProvider locale={zh_CN}><Layout> ... </Layout></LocaleProvider>;
}
不知道是否有其他更好的方式?
目前就是这样解。
@sorrycc 如果有多个layout,是不是要在每个layout里面都做一遍这个配置??
@chj-damon 那你可以在最外面在套一个全局的 layout。不过 antd 教程只是为了说明国际化的原理,实际用的时候直接在 umi-plugin-react 这个插件里面开启 locale 功能就可以了,不需要自己再包一下。
@yutingzhao1991 嗯,我是看到这个例子有代表性,比如mobx,apollo等等,都是类似的写法。所以想问一下是否有更通用的方式,在群里问了,大家都推荐说写一个插件。。。
目前umi-plugin-locale通过setLocale的Api, antd组件并没有去修改antd组件里的语言 #3656
我使用 locales 实现了国际化:
1.引入 locales:
import { locales } from 'antd';
2.render 函数
render(){
return(
<ConfigProvider locale={locales.zh_CN}>
</ConfigProvider>
)
}
Most helpful comment
我目前的解决方案是将上述代码放在layouts/index.js 整体布局文件内:
render() { ... return <LocaleProvider locale={zh_CN}><Layout> ... </Layout></LocaleProvider>; }不知道是否有其他更好的方式?