| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > Многоязыковый интерфейс Win-приложения на C# ? |
| Автор: IApple 21.1.2008, 14:03 |
| Как реализовать интерфейс приложения на нескольких языках (через ресурсные файлы или что другое) и как это увязать с визуальным проектированием VS ? |
| Автор: mr.DUDA 21.1.2008, 14:33 | ||
| Очень просто. 1. Делаем интерфейс на английском. Теперь, когда всё готово, в свойствах формы ставим Language = Russian (или какой там нужен). Редактируем надписи на форме и кнопках и т.п., заменяя всё на русский. Аналогичным образом делаем для остальных языков 2. Перед показом формы выставляем текущий язык:
Ресурсы добавляются автоматически (в solution explorer-е они под формой). Подробная информация о локализации приложений есть в MSDN. |
| Автор: IApple 21.1.2008, 15:21 |
| 1. Почему есть два выбора и чем они отличаются? Russian Russian (Russia) |
| Автор: CYBERDREAM 21.1.2008, 18:17 |
| Приветствую IApple Может тоже пригодится: http://rsdn.ru/article/devtools/ResourceOnly.xml |
| Автор: bogys 21.1.2008, 18:40 |
| http://www.intuit.ru/department/pl/visualcsharp/8/6.html |
| Автор: IApple 21.1.2008, 19:52 |
| Во-первых, спасибо всем, кто откликнулся. 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 прекрасно они прогу закатали и я рад (за них), что они разобрались... проблема, что и я хотел разобраться в вопросе, а не найти "черный ящик". |
| Автор: mr.DUDA 22.1.2008, 18:01 |
| Russian и Russian (Russia) соответствуют "ru" и "ru-RU", если я не ошибаюсь. Подробнее читайте в мсдн. |
| Автор: jonie 23.1.2008, 00:15 |
| почитайте книгу вроде "C#2005 Для Профессионалов" WroxPrexx более того глава про локализацию доступна всем нахаляву http://rsdn.ru/article/dotnet/csprof2005_localization.xml |