c# - WinForms 本地化。语言不反映默认 resx 文件
问题描述
我正在尝试在 winform 应用程序中使用本地化,但我有几个问题。我本来想问最复杂的,但现在我遇到了一个基本问题。
我已经构建了一个带有表单、标签和菜单条的基本 winform。
我已将表单本地化设置为 true,并将标签的文本设置为三种不同的语言。结果,我得到了 Form1.es.resx、Form,1.ja.resx 和默认的 Form1.resx。
我已经检查过了,默认的是英文的。但是,当我运行该应用程序时,标签以日语显示(我的操作系统在 Windows 日语中)。是Form1.resx
不是默认的?
当我将 Form1 语言属性设置为英语时,也会发生这种情况。
解决方案
首先需要添加以下格式的资源文件:默认保持原样,特定语言使用格式Resources.[code-CODE]
如果你想在运行时更改语言,你必须“手动”更新控制文本,否则你只需要在 Application.Run 之前设置线程文化信息。
class CultureItem
{
public string Name { get; set; }
public CultureInfo CultureInfo { get; set; }
}
public partial class MainForm : Form
{
private CultureItem[] culutures = new CultureItem[]
{
new CultureItem() {Name = "Default", CultureInfo = new CultureInfo("en-US")},
new CultureItem() {Name = "Italy", CultureInfo = new CultureInfo("it-IT")},
new CultureItem() {Name = "Japan", CultureInfo = new CultureInfo("ja-JP")}
};
public MainForm()
{
InitializeComponent();
comboBox1.DataSource = culutures;
comboBox1.DisplayMember = "Name";
}
private void comboBox1_SelectedValueChanged(object sender, EventArgs e)
{
var selected = comboBox1.SelectedItem as CultureItem;
if (selected != null)
{
Thread.CurrentThread.CurrentUICulture = selected.CultureInfo;
ApplyLocalization();
}
}
public void ApplyLocalization()
{
button1.Text = Properties.Resources.button;
}
}
推荐阅读
- javascript - 如何获得信使中使用的“竖起大拇指”的可点击“id”?
- nlp - 如何回答大文件中的问题?
- c++ - 基于 C++ 的 UWP 应用程序中缺少 ShutdownManager 类?
- ruby-on-rails - 对 rails API 的请求仅在该 API 中具有源 IP“11.0.2.1”
- django - Django:根据用户实例检索数据库条目
- python - 您如何查找子字符串是否不在字符串中作为正则表达式?
- reactjs - 可折叠问题,我想一次只打开一个问题
- c++ - Visual Studio 2017 c++ 符号未从 Microsoft 服务器加载
- pytorch - 如何使pytorch中的卷积具有关联性?
- excel - 发行抵消lastrow