用c#创建支持多语言的应用程序

互联网无国界,越来越多的应用程序必须面对全球用户了,如何设计一个支持多国语言的应用程序呢?

在.net2.0 中,m$ 为我们提供了一种简单方便的方法, 使用资源文件

1.新建一个 Winform 应用程序, 新建一 Form ,名为 Form1,添加两个按钮 btnChinese, btnEnglish
2. 设置 Form1 的 Localizable 属性为 true, 设置该属性后,.net 将根据不同的语言,为应用程序生成不同的资源文件
3.设置各个控件的文本(系统默认语言下)
4.更改 Form1 的 Language 属性为想要支持的另一种语言,此例中我们选用 English
5.重新设置各个控件的文本
 注:此时.net 将为 Form1 生成另一个资源文件,在本例中名为 Form1.en.resx
6. 如果有其它的语言要设置,请重复第4,第5步
7.编写代码

 

private   void  btnChinese_Click( object  sender, EventArgs e)
        
{
            
//更改当前线程的 CultureInfo
            
//zh-CN 为中文,更多的关于 Culture 的字符串请查 MSDN
            Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("zh-CN");
            
//对当前窗体应用更改后的资源
            ApplyResource();
        }


        
private   void  btnEnglish_Click( object  sender, EventArgs e)
        
{
            
//更改当前线程的 CultureInfo
            
//en 为英文,更多的关于 Culture 的字符串请查 MSDN
            Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("en");
            
//对当前窗体应用更改后的资源
            ApplyResource();
        }

        
        
/// <summary>
        
/// 应用资源
        
/// ApplyResources 的第一个参数为要设置的控件
        
///                  第二个参数为在资源文件中的ID,默认为控件的名称
        
/// </summary>

         private   void  ApplyResource()
        
{
            System.ComponentModel.ComponentResourceManager res 
= new ComponentResourceManager(typeof(Form1));
            
foreach (Control ctl in Controls)
            
{
                res.ApplyResources(ctl, ctl.Name);
            }

        }

大致的代码就完成了,此时点击 “中文”按钮,画面切换为中文,点击“英文”按钮,画面立即切换为英文 
WPF应用程序框架(WAF)v2.5.0.7源码 源码描述: WPF应用程序框架(WAF)是一个轻量级的框架,可以帮助您创建结构良好的WPF应用程序。 它支持你在申请一个分层的架构和模型-视图-ViewModel(又名MVVM, M-V-VM, PresentationModel)模式。 特点 WPF应用程序框架(WAF) ViewModel的:包含类型,帮助你实现的Model-View-ViewModel模式。 DataModel的:基类的应用,支持你的DataModel-View - ViewModel模式。 DelegateCommand:DelegateCommand允许你来处理视图比其他类别的WPF命令。 INotifyPropertyChanged的:基类实现INotifyPropertyChanged接口。实施检查中的属性名称的DEBUG模式。 WeakEvent:第一类支持的WPF WeakEvent模式,它可以帮助你避免内存泄漏。 验证:DataErrorInfoSupport类带来的IDataErrorInfo接口与DataAnnotations的验证框架。 ConverterCollection:这个集合是能够保持同步模型的ObservableCollection DataModels。 服务:显示一条消息或打开/保存文件对话框,向用户提供服务。 最近的文件:RecentFileList类提供了最近的文件列表,可以装载和存储在应用程序设置的逻辑。 单元测试扩展 例如:如果一个action结果在一个特殊的exception,可以用ExpectedException方法来测试。 PropertyChanged:提供了一个辅助方法来测试如果一个属性改变事件是当一个特定的行动提出被执行。 CanExecuteChangedEvent:一个helper方法来测试一个CanExecute改变事件是当一个特定的行动提出被执行。 v2507更新信息 图例: [b]打破变化; [O]标记为过时成员 WAF的:添加CollectionHelper.GetNextElementOrDefault方法。 InfoMan:支持创建一个新的电子邮件,并保存在发送框中。 InfoMan:新的电子邮件:选择从地址簿中的电子邮件地址。 InfoMan:显示在导航窗格中的项目数。 InfoMan:支持删除的电子邮件。 InfoMan:加入在Common.Presentation搜索盒的控制和使用,在EmailCli??ent通讯录模块。 InfoMan:设计数据添加到通讯录意见。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值