Языковые настройки приложения - C#
Формулировка задачи:
как лучше всего реализовать систему языковых настроек в приложении? т.е. чтобы в программе можно было менять язык интерфейса? понятно что в файле хранить, но во первых как проще всего сделать чтобы меньше кода было при сохранении / загрузке? т.е. если для кучи контролов прописывать textBox.Text = array[0] и т.п. то это как то коряво имхо... а как лучше?
Решение задачи: «Языковые настройки приложения»
textual
Листинг программы
private void LocalizeForm(Form thisForm, CultureInfo cultureInfo)
{
Type formType = thisForm.GetType();
ResourceManager resManager = new ResourceManager(formType);
string[] properties = { "Text", "Location" };
foreach (string propertyName in properties)
{
foreach (FieldInfo fieldInfo in formType.GetFields(BindingFlags.NonPublic | BindingFlags.DeclaredOnly | BindingFlags.Instance))
{
PropertyInfo propInfo = fieldInfo.FieldType.GetProperty(propertyName);
if (propInfo == null)
continue;
object objProperty = resManager.GetObject(fieldInfo.Name + '.' + propInfo.Name, cultureInfo);
if (objProperty == null)
continue;
object field = fieldInfo.GetValue(thisForm);
if (field != null)
propInfo.SetValue(field, objProperty, null);
}
PropertyInfo propertyInfo_ = formType.GetProperty(propertyName);
if (propertyInfo_ == null)
continue;
object obProperty = resManager.GetObject("$this." + propertyInfo_.Name, cultureInfo);
if (obProperty == null)
continue;
propertyInfo_.SetValue(thisForm, obProperty, null);
}
}