在React項目中使用React-intl實現多語言支持,以及對react-init各組件的解讀


React-intl

原文鏈接:https://segmentfault.com/a/1190000005824920

項目地址: https://github.com/yahoo/react-intl

React-intl是雅虎的語言國際化開源項目FormatJS的一部分,通過其提供的組件和API可以與ReactJS綁定。上面這句話援引了官方文檔的說辭,主要表達的是,這是一個很屌的開源項目,有大團隊支持,使用量也很大,不會太坑爹,你們放心用。雖然雅虎都快被收購了。

React-intl提供了兩種使用方法,一種是引用React組建,另一種是直接調取API,官方更加推薦在React項目中使用前者,只有在無法使用React組件的地方,才應該調用框架提供的API,事實上,我在項目的過程中真的遇到了無法使用組件的情況,這個我會另外寫一篇文章來描述。

React-intl提供的React組件有如下幾種:

<IntlProvider /> 包裹在需要語言國際化的組建的最外層,為包含在其中的所有組建提供包含id和字符串的鍵值對。(如: "homepage.title":"Hommily"; )

日期時間:

<FormattedDate /> 用於格式化日期,能夠將一個時間戳格式化成不同語言中的日期格式。

傳入時間戳作為參數:

<FormattedDate 
    value={new Date(1459832991883)}
/>  

輸出結果:

<span>4/5/2016</span>

<FormattedTime> 用於格式化時間,效果與<FormattedDate />相似。

傳入時間戳作為參數:

<FormattedTime 
value={new Date(1459832991883)}
/>

輸出結果:

<span>1:09 AM</span>
<FormattedRelative /> 通過這個組件可以顯示傳入組件的某個時間戳和當前時間的關系,比如 “ 10 minutes ago" 。

傳入時間戳作為參數:

<FormattedRelative
value={Date.now()}
/>
輸出結果:

<span>now</span>

10秒之后的輸出結果:

<span>10 seconds ago</span>
1分鍾之后的輸出結果:

<span>1 minute ago</span>
數字量詞

<FormattedNumber /> 這個組件最主要的用途是用來給一串數字標逗號,比如10000這個數字,在中文的語言環境中應該是1,0000,是每隔4位加一個逗號,而在英語的環境中是10,000,每隔3位加一個逗號。

傳入數字作為參數:

<FormattedNumber
value={1000}
/>
輸出結果:

<span>1,000</span>

<FormattedPlural /> 這個組件可用於格式化量詞,在中文的語境中,其實不太會用得到,比如我們說一個雞腿,那么量詞就是‘個’,我們說兩個雞腿,量詞還是‘個’,不會發生變化。但是在英文的語言環境中,描述一個蘋果的時候,量詞是apple,當蘋果數量為兩個時,就會變成apples,這個組件的作用就在於此。

傳入組件的參數中,value為數量,其他的為不同數量時對應的量詞,在下面的例子中,一個的時候量詞為message,兩個的時候量詞為messages。實際上可以傳入組件的量詞包括 zero, one, two, few, many, other 已經涵蓋了所有的情況。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM