999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種新型的Web國際化解決思路及實踐

2018-08-13 11:35:10彭金勝
軟件 2018年7期
關鍵詞:功能模塊頁面國際化

彭金勝

?

一種新型的Web國際化解決思路及實踐

彭金勝

(中國工商銀行股份有限公司軟件開發中心,上海 201206)

目前Web應用程序常見的國際化方案中,大多以前端或者后端為核心,導致另一端國際化能力弱及前后端交互頻繁等問題。本文提出使用JSON作為資源文件的解決思路,前后端讀取此文件用于國際化,并且通過Hash,提供良好的緩存支持。以解決一端國際化能力弱,占用內存空間大及前后端頻繁交互等問題。目前部分內容已應用于實際項目中,受到同事們的一致好評。實踐表明該方案能夠很好的解決目前常見國際化方案中存在的不足。

Java Web國際化;JSON數據交換格式;JSON國際化

0 引言

目前,Web應用程序常見的國際化方案有些已經過時,例如以后端為核心,基于Java的properties的國際化方案,它需要在Java的Web容器當中運行,而且占用大量內存空間;而另一些則不成熟,比如當前以前端為核心的國際化方案,jQuery等框架插件,它們與后端高頻的交互,對服務器帶來巨大壓力[1]。

JSON作為一種輕量級數據交換格式,具有良好讀寫及跨語言平臺的能力,已經成為數據交換的主要格式,非常適合以Java為代表的后端,及以JavaScript為前端的運行環境,而國際化正是一種前后端都需要的資源。

基于以上當前國際化方案存在的不足,以及JSON在數據交換領域所展現出來的優勢,本文提出使用JSON作為資源文件的解決方案,前后端讀取此文件用于國際化,并且通過Hash,提供良好的緩存支持[2]。以解決服務器壓力大,占用內存空間大及前后端交互頻繁等問題。

目前該方案部分內容已應用于實際項目中,受到同事們的一致好評。實踐表明該方案能夠很好的解決目前常見國際化方案中存在的不足。

1 Web應用程序國際化方案的缺陷

現有Web應用程序常用的國際化方案有很多種,大致可以分為兩類:一類是在后端負責國際化,另一類是前端負責國際化[3]。

其中前者相對來說使用的更為廣泛,基于Java讀取相應的properties文件(exaple_zh_CN.properties/ example_en_US.properties),以達到實現國際化的目的。缺陷比較明顯:

(1)都要經過Java的Web容器,不管是Java程序直接讀取,或者Velocity模版引擎,還是JSP里自定義標簽的方式。

(2)文件內容需要裝載到內存中,占有大量內存空間。

(3)文件通常會按模塊切分到各個模塊中,導致難于一起整理和翻譯。

(4)同一詞匯出現在多個文件中,導致系統整體內容不一,并且維護困難。

隨著前后端分離思想的出現,越來越多的項目選擇前端靜態化,通過Nginx等前端服務器或者CDN等方式部署靜態資源,隨之而來的便是另一類:前端國際化,通常采用頁面調用JavaScript文件(example_zh_CN.js/example_en_US.js)或者使用jQuery等成熟框架的國際化插件等方式,這類方式的缺陷在于:

(1)使后端喪失了國際化的能力,比如后端的報錯信息,生成pdf文件等。

(2)前后端交互頻繁,給服務器造成巨大的壓力。

1.1 解決

JSON憑借輕量級,良好的讀寫及跨語言平臺等優勢,快速成為最流行的數據交換格式[4]。本文利用JSON格式文件優勢,提出以JSON存儲國際化資源的思路,以實際生產流程為例,一步一步實現前后臺分離應用的國際化。

1.1.1 開發

國際化JSON文件應遵循如下原則:

(1)根據國家語言劃分,每種國家語言生成一份JSON文件。開發時,維護一份主文件,其它語言由主文件翻譯。

(2)內容按字母排序,有助于后續維護。

