2011-07-21 37 views
3

我有英文的Windows版本,目前無法調試,但我本地化兩種語言russsian和英語的應用程序。Silverlight本地化 - 如何覆蓋Windows文化

從我的理解下面的代碼應該是足夠的應用程序的構造函數:

  if (Language == Language.Russian) { 
       Thread.CurrentThread.CurrentCulture = RUSSIAN_CULTURE; 
       Thread.CurrentThread.CurrentUICulture = RUSSIAN_CULTURE; 
      } 
      else { 
       Thread.CurrentThread.CurrentCulture = ENGLISH_CULTURE; 
       Thread.CurrentThread.CurrentUICulture = ENGLISH_CULTURE; 
      } 

培養對象是正確的文化(RU-RU,EN-US)。

但是,當應用程序運行在俄羅斯的窗口,如果被忽略,只有俄羅斯字符串被使用。

注意語言變化的工作完全正確的在我的機器上(帶窗戶)

+0

有時僅僅在當前線程上設置語言是不夠的,導致某些控件(又名DataGrid)不尊重這個值。你還應該設置UserControls的Language屬性,例如this.Language = System.Windows.Markup.XmlLanguage.GetLanguage(System.Threading.Thread.CurrentThread.CurrentCulture.Name); – Jehof

+0

如果應用程序的某些部分是rus,其他eng。這可能是問題。但我相信像TextBlock一樣簡單的控件應該尊重Thread.CultureInfo?有沒有控制的例子顯示任何英文,當應用程序運行在RU窗口.. –

回答

0

我已經添加了新的連接特定的文化資源,它已經解決了這個問題。 但是現在我得到了重複的英文資源 - 它們是默認&同樣進入en-US特定資源。我相信必須有辦法消除這種重複。

0

我在 「CLR通過C#」 一書由傑夫里氏閱讀:

(約的CurrentUICulture)

默認情況下,在創建線程時,此線程屬性設置爲 CulterInfo對象,該對象標識應用程序使用Win32運行的Windows版本的 版本GetUserDefaultUILanguage功能。如果您正在運行多語言 用戶界面(MUI)版本的Windows,則可以通過 「區域和語言選項」控制面板設置進行設置。在Windows的非MUI版本中,語言由安裝的操作系統(或已安裝的語言包)的本地化版本 確定,並且 語言不可更改。

+0

我通過C#閱讀CLR,但我不認爲這是與我的問題或silverlight本地化有關.. –

0

我在silverlight的視圖構造函數中使用這個,而不是在應用程序的構造函數:

//seting language for currency and datetime 
    string sDefaultLocalization = "ru-RU"; 
    Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = new CultureInfo(sDefaultLocalization); 
    this.Language = XmlLanguage.GetLanguage(Thread.CurrentThread.CurrentCulture.Name); 
+0

語言更相關「爲了正確顯示中文,日文和韓文文本,Silverlight需要知道它顯示的是哪種語言,因爲相同的Unicode字符根據語言顯示的不同。「我相信。除此之外,我得到了相同的代碼設置Thread.CurrentThread.CurrentCulture在我應該工作的問題.. –