React-intl
React-Intl 用于国际化 React 组件,提供 React 组件和 API 来格式化日期、数字、字符串(包括单复数和翻译) 。
用法说明
1、安装react-intl
1 |
|
2、引入react-intl,配置语言环境数据。React-Intl依赖这些数据来支持单复数和相对时间格式化的功能;
本示例基于React, antd框架构建页面,代码如下:
1 |
|
3、创建locale配置文件
这里,我们在langConfig文件夹下,创建语言文件 zh-CN.js 和 en-GB.js,代表中文和英式英语的配置包。
./langConfig/zh-CN.js
1 |
|
./langConfig/en-GB.js
1 |
|
4、在组件中的进行国际化实现
4.1 如果是纯文字页面,可以采用如下方式处理:
1 |
|
4.2 如果包含下拉选项或者placeholder等特殊需要国际化的,则需要采用如下方式:
4.2.1 在文件头部引入如下代码
1 |
|
这里FormattedMessage用于国际化文本内容,FormattedDate用于国际化日期内容
4.2.2 组件国际化处理
1 |
|
4.2.3 国际化内容信息
1 |
|
文字内容国际化
1
intl.formatMessage({id: 'intl.ADD'})
Select下拉选项国际化, 用FormattedMessage 将option选项包起来
1
<FormattedMessage id="intl.ALL" >{txt => <option value="all">{txt}</option>}</FormattedMessage>
// 整体如下:
1
2
3<select className="ui dropdown search-dropdown" name="srcType" onChange={this.handleSourceTypeChange}>
<FormattedMessage id="intl.ALL" >{txt => <option value="all">{txt}</option>}</FormattedMessage>
</select>或者
1
2let txt = intl.formatMessage({id: 'intl.ALL'});
<option value="all">{txt}</option>input文本框中placeholder文字的国际化
1
<FormattedMessage id="intl.ENTER_TML_NAME" >{txt => <input type="text" name="tmlName" id="tmlName" placeholder={txt} maxLength="50" style={{width: '100%'}}/>}</FormattedMessage>
或者
1
2let userNameMessage = intl.formatMessage({id: 'intl.USER_NAME'});//"请输入用户名称"
<input type="text" name="tmlName" id="tmlName" placeholder={userNameMessage} maxLength="50" style={{width: '100%'}}/>
注意事项
进行国际化处理时,要注意当前package.json文件的配置,支持react-intl@2.9.0 版本的没有问题,可以npm start,也可以npm run build;如果采用最新版本3.x以上版本,则npm start不会报错,npm run build会出现打包失败的情况
因此,决定采用react-intl@2.9.0版本,在国际化时,需要引入react-intl中的区域库信息,进行如下操作:
1 |
|