从resx手动检索资源值?

时间:2011-10-03 20:47:29

标签: c# asp.net resx

是否可以从未设置为当前用户文化的资源文件中获取值?我们的应用程序基于数据而非基于文化。

e.g。文档是法语文档,需要更新特定标签和字段并替换为新数据。

是否可以指示资源管理器使用法语.resx而不是默认的.resx?

3 个答案:

答案 0 :(得分:3)

您可以使用ResourceManager.GetString()方法并提供所需的文化作为参数:

var culture = CultureInfo.CreateSpecificCulture("fr-FR");
var localizedString = ResourceManager.GetString("labelName", culture);

答案 1 :(得分:2)

您可以将语言类型设置为其中一个表单中的标签文本,然后您选择要向最终用户显示的语言与使用该标签文本IE的语言进行比较,如果标签文本是法语则您可以用法语显示所有控制名称

NOte:它只能在您用法语创建resx文件并手动重写法语中的所有标签和按钮控件名称后才能正常工作..

  Name              value 
-----------        -------------
 lblname.text      frenchtype name 


 using System;
 using System.IO;
using System.Linq;
using System.Data;
using System.Text;
using System.Diagnostics;
using System.Windows.Forms;
using System.Collections.Generic;
using System.ComponentModel;

public partial class Form1 : Form
{
   public form1()
   {
    System.Threading.Thread.CurrentThread.CurrentUICulture = new
 System.Globalization.CultureInfo("fr-FR");
    getlanguagaefile();
    InitializeComponent();
   }

 // blah
 // blah

private void getlanguagaefile()
{
    if (label1.Text == "French")
    {
        System.Threading.Thread.CurrentThread.CurrentUICulture = new
  System.Globalization.CultureInfo("fr-FR");
        ComponentResourceManager resources = new ComponentResourceManager(typeof(Wait));
        resources.ApplyResources(this, "$this");
        applyResources(resources, this.Controls);

    }
  } 

您可以在表单加载

时向所有标签文本和按钮文本显示法语
   private void applyResources(ComponentResourceManager resources, Control.ControlCollection controlCollection)
  {
    foreach (Control ctl in controlCollection)
    {
        resources.ApplyResources(ctl, ctl.Name);
        applyResources(resources, ctl.Controls);
    }
  }
}

答案 2 :(得分:1)

您可以通过本地化执行此操作,其中资源文件会根据您希望支持的不同语言进行调整。以下链接取自here,可以为您提供所需的内容。

.NET Localization, Part 1: Resource Managers - 检查”为多种语言创建资源“以获得良好的开端。

.NET Localization, Part 2: Creating Satellite Assemblies

.NET Localization, Part 3: Localizing Text

.NET Localization, Part 4: Localizing Units