/// <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); }
/// <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)); } }
/// <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); } }
/// <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); }
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); }
/// <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); } }
/// <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; }
private void languagesManager_ChangeLanguage(OneLanguage newLang) { //this.Content = newLang.Name; //this.tbData.Text = newLang.Name; }