У меня есть приложение, которое я разрабатываю и которое создано с помощью Window Forms.Для локализации всех моих ярлыков, ToolStripMenuItems, кнопок и т. Д. Я использую файлы ресурсов resx.Специально для локализации моего приложения на немецкий язык я открываю файл Main.en-CA.resx в winres.Затем я просматриваю все термины, найденные в форме, и меняю их на немецкий перевод.Затем я сохраняю файл в Main.de-DE.resx.Теперь у меня есть файл Main.en-CA.resx и файл Main.de-DE.resx.В моем коде мне нужно только изменить текущую культуру на тот язык, который я хочу, и применить изменение ко всем моим ярлыкам, элементам управления, кнопкам и т. Д. Например, что-то вроде этого:
System.Threading.Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(language);
// Must re-apply resources after changing the culture
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Main));
resources.ApplyResources(this, "$this");
foreach (Control c in this.Controls)
{
resources.ApplyResources(c, c.Name);
}
Это кажетсяотлично работает для всех ярлыков и т. д., которые не меняются.У меня, однако, есть записи, которые изменены.Например, у меня может быть выпадающий список ComboBox, который заполнен записями: «Apple», «Banana», «Orange».Или у меня могут быть некоторые сообщения об ошибках: «Отсутствует ввод», «Не удается найти файл XML», которые отображаются только иногда.Теперь я предполагаю, что, возможно, для сообщений об ошибках я мог бы просто иметь метки и выборочно изменять их видимость в зависимости от того, нужно ли их отображать, однако для выпадающего списка ComboBox эти записи могут изменяться в зависимости, скажем, от файла, который загружает пользователь.
Интересно, есть ли способ сохранить эти записи в файлах resx и затем получить к ним доступ из моего кода?Я попытался открыть файлы resx и добавить их вручную (т.е. без использования winres), но попытка сделать это привела к предупреждению:
Вы пытаетесь отредактировать файл ресурса, который является частью другого проектаэлемент (например, форма или элемент управления).Редактирование этого элемента может повредить элемент проекта, и вам придется восстановить его вручную.Кроме того, изменения, внесенные в этот файл ресурсов, могут быть потеряны, если в элемент проекта будут внесены дополнительные изменения.Вы действительно хотите отредактировать этот файл?
Это звучало как плохая идея, поэтому я больше не пробовал.Кроме того, я не уверен, каким образом я получу доступ к терминам в файле вручную.Я очень новичок в окнах форм и файлов ресурсов (я впервые их использую), поэтому я понимаю, что это может быть простой вопрос, но у меня возникли проблемы с поиском информации о том, как именно это сделать.