Umi: 在umi中使用 antd LocaleProvider国际化 如何实现?

Created on 11 Apr 2018  ·  7Comments  ·  Source: umijs/umi

在使用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中如何设置?

type(question)

Most helpful comment

我目前的解决方案是将上述代码放在layouts/index.js 整体布局文件内:
render() { ... return <LocaleProvider locale={zh_CN}><Layout> ... </Layout></LocaleProvider>; }

不知道是否有其他更好的方式?

All 7 comments

我目前的解决方案是将上述代码放在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>
    )
}
Was this page helpful?
0 / 5 - 0 ratings

Related issues

nguyenhuutinh picture nguyenhuutinh  ·  3Comments

Artoria-0x04 picture Artoria-0x04  ·  3Comments

zemzheng picture zemzheng  ·  3Comments

six-666 picture six-666  ·  3Comments

y2891663091 picture y2891663091  ·  4Comments