Winform软件多语言切换,个人见解,降低软件对语言展示的耦合度。

1、设计图(自己瞎画的呵呵)

2、做的小demo,界面如下

3、下面是代码展示部分

1)Form1代码展示

 namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
SetLanguage();
} private void SetLanguage()
{
this.lbUserName.Text = GlobalData.GlobalLanguage.Login_UserName;
this.lbPwd.Text = GlobalData.GlobalLanguage.Login_UserPwd;
this.btnLogin.Text = GlobalData.GlobalLanguage.Login_Login;
}
}
}

2)GlobalData类代码展示

 namespace WindowsFormsApplication1
{
public class GlobalData
{
/// <summary>
/// 系统语言(Chinese(中文),English(英文)。。。)
/// </summary>
public static string SystemLanguage = System.Configuration.ConfigurationManager.AppSettings["Language"]; private static Language globalLanguage;
public static Language GlobalLanguage
{
get
{
if (globalLanguage == null)
{
globalLanguage = new Language();
return globalLanguage;
}
return globalLanguage;
}
} }
}

3)Language类代码展示

 namespace WindowsFormsApplication1
{
public class Language
{
#region 登陆界面
public string Login_UserName = "";
public string Login_UserPwd = "";
public string Login_Login = "";
#endregion protected Dictionary<string, string> DicLanguage = new Dictionary<string, string>();
public Language()
{
XmlLoad(GlobalData.SystemLanguage);
BindLanguageText();
} /// <summary>
/// 读取XML放到内存
/// </summary>
/// <param name="language"></param>
protected void XmlLoad(string language)
{
try
{
XmlDocument doc = new XmlDocument();
string address = AppDomain.CurrentDomain.BaseDirectory + "Languages\\" + language + ".xml";
doc.Load(address);
XmlElement root = doc.DocumentElement; XmlNodeList nodeLst1 = root.ChildNodes;
foreach (XmlNode item in nodeLst1)
{
DicLanguage.Add(item.Name, item.InnerText);
}
}
catch (Exception ex)
{
throw ex;
}
} public void BindLanguageText()
{
Login_UserName = DicLanguage["Login_UserName"];
Login_UserPwd = DicLanguage["Login_UserPwd"];
Login_Login = DicLanguage["Login_Login"];
}
}
}

4)App.config代码展示

 <?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<!-- Language的值只能是Chinese(中文),English(英文) -->
<add key="Language" value="English"/>
</appSettings>
</configuration>

5)English.xml代码展示

 <?xml version="1.0" encoding="utf-8" ?>
<English>
<Login_UserName>UserName:</Login_UserName>
<Login_UserPwd>Password:</Login_UserPwd>
<Login_Login>Login</Login_Login>
</English>

6)Chinese.xml代码展示

 <?xml version="1.0" encoding="utf-8" ?>
<Chinese>
<Login_UserName>用户名:</Login_UserName>
<Login_UserPwd>密码:</Login_UserPwd>
<Login_Login>登录</Login_Login>
</Chinese>

4、如果想要换法语则只需要在App.config中配置换成French,然后再添加一个French.xml,内容和其他语言模板一样把内容换成法语则可。

5、OK。

