手动从resx中检索资源值

本文关键字:检索 资源 resx | 更新日期: 2023-09-27 18:10:31

是否有可能从未设置为当前用户区域性的资源文件中获取值?我们的应用是基于数据的,而不是基于文化的。

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

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

手动从resx中检索资源值

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

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

您可以将语言类型设置为其中一个表单中的标签文本然后选择您想要显示给最终用户的语言与该标签文本的语言进行比较也就是说,如果标签文本是法语那么您可以用法语显示所有控件名称

注意:它只在你用法语创建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);
    }
  }
}

您可以通过本地化来实现这一点,将资源文件调整为您希望支持的不同语言。下面的链接,从这里,应该得到你想要的。

"。. NET本地化,第1部分:资源管理器-查看"为多种语言创建资源"以获得良好的开端。

。. NET本地化,第2部分:创建附属组件

。. NET本地化,第3部分:文本本地化

。. NET本地化,第4部分:本地化单元"