/// <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>() { }; GenericDataRepositoryLanguageBase genericdatarepositorylanguagedefault = (GenericDataRepositoryLanguageBase)Activator.CreateInstance(typeof(GenericDataRepositoryLanguageBase)); foreach (FieldInfo field in genericdatarepositorylanguagedefault.GetType().GetFields()) { if (field.FieldType == typeof(string)) { string key = field.Name; string value = field.GetValue(genericdatarepositorylanguagedefault).ToString(); if (!defaulttext.ContainsKey(key)) { defaulttext.Add(key, value); } if (!ret.ContainsKey("DataModel-" + key)) { if (_defaulttext.ContainsKey(key)) { ret.Add("DataModel-" + key, _defaulttext[key]); } else { ret.Add("DataModel-" + key, value); } } } } //add repository text foreach (PropertyInfo genericdatarepository in _sender.GetType().GetProperties()) { if (genericdatarepository.PropertyType.BaseType.Name.ToString().StartsWith("GenericDataRepository")) { object genericdatarepositoryinstance = genericdatarepository.GetValue(_sender, null); foreach (FieldInfo genericdatarepositorylanguage in genericdatarepositoryinstance.GetType().GetFields()) { object genericdatarepositorylanguageinstance = genericdatarepositorylanguage.GetValue(genericdatarepositoryinstance); if (genericdatarepositorylanguageinstance.GetType().GetInterfaces().Contains(typeof(IGenericDataRepositoryLanguage))) { foreach (FieldInfo field in genericdatarepositorylanguageinstance.GetType().GetFields()) { if (field.FieldType == typeof(string)) { string key = field.Name; string value = field.GetValue(genericdatarepositorylanguageinstance).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) { if (!ret.ContainsKey(genericdatarepository.Name + "-" + key)) { ret.Add("DataModel-" + genericdatarepository.Name + "-" + key, value); } else { ret["DataModel-" + genericdatarepository.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>() { }; GenericDataRepositoryLanguageBase genericdatarepositorylanguagedefault = (GenericDataRepositoryLanguageBase)Activator.CreateInstance(typeof(GenericDataRepositoryLanguageBase)); foreach (FieldInfo field in genericdatarepositorylanguagedefault.GetType().GetFields()) { if (field.FieldType == typeof(string)) { string key = field.Name; string value = field.GetValue(genericdatarepositorylanguagedefault).ToString(); if (!defaulttext.ContainsKey(key)) { defaulttext.Add(key, value); } if (!_defaulttext.ContainsKey(key)) { _defaulttext.Add(key, value); } } } //set repository text foreach (PropertyInfo genericdatarepository in _sender.GetType().GetProperties()) { if (genericdatarepository.PropertyType.BaseType.Name.ToString().StartsWith("GenericDataRepository")) { object genericdatarepositoryinstance = genericdatarepository.GetValue(_sender, null); var x = genericdatarepositoryinstance.GetType().GetFields(); foreach (FieldInfo genericdatarepositorylanguage in genericdatarepositoryinstance.GetType().GetFields()) { object genericdatarepositorylanguageinstance = genericdatarepositorylanguage.GetValue(genericdatarepositoryinstance); if (genericdatarepositorylanguageinstance.GetType().GetInterfaces().Contains(typeof(IGenericDataRepositoryLanguage))) { foreach (FieldInfo field in genericdatarepositorylanguageinstance.GetType().GetFields()) { if (field.FieldType == typeof(string)) { string key = field.Name; string value = field.GetValue(genericdatarepositorylanguageinstance).ToString(); bool update = false; if (!defaulttext.ContainsKey(key)) { if (language.ContainsKey("DataModel-" + genericdatarepository.Name + "-" + key)) { update = true; value = language["DataModel-" + genericdatarepository.Name + "-" + key]; } } else { if (language.ContainsKey("DataModel-" + genericdatarepository.Name + "-" + key)) { update = true; value = language["DataModel-" + genericdatarepository.Name + "-" + key]; } else if (language.ContainsKey("DataModel-" + key)) { update = true; value = language["DataModel-" + key]; //override global language text if (_defaulttext.ContainsKey(key)) { _defaulttext[key] = language["DataModel-" + key]; } } } if (update) { field.SetValue(genericdatarepositorylanguageinstance, value); } } } } } } } return(ret); }