国际化

简介: 国际化

WinForm 应用本身提供了国际化支持,我们可以很方便的采用这种方式来实现国际化需求。


搭建 Demo 工程,新建 WinFrom 应用,选择 .NetFramework 4.6.2 版本。


添加简体中文支持

属性编辑器中,将语言选择为 中文(简体,中国) ,如下所示:

WinForm选择语言示例.png


之后往下拉,找到 Text 属性,将默认的 Form1 更改为国际化测试Demo并保存,就会发现项目中自动生成了资源文件。如下所示:

更改标题名称.png


生成的中文语言资源文件如下所示:

生成的中文语言库示例.png


注意

关于简体中文,在这里有很多种选择,一定要注意选择是 中文(简体,中国) ,不能是 中文(简体) 这样的,因为最后生成的资源文件名称不是 zh-CN 这种,可能是 zh-Hans 这种,我们习惯了中文简体都是 zh-CN ,这点要注意!


添加英文支持

属性编辑器中,将语言选择为 英语(美国) ,如下所示:

选择语言为英文.png


更改 Text 内容,之后保存,就能看到生成的英文语言资源文件了,如下所示:

生成的英文语言库示例.png


编写帮助类

编写 LanguageHelper 类,写入如下内容:

using System;
using System.ComponentModel;
using System.Globalization;
using System.Windows.Forms;
namespace I18n
{
    public class LanguageHelper
    {
        #region SetLang
        /// <summary>
        /// 设置语言
        /// </summary>
        /// <param name="lang">language:zh-CN, en-US</param>
        /// <param name="form">the form you need to set</param>
        /// <param name="formType">the type of the form </param>
        public static void SetLang(string lang, Form form, Type formType)
        {
            System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo(lang);
            if (form != null)
            {
                ComponentResourceManager resources = new ComponentResourceManager(formType);
                resources.ApplyResources(form, "$this");
                AppLang(form, resources);
            }
        }
        #endregion
        #region AppLang for control
        /// <summary>
        ///  loop set the propery of the control
        /// </summary>
        /// <param name="control"></param>
        /// <param name="resources"></param>
        private static void AppLang(Control control, ComponentResourceManager resources)
        {
            if (control is MenuStrip)
            {
                resources.ApplyResources(control, control.Name);
                MenuStrip ms = (MenuStrip)control;
                if (ms.Items.Count > 0)
                {
                    foreach (ToolStripMenuItem c in ms.Items)
                    {
                        AppLang(c, resources);
                    }
                }
            }
            foreach (Control c in control.Controls)
            {
                resources.ApplyResources(c, c.Name);
                AppLang(c, resources);
            }
        }
        #endregion
        #region AppLang for menuitem
        /// <summary>
        /// set the toolscript 
        /// </summary>
        /// <param name="item"></param>
        /// <param name="resources"></param>
        private static void AppLang(ToolStripMenuItem item, ComponentResourceManager resources)
        {
            if (item is ToolStripMenuItem item1)
            {
                resources.ApplyResources(item, item.Name);
                ToolStripMenuItem tsmi = item1;
                if (tsmi.DropDownItems.Count > 0)
                {
                    foreach (ToolStripMenuItem c in tsmi.DropDownItems)
                    {
                        AppLang(c, resources);
                    }
                }
            }
        }
        #endregion
    }
}点击复制复制失败已复制


语言切换

语言切换非常简单,只需要一行即可,如下所示:

LanguageHelper.SetLang("zh-CN", this, typeof(Form1)); // 设置中文
LanguageHelper.SetLang("en-US", this, typeof(Form1)); // 设置英文点击复制复制失败已复制


一些辅助方法:

string language = System.Globalization.CultureInfo.InstalledUICulture.Name; //获取当前系统的语言
string language = System.Globalization.Cult
目录
相关文章
|
8月前
|
JSON JavaScript 前端开发
国际化:实现Vue应用的多语言支持
【4月更文挑战第23天】本文阐述了在Vue应用中实现多语言支持的重要性及步骤。使用vue-i18n插件,结合明确的语言需求和资源管理,实现文本翻译。配置路由和语言检测以支持用户切换,动态加载语言包以优化性能。同时考虑日期和货币格式化,确保全面的国际化体验。经过测试和持续维护,打造尊重文化多样性的全球化应用。
337 0
|
8月前
|
UED
在进行应用的本地化时,需要注意哪些问题?
在进行应用的本地化时,需要注意哪些问题?
66 2
|
7月前
|
自然语言处理 搜索推荐 UED
国际化和本地化?
【6月更文挑战第8天】在Python中实现多语言支持变得日益重要,尤其是随着全球化的推进。文章介绍了国际化(i18n)和本地化(l10n)的概念,前者是设计可适应多种语言的软件,后者是针对特定区域调整软件。使用gettext库是Python中实现这一目标的关键,它允许标记待翻译的文本。首先,安装gettext库,然后设置本地化资源路径,通过`gettext.install()`和`gettext.translation()`加载翻译文件。管理本地化资源涉及存储不同语言的翻译文件,并根据当前语言环境加载。为了优化,可以使用字符串格式化、多语言框架(如Babel),并提供用户自定义语言选择。测试和
国际化和本地化?
|
8月前
|
Java
程序国际化
程序国际化
|
8月前
|
存储 自然语言处理 开发者
Django国际化与本地化
Django提供了强大的国际化和本地化支持,使开发者能够轻松地构建多语言和多地区的Web应用
65 3
|
8月前
|
存储 JavaScript
如何在 Vue 中进行国际化和多语言支持?
如何在 Vue 中进行国际化和多语言支持?
61 3
|
8月前
|
自然语言处理 中间件 开发者
Django的国际化与本地化支持:打造多语言应用
【4月更文挑战第15天】Django,一款强大的Web框架,内置出色的支持国际化和本地化功能,使得创建多语言应用变得简单。本文介绍了国际化(i18n)与本地化(l10n)的概念,阐述了Django的相应机制,包括标记可翻译字符串、提取与翻译、设置语言和地区、本地化格式处理。遵循文中步骤,开发者能有效构建适应不同语言和地区需求的Web应用,提升用户体验。
|
Web App开发 XML 自然语言处理
开源软件的国际化和本地化
开源软件的国际化和本地化
146 1
|
XML 存储 JSON
前端国际化和本地化的实现方法
前端国际化和本地化的实现方法
571 0