Почему локализованные файлы ресурсов не создаются автоматически при изменении культуры в конструкторе? - PullRequest
1 голос
/ 22 сентября 2009

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

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

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

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

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

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

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

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

Ответы [ 3 ]

3 голосов
/ 22 сентября 2009

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

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

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

Интерфейс будет соответствующим образом адаптирован.

1 голос
/ 22 сентября 2009

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

1 голос
/ 22 сентября 2009

Это уже сделано.

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

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

...