react-intl

React Intl

React Intl 用于国际化 React 组件,提供 React 组件和 API 来格式化日期,数字,字符串(包括单复数和翻译) 。这次只用它实现文本翻译。

用法
  1. 安装
npm install react-intl --save
  1. 载入语言环境数据。React Intl 依赖这些数据来支持单复数和相对时间格式化的功能。
// Main.js
import { addLocaleData } from 'react-intl'; /* react-intl imports */
import en from 'react-intl/locale-data/en';
import zh from 'react-intl/locale-data/zh';
addLocaleData([...en, ...zh]);  // 引入多语言环境的数据  
  1. 使用<IntlProvider>组件包裹需要实现国际化的根组件,例如:
/ Main.js
import { addLocaleData, IntlProvider } from 'react-intl'; /* react-intl imports */
render(){
    return (
        <IntlProvider>
          //··· ···
        </IntlProvider>
    )
}
  1. 添加多种语言对应的文本。比如要支持中英文,为了方便之后维护,可以新建两个文件:

    // en_US.js
    const en_US = {
        hello: "Hello!",
        //... ...
    }
    export default en_US;
    
// zh_CN.js
const zh_CN = {
    hello: "你好!",
    //... ...
}
export default zh_CN;

然后在Main.js中引入这两个变量。

// Main.js
import zh_CN from "../locale/zh_CN"     // import defined messages in Chinese
import en_US from "../locale/en_US"     // import defined messages in English
  1. 全局配置当前的语言,和相对应的文本。即配置<IntlProvider>组件的两个属性localemessages

    // Main.js
    render(){
        let messages = {}
        messages['en'] = en_US;
        messages['zh'] = zh_CN;
        return (
            <IntlProvider locale={this.state.lang} messages={messages[this.state.lang]}>
                //··· ···
            </IntlProvider>
        )
    }
    
  2. 这样基本配置就完成了,可以通过改变 this.state.lang的值来改变页面语言。

    // Main.js
    /**
     * Change language
     * @param {String} lang new language
     */
    changeLanguage(lang) {
        this.setState({
            lang: lang
        })
    }
    
  3. 接下来,添加翻译的文本到页面中。
    基本只需要使用到一个组件:<FormattedMessage>。这个组件默认生成一个<span>,内容是翻译后的文本,也就是 messages中对应字段的值。
    在需要添加国际化文本的组件中,引入FormattedMessage组件。

import { FormattedMessage  } from 'react-intl'; /* react-intl imports */
//... ...
<FormattedMessage id="hello" />

当前语言为en时,生成结果:

<span>Hello!</span>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值