public static void SetLanguageDictionary(bool local, LanguageApp app) { if (local) { SetLanguageDictionary(Thread.CurrentThread.CurrentCulture.ToString(), app); } else { var lang = Settings.Language; SetLanguageDictionary(DoesCultureExist(lang) ? lang : "en-US", app); } }
private static void SetLanguageDictionary(string cultureInfo, LanguageApp app) { var dict = new ResourceDictionary(); Uri uri = null; var localpath = string.Empty; var filenotfound = false; switch (app) { case LanguageApp.GSServer: switch (cultureInfo) { case "en-US": uri = new Uri("GS.Shared;component/Languages/StringResServer_en-us.xaml", UriKind.Relative); break; default: localpath = new Uri(Path.Combine(_directoryPath, $"{gsServer}{cultureInfo}.xaml")).LocalPath; if (!File.Exists(localpath)) { filenotfound = true; uri = new Uri("GS.Shared;component/Languages/StringResServer_en-us.xaml", UriKind.Relative); } break; } break; case LanguageApp.GSChartViewer: switch (cultureInfo) { case "en-US": uri = new Uri("GS.Shared;component/Languages/StringResChart_en-us.xaml", UriKind.Relative); break; default: localpath = new Uri(Path.Combine(_directoryPath, $"{gsChart}{cultureInfo}.xaml")).LocalPath; if (!File.Exists(localpath)) { filenotfound = true; uri = new Uri("GS.Shared;component/Languages/StringResChart_en-us.xaml", UriKind.Relative); } break; } break; case LanguageApp.GSUtilities: switch (cultureInfo) { case "en-US": uri = new Uri("GS.Shared;component/Languages/StringResUtil_en-us.xaml", UriKind.Relative); break; default: localpath = new Uri(Path.Combine(_directoryPath, $"{gsUtil}{cultureInfo}.xaml")).LocalPath; if (!File.Exists(localpath)) { filenotfound = true; uri = new Uri("GS.Shared;component/Languages/StringResUtil_en-us.xaml", UriKind.Relative); } break; } break; } switch (cultureInfo) { case "en-US": dict.Source = uri; if (dict.Source == null) { throw new Exception("Language source missing"); } Application.Current.Resources.MergedDictionaries.Add(dict); break; default: if (filenotfound) { dict.Source = uri; if (dict.Source == null) { throw new Exception("Language source missing"); } Application.Current.Resources.MergedDictionaries.Add(dict); } else { using (var fs = new FileStream(localpath, FileMode.Open, FileAccess.Read)) { var dic = (ResourceDictionary)XamlReader.Load(fs); //Resources.MergedDictionaries.Clear(); Application.Current.Resources.MergedDictionaries.Add(dic); } } break; } }
private static void SetLanguageDictionary(string cultureInfo, LanguageApp app) { var dict = new ResourceDictionary(); Uri uri = null; var localpath = string.Empty; var filenotfound = false; switch (app) { case LanguageApp.GSPoint3D: switch (cultureInfo) { case "en-US": uri = new Uri("GS.Point3D;component/Domain/StringResPoint3D_en-US.xaml", UriKind.Relative); break; default: localpath = new Uri(Path.Combine(_directoryPath, $"{Application.Current.Resources["FileName"]}_{cultureInfo}.xaml")).LocalPath; if (!File.Exists(localpath)) { filenotfound = true; uri = new Uri("GS.Point3D;component/Domain/StringResPoint3D_en-US.xaml", UriKind.Relative); } break; } break; default: throw new ArgumentOutOfRangeException(nameof(app), app, null); } switch (cultureInfo) { case "en-US": dict.Source = uri; if (dict.Source == null) { throw new Exception("Language source missing"); } Application.Current.Resources.MergedDictionaries.Add(dict); break; default: if (filenotfound) { dict.Source = uri; if (dict.Source == null) { throw new Exception("Language source missing"); } Application.Current.Resources.MergedDictionaries.Add(dict); } else { using (var fs = new FileStream(localpath, FileMode.Open, FileAccess.Read)) { var dic = (ResourceDictionary)XamlReader.Load(fs); //Resources.MergedDictionaries.Clear(); Application.Current.Resources.MergedDictionaries.Add(dic); } } break; } }