Skip to content

Commit

Permalink
docs(Site): merge i18n part from configProvider
Browse files Browse the repository at this point in the history
  • Loading branch information
tao1991123 committed Nov 1, 2018
1 parent 2517347 commit 316db52
Showing 1 changed file with 88 additions and 3 deletions.
91 changes: 88 additions & 3 deletions site/zh-cn/i18n.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,74 @@
| 美式英语 | en-us |
| 日文 | ja-jp |

欢迎大家提交PR,增加语种。
### 指定多语言文案

ConfigProvider 可以给组件提供文案,用法如下.
``` js
通过 `<ConfigProvider locale={localeObj}>` 传入语言包,以支持多语言。目前 Fusion 内置的 locale 库支持中英繁日四种语言,覆盖各组件的简单词汇,例如:确定、取消、展开、收起、下一页等, 简单词汇映射表可参考 https://unpkg.com/@alifd/next/lib/locale/


(ConfigProvider 提供简单组件简单词汇国际化能力,由于日期时间的国际化较为特殊,例如中国的日历是从周一到周日,美国的日历是从周日到周六等,时间相关的组件如DatePicker等需要国际化,请查看相应组件文档。)


可通过两种方式设置多语言文案,两种方式接收的对象格式略有不同:
1. 设置组件自身 locale 属性
```jsx
{
key1: value1,
key2: value2
}
```
2. ConfigProvider 的 locale 属性 (推荐)
```jsx
{
component1: {
key1: value1,
key2: value2
},
component2: {
key1: value1,
key2: value2
}
}
```

优先级顺序为: 组件自身 locale > 最近 ConfigProvider 的 locale > 更远父级 ConfigProvider 的 locale

```js
import { ConfigProvider, DatePicker } from '@alifd/next';

const localeDatePicker = {
placeholder: 'localeDatePicker placeholder'
};

const localeGlobal = {
DatePicker: {
placeholder: 'localeGlobal placeholder'
}
};

class App extends React.Component {
render() {
return (
<div>
<ConfigProvider locale={localeGlobal}>
<DatePicker /> should be 'localeGlobal placeholder'
</ConfigProvider>
<br />
<br />
<ConfigProvider locale={localeGlobal}>
<DatePicker locale={localeDatePicker} /> should be 'localeDatePicker placeholder'
</ConfigProvider>
</div>
);
}
}
```


根据引入组件库方式的不同(CDN直接引用、作为依赖引用),使用语言包的方式略有差异,具体见如下代码:


```js
import { ConfigProvider, DatePicker } from '@alifd/next';
import enUS from '@alifd/next/lib/locale/en-us';
// import zhCN from '@alifd/next/lib/locale/zh-cn';
Expand All @@ -38,6 +102,27 @@ class App extends React.Component {
}
```

如果内置的 locale 库不满足你的需求(比如想支持法语、德语、西班牙语),你也可以参考 https://unpkg.com/@alifd/next/lib/locale/ 来自定义语言包,按照如下格式传入给 locale 即可。**同时欢迎大家提交PR,增加语种**

```js
{
DatePicker: {
datePlaceholder: 'Select date',
monthPlaceholder: 'Select month',
yearPlaceholder: 'Select year',
rangeStartPlaceholder: 'Start date',
rangeEndPlaceholder: 'End date',
ok: 'OK',
clear: 'Clear'
},
Dialog: {
// ...
},
// ...
}
```


## 日期国际化

`@alifd/next` 在处理日期时间相关组件逻辑时,使用了 [moment](https://github.com/moment/moment) 库,自带国际化相关能力,我们将其作为 peerDependencies,所以用户需要自己在应用中引入 moment 的 cdn 文件 moment-with-locales.js 或者本地安装 moment 打包进自己的应用。对于后者,由于 moment 在引入 locale 文件时存在这样的代码:`require('./locale/' + name)`,如果用 webpack 构建,会打包进所有的 locale 文件,增加构建后文件的体积,目前社区比较主流的解决方案有以下两种:
Expand Down

0 comments on commit 316db52

Please sign in to comment.