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

水力發電廠監控系統小語種軟件國際化策略

2021-05-19 01:13:44鮑艷香
西北水電 2021年2期
關鍵詞:國際化信息

孫 毅 ,鮑艷香

(1.南京南瑞水利水電科技有限公司,南京 210003;2.水利部水文儀器及巖土工程儀器質量監督檢驗測試中心,南京 210012)

0 前 言

隨著這些年中國水力發電廠監控技術的日趨成熟,越來越多的國外水力發電廠項目開始使用國內水力發電廠監控產品。與2000—2010年已實施過的部分國外項目不同,新的需求不再僅是單一的英文版軟件,法文、西班牙文、葡萄牙文等其他語言版本軟件需求也逐漸出現。為了滿足小語種國際化項目的需求,南京南瑞水利水電科技有限公司開發了新一代國際化水力發電廠監控軟件產品(SC2000)。早期的水力發電廠監控軟件因為只需要支持中文及英文,使用了“GBK”字符集,該字符集可支持所有的簡體中文、繁體中文、英文等字符,但無法兼容某些小語種中的一些特殊字符,如:ê、、?等等。實際上,在現在的軟件開發中,更為廣泛使用的是“UTF-8”字符集,這一字符集可以兼容幾乎所有的字符,包括小語種中的各種特殊字符。因此,如果需要兼容各種小語種,還需將軟件使用的字符集更改為“UTF-8”字符集。然而,傳統的軟件前后臺采用了不同的編程語言,前臺為JAVA語言,后臺為C語言,兩者之間的各類信息傳輸都使用了“GBK”字符集作為編碼模式,如果僅修改其中某一方的編碼方式,會造成前后臺字符集的不兼容,導致軟件出現大量亂碼。并且原來的軟件中,大量配置文件也使用了“GBK”編碼,直接對軟件編碼方式進行修改,會造成無法兼容以前的項目,對后續的維護工作造成嚴重的影響,需進行軟件版本的分支。

1 軟件國際化及字符集

1.1 何為軟件國際化

軟件國際化最終需要實現的目標是:在不對軟件進行重新編碼或者替換運行文件的基礎上,可以通過只修改一個運行參數,或者直接在界面上選擇的方式,切換軟件界面上顯示的語言。一般實現目標的策略:在軟件中所有需要出現文本顯示的地方,都避免在軟件中采用硬編碼,通過鍵值對查找策略來實現,即在代碼中需要顯示文本的地方,通過某一個“key”,去找出資源文件中對應的“value”,最終把“value”顯示出來。“key”是固化在軟件源代碼中,而獲取 “value”可以根據配置不同,去獲取資源文件中不同的語言文字。

總體來說,軟件國際化是一套成熟的軟件所必備的體系,對軟件的可維護性、可擴展性都有極大的幫助,比如避免在需要修改軟件語言時,需要去對軟件進行重寫編碼。

1.2 字符集

字符是各種文字和符號的總稱,包括各國家文字、標點符號、圖形符號、數字等。而字符集是多個字符的集合,字符集種類較多,每個字符集包含的字符個數不同,常見字符集有ASCII字符集、GBK字符集、UTF-8字符集、UTF-16字符集、ISO-8859-1字符集。在列出的5種字符集中,除ASCII字符集外,其余均支持簡體漢字。計算機要準確的處理各種字符集文字,就需要進行字符編碼,以便計算機識別和存儲各種文字。其中,ASCII字符集包含所有的基本計算機字符,包括阿拉伯數字、英文大小寫字母,部分特殊字符如:!@#$%^&*()-+=;’,.等;GBK字符集包含所有的中文字及所有的ASCII字符;UTF-8字符集包含所有的中文字符,各類小語種的特殊字符及所有的ASCII字符。這些字符集中,所有ASCII字符(半角英文字母及半角標點符號)的編碼方式相同,但漢字及ê、、?等特殊字符的編碼方式有區別。為了更清晰地說明編碼方式引起的字節信息差異,本文結合以下代碼段進行分析:

System.out.println(“UTF-8:”+ byteArray2BinaryString(“中”.getBytes(“utf8”)));

