c# 多语言设置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# 多语言设置相关的知识,希望对你有一定的参考价值。

设置Form中localiziable 为true   设置语言为所需语言  
主要为:
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("zh-CN");
            //对当前窗体应用更改后的资源
            ApplyResource();
在APplayResource();
中首先引用所需改变的控件的容器窗体
System.ComponentModel.ComponentResourceManager res = new ComponentResourceManager(typeof(Form1));
然后遍历容器中控件并应用资源
对自定义控件,其窗体一般为UserControl* 在对自定义资源改变时需要重新引用资源文件
System.ComponentModel.ComponentResourceManager res = new ComponentResourceManager(typeof(userControl*));


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

using System.Threading;
using System.Globalization;

namespace GlobalResource
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }       

        private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

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

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

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

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

            //菜单
            foreach (ToolStripMenuItem item in this.menuStrip1.Items)
            {
                res.ApplyResources(item, item.Name);
                foreach (ToolStripMenuItem subItem in item.DropDownItems)
                {
                    res.ApplyResources(subItem, subItem.Name);
                }
            }

            //Caption
            res.ApplyResources(this, "$this");
        }
    }
}
 判断操作系统语言的方法:
private void Form1_Load(object sender, EventArgs e)
{
    不需要判断操作系统的语言,使用资源文件会自动选择。
    if (System.Globalization.CultureInfo.InstalledUICulture.Name == "zh-CN")
    {
       Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("zh-CN");
       //对当前窗体应用更改后的资源
       ApplyResource();
    }
    else
    {
       Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("en");
       //对当前窗体应用更改后的资源
       ApplyResource();
    }
}
技术分享





附件列表

     













    以上是关于c# 多语言设置的主要内容,如果未能解决你的问题,请参考以下文章

    为程序设置多语言界面——C#

    C# winForm程序项目如何设置多语言?

    C# 多语言切换

    iOS多语言设置

    纸壳CMS可视化建站系统搭建多语言网站

    ios最简单的多语言设置