Pull to refresh
0
0

User

Send message
Немного подробнее: можно создать несколько .resx-файлов, для каждой из культур, и там будут содержаться соответствующие свойства контролов для каждого из языков: Text, Size, Position и т.д. При переключении языка приложения(т.е. когда пользователь инициализирует событие переключения) необходимо выполнить:

Thread.CurrentThread.CurrentUICulture = new CultureInfo(«ru-RU»);

следующий шаг — из менеджера ресурсов получать соответствующие свойства:

ResourceManager LocRM = new ResourceManager(«WindowsApplication1.WinFormStrings»,typeof(Form1).Assembly);
Label1.Text = LocRM.GetString(«Label1.Text»), Thread.CurrentThread.CurrentUICulture);
Label2.Text = LocRM.GetString(«Label2.Text»), Thread.CurrentThread.CurrentUICulture);

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

//метод для установки локализации формы «на лету»
public void localizeForm(Form someForm, CultureInfo cultureInfo)
{
Type someFormType = someForm.GetType();
ResourceManager res = new ResourceManager(someFormType);

//зададим список свойств объектов, которые будем извлекать из файла ресурсов
string[] properties = { «Text», «Location» };

foreach (string propertyName in properties)
{
//выбор всех свойств класса формы, извлечение из файла ресурсов значения, и их установка
foreach (FieldInfo fieldInfo in someFormType.GetFields(BindingFlags.NonPublic | BindingFlags.DeclaredOnly | BindingFlags.Instance))
{
PropertyInfo propertyInfo = fieldInfo.FieldType.GetProperty(propertyName);
if (propertyInfo == null)
continue;
object objProperty = res.GetObject(fieldInfo.Name + '.' + propertyInfo.Name, cultureInfo);
if (objProperty == null) continue;
object field = fieldInfo.GetValue(someForm);
if (field != null)
propertyInfo.SetValue(field, objProperty, null);
}
//код для установки свойств самих форм
PropertyInfo propertyInfo1 = someFormType.GetProperty(propertyName);
if (propertyInfo1 == null)
continue;
object objProperty1 = res.GetObject("$this." + propertyInfo1.Name, cultureInfo);
if (objProperty1 == null) continue;
propertyInfo1.SetValue(someForm, objProperty1, null);
}
}

В результате, с помощью небольших затрат можно менять «на лету» язык приложения.
Для WinForms в любом случае возможно «на лету» переключать язык, т.е. менять картинки, надписи, их размер и расположение. В своем блоге я приводил пример с исходными кодами как это сделать и автоматизировать при помощи рефлексии.

Отличная статья, спасибо! Аналогично Вашей ситуации, некоторое время пытался практиковать тайм-менеджмент, а именно по методологии Архангельського. И также убедился, что универсальных систем управления временем вообще не существует, нужно выработать свою стратегию. Правда, еще не подошел к какой-то определенной системе, удобной для меня, и пока еще не написал свою программку для этого )))
В целом я с Вами согласен, но только патентовать необходимо конкретные реализации, а не идеи и парадигмы.
*пошел учиться распараллеливать
такая вот ddos-атака получается
я сейчас заплачу :'( Прямо описана моя ситуация, внутренние переживания.
Спасибо, статья заставила задуматься
Всегда пожалуйста, с удовольствием почитаю. reddit.com еще может подойти
slashdot.org почему-то приходит на ум сразу
Предлагаю провести такой же опрос, но на русском и для русскоязычной аудитории. Результаты скорее всего будут противоположными, хотя очень интересно было бы сраавнить
А о джойстиках Sonny Ericsson это Вы зря — я на своем К800i нарадоваться джойстиком не мог
аналогично, еще rentacoder.com дает ощутимый результат
Да, не думал что после ВУЗа меня коснется такие, на первый взгляд, сугубо теоретические вещи, как коды Рида-Соломона. Но буквально сразу же, при написании своих фреймворков для формирования штрих-кодов, вплотную с ними столкнулся для восстановления ошибок печати/хранения и т.п. Потрясающий эффект! Например удавалось считывать значения штрихкода PDF417 после отрыва более половины площади штрихкода!
Нет, наши домохозяйки настолько суровы, что как правило с удовольствием пользуются симпатичной сборкой вроде HotCoffee

Information

Rating
Does not participate
Registered
Activity