一種程式介面文字換膚方法

來源:互聯網
上載者:User
一種程式介面文字換膚方法Aiguille.LIU2008-11-23  對於GUI程式,介面上會呈現許多圖片和文字資訊。圖片一般都是運行時從外部載入的,更換比較容易。然而,文字資訊大多情況下都是直接寫在程式碼中的。這種情況下,如果想更換文字,就需要重新編譯器,非常不方便。這裡介紹一種程式介面文字換膚方法,可以無須重新編譯器而實現方便的文字換膚功能,可用於OEM或多語言情形。1、字典庫  所有介面中呈現的文字都儲存在該典庫中,它是一個獨立於程式的檔案。檔案可以是純文字的、加密文本的、動態連結程式庫或其他任何形式。程式運行時,從字典庫中讀取所需的文字資訊。因此,當需要修改相關介面文字時,只需要修改字典庫,然後發布即可,應用程式不需要修改和重新編譯。例如app.dic:[app]APP_NAME=程式名APP_CAPTION=程式標題APP_VERSION=程式版本APP_COPYRIGHT=程式著作權2、字典庫提供者API  這裡的API主要只有一個,即從字典庫中提取文字資訊。函數原型可以如下:char *get_dictionary(char *dictionary, char *section, char *key);    其中,dictionary是字典檔案名稱;section是分節名,如上面的[app];key為指定的文字資訊標識;傳回值為字典庫中對應的文字資訊。至於具體實現,可以根據實際情況而定。其實,很多開發工具都提供了類似的API,我們只要在其基礎上作簡單封裝即可。  3、程式中調用  程式中需要使用文字資訊時,直接調用get_dictionary()即可得到所需的文字。然而,某些情況下需要使用常量形式的文字資訊,比如初始化結構或類時。這時,使用API就不可以了。但我們可以使用宏定義來達到此類目的,宏的定義與如下形式相似:#defineGET_DICTIONARY(key)get_dictionary("app.dic", "app", key)  這樣,不管是常量還是變數字串,我們都可以使用GET_DICTIONARY來給賦值。4、一個簡單的例子
  1. /*
  2.  *  demo.dic
  3.  */
  4. [demo]
  5. DEMO_ZH=這是一個示範
  6. DEMO_US=this is a demo
  7. /*
  8.  *  dict.h
  9.  */
  10. #ifndef _DICT_H
  11. #define _DICT_H
  12. inline char *get_dictionary(char *dictionary, char *section, char *key)
  13. {
  14.     //根據具體情況實現
  15. }
  16. #endif
  17. /*
  18.  *  demo.c
  19.  */
  20. #include "dict.h"
  21. #define GET_DICTIONARY(key) get_dictionary("demo.dic", "demo", key)
  22. int main(int argc, char *argv[])
  23. {
  24.     printf("%s/n", GET_DICTIONARY("DEMO_ZH"));
  25.     printf("%s/n", GET_DICTIONARY("DEMO_US"));
  26.     return 0;
  27. }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.