Локализация WinForms. Язык не отражает файл resx по умолчанию - PullRequest
0 голосов
/ 05 сентября 2018

Я пытаюсь использовать локализацию в приложении winform, и у меня есть несколько вопросов. Я собирался задать самый сложный вопрос, но теперь у меня возникла основная проблема.

Я построил базовую winform с формой, меткой и менструацией.

Я установил для локализации формы значение true и установил текст метки на трех разных языках. В результате я получил Form1.es.resx, Form, 1.ja.resx и deafult Form1.resx.

Я проверил, и по умолчанию на английском языке. Однако, когда я запускаю приложение, ярлык появляется на японском языке (моя ОС на windows japanese). Form1.resx не по умолчанию?

Это также происходит, когда я устанавливаю свойство языка Form1 на английский.

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

Когда я запускаю приложение, ярлык появляется на японском языке (моя ОС в окна японские). Form1.resx не используется по умолчанию?

Файл ресурсов по умолчанию является запасным вариантом для случаев, когда у вас нет файла языковых ресурсов для текущей культуры пользовательского интерфейса потока. Так как языком вашей операционной системы по умолчанию является японский (по умолчанию, если вы не измените его с помощью кода), текущая культура пользовательского интерфейса потока будет японской, а поскольку у вас есть файл на японском языке, то форма будет отображаться на японском языке.

0 голосов
/ 05 сентября 2018

сначала нужно добавить файл ресурсов в следующем формате: для оставления по умолчанию оставьте как есть, для конкретного языка используйте формат ресурсов. [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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...