摘要:本期分享一個的多語言處理插件,此插件是基于修改而來的。實現(xiàn)的原理就是在本地放置一個或多個語言資源文件,然后通過加載這些資源文件并反序列化成對象,再根據(jù)資源文件中定義的鍵名去替換頁面中需要顯示的地方。
本文出自APICloud官方論壇,
感謝論壇版主哼哼哈兮 的分享。
本期分享一個js的多語言處理插件i18n.js,此插件是基于JQuery.i18n.properties修改而來的。?
實現(xiàn)的原理就是在本地放置一個或多個語言資源文件,然后通過js加載這些資源文件并反序列化成json對象,再根據(jù)資源文件中定義的鍵名去替換頁面中需要顯示的地方。?
再說說用法:?1、在頁面中引入i18n.js,加載后會給window對象增加一個名叫 i18n 的屬性,是個對象。?2、加載資源文件
?
i18n.init({
?name:?name,?//?資源文件名稱,默認(rèn)為Layout
?language:?lang,?//?語言名稱,格式規(guī)范為:{語言}_{區(qū)域}或{語言},如zh_CN,zh,en,en_US
?path:?"widget://res/lang/",?//?資源文件路徑,默認(rèn)值為:widget://res/lang/5. ???? mode:?"map", //?加載的語言資源是以何種形式返回,js 對象變量或map,默認(rèn)值:vars
?debug:?api.debug,??//?是否開啟調(diào)試模式
?callback:?fnComplete?//?資源文件加載后的回調(diào)函數(shù)
?});
復(fù)制代碼
3、資源文件加載完成后,會在 i18n.localize 對象中得到加載結(jié)果。如資源文件名為默認(rèn)的Layout,則會得到 i18n.localize.Layout這個對象,它是一個包含資源文件中所有鍵值對信息的對象,屬性名為資源文件中的鍵名,屬性值為資源文件中的鍵值。
4、資源文件名稱為 xxx.res, 如Layout.res, Layout_zh.res或Layout_zh_CN.res
??內(nèi)容格式如:
#這里是注釋內(nèi)容,i18n.init執(zhí)行加載時會忽略
text_1=?某個中文字符
text_2=還是中文
復(fù)制代碼
想了解更多詳情的可以參看JQuery.i18n.properties 文檔
最后附上一個相對完整的處理流程,以供參考,也歡迎有更好的建議提出。??APP啟動時獲取語言偏好設(shè)置:
var lang = api.getPrefs({
sync: true, key: "language" }); if (!lang) { // 初次進(jìn)來選系統(tǒng)語言 var sysLang = navigator.language.replace("-", "_"); for (var i = 0; i < App.consts.languages.length; i++) { if (App.consts.languages.value === sysLang) { lang = App.consts.languages; break; } } // 如果系統(tǒng)語言不在支持的語言中,所默認(rèn)置為支持語言的第一個 if (!lang) { lang = App.consts.languages[0]; } api.setPrefs({ key: "language", value: JSON.stringify(lang) }); } else { lang = JSON.parse(lang);
????????}
根據(jù)獲取的語言加載對應(yīng)的資源文件:
// 加載布局所需語言資源文件
var layout = App.getLayoutRes(); if (!layout) { App.loadLanguage(lang.value, "Layout", function() { App.setLayoutRes(i18n.localize.Layout); });
????????}
最后用加載出來的結(jié)果去替換頁面中需要根據(jù)語言顯示的地方,不管是用模板引擎也好還是一個個去獲取html元素后修改innerTEXT都行:
// js中利用模板引擎替換顯示內(nèi)容 $api.html($api.byId("vipFeature"), template("tpl-vip-feature", layout));
如果要替換的內(nèi)容很少,也可以
至此,這個插件基本的應(yīng)用應(yīng)該是沒有什么問題了。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/110271.html
摘要:在中引入調(diào)用第三方插件新建一個對象默認(rèn)語言配置語言選項是一個配置語言包文件和語言選項的文件,文件內(nèi)容大致如下語言包列表合并語言包是一個函數(shù),判斷當(dāng)前設(shè)置的語言類型,如果沒有設(shè)置語言,則根據(jù)判斷是中文還是非中文,非中文則顯示英語。 vue-i18n官網(wǎng) https://kazupon.github.io/vue... 項目用vue-cli構(gòu)建,用到vue全家桶及webpack、iview...
摘要:引入是一個插件,主要作用就是讓項目支持國際化多語言。所以新建一個文件夾,存放所有跟多語言相關(guān)的代碼。目前包含三個文件。全局搜索發(fā)現(xiàn)一共有多個。 這兩天手頭的一個任務(wù)是給一個五六年的老項目添加多語言。這個項目龐大且復(fù)雜,早期是用jQuery實現(xiàn)的,兩年前引入Vue并逐漸用組件替換了之前的Mustache風(fēng)格模板。要添加多語言,不可避免存在很多文本替換的工作,這么龐雜的一個項目,怎么才能使...
摘要:如果對您有幫助請動動鼠標(biāo)右下方給我來個贊,您的支持是我最大的動力。安裝 npm install vue-i18n 新建一個文件夾 i18n ,內(nèi)新建 en.js zh.js index.js 三個文件 準(zhǔn)備翻譯信息 en.js export default { home: { helloworld: hello workd ! } }; zh.js export d...
摘要:前言上個月月底開源組開源了使用適配人人企業(yè)版專業(yè)版的前端工程具體詳情見人人企業(yè)版適配發(fā)布。當(dāng)然,也督促自己產(chǎn)出一篇相關(guān)的文章,來記錄這次有趣的學(xué)習(xí)之旅。 Created by huqi at 2019-5-5 13:01:14 Updated by huqi at 2019-5-20 15:57:37 前言 上個月月底@D2開源組 開源了使用 D2Admin 適配 人人企業(yè)版(專業(yè)版) 的...
摘要:本國際化方案僅針對技術(shù)棧,且不會涉及服務(wù)端國際化內(nèi)容。引入多語言環(huán)境的數(shù)據(jù)雖然我只用到了文本翻譯的功能,以為就不需要加載這些數(shù)據(jù),但后來發(fā)現(xiàn)這是必須的步驟。 前言 最近新接了一個項目,從0開始做,需要做多語言的國際化,今天搞了一下,基本達(dá)到了想要的效果, 在這里簡單分享下: showImg(https://segmentfault.com/img/bVbuiJB); 背景國際化方案國際...
閱讀 2996·2021-10-12 10:17
閱讀 1598·2021-09-01 11:38
閱讀 1093·2019-08-30 15:44
閱讀 3490·2019-08-26 18:36
閱讀 519·2019-08-26 13:25
閱讀 1891·2019-08-26 10:29
閱讀 2845·2019-08-23 15:58
閱讀 768·2019-08-23 12:59