(3)詞匯對應的鍵值以頁面展現的英文或拼音為準,假如項目以中文為主,詞匯“搜索”對應的鍵值應該是“SouSuo”,假如項目以英文為主,則鍵值為“Search”。

(4)多個單詞的鍵值用下劃線連接,比如“收件日期”的鍵值為“Received_date”。

(5)按功能路徑分塊的方式進行組織,以便于相同的內容可以提取到更高層級,以及按功能路徑切分文件。

以下摘取某工程部分內容為例,文件內容組織如圖1所示。

圖1 JSON文件內容組織示意圖

1.1.2 構建

國際化JSON文件通過生成Hash目錄文件“i18n_Hash_zh_CN.json”及其它Hash內容文件的流程如下:

(1)建立一個Map,用于存儲模塊路徑及其對應的內容。

(2)進入一個JSON對象,并帶入該JSON對象對應的key值,如果是根對象,則為空(“”)。

(3)新建對象,用戶存儲帶入key值對應的內容。

(4)循環讀取該對象下的屬性,如果屬性不以斜線(“/”)開頭,則將屬性及對應的值添加到新建對象中。

(5)如果屬性以斜線(“/”)開頭,則進入第(2)步,帶入當前key值加上該屬性。

(6)將key值加上斜線(“/”)結尾與新建對象一起放入Map中

通過以上流程便可以獲取所有的功能模塊路徑及其內容,將內容進行md5取值并截前8位得Hash值,再將路徑及這些Hash值寫入Hash目錄文件,最后將內容寫入由功能模塊路徑加Hash加上語言后綴組合成的Hash內容文件中[5-7]。由于生成出的Hash內容文件名中的Hash值為其文件內容,以此便保證其文件名的唯一性,可被后端服務器,前端服務器及瀏覽器等端點永久緩存,JSON文件編譯結果如圖2所示。

1.1.3 使用

首先要根據語言獲取相應的Hash目錄文件,然后再根據路徑獲取相應的一個或多個國際化JSON文件,以下以簡體中文(zh_CN)為例,如在“/dashboard”功能模塊或頁面中,根據“i18n_Hash_ zh_CN.json”,則需要獲取:

圖2 JSON文件編譯結果示意圖

(1)“/”對應的4f668ad4_zh_CN.json。

(2)“/dashboard/”對應的92b4dee5_zh_CN.json。

在“/user/resetpwd”功能模塊或頁面中時,則需要獲取:

(1)“/”對應的4f668ad4_zh_CN.json(如果已緩存則無需在獲取,在該示例中,由于“/dashboard”已加載過一次,所以此處無需再加載)。

(2)“/user/”對應的eeacdaac_zh_CN.json。

(3)“/user/resetpwd/” 對應的d21e76d5_zh_ CN.json。

其次是獲取國際化值,與獲取Hash文件類似,如在“/dashboard”功能模塊或頁面中,需要獲取“Failed_Times”對應的“失敗次數”:

(1)在“/dashboard/”對應的92b4dee5_zh_CN. json里找“Failed_Times”,找到并返回。

當在“/user/resetpwd”功能模塊或頁面中,需要獲取“Submit”對應的“提交”:

(2)在“/user/resetpwd/”對應的d21e76d5_zh_ CN.json里找“Submit”,未找到,下一步。

(3)在“/user/”對應的eeacdaac_zh_CN.json里找“Submit”,未找到,下一步。

(4)在“/”對應的4f668ad4_zh_CN.json里找“Submit”,找到并返回。

1.1.4 部署

國際化JSON文件可獨立部署,亦可在前端或后端服務器上部署,以下以獨立部署為例,架構部署如圖3所示:

通過以上步驟,便實現JSON文件的國際化方案。經歷開發、構建、部署及使用后,不難看出,對比目前常見國際化方案,該方案具有如下優勢:

圖3 JSON文件獨立部署架構示意圖

(1)不再需要Java Web容器。

(2)內容可根據模塊路徑按需緩存。

