國(guó)際化

解決的問(wèn)題:

解決不同國(guó)家語(yǔ)言顯示特性,如單復(fù)數(shù)、貨幣、數(shù)字、時(shí)間、時(shí)區(qū)等。
前后端耦合低,讓服務(wù)端專(zhuān)注于數(shù)據(jù)的本身。
提供給翻譯團(tuán)隊(duì)待翻譯語(yǔ)言包格式簡(jiǎn)單、可讀性強(qiáng)、規(guī)范。

方案原理:

服務(wù)端返回頁(yè)面數(shù)據(jù)和當(dāng)前國(guó)家字段,如zh-cn, en-us等,前端根據(jù)該字段加載當(dāng)前國(guó)家的語(yǔ)言規(guī)則文件。
前端調(diào)用ro.js中$Le.getLangKeyC函數(shù),傳入JS語(yǔ)言包(json格式)對(duì)應(yīng)的文案key,傳入服務(wù)端返回的數(shù)據(jù),就可解析成符合當(dāng)前國(guó)家語(yǔ)言特性的文案結(jié)果,例如

時(shí)間:
服務(wù)端返回?cái)?shù)據(jù) 中文 美國(guó)英語(yǔ) 英國(guó)英語(yǔ)
{ time: 1474815683 } 2016年9月25日 Sep 12, 2016 12 Sep 2016
貨幣顯示:
服務(wù)端返回?cái)?shù)據(jù) 人民幣 美元 歐元
{curreny: 1337} ¥1,337.00 $1,337.00 €1,337.00
單復(fù)數(shù):
服務(wù)端返回?cái)?shù)據(jù) 中文 英語(yǔ)
{count: 1} 我有1個(gè)蘋(píng)果 I have 1 apple
{count: 10} 我有10個(gè)蘋(píng)果 I have 10 apples
數(shù)字:
服務(wù)端返回?cái)?shù)據(jù) 中文 美國(guó)英語(yǔ) 德語(yǔ)
{number: 3.14} 3.14 3.14 3,14

方案依賴(lài):

  1. 該方案依賴(lài)推特的twitter-cldr-js,twitter-cldr-js是基于CLDR(Common Locale Data Repository)開(kāi)發(fā),CLDR集成了世界上不同國(guó)家語(yǔ)言特性規(guī)則,各大公司均已采用CLDR(Google, Apple, Microsoft, IBM等)。

基于該方案各團(tuán)隊(duì)協(xié)作核心流程:

1:服務(wù)端:

服務(wù)端向頁(yè)面注入當(dāng)前國(guó)家字段,如zh-cn, en-US等。

2:前端:

前端只需加載當(dāng)前國(guó)家語(yǔ)言包,語(yǔ)言規(guī)則,根據(jù)業(yè)務(wù)數(shù)據(jù)調(diào)用ro.js中$Le.getLangKeyC函數(shù)($Le.getLangKeyC是基于twitter-cldr-js API的再次封裝,更加簡(jiǎn)化)。

3:本地化翻譯團(tuán)隊(duì):

本地化翻譯團(tuán)隊(duì)只需依CLDR規(guī)范來(lái)翻譯字段。例如單復(fù)數(shù)翻譯:“我有10個(gè)蘋(píng)果”:

前端提供的JS語(yǔ)言包:lang_zh-cn.js

var lang = {
    "apple_other": "我有{plural-count}個(gè)蘋(píng)果。"
}

翻譯團(tuán)隊(duì)返回的語(yǔ)言包(依據(jù)CLDR規(guī)范):lang_en-us.js

var lang = {
    "apple_one":  "I have {plural-count} apple."
    "apple_other":  "I have {plural-count} apples."
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容