2014-09-12 17 views
0

我有我的應用程序,所有的翻譯工作完美,除了包含在wxTextEntryDialog對話框中的'OK'和'Cancel'。 如何讓這些翻譯得當?即使wxMessageBox在使用「確定」和「取消」時也能正常工作,但wxTextEntryDialog不會轉換爲任何其他語言。wxTextEntryDialog好的和取消的翻譯

我已經使用的語言分配以下摘錄我的代碼中:

wxLocale m_locale; // locale we'll be using (this is defined in the header file of my app) 
// Within the source 
lang = wxLANGUAGE_CHINESE_SIMPLIFIED; // for e.g. could be any language 

m_locale.Init(lang); 
    // normally this wouldn't be necessary as the catalog files would be found in the default locations, but when the program is not installed the 
    // catalogs are in the build directory where we wouldn't find them by default 
    wxLocale::AddCatalogLookupPathPrefix(wxT(LanguagePath));// add path of install 
    // Initialize the catalogs we'll be using 
m_locale.AddCatalog(_("messages")); // .mo file generated by my application language specific .mo file 

預先感謝任何幫助。

回答

0

Thanks @VZ。爲了洞察。您的方法幫助我更好地調試了我的應用程序,即通過檢查返回值,我能夠看到Init()未成功。有了這個,我能夠進一步調查。另外,wxstd.mo只是默認的.po生成的.mo(未翻譯,所以我爲什麼要這樣?)

解決方案:我必須添加wxWidgets翻譯文件,即.mo生成的.po文件載於<wxdir>/locale/。我必須將它們複製到與我的messages.mo相同的目錄中。因此,簡體中文的工作代碼看起來像這樣。

wxLocale m_locale; // locale we'll be using (this is defined in the header file of my app) 
// Within the source 
lang = wxLANGUAGE_CHINESE_SIMPLIFIED; // for e.g. could be any language 

wxLocale::AddCatalogLookupPathPrefix(wxT(LanguagePath));// add path of install 

m_locale.Init(lang, wxLOCALE_CONV_ENCODING); 

m_locale.AddCatalog(wxT("zh_CN")); // This is the .mo file I generated from the wxWidgets .po files 
    // Initialize the catalogs we'll be using 
m_locale.AddCatalog(_("messages")); // .mo file generated by my application language specific .mo file 

我不包括爲目的的檢查,因爲我希望應用程序在運行英語,即使是不支持的語言,但我沒有用它來調試

1

您打給Init()的電話是否成功?你應該真的檢查它的返回值,它可能沒有找到wxstd.mo,它包含wxWidgets中使用的所有消息的翻譯,因爲你在設置查找路徑之前調用它。您需要

  1. 確保wxstd.mo在您的目錄路徑中可用。
  2. 設置此路徑後請致電Init()
  3. 檢查其返回值。