如何从多个资源文件中获取相同的变量

时间:2015-03-06 08:40:04

标签: c# .net resx multiple-languages

我正在开发一个关于使用多种语言的小项目。

我有三个资源文件

  1. MainForm.resx //默认版本=>英
  2. MainForm.US.resx //英文版
  3. 我定义 enter image description here

    1. MainForm.JP.resx //日文版
    2. 我定义 enter image description here

      我想得到每个变量的值(btnCancel,btnLogin,lbPassword,lbUsername,...)

      现在,我做

      • 从MainForm.US.resx,我构建到MainForm.US.designer.cs(MainForm_US类)
      • 从MainForm.JP.resx,我构建到MainForm.JP.designer.cs(MainForm_JP类)
      • 我创建另一个类MainFormResource.cs。在这里,我将检查Thread.CurrentThread.CurrentUICulture.Name值
      • 如果等于" ja-JP",我从MainForm.JS.designer.cs(MainForm_JP类)获得价值

      • 如果等于" en-US",我从MainForm.US.designer.cs(MainForm_US类)获得价值

      但是如果我的项目很大,我需要更多的时间来做这件事。

      我该怎样做才能获得lbUsername,lbPassword,...的价值?

      p / s:我在 Visual Studio Ultimate 2012

      中使用 Windows窗体应用程序

2 个答案:

答案 0 :(得分:0)

您无需手动决定使用哪个资源文件(基于当前线程的UI文化)。资源子系统(ResourceManager)也可以在Windows窗体中自动执行此操作。

了解附属程序集。这些是特别命名的程序集,它们只包含本地化资源,但没有代码,并且放在输出目录中特别命名的子目录(例如en-US\)中。 .NET资源子系统将识别并自动选择最合适的这些子系统来覆盖默认(非本地化)资源。

一些起点:

答案 1 :(得分:0)

创建RESX文件时,您只需要激活根文件的自动代码生成(在您的情况下为MainForm.resx)。

Visual Studio将生成包含RescourceManager

用法的代码

卫星组件也将自动生成。

正如NightOwl888已经提到过的,你应该阅读有关使用Resx文件和.NET的globalization /本地化功能的文档