如何向Symbian C++程式中添加多語言支援
開發環境:S60_3rd_FP2 SDK/ Carbide C++ 1.3.2
第一步:編寫本地化內容
在項目中添加需要提供語言支援的內容,按照語言代碼,如簡體中文為31,德語是03。建立儲存本地化字串的檔案如:Hakone.l31, Hakone.l03。
Hakone.l31:
/*-----------------------------------------------------------------
Language support for Chinese
------------------------------------------------------------------*/
#define qtn_caption_string "Hakone_S60"
#define qtn_connect "串連"
#define qtn_disconnect "斷開"
#define qtn_setting "設定"
#define qtn_about "關於"
#define qtn_exit "退出"
如上定義了對於各種語言的支援檔案後,需要添加一個.loc檔案來對所支援的語言進行選擇,如:Hakone.loc
CHARACTER_SET UTF8
// Default language
#ifdef LANGUAGE_SC
#include "localization\Hakone.l01"
#endif
// English (UK)
#ifdef LANGUAGE_01
#include "localization\Hakone.l01"
#endif
// Simplified Chinese
#ifdef LANGUAGE_31
#include "localization\Hakone.l31"
#endif
這幾個檔案可以儲存在任何已經Include的目錄下,推薦最好合理的設計儲存地點。
第二步:在Rss檔案中使用相關的多語言定義
如Hakone.rss:
#include "Hakone.loc"
//
//Some content here
//
RESOURCE MENU_PANE r_hakone_main_menu
{
items =
{
// added the new Options menu command here
MENU_ITEM
{
command = EMainViewConnect;
txt = qtn_connect;
},
MENU_ITEM
{
command = EMainViewDisconnect;
txt = qtn_disconnect;
},
MENU_ITEM
{
command = EMainViewSettings;
txt = qtn_setting;
},
MENU_ITEM
{
command = EMainViewAbout;
txt = qtn_about;
},
MENU_ITEM
{
command = EAknSoftkeyExit;
txt = qtn_exit;
}
};
}
第三步:更新MMP檔案
MMP檔案可以用Carbide的IDE來升級或者手動添加多語言支援:
如Hakone.mpp加入下面代碼:
LANG 01 31
第四步:更新PKG檔案
在package檔案中需要加入多語言檔案的選項,由於前面第一步Hakone.l31編譯出來的檔案是Hakone.r31,所以在Hakone.pkg檔案中加入下面代碼:
{
"$(EPOCROOT)Epoc32\data\z\resource\apps\Hakone_S60.r01"
"$(EPOCROOT)Epoc32\data\z\resource\apps\Hakone_S60.r31"
} - "!:\resource\apps\Hakone_S60.rsc"
通過代碼我們可以看到,在這個程式安裝的時候,會自動選擇語言的不同來更新應用程式的資源檔Hakone_S60.rsc,當應用程式調用rsc檔案讀取字串的時候即可得到不同語言的內容。
小結:
通過這種方式可以實現多語言應用程式,在程式安裝的時候會有提示使用者選擇所支援的語言進行安裝的選項,同時,如果希望程式可以在運行時支援不同的語言的話,需要把不同語言的.rxx檔案複製到系統內,使得應用程式可以調用不同的.rxx檔案。
如何向Symbian C++程式中添加多語言支援
開發環境:S60_3rd_FP2 SDK/ Carbide C++ 1.3.2
第一步:編寫本地化內容
在項目中添加需要提供語言支援的內容,按照語言代碼,如簡體中文為31,德語是03。建立儲存本地化字串的檔案如:Hakone.l31, Hakone.l03。
Hakone.l31:
/*-----------------------------------------------------------------
Language support for Chinese
------------------------------------------------------------------*/
#define qtn_caption_string "Hakone_S60"
#define qtn_connect "串連"
#define qtn_disconnect "斷開"
#define qtn_setting "設定"
#define qtn_about "關於"
#define qtn_exit "退出"
如上定義了對於各種語言的支援檔案後,需要添加一個.loc檔案來對所支援的語言進行選擇,如:Hakone.loc
CHARACTER_SET UTF8
// Default language
#ifdef LANGUAGE_SC
#include "localization\Hakone.l01"
#endif
// English (UK)
#ifdef LANGUAGE_01
#include "localization\Hakone.l01"
#endif
// Simplified Chinese
#ifdef LANGUAGE_31
#include "localization\Hakone.l31"
#endif
這幾個檔案可以儲存在任何已經Include的目錄下,推薦最好合理的設計儲存地點。
第二步:在Rss檔案中使用相關的多語言定義
如Hakone.rss:
#include "Hakone.loc"
//
//Some content here
//
RESOURCE MENU_PANE r_hakone_main_menu
{
items =
{
// added the new Options menu command here
MENU_ITEM
{
command = EMainViewConnect;
txt = qtn_connect;
},
MENU_ITEM
{
command = EMainViewDisconnect;
txt = qtn_disconnect;
},
MENU_ITEM
{
command = EMainViewSettings;
txt = qtn_setting;
},
MENU_ITEM
{
command = EMainViewAbout;
txt = qtn_about;
},
MENU_ITEM
{
command = EAknSoftkeyExit;
txt = qtn_exit;
}
};
}
第三步:更新MMP檔案
MMP檔案可以用Carbide的IDE來升級或者手動添加多語言支援:
如Hakone.mpp加入下面代碼:
LANG 01 31
第四步:更新PKG檔案
在package檔案中需要加入多語言檔案的選項,由於前面第一步Hakone.l31編譯出來的檔案是Hakone.r31,所以在Hakone.pkg檔案中加入下面代碼:
{
"$(EPOCROOT)Epoc32\data\z\resource\apps\Hakone_S60.r01"
"$(EPOCROOT)Epoc32\data\z\resource\apps\Hakone_S60.r31"
} - "!:\resource\apps\Hakone_S60.rsc"
通過代碼我們可以看到,在這個程式安裝的時候,會自動選擇語言的不同來更新應用程式的資源檔Hakone_S60.rsc,當應用程式調用rsc檔案讀取字串的時候即可得到不同語言的內容。
小結:
通過這種方式可以實現多語言應用程式,在程式安裝的時候會有提示使用者選擇所支援的語言進行安裝的選項,同時,如果希望程式可以在運行時支援不同的語言的話,需要把不同語言的.rxx檔案複製到系統內,使得應用程式可以調用不同的.rxx檔案。