使用C#完美实现多语言Windows应用程序

 2024-02-24 04:02:24  阅读 0

它为.NET 程序的本地化提供完整的支持。 这里我们只介绍实现多语言本地化程序的简单步骤。

请注意,粗体点是关键点。

1. 表单本地化

对于表单,您需要做的第一步是确定默认界面语言。 默认语言是指当执行程序找不到定义的本地化资源时默认使用的语言。 由于.net使用utf-8作为默认编码,一般可以在任何语言系统上正常显示。

本地化表单的关键步骤是将表单的本地化属性 () 设置为 True。 这时,表单代码中自动生成的代码部分的字符串(Text属性)就会由原来的“this.Text = Form1”变成.(this,“$this”)”,并且会出现一个在表单文件名下附加资源文件“Form1.resx”,双击该资源文件可以看到该字符串已生成为资源。

像往常一样,将所需的控件添加到窗体中并设置属性。 控件的Text属性也会自动生成为资源(双击Form1.resx即可看到~)。 这很简单。 让我们看看下一步,本地化。 形式。

接下来我们在英文环境中添加一个表单。 在表单属性窗口中找到属性(旁边)并选择“英语(美国)”。 现在我们将表单上的各个字符串翻译成英文,并修改表单默认字体为Arial,字号8。完成后,你会在表单文件名下看到多一个Form1.en-US.resx,用于保存已本地化为英文的资源。 编译程序并复制到英文系统中运行程序看看效果如何? (什么?你没有英文环境?好吧,我们稍后会提供解决方案)

现在您已经成功实现了对简体中文和美式英语的完美支持。 如果需要支持其他语言,请在属性列表中选择相应的语言,然后重复上述步骤。 需要注意的是.net使用编码,需要使用编码的其他语言必须输入到界面中,否则,尤其是繁体中文,可能会出现乱码。

注意事项:如果需要在窗体上添加或删除控件,必须将窗体语言属性()更改为默认值后才能进行修改。

我们来看看如何处理资源文件

2、资源本地化