(3)開發時只有一份文件,可直接發給翻譯部進行翻譯。

(4)可通過簡單的CTRL+F來確認是否已國際化,防止同一詞匯多次出現。

(5)后端擁有國際化的能力,無需再去解析JavaScript文件。

(6)前端頁面渲染時,根據功能模塊路徑一次性按文件裝載,而不再是單個詞匯請求后臺服務。

1.2 結果

JSON文件國際化方案部分內容已應用于實際項目中,受到同事們的一致好評。因為可以按需緩存,按文件裝載,所以大大提高了服務器性能,提升用戶體驗;因為只有一份文件,僅需要跟翻譯部門講解溝通一次,就可以免去整理翻譯文檔的工作,大大縮減開發工作量;因為后端Java可以直接讀取JSON文件,而不再需要去解析JavaScript文件,有效防止了解析出錯等問題[8-10]。

2 結論

通過JSON文件國際化方案,可以有效解決實際應用的多個問題,包括資源緩存,開發工作量及程序高可靠性等。

JSON文件國際化方案,非常適用于全量發版的項目,對于增量發版的項目則不太適合,因為如果項目很大,每次國際化文件被切成多個Hash的JSON文件,由于增量發版只會增量累積,隨之而來的便是國際化JSON文件難以清理的問題。特別是7×24服務的應用,清理成本更高。

當然,隨著項目越來越大,JSON文件國際化方案還會遇到功能模塊路徑劃分的問題,何種路徑劃分能夠很好支撐后續的發展,而不至于越來越多的內容往根路徑上添加,導致根路徑Hash的JSON文件內容過多。

當前該方案不但適用于信息的國際化,而且適用于簡單的字典值/代碼表(即下拉框數據)的國際化,完整的字典值/代碼表的國際化方案正在研究當中,相對于信息的國際化,字典值/代碼表的國際化則無需嚴格的功能路徑劃分,但是卻會有字典值/代碼表過大的情況,比如車型庫等。

[1] 冀振燕, 程虎, 梅嘉. Java語言國際化的設計與實現[J]. 軟件學報, 2000, 11(11): 1541-1546.

[2] 李長春, 廖建新, 王純, 等. 軟件界面國際化及設計模式的應用[J]. 食品科學技術學報, 2007, 25(5): 53-56.

[3] 張愛玲, 米應凱. 軟件系統國際化的設計研究[J]. 軟件工程, 2010(4): 52-53.

[4] 潘詩瑤, 黃建明. Web應用系統中的MOCK測試技術[J]. 軟件, 2016, 37(12): 214-218.

[5] 朱培源. 一種新型的Web應用程序框架的設計與實現[D]. 電子科技大學, 2017.

[6] 王登輝. 基于工作流模式的語義Web服務組合信任度模型的研究與實現[D]. 華中科技大學, 2016.

[7] 王文明, 李志安, 程懷舟. 一種新型的泵站Web發布系統[J]. 可編程控制器與工廠自動化, 2010(5): 61-63.

[8] 周娜. 基于Web的制造業電子商務平臺關鍵技術的研究與應用[D]. 南京航空航天大學, 2005.

[9] 王慶福. 網站建設中數據庫技術與WEB技術的應用對比研究[J]. 軟件, 2013, 34(2): 86-87.

[10] 李天翼, 許魯, 常致全. 一種新型的基于網絡存儲的Web集群解決方案[J]. 計算機應用研究, 2003(10): 78-79+112.

A Mew Solution and Practice of Web Internationalization

PENG Jin-sheng

(Industrial Commercial Bank of China Co., Ltd. Software Development Center, Shanghai 201206)

Abstract: at present, most of common international schemes of Web applications take front or back end as core, which leads to weak international ability of other end and frequent interaction between front and back end. The article proposes solution of taking JSON as resource file, which can be read by front and back end for internationalization, and Hash provides good caching support to solve problem of weak internationalization at one end, and occupying large memory space and frequent interaction between front and back end. At present, some contents have been applied to practical projects and received good evaluation from colleagues. Practice shows the scheme can solve shortcomings of current common international solutions well.

