是否可以从未设置为当前用户文化的资源文件中获取值?我们的应用程序基于数据而非基于文化。
e.g。文档是法语文档,需要更新特定标签和字段并替换为新数据。
是否可以指示资源管理器使用法语.resx而不是默认的.resx?
答案 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