C# Winform软件多语言(汉语、英语。。。)界面的切换,低耦合的更多相关文章

  1. 阿里云语音合成(汉语英语)带UI界面的小程序(python)

    一,项目说明 将汉文转汉语.英文转英语,同时又有逗号<###English###>,<,,,>和句号<...>标志符用于文件处理.其中英文包含在### 英文 ### ...

  2. BOLT.NET 学习笔记(一) 开篇 用.net winform 快速开发 炫酷的界面

    BOLT.NET 学习笔记(一) 开篇 用.net winform 快速开发 炫酷的界面 bolt 基本介绍 Bolt界面引擎是迅雷公司从2009年开始开发的第四代界面库.迅雷7是首个采用该引擎成功开 ...

  3. Winform软件,不要在线程里操作UI

    对于Winform软件,不要在线程里操作UI,不要相信:StartForm.CheckForIllegalCrossThreadCalls = false; 于是,把所有的代码都改成主线程委托调用的方 ...

  4. 更改Photoshop 语言为英语(无需语言包)

    因为有时看国外教程时,手头上的PS是中文的而教程里的界面是英文的,而且中英菜单顺序在某些地方是不一样的,所以很不方便. 终于找到一个非常完美的方法可以把界面换成英文,而且不需任何语言包. 并且试了在最 ...

  5. 自己在安装centos 系统时, 是使用英文安装 成功,现在系统语言为英语,如何设置为中文?

    作为一个linux菜鸟,遇到的问题可谓真多,在虚拟机VMware上安装好centos系统后,心里甚喜,也连上网络了. 一.遇到的问题 but,火狐浏览器浏览网页出现乱码,也不知道怎么解决?所有的中文都 ...

  6. winform设计一个登录界面和修改密码的界面-自动切换窗体(问题[已解] 望一起讨论)(技术改变世界-cnblog)

    http://www.cnblogs.com/IAmBetter/archive/2012/01/14/2322156.html winform设计一个登录界面和修改密码的界面-自动切换窗体(问题[已 ...

  7. DSL-领域特定语言(英语:domain-specific language、DSL)

    领域特定语言(英语:domain-specific language.DSL)指的是专注于某个应用程序领域的计算机语言.

  8. 在Winform框架的多文档界面中实现双击子窗口单独弹出或拖出及拽回的处理

    在基于DevExpress的多文档窗口界面中,我们一般使用XtraTabbedMdiManager来管理多文档窗口的一些特性,如顶部菜单,页面的关闭按钮处理,以及一些特殊的设置,本篇随笔介绍这些特点, ...

  9. 虚拟机+ubuntu 图形界面和终端界面的切换

    虚拟机环境,在图形界面和文本界面间切换:1  VMWare虚拟机下,由图形界面切换到文本界面,和虚拟机设置有关,默认VM占用Ctrl+Alt为热键,所以由图形界面切换到文本界面的组合键为: Ctrl+ ...

随机推荐

  1. 2. Python的划分

    解释型:当程序运行时,将代码从上至下,一句一句解释成二进制,在执行. 典型:python,php 优点:开发速度快,可以跨平台. 缺点:执行效率慢 编译型:将源码一次性转化成二进制文件,然后在执行. ...

  2. WPF WebBrowser+TabControl MVVM模式 简单应用 提供源码下载

    源代码下载 这个程序是TabControl和Webbrowser的练手小程序 可达到练手目的有: MVVM设计模式的基本使用 Binding(包括相对源[RelativeSource]绑定)的基本使用 ...

  3. 514. Freedom Trail

    In the video game Fallout 4, the quest "Road to Freedom" requires players to reach a metal ...

  4. css3导航鼠标经过移动、缩放、转动、拉长、拉伸

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. Chart.js入门教程

    Chart.js是一个简单.面向对象.为设计者和开发者准备的图表绘制工具库. 相信大部分人都一样,看到一大筐用文本或者表格形式呈现的数据就头疼.因为这种呈现方式也太无聊了吧...而且这对于我们处理原始 ...

  6. 深度学习(tensorflow) —— 自己数据集读取opencv

    先来看一下我们的目录: dataset1 和creat_dataset.py 属于同一目录 mergeImg1 和mergeImg2 为Dataset1的两子目录(两类为例子)目录中存储图像等文件 核 ...

  7. iOS 逆向工程

    HOOK(钩子函数)在OCD动态化语言中使用swizzle method (交换方法来实现) 实际上静态C语言中的函数也是有办法hook的,这也说明绝对的静态语言是不存在的 Mach-O:对于每个操作 ...

  8. leetcode-575-Distribute Candies(计算一个数组中元素的种类的快速方法)

    题目描述: Given an integer array with even length, where different numbers in this array represent diffe ...

  9. 3-----Docker实例-安装MySQL

    Docker 安装 MySQL 方法一.docker pull mysql 查找Docker Hub上的mysql镜像 runoob@runoob:/mysql$ docker search mysq ...

  10. 配置mybatis解决log4j未正常打印sql的问题

    在mybatis-config.xml中增加配置: <settings> <setting name="logImpl" value="STDOUT_L ...