Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > Локализация приложения


Автор: PaZ1T1V 30.8.2010, 11:06
Доброго времени суток. У меня возникла необходимость локализовать приложение.
Итак, есть приложение SDI C# Winforms, в нем есть несколько форм, в каждой должна быть реализована возможность отображения на выбранном языке (ru-Ru, en-Us) в зависимости от выбора локали пользователем (выбор в локали осуществляется, к примеру, по нажатию на итем менюшки на главной форме).
Итак, на формах не менее 20 контролов, которые надо локализовать. Создал файлы ресурсов типа названиеФормы.ru-Ru.resx и названиеФормы.en-Us.resx
Вот код событий локализации :

Код

private void SetupCulture(string cultureName)
        {
            //Устанавливаем английскую культуру в качестве выбранной.
            this.cultureDefine = cultureName;
            // Устанавливаем выбранную культуру в качестве культуры  пользовательского интерфейса 
            Thread.CurrentThread.CurrentUICulture = new CultureInfo(this.cultureDefine, false);
            // Устанавливаем в качестве текущей культуры выбранную
            Thread.CurrentThread.CurrentCulture = new CultureInfo(this.cultureDefine, false);

           this.Refresh();
        }

        private void русскийToolStripMenuItem_Click(object sender, EventArgs e)
        {
            SetupCulture(this.russianCulture);
        }

        private void английскийToolStripMenuItem_Click(object sender, EventArgs e)
        {
            SetupCulture(this.englishCulture);
        }     

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

И еще один вопрос: так как локаль меняется только на главной форме, но, какие то формы могут быть открыты, то как сменить локаль на остальных фомах? К примеру открыта MainForm и еще какая нибудь ViewForm (последняя открывается из главной формы методом Show()), как сменить локаль в ней(второй форме)?
И еще один вопрос, как локализовать текст на форме то есть свойство this.Text ?
С уважением.

P.S. Знаю, что по правилам форума один топик - один вопрос, но в данной ситуации я не хотел бы плодить формы, поскольку вопросы касаются одной темы в рамках одного проекта и т.д.

Автор: PaZ1T1V 30.8.2010, 15:23
Вопрос решен, спасибо за содействие.

Автор: CYBERDREAM 6.9.2010, 09:29
а как решен? народ хочет знать

Автор: Deex42Iv 8.10.2010, 08:42
Цитата(CYBERDREAM @  6.9.2010,  09:29 Найти цитируемый пост)
а как решен? народ хочет знать

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

Автор: CYBERDREAM 8.10.2010, 08:45
в течении 3х дней постараюсь докопаться до этого вопроса, если что отпишусь

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)