欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

React-intl實現(xiàn)多語言的示例代碼

最近在項目中添加了語言國際化的功能。

創(chuàng)新互聯(lián)公司是網(wǎng)站建設技術企業(yè),為成都企業(yè)提供專業(yè)的成都網(wǎng)站設計、做網(wǎng)站,網(wǎng)站設計,網(wǎng)站制作,網(wǎng)站改版等技術服務。擁有10多年豐富建站經(jīng)驗和眾多成功案例,為您定制適合企業(yè)的網(wǎng)站。10多年品質,值得信賴!

語言國際化,也有人說成是語言本地化,其實就是為Web App添加多語言,我們的項目當前包含了中文版和英文版,按理來說『逐字替換』也不是多大事兒,但是,這么Low的做法,有錢途嗎?

一開始的時候,我考慮的是傳統(tǒng)的為整個項目添加config文件,根據(jù)不同的語言和地區(qū),加載不同的config文件,就能夠達到界面語言切換的目的。當然,也正是因為這個想法太過于幼稚,所以才被稱為『一開始』的想法。語言的國際化不僅僅是將界面上的UI文字翻譯成另一種語言,還包括了日期&時間顯示,數(shù)字顯示(英文環(huán)境下每隔3位一個逗號:1,000),量詞的顯示(一個蘋果是apple,兩個蘋果就應該是apples),甚至還有一個字符串中間插了一個變量的情況("今天午飯吃了{count}個雞腿")...

所以這并不只是一個簡單的字符替換問題,并且,我們要很方便的導出一個目錄,放到word或者page當中,給到其他同事對照著進行翻譯工作,這個非常重要??!難道你要讓產(chǎn)品經(jīng)理直接在代碼里改么?或者你想一個一個搜索替換?不考慮清楚就干的話,相信我,You'll pay for this。

作為一個有追求的代碼家,你肯定不希望在index.html當中增加一行<Script>引用吧?另外,UI中的文字全部都是使用圖片的那個同學,請起立,滾。如果想要在一個React項目中,優(yōu)雅的import something from somewhere,然后將界面中的文字用<首字母大寫 /> 組件替代,最后通過簡單的配置實現(xiàn)語言的國際化,那我們就用React-intl吧。

React 做國際化,我推薦使用 React-intl , 這個庫提供了 React 組件和Api兩種方式來格式化日期,數(shù)字和字符串等。知道這個庫了,那讓我們開始使用它

組件用法

為了和React 比較融和,我們可以使用組件的方式

1.安裝

npm install react-intl --save

2.添加引用

import {IntlProvider, addLocaleData} from 'react-intl';

3.添加 locale 配置文件

zh-CN.js

const zh_CN = { 'intl.hello': "你好", 'intl.name': '我的名字是 {name}' } export default zh_CN;

en-US.js

const en_US = { 'intl.hello': "hello", 'intl.name': 'my name is {name}' } export default en_US;

4.使用<IntlProvider />

這個組件用于設置 i18n 的上下文,它將包裝應用程序的根組件,以便整個應用程序將配置在 i18n 的上下文中.
最主要的兩個配置項是: loacle 當前的語言環(huán)境 messages 當前語言的內容。

我們要動態(tài)切換語言,需要動態(tài)改這兩個配置。

import zhCN from './locale/zh.js';  //導入 i18n 配置文件
import enUS from './locale/en.js';

addLocaleData([...en, ...zh]);

export default class Root extends Component {
  static propTypes = {
    store: PropTypes.object.isRequired,
    history: PropTypes.object.isRequired
  }

  render() {
    const { store , history } = this.props;
    return (
      <IntlProvider locale='zh' messages={zhCN}>
        <Provider store={store}>
          <Router history={history}>
          </Router>
        </Provider>
      </IntlProvider>
    )
  }
}

5.使用<FormattedMessage />

基礎用法

<FormattedMessage 
  id="intl.hello"
  defaultMessage={'hello'}
/>

如果當前語言環(huán)境是 中文,它會顯示你好 ,如果是英文環(huán)境,會顯示Hello.

動態(tài)傳值

<FormattedMessage
  id="intl.name"
  values={{name: <b>{name}</b>}}
/>

我們定義 intl.name 的時候模板里用到了{name} ,這個代表我們可以動態(tài)傳值,我們可以通過FormattedMessage中的 values 屬性傳一個JSON對象,這是就會動態(tài)顯示我們的內容了。

6.其它組件用法

Ract-intl 為我們提供了豐富的組件,可以幫我們很好的處理字符串,時間,日期 ,大家可以自己查看 API,如有不明白的地方,我可以留言。

API用法

有時候我們可能需要在代碼中動態(tài)做 國際化,這就需要動態(tài)API 了。下面我簡單介紹下怎么用

1.導入 injectIntl

import { injectIntl, FormattedMessage } from 'react-intl';

2.在組件中注入

export default connect(mapStateToProps,mapActionCreators)(injectIntl(App))

我在項目中用到了Redux,注入的時候應該向上面那樣,如果你沒有用Redux ,只需要 export defuault injectIntl(App)

3.使用 intl 對象

我們通過第二步的注入,現(xiàn)在在我們在 組件的 props 上會得到一個 intl 對象,它提供的方法和咱們上邊介紹的組件基本相對應,這時候我們想要顯示字符串,可以使用formatMessage 方法:

const {intl} = this.props;
  
let tmp = intl.formatMessage({id: 'intl.name'},{name: 'joe'});

formatMessage的第一個參數(shù)可以傳入Id, 第二個參數(shù)傳入 values ,更詳細的了解,請查看API

結束語

教程的代碼,我已放到github 上,大家如果需要,自行查看 React-intl

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

本文標題:React-intl實現(xiàn)多語言的示例代碼
鏈接分享:http://chinadenli.net/article30/gppgso.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護、虛擬主機、網(wǎng)站建設App設計、品牌網(wǎng)站制作網(wǎng)站營銷

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

外貿網(wǎng)站制作
免费精品一区二区三区| 日韩免费国产91在线| 精品日韩国产高清毛片| 在线观看视频日韩精品| 国产欧美高清精品一区| 爱草草在线观看免费视频| 在线视频免费看你懂的| 国产亚洲成av人在线观看| 午夜国产精品福利在线观看 | 成人精品一级特黄大片| 九九热精品视频免费在线播放| 日韩精品少妇人妻一区二区| 亚洲中文字幕三区四区| 国产成人免费激情视频| 成人精品一区二区三区在线| 午夜精品在线观看视频午夜| 欧美三级不卡在线观线看| 欧美精品女同一区二区| 亚洲中文在线中文字幕91| 成人精品国产亚洲av久久| 国产精品一区二区视频成人| 日本女优一区二区三区免费 | 日韩成人动作片在线观看| 亚洲精品有码中文字幕在线观看| 成人精品国产亚洲av久久| 欧美日韩亚洲国产精品| 免费大片黄在线观看日本| 国产精品日韩精品一区| 国产一区欧美一区日本道| 太香蕉久久国产精品视频| 亚洲一区二区三区免费的视频| 精品人妻久久一品二品三品| 日本黄色录像韩国黄色录像| 日本黄色录像韩国黄色录像| 午夜精品成年人免费视频| 亚洲一区在线观看蜜桃| 福利视频一区二区三区| 91欧美日韩一区人妻少妇| 亚洲免费黄色高清在线观看| 国产日韩在线一二三区| 日本人妻中出在线观看|