2015-10-07 78 views
4

我有一個應用程序,我需要在該應用程序中使用兩種語言(例如,英語和阿拉伯語),但我不知道該怎麼做。任何人都可以幫助我呢?我需要一些C#Windows窗體中的示例。如何在winforms中製作多語言應用程序

回答

8

Form class have Localizable and Language Property。如果將Localizable屬性設置爲true,則可以添加控件以形成默認語言並設置默認語言的屬性。然後,您可以選擇其他語言並更改這些語言的屬性。這樣,屬性值將存儲在不同文化的單獨資源文件中。

也可以將.resx資源文件添加到項目中。例如,創建一個Strings.resx文件並向其添加一些字符串鍵和值,然後將其複製爲strings.en.resxstrings.fa.resx並編輯這些語言的值。

您可以使用應用程序的文化設置爲Persian

System.Threading.Thread.CurrentThread.CurrentCulture = 
    System.Globalization.CultureInfo.GetCultureInfo("fa"); 

System.Threading.Thread.CurrentThread.CurrentUICulture = 
    System.Globalization.CultureInfo.GetCultureInfo("fa"); 

你應該把上面的代碼在你的應用程序的啓動或顯示錶單之前。

欲瞭解更多信息和示例:

+0

非常感謝 – mahmoud

+0

歡迎您:) –

3

使用資源文件可能是在某些情況下更容易。

  1. 將新的資源文件添加到Visual Studio中的項目中。 例如。​​英文fr.resx法文。

  2. 打開資源文件,在字符串中爲您的字符串命名並將不同的翻譯放在值單元格中。例如:next station的值​​是next station,但fr.resx可以是Prochaine station。如下面 例如: en_local.resx fr_local.resx

  3. 在代碼中,使用public static ResourceManager rm = new ResourceManager("WindowsFormsApp1.en_local", Assembly.GetExecutingAssembly()); 選擇語言資源。

  4. 當你需要輸出任意字符串到應用程序,使用功能GetString(),例如label1.Text = rm.GetString("welcome");

1

有在wwjih123的回答有些缺少的部分。

在VS2017

所有的

1,首先創建項目的根文件夾(而不是在資源文件夾)資源。將它命名爲像lang_en,lang_tr,lang_fr等......作爲嵌入的資源

的lang_tr 3內

2,那麼物體屬性窗口休假生成操作。RESX文件中添加新的字符串lbl_error和值「畑」,在土耳其(不管你喜歡)

4-內部類中定義的變量爲:

ResourceManager res_man; // declare Resource manager to access to specific cultureinfo 

5合後的InitializeComponent類初始化();

Console.WriteLine("You are speaking {0}", 
System.Globalization.CultureInfo.CurrentUICulture.TwoLetterISOLanguageName); 
res_man = new ResourceManager("MyApp.lang_"+ System.Globalization.CultureInfo.CurrentUICulture.TwoLetterISOLanguageName, Assembly.GetExecutingAssembly()); 

lblError.Text = res_man.GetString("lbl_error"); 

,如果你的用戶界面語言是土耳其,如果英語lang_en.resx文件將被載入 等它會自動加載lang_tr.resx, ...

好運

相關問題