/// <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);
            }