美文网首页
如何将程序集国际化

如何将程序集国际化

作者: fisher爱吃鱼 | 来源:发表于2019-08-29 17:19 被阅读0次

    如果你的程序需要提供不同语言的版本,比如中文和英文,那么你可能需要使用一种简便的方法来完成国际化。

    这里介绍一种使用资源文件来完成国际化的方法,具体步骤如下:

    1. VS 中新建一个 WinForm 类型的项目
    2. 打开 Resources.resx 文件,如果 VS 没有自动生成该文件的话可以自己手动创建一个
    3. 在该资源文件中新增一个 FormCaption 的字符串资源,设置值为 你好世界
    4. 新建一个名为 Resources.en-US.resx 的资源文件,确保该文件位于 Properties 目录下
    5. 打开该资源文件,新增一个 FormCaption 的字符串资源,设置值为 Hello World
    6. 打开 Form1.cs 文件,在其构造函数中设置 Form 标题为刚新建的字符串资源
      Text = Resources.FormCaption
      
    7. 编译、运行项目,可以看到窗口标题为:你好世界。打开项目生成目录,可看到生成了一个名为 en-US 的文件夹,里面包含一个类似 WindowsFormsApp3.resources.dll 的资源文件
    8. 打开 Program.cs 文件,在 Main 方法最开头增加如下代码:
      Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("en-US");
      
    9. 再次编译、运行项目,发现窗口标题变为:Hello World,国际化工作完成。
    10. 可以尝试将 en-US 改为 zh,发现标题又变回中文了。

    补充说明

    1. 一定要确保所有资源文件位于 Properties 目录下,我开始没放那里,一直不成功

    2. 只要在要国际化的窗口显示之前调用 Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("en-US"); 即可实现显示指定的语言

    3. 还可使用 Resource.Embedder 将资源文件(Satellite Assemblies)嵌入主程序集,这样在项目生成目录就不会生成 en-US 等文件夹了,并且发布的时候也不需要这些文件夹。

      需要说明的是该库只对 .NetFramework 4.0 以上的项目生效。

      该库可通过 Nuget 添加,Github 主页为:https://github.com/MarcStan/Resource.Embedder

    -- 完成于 2019/08/29 17:19:02

    相关文章

      网友评论

          本文标题:如何将程序集国际化

          本文链接:https://www.haomeiwen.com/subject/yftwectx.html