c# - WinForms 本地化。该语言不反射(reflect)默认的 resx 文件

标签 c# winforms localization

我正在尝试在 winform 应用程序中使用本地化,但有几个问题。我本想问最复杂的问题,但现在我遇到了一个基本问题。

我已经构建了一个带有表单、标签和菜单条的基本 winform。

我已将表单本地化设置为 true,并将标签文本设置为三种不同的语言。结果我得到了 Form1.es.resx 、 Form,1.ja.resx 和默认的 Form1.resx 。

我查了一下,默认是英文的。但是,当我运行该应用程序时,标签以日语显示(我的操作系统为 Windows 日语)。 Form1.resx 不是默认值吗?

当我将 Form1 语言属性设置为英语时,也会发生这种情况。

最佳答案

首先需要添加以下格式的资源文件:默认保留原样,特定语言使用格式Resources.[code-CODE]

enter image description here

如果你想在运行时更改语言,你必须“手动”更新控制文本,否则你只需要在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;
    }
}

关于c# - WinForms 本地化。该语言不反射(reflect)默认的 resx 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52176001/

相关文章:

C#:在单独的线程上预加载表单

ios - 使用 Swift 强制 NSLocalizedString 使用特定语言

c# - 从 weather api 解析 json

c# - Asp.Net Core 中 RouteValueDictionary 的路径

c# - 如果返回内容为 Transfer-Encoding :chunked?,如何从 HttpWebResponse 获取完整内容

objective-c - 如何定义一个函数宏来检查多个本地化字符串文件之间的键?

ios - 在 iPhone 上为 RTL 语言翻转布局

c# - 如何在另一个事件中访问在一个事件中创建的对象?

c# - 在正确位置单击按钮时如何显示上下文菜单条

c# winforms toolstripmenuitem 更改背景