2013-03-25 90 views
1

全部,我有一個本地化的WinForms應用程序。我創建了一個設施,用戶可以在運行時更改應用程序的文化/語言。爲了避免做任何事情,當用戶確實想要改變文化時,會提示應用程序必須重新啓動以使文化更改生效(合理,因爲這不會經常發生)。然後,我將需要的新語言作爲字符串存儲在我的一個設置XML文件(「de-DE」,「en-US」,「en-GB」等)中。然後,當應用程序重新啓動,如果需要的話我切換到所需要的文化:在運行時失敗時更改應用程序文化

// Main constructor. 
public SqlEditorForm(string[] args) 
{ 
    // Load settings. 
    username = Environment.UserName; 
    userSettings = UserSettings.Instance(); 
    advUserSettings = AdvanceUserSettings.Instance(); 
    CheckChangeCurrentCulture(); 

    isInitialising = true; 
    InitializeComponent(); 

    ... 
} 

private void CheckChangeCurrentCulture() 
{ 
    //if (!Debugger.IsAttached) 
    // Debugger.Launch(); 
    if (advUserSettings.DefaultCulture) 
     return; 
    else 
    { 
     CultureInfo culture = new CultureInfo(advUserSettings.CustomCultureString); 
     Thread.CurrentThread.CurrentCulture = culture; 
     Thread.CurrentThread.CurrentUICulture = culture; 
    } 
} 

現在從VS2012在調試/發佈模式下運行時,這種機制工作正常。但是,當我在各種機器上安裝應用程序(運行Windows 7(x86/x64))時,此機制不再起作用,也就是說文化不會從機器默認EVER切換。

我附上調試器所安裝應用程序,並改變文化的代碼被調用和邏輯似乎是工作,並沒有異常拋出,但文化/語言不會改變。我一直在討論很多問題,但找不到適用於這個特定問題的問題。

爲什麼這個機制從VS2012的工作,但不適合安裝的應用程序?爲了達到我想要的行爲,我需要做些什麼?

謝謝你的時間。

注,我也試圖與更換調用CheckChangeCurrentCulture();

Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("de-DE"); 
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("de-DE"); 

也可以工作VS2012中(調試和發佈模式),但不與安裝的應用程序。我也改變了機器文化開始 - >控制面板 - >地區和語言德國(「de-DE」)希望應用程序和.NET框架來檢測我有這種文化可用並使用它。安裝的應用程序也失敗了。

+0

你有沒有試過,當你設置的文化會發生什麼 「手動」 像 Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture( 「EN-US」) ; ? Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(「en-US」);那它有用嗎? – duDE 2013-03-25 10:31:46

+0

是的,我有。我已經更新了這個問題來反映這一點。謝謝你的時間。 – MoonKnight 2013-03-25 10:34:57

回答

1

也許在你的生產機器新文化的sattelite組件無法加載由於某種原因,因此您的應用程序回落到中性文化。

檢查與unsuccessfull附屬組件檔案微軟的Sysinternals的Process Monitor工具的訪問。

你的也請與.NET fuslog工具http://msdn.microsoft.com/en-us/library/e74a18c4.aspx

+0

+1很好的答案。這個工具告訴我我的問題到底是什麼!非常感謝你花時間陪伴... – MoonKnight 2013-03-28 14:14:32

相關問題