Локализация для Winforms из дизайна моды? - PullRequest
0 голосов
/ 13 ноября 2008

Мне нужно привязать метки или элементы на панели инструментов к переменным в режиме разработки. Я не использую встроенные ресурсы, а не настройки, поэтому раздел «Данные» бесполезен. Я беру значения из XML, который я сопоставляю с классом.

Я знаю, что есть много программ, таких как: http://www.jollans.com/tiki/tiki-index.php?page=MultilangVsNetQuickTourForms но они работают с скомпилированным resx. Я хочу использовать не скомпилированный XML.

Я знаю, что программно я могу это сделать, я создаю метод (например, UpdateUI ()), и там я назначаю новые значения следующим образом: this.tsBtn.Text = Class.Texts.tsBtnText;

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

Ответы [ 3 ]

1 голос
/ 13 ноября 2008

Ответ Александра является одним из способов достижения этой цели, но в долгосрочной перспективе он будет очень трудоемким и не принесет большой пользы. Большой вопрос, который следует задать, - почему вы не хотите использовать инструменты и функции, встроенные в .NET и Visual Studio, или, по крайней мере, использовать коммерческий сторонний инструмент? Похоже, вы тратите (потратили?) Много времени на решение проблемы, которая уже решена.

0 голосов
/ 06 января 2010

Вы можете использовать спутниковые сборки для локализации и генерировать их, используя ваш файл XML в качестве источника для переведенных объектов. больше о спутниках http://msdn.microsoft.com/en-us/library/21a15yht(VS.71).aspx

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

0 голосов
/ 13 ноября 2008

Попробуйте наследовать базовые элементы управления win и переопределить метод OnPaint. Пример ниже - кнопка, текст которой установлен на краске в зависимости от значения, содержащегося в его свойстве Tag (предположим, что вы будете использовать свойство Tag для установки ключа, который будет использоваться для чтения соответствующего ресурса). Затем вы можете найти способ прочитать все строки ресурсов кэша из XML-файлов (например, вымышленный класс MyGlobalResources.

public class LocalizedButton : Button
{
    protected override void OnPaint(PaintEventArgs pevent)
    {
        base.OnPaint(pevent);
        this.Text = MyGlobalResources.GetItem(this.Tag.ToString());
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...