2013-08-20 29 views
2

我正在開發一個需要本地化的WinForm應用程序。 如果我嘗試將表單的Localizable屬性設置爲True,併爲所有語言設置文本,那麼每件事情都可以正常工作。本地化C#Win表格

我想要的是將所有語言資源文件保存在一個單獨的文件夾中(每個表單一個文件)。

-Project 
    -Resources 
     -Language 
      frmFirstForm.en-US.resx 
      frmFirstForm.en-GB.resx 
      frmSecondForm.en-US.resx 
      frmSecondForm.en-GB.resx 
    frmFirst.cs 
    frmSecond.cs 

在我的資源文件,我已經定義的所有字符串如下:

**Key    Value** 
lblName   Name 
lblAddress  Address 
..... 

最關鍵的是我的控制的名字,我也將保持形式特定字符串的資源文件。現在的問題是,當我編譯解決方案時,它會生成語言文件,但在運行應用程序時它只顯示默認值。我甚至不知道本地化資源文件是否已加載。另外,儘管我已經指定了兩個單獨的表單文件,但是在編譯時,系統僅爲一個項目的每種語言生成一個單獨的資源文件(意味着FirstForm和SecondForm沒有單獨的資源文件)。

有沒有什麼方法可以根據指定的本地化線程更改表單控件?

我已經添加了下面一行在我的主要應用程序的Program.cs文件:

Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-GB"); 
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture; 

請建議我如何與這個繼續..

+0

除非你寫「顏色」這樣的詞,否則你不會看到en-GB和en-US之間的巨大差異。如果你想測試它,那麼只需在en-GB中使用一個虛假詞。 –

+0

@HansPassant:我已經爲這兩個資源文件使用了不同的字符串..我很抱歉在第一階段沒有描述這個.. –

+0

您對.resx文件使用非標準位置,總是不明智的嘗試跳過建立這樣的系統。檢查衛星組件是否正在生成。 –

回答

0

@Ashish:this是你想要什麼!!!!

+0

這意味着我需要遍歷所有表單控件並逐個設置本地化資源.....不確定它將如何影響我的窗戶的性能,大約有40至50個標籤和其他靜態控件。 –

+0

但仍然接受了答案。 – Denny