右键项目名称,选择添加新项目,生成.resx文件,双击打开该文件,默认是字符串资源编辑器,这里可以定义字符串资源,在字符串中输入“Hello World” value ((不包含双引号),现在可以直接在代码中使用。要引用,注意这里的资源也和形式一样,都是默认语言的资源。在解释如何添加其他之前语言中,我们先介绍一下 .net 解析资源的步骤

.net 资源文件名(此处为 .resx)由根名称(ie)、本地语言名称(默认情况下不可用)和扩展名组成。 在读取资源时,资源管理器会根据当前环境确定所需的本地语言。 语言名称,比如英语,然后尝试用全名来阅读资源。 美式英语的本地名称是en-US(更多语言名称可以从MSDN获取),那么资源的全称是.en-US.resx,如果该文件存在,则将该文件作为资源文件加载。 如果没有,请使用默认值 .resx。 确定资源文件后,开始搜索指定资源(如“”)。 如果在本地资源文件中没有找到,则向上层搜索本地资源文件,直到找到根名称。 欲了解更多信息,请参阅文章末尾所附的链接。

现在我们来添加美式英语资源,使用项目菜单添加新项,添加新的资源文件,命名为.en-US.resx,双击打开,将.resx中的资源翻译成英文并填写、在代码中添加表单加载事件,在事件处理代码中添加一行.Show(.); 编译并运行程序,观察简体中文系统和英文系统下的显示内容。

不断地在不同的语言系统环境之间切换很麻烦。 这是在一台计算机上测试不同语言的解决方案。

3.切换显示语言

C#窗体程序用于管理当前语言。 这里有两种类型。 一是决定语言格式,二是决定语言资源(这里只需要后者)。 您只需设置以下两个变量即可更改程序显示。 语言:

....;

....;

在表单初始化之前,我们设置

.... = new ..("en-US");

您可以将程序执行语言切换为美式英语并尝试编译程序。

演练:本地化表单

项目系统为本地化表单应用程序提供了相当大的支持。 使用开发环境生成资源文件有两种方式:

本演练主题演示了应用程序项目中的两个过程。

还可以将文本文件转换为资源文件; 有关详细信息,请参阅文本文件格式的资源和资源文件生成器 (.exe)。

生成资源文件

1. 创建一个名为“”的新应用程序。 有关详细信息,请参阅如何:创建应用程序项目。

2. 在“属性”窗口中,将表单的属性设置为 true。

该属性已设置为“(默认)”。

3. 将控件从“工具箱”的“窗体”选项卡拖到窗体上,然后将其 Text 属性设置为 Hello World。

4. 将表单的属性设置为“德语(德国)”。

5. 将按钮的 Text 属性设置为 Hallo Welt。

6. 将表单的属性设置为“法语(法国)”。

7. 将按钮的 Text 属性设置为 le Monde。 如有必要,可以调整按钮的大小以适应更长的字符串。

8. 保存并生成解决方案。

9. 单击“解决方案资源管理器”中的“显示所有文件”按钮。

资源文件出现在 Form1.vb、Form1.cs 或 Form1.jsl 下。 Form1.resx 是默认区域性的资源文件,它将生成到主程序集中。 Form1.de-DE.resx 是德国德语的资源文件。 Form1.fr-FR.resx 是法国法语的资源文件。

此外,您还将看到名为 Form1.de.resx 和 Form1.fr.resx 的文件。 这些文件是自动创建的,以解决在保存操作期间必须处理向项目添加新文件的限制。 .resx 文件为空且不包含任何资源。

10. 按 F5 键或从“调试”菜单中选择“启动”。

现在,您将在对话框中看到英语、法语或德语的问候语,具体取决于操作系统的 UI 语言。

注意

中使用的用户界面语言是“”设置的一项功能。 如果您的副本安装了多语言用户界面包 (MUI),您可以在控制面板中更改用户界面语言。 有关详细信息,请参阅 2003、XP 和 2000 MUI 站点。 如果未安装 MUI,您可以通过编程方式更改当前的 UI 区域性,如下所述。

以下过程说明如何设置用户界面区域性,以便应用程序显示法语资源。 在实际应用程序中,用户界面文化不会以这种方式进行硬编码。 用户界面文化的设置将取决于用户设置或应用程序设置。

设置用户界面文化以查看特定资源

1. 在代码编辑器中,在模块开头的 Form1 声明之前添加以下代码:

2.'基本

3..

4..

5.

6 // C#

7.使用.;

8.使用.;

9.

10.//J#

11...*;

..*;

12.添加以下代码。 在 Basic 中,应在调用函数之前使用 New 函数。 在 C# 和 J# 中,应在调用函数之前使用 Form1。

13.'基本

14.' 将 UI 设置为 ()。

c#windows窗体程序串接_c不同窗体间参数传递_c窗体传值

15... = 新(“fr-FR”)

16.

17 // C#

18.// 将 UI 设置为 ()。

19...=新(“fr-FR”);

20.

21.//J#

22.//将UI设置为()。

...().( 新 ("fr-FR"));

23. 保存并生成解决方案。

24. 按 F5 键或从“调试”菜单中选择“启动”。

该表格现在将始终以法语显示。 如果按钮大小已更改以适应较长的法语字符串,请注意按钮大小也已在法语资源文件中保留。

手动将资源文件添加到项目中并进行编辑

1. 单击“项目”菜单上的“添加新项目”。

2. 在“模板”框中选择“程序集资源文件”模板。 在名称框中键入文件名“.resx”。 .resx 文件将包含英文的后备资源。 只要应用程序找不到更适合用户界面文化的资源,就会访问这些资源。

该文件将添加到解决方案资源管理器中的项目,并自动在 XML 设计器的数据视图中打开。

3. 在“数据表”窗格中选择“数据”。

4. 在“数据”窗格中,单击空行并在“名称”列中输入“Hello World”,在“值”列中输入“Hello World”。

无需指定字符串的类型或MIME类型; 它们用于对象。 类型说明符保存正在保存的对象的数据类型。 如果对象由二进制数据组成,则 MIME 类型说明符保存所存储的二进制信息的基本类型 ()。

5. 在“文件”菜单上,单击“保存.resx”。

6. 再执行步骤1-5 两次,创建两个名为.de-DE.resx 和.fr-FR.resx 的资源文件,并使用下表中指定的字符串资源。 .de-DE.resx 文件将包含特定于德国使用的德语的资源。 .fr-FR.resx 文件将包含特定于法国使用的法语的资源。

资源文件名

姓名

价值

.de-DE.resx

你好世界

.fr-FR.resx

世界报

访问手动添加的资源

1. 在代码编辑器中,导入代码模块开头的 .。

c不同窗体间参数传递_c#windows窗体程序串接_c窗体传值

2.'基本

3..

4.

5.//C#

6.使用.;

7.

8.//J#

..*;

9. 在“设计”视图中,双击该按钮以显示其 Click 事件处理程序的代码并添加以下代码。 构造函数有两个参数。 第一个参数是资源的根名称,即不带区域性和 .resx 后缀的资源文件的名称。 第二个参数是主要组件。

在本演练中,没有声明命名空间,因此构造函数的第一个参数可以采用 . 然而,在实际应用中,您应该设置该属性。 在这种情况下,您需要通过资源文件的完全限定根名称(包括其命名空间)来声明资源管理器。 例如,如果默认命名空间是...,则构造函数的第一个参数可以是...。

'基本的

'A。

Dim LocRM As New(“.”,(Form1)。)

' 代表盒子的“”键。

.Show(LocRM.(""))

//C#

//A。

LocRM = new (".",(Form1).);

// 代表盒子的“”键。

.Show(LocRM.(""));

//J#

//A。

LocRM = 新(“。”,

。类型。 (".Form1").());

// 代表盒子的“”键。

.Show(LocRM.(""));

注意

默认情况下,对象区分大小写。 如果您希望执行不区分大小写的查找(例如让“”和“”检索相同的资源),您可以将资源管理器的属性设置为true。 但是,为了提高性能,最好始终为资源名称指定正确的大小写。 如果执行不区分大小写的资源查找,可能会导致性能问题。

10. 生成并运行表单。 单击按钮。

消息框将显示适合用户界面文化的字符串; 或者,如果找不到该用户界面区域性的资源,它将显示后备资源中的字符串。

标签: 资源 窗体 字符

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码