System.out.println(“GBK:”+ byteArray2BinaryString(“中”.getBytes(“gbk”)));

這段代碼實現的是對于漢字“中”分別進行UTF-8和GBK編碼。

運行結果如下:

UTF-8: 11100100 10111000 10101101

GBK: 11010110 11010000

運行結果顯示,“中”這個字在UTF-8編碼方式下,其2進制表示為:

11100100 10111000 10101101

而“中”這個字在GBK編碼方式下,其2進制表示為:

11010110 11010000

可以看出,同一漢字在2個不同的字符集中,其字節碼是不一樣的,甚至長度都不一樣。所以,要想讓其它程序識別一段字節碼所表示字符,首先要明確其使用的是哪一種字符集,如果編碼方與解碼方使用的字符集不同,會出現“亂碼”情況。

若軟件需要兼容法文、西班牙文、葡萄牙文等小語種,則在前端程序中必須使用UTF-8字符集。對于以GBK字符集為基礎的現有軟件,如何在滿足兼容性要求的前提下實現字符集的轉換,是解決軟件增加小語種兼容問題的關鍵所在。

1.3 UTF-8與GBK的交集

根據各類型字符集的范圍可以推斷,雖然UTF-8字符集和GBK字符集存在顯著差異,但是它們的ASCII字符部分的編碼方式一致。可以采用下述代碼段進行分析驗證:

System.out.println(“UTF-8: ”+ byteArray2BinaryString(“A”.getBytes(“utf8”)));

System.out.println(“GBK: ”+ byteArray2BinaryString(“A”.getBytes(“gbk”)));

這段代碼實現的是對于英文字符“A”分別進行UTF-8和GBK編碼。

運行結果如下:

UTF-8: 1000001

GBK: 1000001

運行結果顯示,“A”這個字符在UTF-8編碼方式和GBK編碼方式下,其2進制表示均為:1000001。說明上述2種字符集存在相通部分(ASCII部分),并存在利用其來實現GBK與UTF-8字符集之間信息交互的可能性。因此,不需要對前后臺所有的程序全部進行字符集修改,僅需修改前臺程序的字符集,可實現既保持軟件兼容性又確保軟件改動最小的目標。

2 兼容策略

2.1 策略分析

要判斷是否僅修改前臺程序的字符集,首先要分析前后臺程序之間有哪些需要交互的文本信息,具體如下:

(1) 監控簡報信息,主要包括:開關量動作信息、模擬量越限信息、順控流程信息、節點狀態信息、進程狀態信息、控制操作信息、各類通信程序上報信息等。

(2) 后臺歷史記錄,即監控簡報信息中各類信息的歷史記錄。

(3) 各類前后臺都需要加載的配置文件。

在原系統中上述各類信息均采用GBK編碼方式。針對前后臺程序共用的配置文件,可分2種情況來考慮:① 對于無需進行國際化內容的配置文件,可保留使用GBK字符集,在前臺程序對其進行解析或保存時,依然指定使用GBK字符集即可[1];② 對于含國際化處理的文本信息的配置文件,需改為使用UTF-8字符集,并且通過修改程序邏輯的方式,避免后臺程序直接讀取此類配置文件中的文本內容。針對監控簡報信息及其歷史記錄,需分類進行討論。

最常見的一類為水力發電廠的開關量動作信息、模擬量越限信息。此類信息通常為電氣信號,其原理為:外部設備通過硬接線接入監控系統的PLC,PLC模件通過網絡通信將這些電氣信號上送至上位機,上位機軟件則根據信號的順序在模型庫中對測點模型進行預定義,這些測點的描述會存放在監控系統的上位機模型庫中。原有的告警策略為在后臺程序中直接組織好完整的簡報信息之后發送給前臺進行展示。然而實際上前臺模型庫中本身就存放了測點的描述信息,在后臺直接發布完整的告警信息的策略確實略顯粗糙,實際上只要將測點的ID信息、測值、動作性質等數據發布至前臺,前臺可根據這些信息重新組織出需要展示的簡報[2]。為了避免后臺程序無法解析的小語種特殊字符,采用了后臺程序僅發布測點ID、動作性質、測值等數據,由前臺程序重新組織出最終告警信息的策略,解決了上位機網絡環境中需要多種語言的系統同時存在的難題。

