LocaleProvider 国际化

为组件内建文案提供统一的国际化支持。

使用

LocaleProvider 使用 React 的 context 特性,只需在应用外围包裹一次即可全局生效。
  1. import enUS from 'antd-mobile/lib/locale-provider/en_US';
  2. ...
  3. return <LocaleProvider locale={enUS}><App /></LocaleProvider>;
我们暂时只提供英语,中文两种语言支持(默认语言是中文),所有语言包可以在 这里 找到。

增加语言包

如果你找不到你需要的语言包,欢迎你在 英文语言包 的基础上创建一个新的语言包,并给我们 Pull Request。

其他国际化需求

本模块仅用于组件的内建文案,若有业务文案的国际化需求,建议使用 react-intl,可参考示例:Intl demo 1Intl demo 2

代码演示

国际化

Wrap your app with LocaleProvider, and apply the corresponding language package.

  1. import {
  2. Pagination, LocaleProvider, List, DatePicker, WhiteSpace, WingBlank, InputItem,
  3. Picker, SearchBar,
  4. } from 'antd-mobile';
  5. import enUS from 'antd-mobile/lib/locale-provider/en_US';
  6. import ruRU from 'antd-mobile/lib/locale-provider/ru_RU';
  7. const maxDate = new Date(2018, 11, 3, 22, 0);
  8. const minDate = new Date(2015, 7, 6, 8, 30);
  9. const seasons = [
  10. [
  11. {
  12. label: '2013',
  13. value: '2013',
  14. },
  15. {
  16. label: '2014',
  17. value: '2014',
  18. },
  19. ],
  20. [
  21. {
  22. label: '春',
  23. value: '春',
  24. },
  25. {
  26. label: '夏',
  27. value: '夏',
  28. },
  29. ],
  30. ];
  31. const Page = () => (
  32. <div>
  33. <Pagination total={5} current={1} />
  34. <WhiteSpace />
  35. <List
  36. className="date-picker-list"
  37. style={{ backgroundColor: 'white' }}
  38. >
  39. <DatePicker
  40. mode="date"
  41. title="Select date"
  42. minDate={minDate}
  43. maxDate={maxDate}
  44. >
  45. <List.Item arrow="horizontal">datePicker</List.Item>
  46. </DatePicker>
  47. <Picker
  48. data={seasons}
  49. cascade={false}
  50. >
  51. <List.Item arrow="horizontal">picker</List.Item>
  52. </Picker>
  53. </List>
  54. <WhiteSpace />
  55. <SearchBar placeholder="Search" showCancelButton />
  56. <WhiteSpace />
  57. <InputItem type="money" placeholder="money input" />
  58. </div>
  59. );
  60. class App extends React.Component {
  61. constructor(props) {
  62. super(props);
  63. this.state = {
  64. locale: 'English',
  65. };
  66. }
  67. onChange = (value) => {
  68. this.setState({
  69. locale: value[0],
  70. });
  71. }
  72. render() {
  73. const { locale } = this.state;
  74. const languages = [
  75. {
  76. value: '中国',
  77. label: '中国',
  78. language: undefined,
  79. },
  80. {
  81. value: 'English',
  82. label: 'English',
  83. language: enUS,
  84. },
  85. {
  86. value: 'Русский',
  87. label: 'Русский',
  88. language: ruRU,
  89. },
  90. ];
  91. const currentLocale = languages.find(item => item.value === locale).language;
  92. return (
  93. <WingBlank>
  94. <Picker
  95. data={languages}
  96. onChange={this.onChange}
  97. cols={1}
  98. value={[locale]}
  99. >
  100. <List.Item arrow="horizontal">Choose language</List.Item>
  101. </Picker>
  102. <WhiteSpace size="xl" />
  103. <WhiteSpace size="xl" />
  104. <LocaleProvider locale={currentLocale}>
  105. <Page />
  106. </LocaleProvider>
  107. </WingBlank>
  108. );
  109. }
  110. }
  111. ReactDOM.render(<App />, mountNode);

LocaleProvider国际化 - 图1

API

参数说明类型默认值
locale语言包配置,语言包可到 antd-mobile/lib/locale-provider/ 目录下寻找object-