コード例 #1
0
 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);
     }
 }
コード例 #2
0
        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;
            }
        }
コード例 #3
0
        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;
            }
        }