2013-03-12 143 views
5

我幾乎完成了我的C#應用​​程序;唯一要做的就是實現多種語言支持。在Winforms應用程序中支持多種語言

我已經爲屏幕上顯示的所有文本創建了幾種語言的資源文件。我的英語資源文件的

例子:我的荷蘭資源文件的

Name     | Value      | Comment 
------------------------------------------------------------------------------ 
lblName     | Name:      | Name EN 

例子:

Name     | Value      | Comment 
------------------------------------------------------------------------------ 
lblName     | Naam:      | Name NL 

我怎麼能現場Value綁定到我的LabellblName)的Text財產?

我正在使用.NET Framework 3.5。

+1

完全取決於您沒有指定的GUI框架。 – 2013-03-12 10:48:07

+0

我正在使用Winforms – Max 2013-03-12 10:48:29

+2

請看本文[使用.NET中的資源文件進行本地化處理](http://www.codeproject.com/Articles/79397/Localization-process-by-using-resource-files-in -NE) – 2013-03-12 10:49:35

回答

-3

將不同語言的值放在一個數據庫表中。

讓用戶選擇語言。

根據語言的選擇從數據庫中獲取關於特定語言的數據。

然後將其與標籤文本進行綁定。

+1

-1 - OP正在使用資源文件,而不是數據庫。 – 2013-03-12 10:49:17

+3

這不是正確的方法我認爲,資源文件或不爲空創建 – Max 2013-03-12 10:49:21

+0

這實際上是一個很好的解決方案,但是對於從數據庫中提取的數據進行翻譯,例如查找表中的文本單元格。在這種情況下,它是無用的。 +1努力。 :) – 2014-04-04 15:59:23

-2

試試這個:

<asp:Label runat="server" Text="<%$ Resources:DutchLanguage, Value %>"></asp:Label> 
+0

我使用Windows窗體,它是一個桌面c#應用程序,而不是一個網頁(ASP)。 – Max 2013-03-12 10:51:52

+0

您提到C#應用程序,但沒有從開始指定它 – 2013-03-12 10:54:10

+1

然後我應該使用:Web應用程序並使用ASP標記,並且有一個標記:WinForms。 – Max 2013-03-12 10:54:44

0

我知道這個問題已經問了很久以前的事,但因爲沒有答案這裏是我的建議:

要訪問在C#中,你可以使用一個資源文件一個ResourceManager。 首先根據curent語言創建資源管理器。 你有兩個選擇。您可以使用開關或if語句(如果語言由菜單確定)或使用本地化來使用計算機的當前文化。最後,通過這兩種方法,你可以調用GetString()方法來提供我認爲你的情況是lblName的密鑰。

N.B:在下面的示例中,我使用的第一種方法是從菜單中檢索語言。

string selectedLanguage = comboBoxLang.Text; // Comes from a menu option 
string resourceFile = string.Empty; 

/***/ 
Logic to retrieve the proper resourceFile depending on the selectedLanguage. 
/***/ 

ResourceManager rm = new ResourceManager(resourceFile, Assembly.GetExecutingAssembly()); 

// Set your label text. 
lblName.Text = rm.GetString("lblName");