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 已經涵蓋了所有的情況。