天天看點

vc多語言版本的配置方法和注意事項

vc多語言版本的配置方法和注意事項

​​編者:李國帥​​

背景原因:

早些年曾做個翻譯配置的處理,對特定檔案制作中文和英文兩個版本。這裡提供給大家參考。

主要是對軟體的界面和提示語進行兩個版本的顯示。

此方法适用環境:

         界面不多,翻譯量不大

         針對特定檔案進行多語言配置。

         對于翻譯同樣也要解答這幾個問題:

         1、翻譯什麼?如何翻譯?

         2、何時翻譯?

         3、翻譯字典資源如何存放?如何讀取?

         4、效率改進?

步驟:

1、設定語言項

配置語言選項的地方有兩個:安裝時,設定時。他們都可以把設定項寫入系統資料庫,隻不過安裝時使用腳本寫入系統資料庫,設定時直接調用api寫入。

vc多語言版本的配置方法和注意事項

2、加載資源檔案

曾使用了三種方式:

  1. 字元串資源檔案(多種資源dll)

也比較常見,把翻譯子產品封裝到dll中,這裡不做介紹。

  1. 翻譯檔案

         翻譯檔案可以使用xml,html,ini,cvs等個很多格式,以前選擇了資源檔案的形式。如下:

直接使用資源檔案(擴充檔案)

res\Transfer_String.htm 類型HTML 标記IDR_TRANSFER_STRING

Transfer_Player_String
CLASSID$CLSID:AC664CD3-2A49-42B1-AC6F-33A05A8E38A6
STATUS_NULL$""$""
STATUS_NOVIDEO$NotVideo$無視訊
STATUS_STOP$Stop$停止
STATUS_STOPPING$Stopping$正在停止
STATUS_PAUSE$Pause$暫停
STATUS_CONNECTING$Connecting$正在連接配接
STATUS_CONNECTFAILED$Connect Failed$連接配接失敗
STATUS_INTERRUPT$Interrupt$中斷
STATUS_TIMEOUT$Timeout$逾時
STATUS_URLERROR$URL Error$URL錯誤
STATUS_PATHERROR$Path Error$路徑錯誤
STATUS_FILTERERROR$Data Error$資料錯誤
TAGEND$TagEnd$結束      

然後分析資源

vc多語言版本的配置方法和注意事項
  1. 直接的字元數組。

使用源檔案中的數組,transfer.h

vc多語言版本的配置方法和注意事項

3、把翻譯項儲存到map

vc多語言版本的配置方法和注意事項

4、讀取和顯示

讀取待翻譯的詞語,生成id-value對放入map中,需要的時候讀取出來。

pMain->GetTx("IDC_XXX").c_str()。

例如

void C****DLg::SetControlTitle()
{
         CManageClientDlg* pMain = (CManageClientDlg*)GetParent();
         ASSERT(pMain!=NULL);
         SetDlgItemText(IDC_CARRIERGENDER0,pMain->GetTx("IDC_UNKNOWN").c_str());
         SetDlgItemText(IDC_CARRIERGENDER1,pMain->GetTx("VS_GENDOR_MAN").c_str());
         SetDlgItemText(IDC_CARRIERGENDER2,pMain->GetTx("VS_GENDOR_WOMAN").c_str());
         SetDlgItemText(IDC_COUNTRY,pMain->GetTx("ID_CHINA").c_str());
}      

注意事項:

         需要綜合考慮專業和美觀的問題

         不同語言的文字長度不一緻,需要進行實際的測試和調整,才能使界面美觀完整。

         系統控件有些是有作業系統決定的,可能需要自定義或者特殊配置。比如月曆控件,系統彈出框等。

         如果擷取不到資源,可以使用界面上的原始界面替代

         中文顯示亂碼是設計問題。如果作業系統安裝有中文字庫自然不是亂碼。