示例#1
0
        /// <summary>
        /// Создаёт объект языка на основе словаря ресурсов
        /// </summary>
        /// <param name="rdOneLanguage">Словарь ресурсов на основании которого будет создан новый объект языка</param>
        /// <returns></returns>
        public OneLanguage CreateOneLanguage(ResourceDictionary rdOneLanguage)
        {
            OneLanguage lang = new OneLanguage();

            lang.ResourceDictionary = rdOneLanguage;

            if (rdOneLanguage.Contains("LanguageDisplayName"))
            {
                lang.Name = (string)rdOneLanguage["LanguageDisplayName"];
            }

            if (rdOneLanguage.Contains("LanguageCulture"))
            {
                string cult = (string)rdOneLanguage["LanguageCulture"];
                foreach (var c in CultureInfo.GetCultures(CultureTypes.AllCultures))
                {
                    if (c.Name == cult)
                    {
                        lang.Culture = new CultureInfo(c.Name);
                    }
                }
            }

            return(lang);
        }
示例#2
0
        /// <summary>
        /// Устанавливает первоначальные значения языка в приложении. Используется при старте приложения
        /// </summary>
        public static void Init()
        {
            if (string.IsNullOrEmpty(Properties.Settings.Default.CurrLang))
            {
                CultureInfo currCulture = CultureInfo.CurrentUICulture;

                LanguagesManager lm = new LanguagesManager();

                List <OneLanguage> langs = lm.GetAllOneLanguages();

                foreach (var lang in langs)
                {
                    if (lang.Culture != null)
                    {
                        if (currCulture.Name == lang.Culture.Name)
                        {
                            lm.ChangeOneLanguage(lang);
                        }
                    }
                }
            }
            else
            {
                LanguagesManager lm = new LanguagesManager();
                lm.ChangeOneLanguage(OneLanguage.FromName(Properties.Settings.Default.CurrLang));
            }
        }
示例#3
0
        /// <summary>
        /// Изминения языка приложения
        /// </summary>
        /// <param name="lang">новый язык приложения</param>
        public void ChangeOneLanguage(OneLanguage lang)
        {
            Properties.Settings.Default.CurrLang = lang.Name;
            Properties.Settings.Default.Save();

            App.Current.Resources.MergedDictionaries.Add(lang.ResourceDictionary);

            if (ChangeLanguage != null)
            {
                ChangeLanguage(lang);
            }
        }
示例#4
0
        /// <summary>
        /// Получить список всех доступных языков, которые может использовать программа
        /// </summary>
        /// <returns></returns>
        public List <OneLanguage> GetAllOneLanguages()
        {
            List <OneLanguage> OneLanguages = new List <OneLanguage>();

            OneLanguages.Add(GetEnLenguage());

            OneLanguage lang = null;

            DirectoryInfo diLanguagesDir = new DirectoryInfo(languagesDirPath);

            foreach (var f in diLanguagesDir.GetFiles("*.xaml"))
            {
                System.Windows.ResourceDictionary rd = new System.Windows.ResourceDictionary();
                rd.Source = new Uri(f.FullName);
                lang      = CreateOneLanguage(rd);
                OneLanguages.Add(lang);
            }

            return(OneLanguages);
        }
示例#5
0
        public override bool Equals(object obj)
        {
            if (obj.GetType() == typeof(OneLanguage))
            {
                OneLanguage lang = (OneLanguage)obj;

                if (this.ResourceDictionary.Source == lang.ResourceDictionary.Source)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            else
            {
                return(false);
            }

            //return base.Equals(obj);
        }
示例#6
0
        /// <summary>
        /// Позволяет создать язык на основе имени. (Язык с таким именем
        /// должен быть в списке языков LanguagesManager.GetAllOneLanguages)
        /// </summary>
        /// <param name="langName"></param>
        /// <returns></returns>
        public static OneLanguage FromName(string langName)
        {
            LanguagesManager lm     = new LanguagesManager();
            var         langs       = lm.GetAllOneLanguages();
            OneLanguage oneLanguage = null;

            foreach (var lang in langs)
            {
                if (lang.Name == langName)
                {
                    oneLanguage = lang;
                }
            }

            if (oneLanguage == null)
            {
                return(lm.GetEnLenguage());
            }
            else
            {
                return(oneLanguage);
            }
        }
示例#7
0
        /// <summary>
        /// Создаёт объект языка на основе словаря ресурсов
        /// </summary>
        /// <param name="rdOneLanguage">Словарь ресурсов на основании которого будет создан новый объект языка</param>
        /// <returns></returns>
        public OneLanguage CreateOneLanguage(ResourceDictionary rdOneLanguage)
        {
            OneLanguage lang = new OneLanguage();
            lang.ResourceDictionary = rdOneLanguage;

            if (rdOneLanguage.Contains("LanguageDisplayName"))
            {
                lang.Name = (string)rdOneLanguage["LanguageDisplayName"];
            }

            if (rdOneLanguage.Contains("LanguageCulture"))
            {
                string cult = (string)rdOneLanguage["LanguageCulture"];
                foreach (var c in CultureInfo.GetCultures(CultureTypes.AllCultures))
                {
                    if (c.Name == cult)
                    {
                       lang.Culture = new CultureInfo(c.Name);
                    }
                }
            }

            return lang;
        }
示例#8
0
        /// <summary>
        /// Изминения языка приложения
        /// </summary>
        /// <param name="lang">новый язык приложения</param>
        public void ChangeOneLanguage(OneLanguage lang)
        {
            Properties.Settings.Default.CurrLang = lang.Name;
            Properties.Settings.Default.Save();

            App.Current.Resources.MergedDictionaries.Add(lang.ResourceDictionary);

            if (ChangeLanguage != null)
            {
                ChangeLanguage(lang);
            }
        }
 private void languagesManager_ChangeLanguage(OneLanguage newLang)
 {
     //this.Content = newLang.Name;
     //this.tbData.Text = newLang.Name;
 }