Почему файлы локализованных ресурсов не создаются автоматически при изменении культуры в дизайнере?

В настоящее время я работаю над локализацией Form. Однако я несколько смущен тем, как правильно это сделать.

Я думал, что можно будет автоматически экспортировать свойства элементов управления в файл ресурсов, но, похоже, это ручная задача.

Мой текущий подход заключается в добавлении всех свойств управления, которые имеют тип String и доступны для записи в файл ресурсов. Это путем рекурсивного перечисления всех элементов управления и дочерних элементов управления в форме и отражения свойств.

Но это кажется несколько сложным, и мне интересно, как это делают другие люди.

Итак, мой вопрос: Как лучше всего использовать файл ресурсов для локализации управляющего текста?

Редактировать: я вижу, что я делаю неправильно. Я думал, что Displaytext будет автоматически скопирован в каждый файл ресурсов. Однако кажется, что копируются только те поля, которые изменились.

Итак, в основном, я устанавливаю язык на определенную настройку, меняю DisplayText для всех элементов управления, и когда я меняю язык обратно на (по умолчанию), изменения сохраняются.

Спасибо за любые/все комментарии.


person Yannick Motton    schedule 22.09.2009    source источник


Ответы (3)


Ну, на самом деле локализовать форму не так уж и сложно. Вы устанавливаете свойство "Localizable" в значение "true". Это приводит к переносу всех локализуемых свойств элементов управления в форме в файл ресурсов. Текущий файл ресурсов не зависит от локали. Затем вы можете выбрать другой язык в свойствах формы и заменить все надписи и тексты элементов управления их переведенными вариантами. Это приводит к созданию и использованию соответствующего файла ресурсов, зависящего от языкового стандарта.

Вы можете выбрать язык, на котором отображается интерфейс, установив свойства CurrentCulture и CurrentUICulture в Thread.CurrentThread:

Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-GB");
Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-GB");

Интерфейс будет адаптироваться соответственно.

person Joey    schedule 22.09.2009
comment
Замена всех контрольных надписей переводом помогла, спасибо! - person Yannick Motton; 22.09.2009

Он делает это уже.

Включите Localizable в конструкторе форм или UserControl.

Теперь измените язык (также в дизайнере), и соответствующий langXXX.resx будет создан автоматически.

person leppie    schedule 22.09.2009
comment
Из всего, что я читал, казалось, что это можно сделать, но свойства Text моих элементов управления нигде не появлялись в файле ресурсов. - person Yannick Motton; 22.09.2009
comment
Если вы создаете свои собственные настраиваемые элементы управления, вам необходимо установить атрибут Localizable для свойств, требующих локализации (таких как отображаемый текст, значки и т. д.). Для этого просто поставьте [Localizable(true)] над объявлением свойства. - person Joey; 22.09.2009
comment
Я вижу, но даже стандартные элементы управления, такие как метки, кнопки, переключатели, групповые поля, не отображаются в файле ресурсов. Может я что-то не так делаю... - person Yannick Motton; 22.09.2009
comment
В файлах ресурсов практически нет строк. Есть два растровых изображения и значок, но нет строк. - person Yannick Motton; 22.09.2009

Вам просто нужно сделать форму локализуемой (на панели свойств установите Localizable в true). Затем вам просто нужно выбрать язык, для которого вы хотите локализовать. Все необходимые файлы ресурсов генерируются автоматически

person Thomas Levesque    schedule 22.09.2009