Java Web internationalization; JSON data interchange format; JSON internationalization

TP274+.2

A

10.3969/j.issn.1003-6970.2018.07.030

彭金勝(1988-),本科,信息科技經理,主要研究方向:大數據分析挖掘及可視化。

本文著錄格式:彭金勝. 一種新型的Web國際化解決思路及實踐[J]. 軟件,2018,39(7):143-145

猜你喜歡
功能模塊頁面國際化
大狗熊在睡覺
聚焦港口國際化
金橋(2022年10期)2022-10-11 03:29:46
刷新生活的頁面
保健醫苑(2022年1期)2022-08-30 08:39:14
人民幣國際化十年紀
中國外匯(2019年12期)2019-10-10 07:26:56
從園區化到國際化
商周刊(2018年12期)2018-07-11 01:27:18
基于ASP.NET標準的采購管理系統研究
軟件導刊(2016年9期)2016-11-07 21:35:42
直銷企業國際化并不難
輸電線路附著物測算系統測算功能模塊的研究
M市石油裝備公服平臺網站主要功能模塊設計與實現
石油知識(2016年2期)2016-02-28 16:20:16
功能模塊的設計與應用研究
主站蜘蛛池模板: 亚洲不卡av中文在线| 久久视精品| 天天激情综合| 精品国产香蕉伊思人在线| 青青草原国产免费av观看| 91九色最新地址| 精品久久综合1区2区3区激情| 丰满人妻被猛烈进入无码| 国产成人啪视频一区二区三区| 免费黄色国产视频| 国产高清在线观看| 国产精品一区在线麻豆| 国产精品深爱在线| 久久青草精品一区二区三区| 亚洲综合婷婷激情| 免费无码又爽又刺激高| 日本高清有码人妻| 99精品国产电影| 亚洲日本韩在线观看| 国产一级视频久久| 色综合手机在线| 国产成人亚洲精品色欲AV| 国产午夜无码专区喷水| 亚洲AⅤ永久无码精品毛片| 国产a在视频线精品视频下载| 欧美a网站| 最新国产精品第1页| 老司机精品99在线播放| 亚洲精品无码成人片在线观看| 久久毛片网| 国产成人一二三| 1769国产精品视频免费观看| 久久国产精品电影| 色妞永久免费视频| 亚洲 欧美 日韩综合一区| 午夜久久影院| 国产成人1024精品| 国产91精选在线观看| 欧美va亚洲va香蕉在线| 日本草草视频在线观看| 国产乱子伦无码精品小说| 日韩二区三区| 成人福利在线观看| 中国毛片网| 国产成人一级| 国产91丝袜在线观看| 国产成人久久综合777777麻豆| 毛片久久久| 67194亚洲无码| 青青久在线视频免费观看| 国产va欧美va在线观看| 欧美亚洲国产日韩电影在线| 欧美不卡视频一区发布| 欧美日韩综合网| 久久精品亚洲热综合一区二区| 日韩人妻精品一区| 91一级片| 久久国产成人精品国产成人亚洲| 丁香六月综合网| 国产在线97| 亚洲首页国产精品丝袜| 女同国产精品一区二区| 色老头综合网| 国产呦精品一区二区三区下载 | 日韩区欧美区| 黄片在线永久| 99色亚洲国产精品11p| 国产成人禁片在线观看| 亚洲高清中文字幕| 国产素人在线| 久久天天躁狠狠躁夜夜躁| 日本黄色不卡视频| 人妻少妇久久久久久97人妻| 亚洲男人天堂2018| 欧美三级不卡在线观看视频| 国产精品自在在线午夜区app| 日韩午夜片| 国产亚洲高清在线精品99| 亚洲色图综合在线| 日韩欧美综合在线制服| 国产原创演绎剧情有字幕的| 欧美a级完整在线观看|