新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 嵌入式系統多語言文本解決方案

        嵌入式系統多語言文本解決方案

        作者: 時間:2012-03-12 來源:網絡 收藏

        開發中,某些產品可能會需要跨區域銷售,因此,通常會有多的需求。對于這一類多需求的解決,在產品中有其特殊的地方。以下,給出一種可能的

        本文引用地址:http://www.104case.com/article/149456.htm

        該方案的核心思想是為所有建立索引,通過索引可以得到特定的文字編碼,隨后通過該編碼獲得字庫資源,并進行輸出。在這過程中,唯一需要注意的是對于特殊的某些語言,如阿拉伯語等的處理。(阿拉伯語字符在連寫時,其形狀會發生變化。)

        1. 字庫的建立:

        最終都將輸出給用戶,因此,必須為內容指定字庫。本方案中采用UNICODE編碼字庫。字庫文件采用二進制存儲,按UNICODE編碼順序排列存儲點陣數據,點陣大小為24*24。

        2. 文本資源文件:

        文本資源文件描述了特定語言的文本內容,以及相關的字符編碼。例如對于Chinese.cfg文件來說,就保留了一個索引為1的文本,該文本內容為“確認”;相應對于English.cfg文件來說,必然會同樣有一個索引為1的文本,該文本內容為“CONfirm”。通過對所有的文本建立索引并生成文本資源文件,就為最終的解決掃清了障礙。

        文本資源文件采用二進制存儲。文件頭部16個字節為描述性信息,之后是文本映射表,緊跟映射表之后為文本的實際Unicode編碼。

        3. 對文本資源文件進行描述的數據結構

          typedef STruct _txtres_fileheader {

          LONG lFileType; //文件類型,0x2E434647='.CFG'

          LONG lVersionNum; //適用版本,0x56313032='V102'

          LONG lMapOffset; //偏移量,文件頭到文本映射區的偏移量

          LONG lDataOffset; //偏移量,文件頭到文本數據區的偏移量

          } APPteXT_FILEHEADER;

        4. 文本映射表結構

          typedef struct _txtres_txtmap {

          WORD wTextIndes; //當前文本的索引值

          WORD wTextSize; //當前文本的Unicode編碼所占用的字節數

          LONG lUnicodeOffset; //從文件頭到當前文本Unicode編碼存儲位置的偏移量

          } TXTRES_TXTMAP;

        5. 特殊語言(阿拉伯語等)的解決

        特殊語言在連寫時可能發生變化,因此采用固定字庫可能無法解決該問題。針對這種狀況可以直接新增一個自定義字庫。以阿拉伯語為例,該字庫的處理過程如下:

        a. 首先將阿拉伯的文本內容按預定格式(例如24*24)在windows上顯示輸出,并將內容保存為圖片格式。此時圖片中便為連寫內容。

        b. 隨后,對圖片進行分割。如按照24*24進行分割便可得到特定的24*24大小的字庫內容。

        c. 最后,將原先的UNICODE編碼轉為按照之前生成的字庫來編碼。

        d. 之后在程序代碼中就可利用自定義字庫與自定義編碼來顯示阿拉伯語。

        最后附上部分示例代碼。

          //定義文本配置文件路徑

          #define TXT_FILE_ENGLISH config/English.cfg

          #define TXT_FILE_CHINASIM config/ChinaSim.cfg

          #define TXT_FILE_CHINATRA config/ChinaTra.cfg

          #define TXT_FILE_KOREAN config/Korean.cfg

          #define TXT_FILE_JAPANESE config/Japanese.cfg

          #define TXT_FILE_SPANISH config/Spanish.cfg

          #define TXT_FILE_RUSSIAN config/Russian.cfg

          #define TXT_FILE_THAI config/Thai.cfg

          #define TXT_FILE_GERMAN config/German.cfg

          #define TXT_FILE_FRANCE config/France.cfg

          #define TXT_FILE_ITALY config/Italy.cfg

          #define TXT_FILE_ARABIA config/Arabia.cfg

          #define TXT_FILE_PORTUGAL config/Portugal.cfg

          #define TXT_FILE_HINDI config/Hindi.cfg

          #define TXT_FILE_TURKISH config/Turkish.cfg

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)

        上一頁 1 2 3 4 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 河北省| 合江县| 中西区| 宁安市| 望都县| 南溪县| 宜兰县| 垣曲县| 芜湖市| 明水县| 灵山县| 蕲春县| 泸定县| 郁南县| 东莞市| 茶陵县| 绥中县| 湖口县| 垣曲县| 榆林市| 荥阳市| 兰西县| 黑水县| 长春市| 喜德县| 闽侯县| 屏山县| 农安县| 会理县| 沁水县| 宁国市| 永仁县| 合水县| 乌兰察布市| 宁都县| 民权县| 茂名市| 峨眉山市| 商洛市| 专栏| 洱源县|