輕鬆開發多語言程式 (轉)

worldblog發表於2008-01-06
輕鬆開發多語言程式 (轉)[@more@]

在平臺上開發多語言介面一般有三種方法。

1.  為每種語言釋出單獨的版本(如 Windows)

2.  包括不只一種語言資源的可,或者獨立的DLL檔案。(如IsoBuster)這也是我們使用最多的方法。

3.  外部語言包的可執行檔案。ants, , Tweak-XP, PatchWise Free等等在支援多語言時已經越來越多的使用外部語言包(*.ini或者*.lng)來替代DLL檔案。由於語言包可以動態地修改,所以軟體的重新編譯就沒有必要了。而且,這很容易改變語言和保持外部語言包的獨立性。

在這裡,我們來看一看第三種方法。因為它是最容易,最簡單的解決方法。

1。第一步是最重要的。你必須在你的工程裡面新增檔案LangIni.h和LangIni.cpp。

2.然後,在你的C****App類中新增變數。

3.在你的C****Dlg:: ()中,初始化你的按鈕/文字。新增下列程式碼:

void C****Dlg:: OnInitDialog (void):namespace prefix = o ns = "urn:schemas-microsoft-com::office" />



SetDlgItemText(IDOK,


 theApp.m_langINI.GetValue("Button",


  "OK"));


  SetDlgItemText(IDCANCEL,


  theApp.m_langINI.GetValue("Button",


  "Cancel"));


  SetDlgItemText(IDC_PROMPT,


  theApp.m_langINI.GetValue("Prompt",


  "Prompt"));


  SetDlgItemText(IDC_PROMPT_ENGLISH,


 theApp.m_langINI.GetValue("Prompt",


  "Lang1"));


  SetDlgItemText(IDC_PROMPT_CHINESE,


  theApp.m_langINI.GetValue("Prompt",


  "Lang2"));


  }


4.然後,為單選按鈕的ON_BN_CLICKED事件新增控制程式碼:


   void CUILangDlg::OnBnClickedPromptEnglish()


{


// TODO: Add your control notification handler


// code here


theApp.m_langINI.LoadFile("english.ini");


InitControls();


}


 


void CUILangDlg::OnBnClickedPromptChinese()


{


// TODO: Add your control notification handler


//code here


theApp.m_langINI.LoadFile("chinese.ini");


InitControls();


}


這就完成了基本的工作。那麼。INI中的檔案到底要包括哪些內容呢?

在INI檔案中,你只需根據你的選單需要輸入要改變的內容即可。如在示例中,需要從BUTTON中取值,那我們就在BUTTON一項中輸入內容即可。示例中的CHINESE.INI檔案內容如下:

[Button]

OK=確定

Cancel=取消

 

[Prompt]

Prompt=選擇語言

Lang1=英語

Lang2=中文

  這只是一個對話方塊的例子。對一個軟體來說的話,INI檔案也不會很複雜。你需要在記事本檔案中輸入相應選單即可。一般一個應用程式包含有選單,和標題,狀態列等。那就需要象下面一樣:

[Application]

Title=示例

 

[Dialog]  ;對話方塊

About Title=關於示例

Lang Title=選擇語言

Lang Prompt=請選擇語言

OK=確定

Cancel=取消

 

[File Menu]

1000=&File

1001=&New  ;改變後選單上的內容

……

1001=”開啟檔案%New”  ;改變語言後狀態列的內容,%New表示對映工具條

……

怎樣,是不是比較簡單。而且這種方法已經被越來越多的軟體所採用,我們也不妨試試看!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-996654/,如需轉載,請註明出處,否則將追究法律責任。

相關文章