另一類信息為水力發電廠監控系統中的順控流程信息、節點狀態信息、進程狀態信息、控制操作信息、各類通信程序上報信息。此類信息通常為非電量信號,大部分都是通過外部系統通訊上送,或者由后臺程序在系統運行過程中,根據實際需要動態生成的告警信息。此類信息的特點是具有不確定性,大部分信息無法在數據模型中進行預定義。針對此類信號,原有策略為在后臺程序中直接組織好完整的簡報信息之后發送給前臺進行展示,此類信息不含有其它附加信息。由于此類信息無法通過測點信息進行重組,后臺程序不再發送組織好的完整簡報信息,可改為發送根據一套前后臺約定好的策略組織出來的碼值(只使用ASCII字符)。前臺程序收到碼值后,根據前后臺碼值轉換規約(詳見2.2)以及碼值信息對照表解譯出需要展示的信息。

2.2 前后臺碼值轉換規約

流程、通訊類信息需要進行碼值轉換,轉換前需要提前獲得以下幾個要素:

(1) 如何確定此類信息是一條進行了碼值轉換的信息;

(2) 從哪里獲取碼值與文本的對應關系;

(3) 哪些內容需要根據碼值進行轉換。

明確以上要素,可設計出對應的碼值轉換規約[3],具體方法如下:

