2013-05-11 68 views
2

我正在研究WPF應用程序,並且在.resx文件中有本地化資源(en,fr,zh)。以下測試代碼用於顯示本地化字符串。它適用於英語,法語,但中文不成功。中文僅顯示英文文本。我嘗試使用中國文化的所有變體,例如zh-CN,zh-Hans,zh-Hant和「舊」zh-CHS,zh-CHT,但沒有運氣。中文本地化不起作用,總是顯示英文

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
     // CultureInfo culture = CultureInfo.CreateSpecificCulture("zh-CHT"); 
     CultureInfo culture = new CultureInfo("zh-CN"); 
     Thread.CurrentThread.CurrentCulture = culture; 
     Thread.CurrentThread.CurrentUICulture = culture; 
     MessageBox.Show(Properties.Resources.address); 
    } 
} 

資源fiels被命名爲Resources.resx,Resources.fr.resx,Resources.zh.resx 任何幫助,將不勝感激, 拉傑什

+0

試圖重建相同的項目結構......完美地工作。中文資源不是英文嗎? ;-) – 2013-05-11 07:09:40

+0

嗯,爲什麼它不適合我,我在Win7 Ultimate,.net 3.5上測試過。是的中國資源有中文內容:) – 2013-05-11 12:46:18

+1

不知道。我的測試唯一的區別是我使用的是asp.net web表單應用程序,資源是一個像'default.aspx.zh.resx'這樣的本地資源。如果您將'new CultureInfo()'更改爲'「fr」'它可以工作嗎?你有沒有嘗試將'.fr'資源文件重命名爲'.zh'? – 2013-05-11 12:51:47

回答

0

這是因爲ZH-CHS是中性文化。 在ASP.NET 2.0中,不可能將CurrentCulture設置爲中性文化,如zh-CHS。 但是,您可以將其設置爲像zh-CN這樣的特定文化。 如果您需要使用中性文化,如zh-CHS,則可以改爲設置CurrentUICulture屬性。 CurrentUICulture是負責從資源文件獲取文本的人。 CurrentCulture負責編號,日期時間和貨幣格式。

順便說一下,在ASP.NET 4.0中,您可以將CurrentCulture設置爲Neutral Culture,但不能在v2.0中設置。 在我的代碼,其中,網站可以在任.NET 2或.NET 4運行我不喜歡這樣寫道:

public static void SetCurrentCulture(string cultureName) 
    { 
     try 
     { 
      Thread.CurrentThread.CurrentCulture = new CultureInfo(cultureName); 
     } 
     catch (Exception) 
     { 
      // Ignore if exception happens: In ASP.NET 2.0 setting CurrentCulture = Neutral culture (like zh-CHS) throws an exception: 
      // Culture 'zh-CHS' is a neutral culture. It cannot be used in formatting and parsing and therefore cannot be set as the thread's current culture. 
     } 
     Thread.CurrentThread.CurrentUICulture = new CultureInfo(cultureName); 
     HttpCookie cultureCookie = new HttpCookie("CultureCookie", cultureName); 
     HttpContext.Current.Response.Cookies.Set(cultureCookie); 
    } 
0

我也有類似的問題。目前的文化已經開始在zh-CN開始,但被英語覆蓋。解決方案在我的情況下 - 從Windows設置安裝中文。