[记录]c#如何进行国际化(多语言)开发winform程序?

国际化(多语言)在软件推广或对软件自身的价值体现有很强的作用。废话不多说,下面把最近两天开发的多媒体文件合并与转换工具(C#的winform程序)上如何进行国际化做一个记录。

一开始在网络上搜索了几篇介绍国际化的文章,,但文章可能不太完整,从几篇文章中摸索出了下面的方法,因为简单,所以不上图了:

首先,按照自己的习惯新建项目、新建窗体。

然后(这是最主要的部分了),在要国际化的窗体上,右键-->属性,把设计里的Language改成你要的语言,然后就可以在窗体的各控件的Text上填写对应语言的文本了。在经过上面这样的操作之后,在窗体对应的cs文件下会有类似****.zh-CHS.resx(这个是中文的)的文件,这里文件是xml格式的,打开它就可以直接修改各个语言的文本了。如果多语言是由其他人制作的话,可以把这些文件直接提供给制作多语言的人员即可,待他们改好再直接覆盖到你的项目上就可以了。

按照上面的方法提供了多语言的版本,应用将会自动根据操作系统的语言环境自动切换到可用的语言界面,但如果要满足用户在英文环境的操作系统上而又想使用中文环境的界面这样的需求的话,要如何实现呢?

我的方式是:在菜单栏上提供语言的切换菜单,然后编写事件代码,部分代码如下:

/****这里就是事件,切换到英文界面****/
private void englishToolStripMenuItem_Click(object sender, EventArgs e)
{
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("en-US");
ApplyResource();
}
private void ApplyResource()
{
ComponentResourceManager res = new ComponentResourceManager(typeof(MainForm));
applyResourceCtl(res,this);
/****菜单,如果没有这个,菜单就没有切换语言****/
foreach (ToolStripMenuItem item in this.menuStrip1.Items)
{
res.ApplyResources(item, item.Name);
foreach (ToolStripMenuItem subItem in item.DropDownItems)
{
res.ApplyResources(subItem, subItem.Name);
}
}
/***这个是窗体的标题**/
res.ApplyResources(this, "$this");
}
/****还好都是Control,用个递归去设置****/
private void applyResourceCtl(ComponentResourceManager res, Control ctl)
{
foreach (Control ctlc in ctl.Controls)
{
if (ctlc.Controls.Count > 0)
{
applyResourceCtl(res,ctlc);
}
res.ApplyResources(ctlc, ctlc.Name);
}
}

当用户点击菜单栏触发事件,窗体就会切换到相应的语言界面了。

另外,欢迎使用《多媒体文件合并与转换工具》,完全免费,欢迎大家反馈建议与意见。

» 本文链接地址:https://www.xidige.com/527

打开支付宝扫一扫,即可进行扫码打赏哦

扫码支持
扫码打赏,你说多少就多少

标签:

分享到:

扫一扫 在手机阅读、分享本文

上一篇: 下一篇:
评论区0人评论293人参与

电子邮件地址不会被公开。 必填项已用*标注

*

loading

赞助商广告