在信息的開頭,用<[filename]>的格式,來告知前臺文本信息存放的配置文件,其中filename即文件名。因此,開頭“<[”連續的兩個字符,可以作為這是一條需要進行碼值轉換信息的標記。

用<#1.1.1.3.5#>的格式,來告知前臺測點ID。例如其中1.1.1.3.5就是一個測點ID,前臺程序可以根據此ID將之轉換為對應的測點描述。

用<%2,11%>的格式,來告知前臺具體的碼值信息。例如2和11中的2表示碼值的第一級關鍵字,11表示碼值的第二級關鍵字[4]。

如圖1所示,“key”列即為在文章開頭提到過的“key”。

碼值信息對照表的標準格式見圖1,其中第1列為一級關鍵字,第2列為二級關鍵字,第3列為保留信息,第4列為文本信息。例如后臺發送碼值“<[lcu1.info]> LCU1<%2,11%>”至前臺。

前臺收到信息后,開始解析[5]:

“<[lcu1.info]>”表示信息對照配置文件名,其內容即為圖1所示;

圖1 碼值信息對照表

“LCU1”為原始字符串,不需要進行碼值轉換;

“<%2,11%>”為碼值信息,第1級關鍵字2,第2級關鍵字11,經過解析找到對應的信息:“有其他流程在執行,流程退出”。

最終完整的信息為:“LCU1有其他流程在執行,流程退出”。

3 國際化資源管理策略

系統的前臺程序采用JAVA語言編碼,JAVA默認的國際化資源管理方式為properties鍵值對文件,每一個國際化語言,對應一個單獨的資源文件。然而,該模式不便于資源的整體管理。由于資源分散在各個文件中,易出現不同語言的資源文件中的信息數量不一致,導致出現前臺信息缺失的現象[6]。

因此,新一代水力發電廠監控軟件(SC2000)使用了統一的文件管理模式,所有的資源信息全部放在同一個資源文件中。系統自動根據預先的配置,獲取不同列中的信息來進行展示[7]:

如圖2所示,“key”列即為在文章開頭提到過的“key”。“cn”列為中文,“en”列為英文,“fr”列為法文,“sp”列為西班牙語,“pt”列為葡萄牙語。上述幾列均為前文提到的“value”,系統根據配置的不同,選取對應列中的“value”進行展示[8]。

圖2 國際化資源文件

4 應 用

水電站工程新一代水力發電廠監控軟件(SC2000)已在以下項目中應用:

(1) 贊比亞卡里巴水電站(中文、英語),累計安全運行超過2 650 d。

(2) 哥斯達黎加凱奇水電站(西班牙語),累計安全運行超過2 200 d。

(3) 越南松針水電站(中文、英語),累計安全運行超過960 d。

(4) 馬里古伊那水電站(法語),累計安全運行超過360 d。

(5) 洪都拉斯帕圖卡III水電站(中文、英語、西班牙語),累計安全運行超過110 d。

(6) 老撾南公水電站(中文、英語、法語),投運中。

在大量國際化項目的應用中,SC2000軟件以穩定、安全、可靠的性能獲得了用戶的認可。在同時使用多種語言的現場環境中,展現出了自身的優勢。南京南瑞水利水電科技有限公司近期承接的水力發電廠監控項目,也全部采用了SC2000軟件。隨著越來越多的國際化項目的出現,SC2000軟件將擁有更加廣闊的應用空間。

猜你喜歡
國際化信息
聚焦港口國際化
金橋(2022年10期)2022-10-11 03:29:46
人民幣國際化十年紀
中國外匯(2019年12期)2019-10-10 07:26:56
從園區化到國際化
商周刊(2018年12期)2018-07-11 01:27:18
風電巨頭的艱難國際化
能源(2017年8期)2017-10-18 00:47:50
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
直銷企業國際化并不難
陌陌唐巖:以新品提速國際化
創業家(2015年1期)2015-02-27 07:52:06
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
信息
建筑創作(2001年3期)2001-08-22 18:48:14
健康信息
祝您健康(1987年3期)1987-12-30 09:52:32
主站蜘蛛池模板: 国产主播在线观看| 欧美成人综合在线| 国产激爽大片在线播放| 精品视频在线观看你懂的一区| 在线观看av永久| 伊人五月丁香综合AⅤ| 激情五月婷婷综合网| 精品国产免费观看一区| 女人av社区男人的天堂| 亚洲精品人成网线在线| 波多野结衣爽到高潮漏水大喷| 国产精品无码一区二区桃花视频| 中文字幕亚洲综久久2021| 欧美成人免费一区在线播放| 就去色综合| 亚洲制服丝袜第一页| 欧美国产日韩一区二区三区精品影视| 天堂成人av| 激情综合婷婷丁香五月尤物| 久久精品亚洲中文字幕乱码| 一本大道AV人久久综合| 无码一区中文字幕| 69av免费视频| 国产鲁鲁视频在线观看| 欧美成人日韩| 免费高清自慰一区二区三区| 中文字幕在线看| 国产成人夜色91| 天堂在线www网亚洲| 亚洲三级a| 精品久久国产综合精麻豆| 国产呦精品一区二区三区下载 | 暴力调教一区二区三区| www.av男人.com| 国产精品美乳| 青青操视频在线| 无码免费视频| 色成人综合| 伊人久久久久久久久久| 亚洲av成人无码网站在线观看| 国产免费网址| 欧美国产菊爆免费观看| 99ri精品视频在线观看播放| 亚洲婷婷丁香| 国产一级精品毛片基地| 欧美色伊人| 99热最新网址| 国内毛片视频| 在线无码私拍| 国产微拍精品| 亚洲日韩精品伊甸| 亚洲人成网站18禁动漫无码| 色男人的天堂久久综合| 久青草免费在线视频| 嫩草国产在线| 2021国产精品自产拍在线| 国产一二三区视频| 久久久黄色片| 91精品最新国内在线播放| 97se亚洲综合不卡| 欧美黄色a| 免费a级毛片18以上观看精品| 她的性爱视频| 91久久国产综合精品女同我| 免费看美女自慰的网站| 日韩视频福利| 精品少妇人妻无码久久| 欧美激情成人网| 激情综合婷婷丁香五月尤物| 原味小视频在线www国产| 欧美日韩福利| 婷婷六月在线| 国产成人精品亚洲日本对白优播| 亚洲欧洲日韩国产综合在线二区| 国产精欧美一区二区三区| 天堂va亚洲va欧美va国产 | 国产18页| 日韩在线视频网| 久久婷婷五月综合97色| 国产欧美日韩va另类在线播放| 国产内射在线观看| 亚洲国产精品不卡在线|