Автоматический перевод текста с использованием информации CultureUI - PullRequest
0 голосов
/ 08 февраля 2011

У меня есть окна со многими элементами управления, которые организованы в контейнеры, и я хотел бы перевести пользовательский интерфейс (то есть свойство "text").

Каков наилучший способ сделать это?

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

Есть ли более изощренный способ?Я уже использую ResourceManager с разными культурами, поэтому было бы здорово, если бы я мог использовать его для своей цели.

РЕДАКТИРОВАТЬ: Моя проблема в том, что я не могу использовать рекурсию из-за элемента управления MenuStripэкземпляр, который дает доступ к своим элементам, используя свойство «Items», а не «Controls».Элемент управления StatusStrip аналогичен.

Я разместил свое решение в https://codereview.stackexchange.com/questions/721/automatic-translation-of-forms - я хотел бы услышать ваши отзывы!

Ответы [ 2 ]

1 голос
/ 08 февраля 2011

Все, что вам нужно сделать, это 2 шага: 1 - установить Локализуемое свойство формы в true.2 - Установите язык формы на нужный язык и отредактируйте свойство текста.- По умолчанию язык установлен на (По умолчанию).Вы должны установить язык на определенный язык, например испанский, японский и т. Д. При установке языка вам также необходимо внести некоторые изменения, чтобы получить файл .resx для сгенерированного языка.Когда вы закончите с этим, вам нужно установить язык формы на другой желаемый язык и изменить текстовое свойство элементов управления.

После выполнения вышеуказанных действий вы заметите, что у вас есть один ресурсфайл для каждого языка, который будет автоматически загружаться при изменении пользовательского интерфейса / языка операционной системы.

0 голосов
/ 08 февраля 2011

Чтобы перебрать все элементы управления в форме, вам нужна рекурсия. Если вы поместите «Walk (this)» в какой-либо метод формы, то приведенный ниже код проверит каждый элемент управления.

static void Walk(Control control) { foreach (var c in control.Control) Walk(c); }

...