ResourceManager не выбирает правильный язык

Используя свойства локализации и языка, я перевел форму Form1.

В событии Form1_Load я хочу установить текст для меток, кнопок и так далее...

private void Form1_Load(object sender, EventArgs e)
{
    SetLanguage();
}

Метод SetLanguage:

private void SetLanguage()
{

    System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("de");

    System.Resources.ResourceManager rm = new System.Resources.ResourceManager(typeof(Form1));

    button1.Text = rm.GetString("button1.Text");
    linkLabel1.Text = rm.GetString("linkLabel1.Text");
    checkBox1.Text = rm.GetString("checkBox1.Text");

}

Но он не работает, он всегда выбирает английские строки "default/fallback" (но de CultureInfo установлен). Я понятия не имею, что не так... Я использовал тот же код в новом примере приложения, и он работал в этом небольшом примере приложения. Но в моем реальном приложении это не работает.

Также в явном виде сообщает ressourcemanager, что для использования Culture возвращает английскую строку вместо немецкого:

MessageBox.Show(rm.GetString("button1.Text", new System.Globalization.CultureInfo("de")));

Есть идеи?

1 ответ

Этот раздел является важным. Когда мы устанавливаем для локализуемой формы значение true и собираем приложение, Visual Studio .NET создает ресурсы, специфичные для культуры, указанной в свойстве Language формы. Visual Studio .NET создает файл ресурсов, используя resgen.exe. Мы также можем создавать ресурсы, используя следующий синтаксис:

resgen mytext.en-us.txt mytext.en-us.resources 
resgen mytext.en-us.resources mytext.en-us.resx

// Эта команда читает файл двоичных ресурсов mytext.en-us.resources и // записывает выходной файл на основе XML с именем mytext.en-us.resx. Теперь ресурсы созданы, но нам нужно связать их с приложением, так что это делается в Visual Studio.NET с помощью AL.exe (компоновщик сборки). Мы также можем сделать это вручную, выполнив это:

 al 

 /t:lib

 /embed:mytext.en-us.resx 

 /culture:en-us 

 /out:Myapplication.resources.dll

Вы можете найти больше о resgen.exe и al.exe в документации MSDN.

Другие вопросы по тегам