2012-10-31 81 views
0

我有一個以前在Visual Studio Express 2010中開發的應用程序。它使用代碼中使用的本地化winforms和resx資源。在visual-studio-2012 express中本地化winforms

當項目被打開,並且不應用本地化的字符串在同一臺計算機上使用Visual Studio Express的2012編譯,只有默認的代碼被發現。

應用程序運行正常,並在WinForms的設計師,我可以改變的語言來查看和編輯控件的本地化的文本。 我也嘗試了下面的代碼來確定在運行時是否有使用的語言,它們報告了所使用的語言。

 CultureInfo[] cultures = CultureInfo.GetCultures(CultureTypes.AllCultures); 
     foreach (CultureInfo culture in cultures) 
     { 
      try 
      { 
       ResourceSet rs = resources.GetResourceSet(culture, true, false); 
       // or ResourceSet rs = rm.GetResourceSet(new CultureInfo(culture.TwoLetterISOLanguageName), true, false); 
       if (rs == null) 
        continue; 
       string isSupported = (rs == null) ? " is not supported" : " is supported"; 
       Console.WriteLine(culture + isSupported); 
      } 
      catch (Exception) 
      { 
       Console.WriteLine(culture + " is not available on the machine or is an invalid culture identifier."); 
      } 
     } 

仍然在應用程序運行時,我所得到的只是默認語言的資源。

我檢索使用資源:

 ResourceManager resources = new ResourceManager(form.GetType()); 
     form.Text = resources.GetString("$this.Text", lang); 

,我已經驗證了郎是正確的,但也用跟隨MyLangResxFile.MyStringResource的使用

 System.Threading.Thread.CurrentThread.CurrentUICulture = lang; 
     System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(lang.Name); 

。 返回的字符串仍然只是默認的字符串。

那裏可能在Visual Studio Express的2010年間RESX本地化支持的改變或限制 - 2012?

更新: 我注意到,本地化工作,如果使用從3.5 msbuild.exe但使用4.0編譯時......如上所述的本地化失蹤。

+0

爲什麼使用ResourceManager檢索資源?如果您通過Forms設計器正確執行了本地化,則全部都應該自動運行!這就是VS中的本地化過程:你*不*必須在代碼中更改任何標題。 –

+0

該代碼是允許用戶在運行時更改語言(僅限.Text)的較大代碼的一小部分。 因此,這可能與ResourceManger有關,而不是VisualStudio – hultqvist

+0

因此,如果本地化還包括對控制位置/維度的更改,它們是否也被應用? –

回答

0

抱歉「回答」該問題,但評論無效。 我只想問你是否可以解決這個問題,因爲我有完全相同的問題。

我甚至注意到只有當目標框架< 4.0被選中時纔會發生這個問題。對於目標框架4.0和4.5,本地化在VS 2010中與以前一樣工作...

+0

對不起,但我的解決方案到目前爲止一直留在VS 2010開發和使用3.5 msbuild – hultqvist