• WinForm 国际化开发一例


    1、新建一个WinForm程序(在中文版的Windows下),如下,添加1个Button和1个Label

    设置Form1的localizable属性为True(Form1的properties里的Design->Localizable=True);

    2、Add一个Folder,命名为Resources,表示将来所有的资源文件都放在其下。再Resources中Add一个New Item,选择General下的Resources File,命名为Resource1.resx。添加字符串如下

    这里在字符串前用[CN]表示中文;

     

    3、添加其他语言版本的资源文件,依次命名为Resource1.en-US.resx,Resource1.ja-JP.resx。只要满足这种命名方式,WinForm会自动根据不同国家版本的操作系统选择对应的资源文件进行加载。想想这种自动的方式,减少了多少手工根据locale编写的if代码

    字符串前的[JP]表示日文,[EN]表示英文;

    4、打开Form1.Designer.cs文件,展开其中的WindowsForm Designer generated code,如下

    如果Form1的localizable属性为false,将会生成下图这样的代码

    可见非国际化的Form,生成的代码中就含有hardcode。下面我们在做了国际化的代码中添加来自于资源的字符串。

     

    5、将资源文件中的字符串添加到对应的Button1, Label1,Form1

    this.button1.Text= Resources.Resource1.BtnText;

    this.label1.Text= Resources.Resource1.LabelText;

    this.Text =Resources.Resource1.FormText;

    Resources是我们上面添加的Folder,Resource1是当前系统下开发版的资源文件。只要这样就可以,当我们把程序拿到其它语言版操作系统下运行时,会自动加载对应的资源文件。比如将这个程序拿到日文操作系统下运行,不需要修改代码,自动加载Resources.Resource1.ja-JP.BtnText到button1显示;

    6、在中文、日文、英文Win8系统下运行同一个程序时的效果

    至此,国际化开发完毕。

    Attention

    不知道WinForm程序根据什么来选择对应语言的资源文件,在同一个OS下改了system locale都不能切换资源,非得运行在特定语言的OS下才行。

    参考资料

  • 相关阅读:
    dolphin以root身份打开
    linux ACL权限
    PIT中断与外设时钟配置
    GPT定时器定时
    I.MX RT 时钟控制模块(CCM)
    OLED屏显示功能的实现
    RT1052 A/D数据采集
    滴答时钟与延时
    局域网 访问mac前端项目
    js 加减乘除取余运算
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3170323.html
Copyright © 2020-2023  润新知