2012-07-27 88 views
0

這是我第一次嘗試在windows窗體的全球化中,所以我創建了我的語言形式,並將屬性Localizable設置爲true,並將默認屬性Language設置爲默認值,這一切都是在默認資源文件中生成的, 。之後,我添加了一個名爲FormName.en.resx的新資源文件,並在這裏重命名了一些東西,以測試它是如何工作的,但現在每次運行appliction它都使用我添加的英文文件而不是默認的FormName.resx文件,如果我刪除英文資源文件,一切都恢復正常,我錯過了什麼?默認資源文件未被使用

首先,我認爲Windows導致它,但我的語言設置正確,我甚至嘗試手動更改Thread.CurrentThread.CurrentCulture,但它始終保持英文。

回答

0

嗯,這是一個骯髒的方式做到這一點我想,但在這裏它是,如果有人碰到了同樣的問題:

private void ChangeLanguage(string lang) 
     {  
      Thread.CurrentThread.CurrentCulture = new CultureInfo(lang); 
      Thread.CurrentThread.CurrentUICulture = new CultureInfo(lang); 

      //YourFormType should be the name of your form 
      ComponentResourceManager resources = new ComponentResourceManager(typeof(YourFormType)); 
      resources.ApplyResources(this, "$this"); 

      foreach (Control control in this.Controls) 
      { 
       resources.ApplyResources(control , control.Name); 
      } 
     } 

如果有人有更好的解決辦法,請張貼它,我會嘗試

0

默認情況下,用於確定資源語言的UI語言與操作系統的語言包綁定。如果您正在運行英文Windows,那麼您的應用程序將會提取英文資源。如果要強制使用其他語言,請設置Thread.CurrentThread.CurrentUICulture屬性。 Thread.CurrentThread.CurrentCulture影響日期/時間/數字的格式。

+0

謝謝我會試試! – formatc 2012-07-28 12:31:23

+0

嗯,我什麼都沒有改變..是否有一些方法,我需要調用後,我設置CurrentUICulture? – formatc 2012-07-29 14:48:51

+0

你沒有說明你在哪裏打電話來設置UI文化。如果您在創建UI後嘗試設置它,則必須手動刷新本地化的值。通常,在啓動任何UI之前,根據持久設置繪製當前線程的UI文化。如果您需要允許用戶爲應用程序中的UI文化設置首選項,則可能需要考慮在保留該設置後重新啓動應用程序。 – 2012-08-01 17:15:17