`

如何开发一个多种语言版本的C#程序

阅读更多
在C#中有多种使用资源文件的方法,能够很方便地开发全球通用的应用程序。本文通过一个简单的小例子,来讲解在C#中如何利用资源文件,快速开发一个多种语言版本的程序。本例中只有一个窗体,三个控件,能够根据用户的设置以中文或英文界面运行。开发环境是Windows 2000 Professional、Microsoft Visual Studio.NET 2002。具体开发步骤如下:

一、新建项目

启动Microsoft Visual Studio .NET,新建一个C#项目MyApp,本例工程存放于F:\Csharp\MyApp。

二、添加控件

在Form1 窗体上添加三个控件(见图1):主菜单MainMenu、标签Label1和按钮Button1。Label1和Button1控件的属性均采用缺省设置。MainMenu控件中添加三个菜单项menuItem1、menuItem2、menuItem3。Text属性分别设为“语言”、“中文”和 “English”。menuItem2、
menuItem3 的RadioCheck属性设为True。
三、创建配置文件 

在项目中添加一个文本文件MyAppConfig.ini,保存当前程序的语言版本设置。该文件中只有一行内容。如果是“English”,则表示程序为英文版;如果是“Chinese”则为中文版。这里暂且保存为“English”。

四、创建资源文件

.NET 中的资源文件有三种: 文本(.txt )文件、XML 格式的.Resx 文件和.Resources 文件。文本文件只能包含形如“ 名称= 值”格式的字符串资源。.Resx文件和.Resources 文件中不仅能保存字符串资源,还能保存图像等可序列化的持久对象资源。但是只有.resources 文件格式的资源文件才能被嵌入到运行库可执行文件中,或被编译为附属程序集。利用Visual Studio .NET 中自带的资源文件生成器
(Resgen.exe),可以将.txt文件和.Resx文件转换为.resources 文件格式。本例中只用到了字符串资源,所以在项目中添加两个文本文件Resource_zh.txt 和Reource_en.txt。

Reource_en.txt 文件中的内容:

menuItem1_Name=Language
button1_Name=Exit
label1_Text=This is English version!
Resource_zh.txt 文件中的内容:

menuItem1_Name=语言
button1_Name=退出
label1_Text=这是中文版!
需要注意的是Resource_zh.txt文件中含有汉字,必须以UTF-8编码保存。在Visual Studio .NET集成开发环境中,可以先点击“文件”菜单中的“高级保存选项”,选中UTF-8编码格式,再保存文件。

然后,点击“程序”菜单中的“Visual Studio .NET命令提示”菜单,进入DOS方式,输入以下两行命令,生成程序中能够访问的资源文件MyApp.resources和MyApp.zh- CN.resources。英文资源文件MyApp.resources 作为默认的后备资源文件。MyApp.zh-CN.resources
是中文资源文件,文件名中的“MyApp”是资源文件的根名称,必须与后备资源文件的根名称相同,“zh-CN”指定资源文件的区域性。

F:\Csharp\MyApp>resgen Resource_en.txt,MyApp.resources
F:\Csharp\MyApp>resgen Resource_zh.txt,MyApp.zh-CN.
resources
五、修改代码

1、在代码的开头添加需引用的命名空间。

using System.Globalization;
using System.Resources;
using System.Threading;
using System.IO;
2、在Form1 中定义两个字段ci和rm。CultureInfo对象ci用来指定读取资源文件时的区域性。ResourceManager对象rm用来在指定的资源文件中读取资源。

CultureInfo ci = new CultureInfo("");
Res ource Manag er rm = Res ource Manag er.CreateFileBasedResourceManager("MyAPP", ".", null);
3、在Form1中添加一个方法ReadResources,用来读取相应资源文件中的字符串资源,来修改界面菜单、标签和按钮上文字显示。

private void ReadResources(){
 this.menuItem1.Text = rm.GetString("menuItem1_Text",ci) ;
 this.button1.Text = rm.GetString("button1_Text",ci);
 this.label1.Text = rm.GetString("label1_Text",ci);
 this.Refresh();
}
4、在Form1 的Load事件处理过程中,根据配置文件的内容,调用ReadResources方法,读取资源,显示程序界面。

private void Form1_Load(...) {
 StreamReader sr=File.OpenText("MyAppConfig.ini");
 if (sr.ReadLine()=="Chinese"){
ci = new CultureInfo("zh-CN");
menuItem2.Checked=true; }
 else {
ci = new CultureInfo("en");
menuItem3.Checked=true;
 }
 sr.Close();
 this.ReadResources();
}
5、在Form1 中添加一个方法SaveConfig,用来修改配置文件。在menuItem2 和menuItem3 的Click事件过程中调用S a v e C o n f i g 方法,分别将字符串“Chinese”、“English ”写入配置文件,并调用ReadResources方法,来更新界面。

private void SaveConfig(string p_Language){
 StreamWriter sw=File.CreateText("MyAppConfig.ini");
 sw.WriteLine(p_Language);
 sw.Close();
}
private void menuItem2_Click(...){
 this.SaveConfig("Chinese");ci = new CultureInfo("zh-CN");
 menuItem2.Checked=true; menuItem3.Checked=false;
 this.ReadResources();
}
private void menuItem3_Click(...){
 this.SaveConfig("English");
 ci = new CultureInfo("en");
 menuItem2.Checked=false;
 menuItem3.Checked=true;
 this.ReadResources();
}
6、在按钮button1的Click事件过程中,关闭窗体,结束运行程序。

private void button1_Click(...)
{
 this.Close();
}
六、编译并运行程序

如果手工编译源程序,只需点击“Visual Studio.NET 命令提示”菜单,进入DOS方式,输入下面命令,即可生成二进制的可执行文件MyApp.exe,然后输入MyApp,就能运行程序。

F:\Csharp\MyApp>csc /out:MyApp.exe form1.cs

如果是在Microsoft Visual Studio .NET 集成开发环境中运行程序,将自动进行编译,并将编译的二进制可执行文件放到bin\Debug子目录下。此时,需要注意的是要将 MyAppConfig.ini、MyApp.resources 和MyApp.zh-CN.resources 这三个文件也复制到bin\Debug\子目录下,程序才能正常运行。

程序第一次运行时,是英文界面(见图2),点击菜单“中文”,将变成中文界面(见图3)。单击按钮“Exit”,退出程序后,再次运行程序时,直接显示中文界面。


  还没有测试过的多语言程序编写  不过 以后可以试下
分享到:
评论

相关推荐

    (源代码)使用C# 完美实现多语言版本Windows应用程序

    为《使用C# 完美实现多语言版本Windows应用程序》所附源代码,以便更好的学习C#窗体程序多语言版本的制作。 本源代码可以任何方式免费使用,但转载请注明出处 另:代码中仅处理资源,没有本地格式信息的处理,有这...

    多种语言版本的C#程序(含源码)

    本示例项目“多种语言版本的C#程序”旨在教你如何利用C#中的资源文件来实现这一功能,同时也提供了源码供学习者参考。 首先,让我们了解什么是资源文件。在C#中,资源文件(如.resx文件)是一种用于存储应用程序中...

    C# WinForm 程序的界面多语言切换

    C# WinForm 程序的界面多语言切换 C# WinForm 程序的界面多语言切换是一种常见的需求,特别是在全球化的今天。在本文中,我们将介绍一种只需对现有代码做较小改动的方法来实现 WinForm 程序的界面多语言切换。 ...

    C#语言程序设计.pdf

    C#语言的推出是为了解决现有编程语言在生产效率和运行速度上的局限性,它被微软定义为一个类型安全、现代、简单的面向对象编程语言,目的是结合Visual Basic的高效率和C++的强大能力。 本书《C#语言程序设计》由...

    c#多语言切换

    在C#编程中,实现多语言切换是一项常见的需求,尤其对于构建全球化软件至关重要。...通过学习和实践这个"C#多语言切换"的demo,开发者能够掌握这一关键技能,为构建支持多种语言的应用打下坚实基础。

    .NET平台研究与开发丛书:C#语言程序设计(一)

    .NET是一个由微软公司开发的一个软件框架,提供了开发、运行和管理应用程序所需的运行环境,支持多种编程语言,而C#(读作“看井”)就是其中的一种。C#是一种面向对象的编程语言,专门用来创建运行在.NET平台的应用...

    c#程序开发教程.rar

    在C#程序开发中,有几个关键知识点是开发者必须掌握的: 1. **基本语法**:C#的语法与C++和Java有相似之处,包括变量声明、数据类型(如整型、浮点型、布尔型等)、运算符、控制流(如if语句、for循环、while循环)...

    C# 版本自动升级程序

    "C# 版本自动升级程序"是一个关键的系统组件,旨在简化软件更新过程,确保用户能够方便地从旧版本无缝过渡到新版本。下面将详细介绍这个程序的工作原理、实现方式以及涉及的关键技术。 首先,版本自动升级程序的...

    C#程序100实例+c#程序执行器

    这个资源包“C#程序100实例+c#程序执行器”显然是为初学者和有经验的开发者提供了一个丰富的学习资料库,帮助他们更好地理解和掌握C#编程语言。 首先,"C#程序100实例"部分很可能是包含了一系列的C#编程示例项目,...

    C#开发G程序

    .NET框架是一个多语言环境,允许开发者使用C#等语言编写应用程序。了解.NET的核心组件,如公共语言运行库(CLR)和基类库(BCL),对于开发G程序至关重要。 3. 开发环境配置:开发C#程序,尤其是Windows应用程序,...

    C#多语言程序设计例子

    在C#编程中,多语言支持是开发全球化应用程序的关键特性,允许软件与不同语言和文化背景的用户进行有效沟通。本示例“C#多语言程序设计例子”着重于资源本地化,这是一个确保软件界面适应特定地区语言和习惯的过程。...

    一个简单的c#实例程序

    【标题】:“一个简单的C#实例程序” C#是一种由微软公司开发的面向对象的编程语言,被广泛应用于Windows桌面应用、游戏开发、移动应用以及Web服务等。它结合了现代编程语言的特点,如类型安全性和垃圾回收机制,...

    C#语言开发的定时关机小程序包含源代码

    Visual Studio 2005是微软的一个集成开发环境(IDE),它支持C#和其他多种语言的开发,提供了丰富的工具和功能,使得开发者能够更高效地编写代码。 本资源主要介绍的是使用C#和Visual Studio 2005开发一个简单的...

    C#程序设计语言基础.txt

    - **Visual Studio**:这是一个强大的集成开发环境(IDE),支持多种编程语言,包括C#。通过Visual Studio,开发者可以方便地编写、调试和部署C#应用程序。 - **创建项目**:在Visual Studio中创建一个新的C#项目...

    C#程序设计语言各种实例和例题

    《C#程序设计语言各种实例和例题》是一本针对初学者的专业教科书,旨在通过实际操作和实例解析,引领学生踏入C#程序设计的世界。该书基于.NET Framework 2.0 和Microsoft Visual Studio 2005,提供了一个系统性的...

    C#程序开发范例宝典(第3版)

    《C#程序开发范例宝典(第3版)》是一本专为C#程序员设计的实战指南,旨在提供丰富的编程实例,帮助开发者深入理解和掌握C#语言的各个方面。本书内容广泛,涵盖了从基础语法到高级特性的完整知识体系,是C#学习者和...

    C# 语言规范 版本5.0中文.pdf

    版本控制是C#设计中的另一个重要考虑,它使得程序和库能够在更新后保持兼容性。例如,virtual和override关键字的独立使用,方法重载的规则,以及显式接口成员声明,都是为了支持版本控制。 C#的程序结构从简单的...

    C#.Net网络程序开发

    3. WCF:Windows Communication Foundation是一个全面的服务导向架构,用于构建分布式应用程序。它可以支持多种通信协议,如HTTP、TCP、SMTP等,并能无缝集成.NET应用程序。WCF提供了服务契约和服务实现的概念,使得...

Global site tag (gtag.js) - Google Analytics