Использование ресурсов формы для программных строк? - PullRequest
7 голосов
/ 19 ноября 2009

Возник основной вопрос WinForm: по умолчанию файл resx создается для каждой формы или пользовательского элемента управления (вместе с designer.cs). Этот resx отлично работает для всех элементов управления и текста, добавленного к элементам управления через пользовательский интерфейс.

Мне было интересно, смогу ли я использовать тот же resx для добавления строк, которые должны использоваться программно и на основе условий, привязанных к элементам управления? Будет ли resx переопределен в любом случае, и эти пользовательские строки будут удалены? Какова наилучшая практика в этом случае?

Ответы [ 3 ]

2 голосов
/ 07 декабря 2009

Сгенерированные автоматически перезаписываются (я использую 2005), поэтому нет, я бы не использовал тот же файл. Я бы предложил создать отдельную область в вашем проекте для файлов .resx, как это. Обычно я создаю один .resx для каждой формы, конечно же, по названию.

Редактировать: Здесь - более подробный ответ, который я недавно дал, чтобы организовать структуру файлов / папок при локализации приложения с файлами .resx.

2 голосов
/ 20 ноября 2009

Существует странная проблема со строковыми ресурсами в файле Resources.resx. Я не обнаружил очевидного способа создания новой таблицы ресурсов для другого языка с помощью IDE. Это может быть сделано вручную, хотя. Выполните следующие действия:

  1. Проект + Свойства, вкладка Ресурс, добавьте строки, которые вы хотите использовать в ваша программа
  2. Запустите проводник Windows и перейдите в папку свойств вашего проекта
  3. Скопируйте и вставьте Resources.resx файл
  4. Переименуйте его в ту культуру, которую хотите использовать. Например: Resources.fr-FR.resx
  5. Вернуться к VS, нажмите Показать все файлы значок в окне обозревателя решений
  6. Разверните узел Свойства, новый файл ресурса должен быть виден
  7. Щелкните правой кнопкой мыши и выберите «Включить». в проекте "
  8. Выберите его в окне свойств установить Custom Tool = "ResXFileCodeGenerator"
  9. Убедитесь, что для Build Action установлено значение «Встроенный ресурс»

Создайте свою программу. Вы должны получить новую папку в каталоге bin \ Debug вашего проекта со сателлитной сборкой с именем projectname.resources.dll. Эта спутниковая сборка содержит как локализованные строки, так и любые локализованные ресурсы из форм. Проверьте, что он работает с кодом, подобным следующему:

public Form1() {
  System.Threading.Thread.CurrentThread.CurrentUICulture =
    System.Globalization.CultureInfo.GetCultureInfo("fr-FR");
  InitializeComponent();
  textBox1.Text = Properties.Resources.String1;
}
1 голос
/ 07 декабря 2009

Или вы можете попробовать это:

Добавьте этот код в main ();

с использованием System.Resources;

ResXResourceWriter rw = new ResXResourceWriter("Resources.de-DE.resx");
rw.AddResource("String1", "de");
rw.Close();
...

повторить для большего количества файлов

Перейдите в каталог bin и переместите файлы XML (resx), возможно, в папку свойств.

Перейдите к шагу 5-9 выше в сообщении nobugz.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...