为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Winforms中制作多语言应用

/ 猿问

如何在Winforms中制作多语言应用

哔哔one 2019-12-05 16:10:54

我有一个应用程序,需要在该应用程序中使用两种语言(例如,英语和阿拉伯语),但是我不知道该怎么做。有人可以帮我吗?我需要C#Windows窗体中的一些示例。



查看完整描述

3 回答

?
慕姐8265434

表格的使用Localizable和Language性质


Form类具有Localizable和Language属性。如果将Localizableproperty 设置为true,则可以添加控件以形成默认语言的表单,并设置属性为默认语言。然后,您可以选择其他语言并更改这些语言的属性。这样,值或可本地化的属性将存储在用于不同区域性的单独资源文件中。


注意:如果属性装饰有[Localizable(true)]属性,则该属性被视为可本地化。例如,BackColor属性不可本地化,但是Text属性可本地化。


使用Resx资源文件本地化消息和图像


该项目Rseources.Resx在Properties文件夹下有一个文件,可用于本地化图像和消息。您也可以将.resx资源文件添加到项目中。例如,您可以创建一个Strings.resx文件,并添加一些字符串键和值,然后将其复制为strings.en.resx和strings.fa.resx这些语言和编辑值。然后,您可以使用这些资源值,例如:


MessageBox.Show(Properties.Resources.AreYouSure);

将使用当前的用户界面区域性语言显示AreYouSurefrom Resources.Resxfile 的值。


如果找不到用于区域性的资源密钥或找不到用于资源文件的指定区域性,Resx则将使用文件中性区域性中的密钥值。


在运行时更改语言


您可以将应用程序的区域性设置为Persian使用:


System.Threading.Thread.CurrentThread.CurrentCulture =

    System.Globalization.CultureInfo.GetCultureInfo("fa");


System.Threading.Thread.CurrentThread.CurrentUICulture =

    System.Globalization.CultureInfo.GetCultureInfo("fa");

您应该在应用程序的开头或显示表单之前放置上面的代码。


查看完整回答
反对 回复 2019-12-05
?
慕雪9262066

在某些情况下,使用资源文件可能会更容易。

  1. 将新的资源文件添加到Visual Studio中的项目。例如。en.resx对于英语,fr.resx对于法语。

  2. 打开资源文件,在字符串中,命名您的字符串,然后在值单元格中放置其他翻译。例如:next station的在值en.resx就是next stationfr.resx可以Prochaine station

  3. 在代码中,用于public static ResourceManager rm = new ResourceManager("WindowsFormsApp1.en_local", Assembly.GetExecutingAssembly()); 选择语言资源。

  4. 当您需要向应用程序输出任何字符串时,请使用function GetString(),例如label1.Text = rm.GetString("welcome");


查看完整回答
反对 回复 2019-12-05
?
HappyDay1234567890

wwjih123的答案中缺少一些内容。


在VS2017中


首先,首先在项目根文件夹(不在Resources文件夹中)中创建资源。命名为lang_en,lang_tr,lang_fr等...


2-然后对象属性窗口将“生成”操作保留为“嵌入式资源”


在lang_tr.resx文件的3边添加土耳其语的新字符串lbl_error和值“ Hata”(无论您喜欢什么)


4-在类内部定义变量为:


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

在InitializeComponent()之后进行5 in类初始化;


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");

如果您的ui语言是土耳其语,它将自动加载lang_tr.resx,如果是英语,则将加载lang_en.resx文件,依此类推...


祝好运


查看完整回答
反对 回复 2019-12-05

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信