ソースを参照

compdfkit(win) - 优化读写语言设置的逻辑

weixiangjie 1 年間 前
コミット
13302c382b

+ 1 - 1
Demo/Examples/PDFViewer/App.config

@@ -29,7 +29,7 @@
             <setting name="DocumentAuthor" serializeAs="String">
                 <value>ComPDFKit</value>
             </setting>
-            <setting name="Language" serializeAs="String">
+            <setting name="Cultrue" serializeAs="String">
                 <value />
             </setting>
             <setting name="LastOpenedFiles" serializeAs="String">

+ 10 - 17
Demo/Examples/PDFViewer/App.xaml.cs

@@ -24,36 +24,29 @@ namespace PDFViewer
     public partial class App: Application
     {
         public static bool DefaultPDFLoaded = false;
-        public static string CurrentLanguage = Settings.Default.Language;
-        public static Dictionary<string, string> Languages= new Dictionary<string, string>()
+        public static string CurrentCulture = Settings.Default.Cultrue;
+        public static List<string> SupportedCultureList= new List<string>()
         {
-            {"English","en-US"}, {"简体中文","zh-CN"}
+            "en-US", "zh-CN"
         };
         public static FilePathList OpenedFilePathList = new FilePathList();
         public static ResourceManager MainResourceManager = new ResourceManager("PDFViewer.Strings.SettingDialog", Assembly.GetExecutingAssembly());
 
         protected override void OnStartup(StartupEventArgs e)
         {
-            string currentCulture;
-            if (string.IsNullOrEmpty(CurrentLanguage))
+            if (string.IsNullOrEmpty(CurrentCulture))
             {
-                currentCulture = CultureInfo.CurrentCulture.Name;
-                CurrentLanguage = Languages.FirstOrDefault(x => x.Value == currentCulture).Key;
-                if (!Languages.ContainsValue(currentCulture))
+                CurrentCulture = CultureInfo.CurrentCulture.Name;
+                if (!SupportedCultureList.Contains(CurrentCulture))
                 {
-                    CurrentLanguage = "English";
-                    currentCulture = "en-US";
+                    CurrentCulture = "en-US";
                 }
-                Settings.Default.Language = CurrentLanguage;
+                Settings.Default.Cultrue = CurrentCulture;
                 Settings.Default.Save();
             }
-            else
-            {
-                currentCulture = Languages.TryGetValue(CurrentLanguage, out currentCulture) ? currentCulture : "en-US";
-            }
             
-            Thread.CurrentThread.CurrentUICulture = new CultureInfo(currentCulture);
-            Thread.CurrentThread.CurrentCulture = new CultureInfo(currentCulture);
+            Thread.CurrentThread.CurrentUICulture = new CultureInfo(CurrentCulture);
+            Thread.CurrentThread.CurrentCulture = new CultureInfo(CurrentCulture);
             base.OnStartup(e);
             LicenseVerify();
             FileHistoryHelper<PDFFileInfo>.Instance.LoadHistory();

+ 3 - 3
Demo/Examples/PDFViewer/Properties/Settings.Designer.cs

@@ -61,12 +61,12 @@ namespace PDFViewer.Properties {
         [global::System.Configuration.UserScopedSettingAttribute()]
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
         [global::System.Configuration.DefaultSettingValueAttribute("")]
-        public string Language {
+        public string Cultrue {
             get {
-                return ((string)(this["Language"]));
+                return ((string)(this["Cultrue"]));
             }
             set {
-                this["Language"] = value;
+                this["Cultrue"] = value;
             }
         }
         

+ 1 - 1
Demo/Examples/PDFViewer/Properties/Settings.settings

@@ -11,7 +11,7 @@
     <Setting Name="DocumentAuthor" Type="System.String" Scope="User">
       <Value Profile="(Default)">ComPDFKit</Value>
     </Setting>
-    <Setting Name="Language" Type="System.String" Scope="User">
+    <Setting Name="Cultrue" Type="System.String" Scope="User">
       <Value Profile="(Default)" />
     </Setting>
     <Setting Name="LastOpenedFiles" Type="System.Collections.Specialized.StringCollection" Scope="User">

+ 2 - 2
Demo/Examples/PDFViewer/SettingsDialog.xaml

@@ -118,8 +118,8 @@
             <Grid Height="32">
                 <TextBlock Text="{Binding  ConverterParameter=Setting_Language, Converter={StaticResource ResourceConverter}}" FontSize="14" FontWeight="DemiBold" FontFamily="Microsoft YaHei" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
                 <ComboBox x:Name="LanguageCmb" SelectionChanged="LanguageCmb_SelectionChanged" Style="{StaticResource ComboBoxStyle1}" HorizontalAlignment="Right" Width="130">
-                    <ComboBoxItem>English</ComboBoxItem>
-                    <ComboBoxItem>简体中文</ComboBoxItem>
+                    <ComboBoxItem Tag="en-US">English</ComboBoxItem>
+                    <ComboBoxItem Tag="zh-CN">简体中文</ComboBoxItem>
                 </ComboBox>
             </Grid>
         </StackPanel>

+ 11 - 6
Demo/Examples/PDFViewer/SettingsDialog.xaml.cs

@@ -40,9 +40,14 @@ namespace PDFViewer
             HighlightFormTog.IsChecked = Properties.Settings.Default.IsHighlightFormArea;
             HighlightLinkTog.IsChecked = Properties.Settings.Default.IsHighlightLinkArea;
             AuthorTxb.Text = Properties.Settings.Default.DocumentAuthor;
-            foreach (ComboBoxItem  item in LanguageCmb.Items)
+            SelectCurrentLanguage();
+        }
+        
+        private void SelectCurrentLanguage()
+        {
+            foreach (ComboBoxItem item in LanguageCmb.Items)
             {
-                if (item.Content.ToString() == App.CurrentLanguage)
+                if (item.Tag.ToString() == App.CurrentCulture)
                 {
                     item.IsSelected = true;
                 }
@@ -68,8 +73,8 @@ namespace PDFViewer
 
         private void LanguageCmb_SelectionChanged(object sender, SelectionChangedEventArgs e)
         {
-            string language = ((ComboBoxItem)LanguageCmb.SelectedItem).Content.ToString();
-            if (language.Equals(App.CurrentLanguage))
+            string language = ((ComboBoxItem)LanguageCmb.SelectedItem).Tag.ToString();
+            if (language.Equals(App.CurrentCulture))
             {
                 return;
             }
@@ -79,13 +84,13 @@ namespace PDFViewer
                 MessageBoxImage.Question);
             if (result == MessageBoxResult.Yes)
             {
-                Properties.Settings.Default.Language = language;
+                Properties.Settings.Default.Cultrue = language;
                 Properties.Settings.Default.Save();
                 LanguageChanged?.Invoke(this, language);
             }
             else
             {
-                LanguageCmb.SelectedIndex = 0;
+                SelectCurrentLanguage();
             }
         }
     }