/// <summary> /// Get all language text /// </summary> /// <returns></returns> public IDictionary <string, string> Get() { IDictionary <string, string> ret = new Dictionary <string, string>() { }; //add base text IDictionary <string, string> defaulttext = new Dictionary <string, string>() { }; DGUIGHFLanguageBase dguightlanguagedefault = (DGUIGHFLanguageBase)Activator.CreateInstance(typeof(DGUIGHFLanguageBase)); foreach (FieldInfo field in dguightlanguagedefault.GetType().GetFields()) { if (field.FieldType == typeof(string)) { string key = field.Name; string value = field.GetValue(dguightlanguagedefault).ToString(); if (!defaulttext.ContainsKey(key)) { defaulttext.Add(key, value); } if (!ret.ContainsKey("Form-" + key)) { if (_defaulttext.ContainsKey(key)) { ret.Add("Form-" + key, _defaulttext[key]); } else { ret.Add("Form-" + key, value); } } } } //add components text foreach (LangComponents langcomponent in _langcomponents) { string key = langcomponent.languageKey; string value = langcomponent.value; if (!ret.ContainsKey(key)) { ret.Add(key, value); } } //add additional language text foreach (KeyValuePair <string, string> entry in _additionaltext) { if (!ret.ContainsKey(entry.Key)) { ret.Add(entry.Key, entry.Value); } } //add form text foreach (FieldInfo genericdformlanguage in _sender.GetType().GetFields()) { object genericformlanguageinstance = genericdformlanguage.GetValue(_sender); if (genericformlanguageinstance.GetType().GetInterfaces().Contains(typeof(IDGUIGHFLanguage))) { foreach (FieldInfo field in genericformlanguageinstance.GetType().GetFields()) { if (field.FieldType == typeof(string)) { string key = field.Name; string value = field.GetValue(genericformlanguageinstance).ToString(); bool addorupdate = false; if (!defaulttext.ContainsKey(key)) { addorupdate = true; } else { if (_defaulttext.ContainsKey(key)) { if (value != defaulttext[key] && value != _defaulttext[key]) { addorupdate = true; } } else { if (value != defaulttext[key]) { addorupdate = true; } } } if (addorupdate) { string keyprefix = "Text-"; if (_sender.GetType().IsSubclassOf(typeof(DGUIGHFForm)) || _sender.GetType().IsSubclassOf(typeof(DGUIGHFFormMain))) { keyprefix = "Form-"; } if (!ret.ContainsKey(_sender.GetType().Name + "-" + key)) { ret.Add(keyprefix + _sender.GetType().Name + "-" + key, value); } else { ret[keyprefix + _sender.GetType().Name + "-" + key] = value; } } } } } } return(ret); }
/// <summary> /// Set all language text /// </summary> /// <param name="language"></param> /// <returns></returns> public bool Load(IDictionary <string, string> language) { bool ret = true; //add base text IDictionary <string, string> defaulttext = new Dictionary <string, string>() { }; DGUIGHFLanguageBase dguightlanguagedefault = (DGUIGHFLanguageBase)Activator.CreateInstance(typeof(DGUIGHFLanguageBase)); foreach (FieldInfo field in dguightlanguagedefault.GetType().GetFields()) { if (field.FieldType == typeof(string)) { string key = field.Name; string value = field.GetValue(dguightlanguagedefault).ToString(); if (!defaulttext.ContainsKey(key)) { defaulttext.Add(key, value); } if (!_defaulttext.ContainsKey(key)) { _defaulttext.Add(key, value); } } } //set form text foreach (FieldInfo genericformlanguage in _sender.GetType().GetFields()) { object genericformlanguageinstance = genericformlanguage.GetValue(_sender); if (genericformlanguageinstance.GetType().GetInterfaces().Contains(typeof(IDGUIGHFLanguage))) { foreach (FieldInfo field in genericformlanguageinstance.GetType().GetFields()) { if (field.FieldType == typeof(string)) { string key = field.Name; string value = field.GetValue(genericformlanguageinstance).ToString(); string keyprefix = "Text-"; if (_sender.GetType().IsSubclassOf(typeof(DGUIGHFForm)) || _sender.GetType().IsSubclassOf(typeof(DGUIGHFFormMain))) { keyprefix = "Form-"; } bool update = false; if (!defaulttext.ContainsKey(key)) { if (language.ContainsKey(keyprefix + _sender.GetType().Name + "-" + key)) { update = true; value = language[keyprefix + _sender.GetType().Name + "-" + key]; } } else { if (language.ContainsKey(keyprefix + _sender.GetType().Name + "-" + key)) { update = true; value = language[keyprefix + _sender.GetType().Name + "-" + key]; } else if (language.ContainsKey(keyprefix + key)) { update = true; value = language[keyprefix + key]; //override global language text if (_defaulttext.ContainsKey(key)) { _defaulttext[key] = language[keyprefix + key]; } } } if (update) { field.SetValue(genericformlanguageinstance, value); } } } } } //set components text for (int i = 0; i < _langcomponents.Count; i++) { LangComponents langcomponent = _langcomponents[i]; if (language.ContainsKey(langcomponent.languageKey)) { langcomponent.value = language[langcomponent.languageKey]; try { //update component text langcomponent.propertyInfoValue.SetValue(langcomponent.control, language[langcomponent.languageKey], null); //update component in list _langcomponents[i] = langcomponent; } catch { } } } return(ret); }