.NET程序本地化

 

  窗体本地化:

    设置窗体属性Localizable为True,然后设置上面的Lanaguage为你需要的语言,这时在对应的窗体文件下会生成如下文件

                          

 

  调用方法:

   在窗体的 InitializeComponent(); 前加入如下语句

               Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-GB");   //括号中的字符参考生成的资源文件中的后缀

   这时窗体将以固定的英语显示

   

   如何在运行时进行切换,参考如下代码

 

 private void btTrans_Click(object sender, EventArgs e)
        {
            // 中英文切换
            if (btTrans.Text.ToUpper() == "EN")
            {
                Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("en-GB");
            }
            else
            {
                Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("zh-CN");
            }

            System.ComponentModel.ComponentResourceManager res = new ComponentResourceManager(typeof(FrmMain));
            ApplyResource(res, this);

            res.ApplyResources(this, "$this");
        }

        /// <summary>
        /// 获取窗体资源信息。
        /// </summary>
        /// <param name="form">需要获取的资源所在的最顶层控件(如:窗体,自定义控件)。</param>
        /// <param name="frm">需要获取的资源窗体或者容器控件。</param>
        /// <returns>返回资源字符串。</returns>
        private void ApplyResource(System.ComponentModel.ComponentResourceManager res, Control frm)
        {
            try
            {
                foreach (Control ctrl in frm.Controls)
                {
                    res.ApplyResources(ctrl, ctrl.Name);

                    if (ctrl is DataGridView)
                    { //datagridview
                        DataGridView dgv = (DataGridView)ctrl;
                        foreach (DataGridViewColumn dgvcolname in dgv.Columns)
                        {
                            res.ApplyResources(dgvcolname, dgvcolname.Name);
                        }
                    }
                    //else if (ctrl is MenuStrip)
                    //{//菜单
                    //    MenuStrip mstrip = (MenuStrip)ctrl;
                    //    foreach (ToolStripMenuItem subItem in mstrip.Items)
                    //    {
                    //        res.ApplyResources(subItem, subItem.Name);
                    //    }
                    //}
                    //遍历容器
                    if (ctrl is Panel || ctrl is PictureBox || ctrl is GroupBox ||
                        ctrl is TabControl || ctrl is TabPage || ctrl is SplitContainer)
                    {
                        ApplyResource(res, ctrl);
                    }
                }
            }
            catch
            {
                
            }
        }


 

窗体提示信息本地化:

添加资源文件,生成如下文件

    

文件中内容如下

 

调用方法:

  

if (m_LanagerString == "en-GB")
    m_LanagerManager = new ResourceManager("Synchronism.FormResource.FrmMain_en-GB", this.GetType().Assembly);
else
    m_LanagerManager = new ResourceManager("Synchronism.FormResource.FrmMain", this.GetType().Assembly);
m_LanagerManager.GetString("FrmMain_008")



 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值