Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Многоязыковый интерфейс Win-приложения на C# ? 
V
    Опции темы
IApple
Дата 21.1.2008, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 17.1.2008

Репутация: нет
Всего: нет



Как реализовать интерфейс приложения на нескольких языках (через ресурсные файлы или что другое) и как это увязать с визуальным проектированием VS ?
PM MAIL   Вверх
mr.DUDA
Дата 21.1.2008, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Очень просто.

1. Делаем интерфейс на английском. Теперь, когда всё готово, в свойствах формы ставим Language = Russian (или какой там нужен). Редактируем надписи на форме и кнопках и т.п., заменяя всё на русский. Аналогичным образом делаем для остальных языков
2. Перед показом формы выставляем текущий язык:
Код
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("ru");


Ресурсы добавляются автоматически (в solution explorer-е они под формой). Подробная информация о локализации приложений есть в MSDN.


--------------------
user posted image
PM MAIL WWW   Вверх
IApple
Дата 21.1.2008, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 17.1.2008

Репутация: нет
Всего: нет



1. Почему есть два выбора и чем они отличаются?

Russian
Russian (Russia)

PM MAIL   Вверх
CYBERDREAM
Дата 21.1.2008, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

Репутация: 11
Всего: 28



Приветствую IApple
Может тоже пригодится: http://rsdn.ru/article/devtools/ResourceOnly.xml  smile 


--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
bogys
Дата 21.1.2008, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 25.12.2007

Репутация: нет
Всего: 1



PM MAIL   Вверх
IApple
Дата 21.1.2008, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 17.1.2008

Репутация: нет
Всего: нет



Во-первых, спасибо всем, кто откликнулся.

1. Делаем интерфейс на английском. Теперь, когда всё готово, в свойствах формы ставим Language = Russian (или какой там нужен). Редактируем надписи на форме и кнопках и т.п., заменяя всё на русский. Аналогичным образом делаем для остальных языков

- действительно работает... но не дай Бог зацепить свойство Localizable - кат только показать в нем false, куда-то всё кропотливо заполненое пропадает :(
- если нужно что-то изменить (добавить пункт меню, например), то необходимо перейти снова на язык (default), потом добавить пункт меню, записать и только потом делать для руского и других, иначе в каком-то языке будет этот пункт меню, а в другом он просто отсутствует!!!

2. Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("ru");

- работает, только чтоб изменить интерфейс главной формы, нужно записать свои установки в которых прописан новый язык, выйти из програмы и зайти наново... Если чесно, у меня снова проблема возникла - еще не умею сохранить свои настройки и при запуске програмы их считать. Попробовал так:

            if (CultureInfo.Equals(Thread.CurrentThread.CurrentUICulture, CultureInfo.GetCultureInfo("ru")))
            {
                Properties.Settings.Default["Language"] = "en";
            }
            else
            {
                Properties.Settings.Default["Language"] = "ru";
            }
            Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(Properties.Settings.Default["Language"].ToString());

            Properties.Settings.Default.Save();
            
а вот здесь где-то "грабли" меня настигли - Save() не пишет...

Properties.Settings для таких нужд используется, или уж совсем не в ту степь полез?

По линку http://rsdn.ru/article/devtools/ResourceOnly.xml 
прекрасно они прогу закатали и я рад (за них), что они разобрались... проблема, что и я хотел разобраться в вопросе, а не найти "черный ящик".
PM MAIL   Вверх
mr.DUDA
Дата 22.1.2008, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Russian и Russian (Russia) соответствуют "ru" и "ru-RU", если я не ошибаюсь. Подробнее читайте в мсдн.


--------------------
user posted image
PM MAIL WWW   Вверх
jonie
Дата 23.1.2008, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 22
Всего: 118



почитайте книгу вроде "C#2005 Для Профессионалов" WroxPrexx
более того глава про локализацию доступна всем нахаляву
http://rsdn.ru/article/dotnet/csprof2005_localization.xml


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0461 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.