编辑
2025-09-26
C#
00

目录

创建WinForm项目
添加资源文件
实现语言切换
添加语言选项
实现语言切换逻辑
常见语言及其资源文件名列表

在全球化背景下,软件的多语种支持变得越来越重要。本文将介绍如何在一个WinForm应用程序中实现多语种切换。通过一个简单的示例,你将了解到如何使用资源文件管理不同语言的文本,并通过用户界面实现语言切换。

创建WinForm项目

  1. 打开Visual Studio,创建一个新的WinForm项目。
  2. 在项目创建向导中,选择合适的模板并填写项目名称。

添加资源文件

  1. 在Solution Explorer中,右键点击项目,选择Add > New Item

image.png

  1. 选择Resource File,并命名为Resources.resx(默认语言),这里默认语种为英文
  2. 重复步骤1-2,命名其他语言的资源文件,例如
    • Resources.zh-CN.resx(中文)
    • Resources.fr-FR.resx(法语)

添加完资源文件后,分别在每个资源文件中添加需要多语种支持的文本,例如:

KeyResources.resxResources.zh-CN.resxResources.fr-FR.resx
GreetingHello你好Bonjour
FarewellGoodbye再见Au revoir

image.png

实现语言切换

  1. 在主窗体 (Form1) 上,添加一个 ComboBox 用于选择语言,和一个 Button 用于触发语言切换。
  2. ComboBox 中添加语言选项。
  3. Button 的点击事件中实现语言切换逻辑。

添加语言选项

Form1 的构造函数中初始化 ComboBox 的选项。

C#
public Form1() { InitializeComponent(); cboLanguage.Items.AddRange(new string[] { "English", "中文", "Français" }); cboLanguage.SelectedIndex = 0; }

实现语言切换逻辑

首先为当前线程设置所选语言的Culture。

C#
private void cboLanguage_SelectedIndexChanged(object sender, EventArgs e) { string selectedLanguage = cboLanguage.SelectedItem.ToString(); CultureInfo cultureInfo; switch (selectedLanguage) { case "中文": cultureInfo = new CultureInfo("zh-CN"); break; case "Français": cultureInfo = new CultureInfo("fr-FR"); break; default: cultureInfo = new CultureInfo("en"); break; } Thread.CurrentThread.CurrentUICulture = cultureInfo; ApplyLanguage(); }

然后,通过读取资源文件更新界面文本。

C#
private void ApplyLanguage() { lblGreeting.Text = Resources.Greeting; }

image.png

至此,一个简单的多语种切换功能在WinForm应用中已经实现。用户可以通过 ComboBox 选择语言,界面文本会根据选择的语言进行更新。通过这种方式,可以方便地扩展支持更多语言,也可以在资源文件中管理更多的文本内容。

常见语言及其资源文件名列表

语言语言代码地区代码资源文件名
英语enResources.en.resx
简体中文zhCNResources.zh-CN.resx
繁体中文zhTWResources.zh-TW.resx
法语frFRResources.fr-FR.resx
德语deDEResources.de-DE.resx
西班牙语esESResources.es-ES.resx
日语jaJPResources.ja-JP.resx
韩语koKRResources.ko-KR.resx
意大利语itITResources.it-IT.resx
俄语ruRUResources.ru-RU.resx
葡萄牙语ptPTResources.pt-PT.resx
波兰语plPLResources.pl-PL.resx
荷兰语nlNLResources.nl-NL.resx
瑞典语svSEResources.sv-SE.resx
挪威语noNOResources.no-NO.resx
芬兰语fiFIResources.fi-FI.resx

本文作者:技术老小子

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!