Parcourir la source

compdfkit(win) - 部分文案资源

weixiangjie il y a 1 an
Parent
commit
633de2f721
84 fichiers modifiés avec 5490 ajouts et 547 suppressions
  1. 1 1
      Demo/Examples/Compdfkit_Tools/Annotation/PDFAnnotationData/CPDFAnnotationData.cs
  2. 7 1
      Demo/Examples/Compdfkit_Tools/Annotation/PDFAnnotationPanel/PDFAnnotationControl/CPDFAnnotationControl.xaml
  3. 2 2
      Demo/Examples/Compdfkit_Tools/Annotation/PDFAnnotationPanel/PDFAnnotationControl/CPDFAnnotationControl.xaml.cs
  4. 13 14
      Demo/Examples/Compdfkit_Tools/Annotation/PDFAnnotationPanel/PDFAnnotationUI/CPDFCreateSignatureDialog.xaml
  5. 2 2
      Demo/Examples/Compdfkit_Tools/Annotation/PDFAnnotationPanel/PDFAnnotationUI/CPDFCreateSignatureDialog.xaml.cs
  6. 13 13
      Demo/Examples/Compdfkit_Tools/Annotation/PDFAnnotationPanel/PDFAnnotationUI/CPDFCreateStampDialog.xaml
  7. 10 4
      Demo/Examples/Compdfkit_Tools/Annotation/PDFAnnotationPanel/PDFAnnotationUI/CPDFCreateStampDialog.xaml.cs
  8. 10 5
      Demo/Examples/Compdfkit_Tools/Annotation/PDFAnnotationPanel/PDFAnnotationUI/CPDFFreeTextUI.xaml
  9. 6 5
      Demo/Examples/Compdfkit_Tools/Annotation/PDFAnnotationPanel/PDFAnnotationUI/CPDFFreehandUI.xaml
  10. 7 6
      Demo/Examples/Compdfkit_Tools/Annotation/PDFAnnotationPanel/PDFAnnotationUI/CPDFLinkUI.xaml
  11. 2 2
      Demo/Examples/Compdfkit_Tools/Annotation/PDFAnnotationPanel/PDFAnnotationUI/CPDFLinkUI.xaml.cs
  12. 8 3
      Demo/Examples/Compdfkit_Tools/Annotation/PDFAnnotationPanel/PDFAnnotationUI/CPDFMarkupUI.xaml
  13. 5 4
      Demo/Examples/Compdfkit_Tools/Annotation/PDFAnnotationPanel/PDFAnnotationUI/CPDFMarkupUI.xaml.cs
  14. 8 3
      Demo/Examples/Compdfkit_Tools/Annotation/PDFAnnotationPanel/PDFAnnotationUI/CPDFNoteUI.xaml
  15. 16 7
      Demo/Examples/Compdfkit_Tools/Annotation/PDFAnnotationPanel/PDFAnnotationUI/CPDFShapeUI.xaml
  16. 5 4
      Demo/Examples/Compdfkit_Tools/Annotation/PDFAnnotationPanel/PDFAnnotationUI/CPDFShapeUI.xaml.cs
  17. 4 2
      Demo/Examples/Compdfkit_Tools/Annotation/PDFAnnotationPanel/PDFAnnotationUI/CPDFSignatureUI.xaml
  18. 8 6
      Demo/Examples/Compdfkit_Tools/Annotation/PDFAnnotationPanel/PDFAnnotationUI/CPDFStampUI.xaml
  19. 1 1
      Demo/Examples/Compdfkit_Tools/Asset/Styles/ComboBoxStyle.xaml
  20. 3 2
      Demo/Examples/Compdfkit_Tools/Common/BarControl/CPDFAnnotationBarControl.xaml.cs
  21. 11 7
      Demo/Examples/Compdfkit_Tools/Common/BarControl/CPDFDigitalSignatureBarControl.xaml.cs
  22. 44 2
      Demo/Examples/Compdfkit_Tools/Common/BarControl/CPDFPageEditBarControl.xaml.cs
  23. 33 30
      Demo/Examples/Compdfkit_Tools/Common/BarControl/FormBarControl.xaml.cs
  24. 100 0
      Demo/Examples/Compdfkit_Tools/Common/Convert/LanguageResourceConverter.cs
  25. 5 1
      Demo/Examples/Compdfkit_Tools/Common/Helper/LanguageHelper.cs
  26. 11 11
      Demo/Examples/Compdfkit_Tools/Common/PropertyControl/PDFArrow/CPDFArrowUI.xaml
  27. 12 8
      Demo/Examples/Compdfkit_Tools/Common/PropertyControl/PDFFont/CPDFFontUI.xaml.cs
  28. 40 3
      Demo/Examples/Compdfkit_Tools/Compdfkit_Tools.csproj
  29. 13 11
      Demo/Examples/Compdfkit_Tools/DigitalSignature/AddCertificationControl/AddCertificationControl.xaml
  30. 1 1
      Demo/Examples/Compdfkit_Tools/DigitalSignature/AddCertificationControl/AddCertificationDialog.xaml
  31. 16 16
      Demo/Examples/Compdfkit_Tools/DigitalSignature/AddCertificationControl/AddCertificationDialog.xaml.cs
  32. 15 14
      Demo/Examples/Compdfkit_Tools/DigitalSignature/AddCertificationControl/AddCustomCertificationControl.xaml
  33. 3 4
      Demo/Examples/Compdfkit_Tools/DigitalSignature/AddCertificationControl/AddCustomCertificationControl.xaml.cs
  34. 10 9
      Demo/Examples/Compdfkit_Tools/DigitalSignature/AddCertificationControl/AddExistedCertificationControl.xaml
  35. 12 11
      Demo/Examples/Compdfkit_Tools/DigitalSignature/AddCertificationControl/SaveCerficateControl.xaml
  36. 5 5
      Demo/Examples/Compdfkit_Tools/DigitalSignature/AddCertificationControl/SaveCerficateControl.xaml.cs
  37. 25 24
      Demo/Examples/Compdfkit_Tools/DigitalSignature/FillDigitalSignatureControl/FillDigitalSignatureControl.xaml
  38. 1 1
      Demo/Examples/Compdfkit_Tools/DigitalSignature/FillDigitalSignatureControl/FillDigitalSignatureDialog.xaml
  39. 2 0
      Demo/Examples/Compdfkit_Tools/DigitalSignature/FillDigitalSignatureControl/FillDigitalSignatureDialog.xaml.cs
  40. 7 1
      Demo/Examples/Compdfkit_Tools/DigitalSignature/SignatureStatusBarControl/SignatureStatusBarControl.xaml
  41. 5 4
      Demo/Examples/Compdfkit_Tools/DigitalSignature/SignatureStatusBarControl/SignatureStatusBarControl.xaml.cs
  42. 4 4
      Demo/Examples/Compdfkit_Tools/DigitalSignature/VerifyDigitalSignatureControl/DigitalSignatureInfoControl.xaml.cs
  43. 5 1
      Demo/Examples/Compdfkit_Tools/DigitalSignature/VerifyDigitalSignatureControl/DigitalSignatureValiditySummaaryControl.xaml
  44. 8 9
      Demo/Examples/Compdfkit_Tools/DigitalSignature/VerifyDigitalSignatureControl/DigitalSignatureValiditySummaaryControl.xaml.cs
  45. 7 1
      Demo/Examples/Compdfkit_Tools/DigitalSignature/VerifyDigitalSignatureControl/VerifyDigitalSignatureControl.xaml
  46. 25 19
      Demo/Examples/Compdfkit_Tools/DigitalSignature/ViewCertificationControl/CertificateDetailControl.xaml
  47. 5 3
      Demo/Examples/Compdfkit_Tools/DigitalSignature/ViewCertificationControl/CertificateInfoControl.xaml
  48. 5 4
      Demo/Examples/Compdfkit_Tools/DigitalSignature/ViewCertificationControl/ConfidenceControl.xaml
  49. 12 6
      Demo/Examples/Compdfkit_Tools/DigitalSignature/ViewCertificationControl/SummaryControl.xaml
  50. 3 1
      Demo/Examples/Compdfkit_Tools/DigitalSignature/ViewCertificationControl/ViewCertificateDialog.xaml
  51. 5 4
      Demo/Examples/Compdfkit_Tools/DigitalSignature/ViewCertificationControl/ViewCertificateDialog.xaml.cs
  52. 7 4
      Demo/Examples/Compdfkit_Tools/Edit/ContentEditCOntrol/ContentEditControl.xaml
  53. 8 1
      Demo/Examples/Compdfkit_Tools/Form/FromPropertyControl.xaml
  54. 24 22
      Demo/Examples/Compdfkit_Tools/Form/Property/CheckBoxProperty.xaml
  55. 4 4
      Demo/Examples/Compdfkit_Tools/Form/Property/CheckBoxProperty.xaml.cs
  56. 26 24
      Demo/Examples/Compdfkit_Tools/Form/Property/ComboBoxProperty.xaml
  57. 9 9
      Demo/Examples/Compdfkit_Tools/Form/Property/ComboBoxProperty.xaml.cs
  58. 25 23
      Demo/Examples/Compdfkit_Tools/Form/Property/ListBoxProperty.xaml
  59. 9 9
      Demo/Examples/Compdfkit_Tools/Form/Property/ListBoxProperty.xaml.cs
  60. 29 27
      Demo/Examples/Compdfkit_Tools/Form/Property/PushButtonProperty.xaml
  61. 16 16
      Demo/Examples/Compdfkit_Tools/Form/Property/PushButtonProperty.xaml.cs
  62. 26 24
      Demo/Examples/Compdfkit_Tools/Form/Property/RadioButtonProperty.xaml
  63. 4 4
      Demo/Examples/Compdfkit_Tools/Form/Property/RadioButtonProperty.xaml.cs
  64. 10 8
      Demo/Examples/Compdfkit_Tools/Form/Property/SignatureProperty.xaml
  65. 2 2
      Demo/Examples/Compdfkit_Tools/Form/Property/SignatureProperty.xaml.cs
  66. 30 28
      Demo/Examples/Compdfkit_Tools/Form/Property/TextFieldProperty.xaml
  67. 11 11
      Demo/Examples/Compdfkit_Tools/Form/Property/TextFieldProperty.xaml.cs
  68. 105 0
      Demo/Examples/Compdfkit_Tools/Strings/Bota.resx
  69. 105 0
      Demo/Examples/Compdfkit_Tools/Strings/Bota.zh.resx
  70. 269 0
      Demo/Examples/Compdfkit_Tools/Strings/DocInfo.Designer.cs
  71. 90 0
      Demo/Examples/Compdfkit_Tools/Strings/DocInfo.resx
  72. 83 0
      Demo/Examples/Compdfkit_Tools/Strings/DocInfo.zh.resx
  73. 141 15
      Demo/Examples/Compdfkit_Tools/Strings/PropertyPanel.Designer.cs
  74. 47 5
      Demo/Examples/Compdfkit_Tools/Strings/PropertyPanel.resx
  75. 49 4
      Demo/Examples/Compdfkit_Tools/Strings/PropertyPanel.zh.resx
  76. 566 0
      Demo/Examples/Compdfkit_Tools/Strings/Security.Designer.cs
  77. 189 0
      Demo/Examples/Compdfkit_Tools/Strings/Security.resx
  78. 182 0
      Demo/Examples/Compdfkit_Tools/Strings/Security.zh.resx
  79. 1484 0
      Demo/Examples/Compdfkit_Tools/Strings/Signature.Designer.cs
  80. 501 0
      Demo/Examples/Compdfkit_Tools/Strings/Signature.resx
  81. 496 0
      Demo/Examples/Compdfkit_Tools/Strings/Signature.zh.resx
  82. 334 1
      Demo/Examples/Compdfkit_Tools/Strings/ToolBar.Designer.cs
  83. 14 2
      Demo/Examples/Compdfkit_Tools/Strings/ToolBar.resx
  84. 14 2
      Demo/Examples/Compdfkit_Tools/Strings/ToolBar.zh.resx

+ 1 - 1
Demo/Examples/Compdfkit_Tools/Annotation/PDFAnnotationData/CPDFAnnotationData.cs

@@ -10,7 +10,7 @@ namespace Compdfkit_Tools.Data
 {
     public enum CPDFAnnotationType
     {
-        Unknow = 0,
+        Unknown = 0,
         Highlight,
         Underline,
         Strikeout,

+ 7 - 1
Demo/Examples/Compdfkit_Tools/Annotation/PDFAnnotationPanel/PDFAnnotationControl/CPDFAnnotationControl.xaml

@@ -4,12 +4,18 @@
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
              xmlns:local="clr-namespace:Compdfkit_Tools.PDFControlUI"
+             xmlns:common="clr-namespace:Compdfkit_Tools.Common"
              mc:Ignorable="d" 
              Loaded="AnnotationControl_Loaded"
              Unloaded="AnnotationControl_Unloaded"
              d:DesignHeight="800" d:DesignWidth="300">
+    <UserControl.Resources>
+        <ResourceDictionary>
+            <common:PropertyPanelResourceConverter x:Key="PropertyPanelResourceConverter"></common:PropertyPanelResourceConverter>
+        </ResourceDictionary>
+    </UserControl.Resources>
     <Grid>
         <Border x:Name="AnnotationPanelContainer" Background="#FAFCFF"></Border>
-        <TextBlock x:Name="EmptyMessage" Text="The property panel is empty." VerticalAlignment="Center" HorizontalAlignment="Center"></TextBlock>
+        <TextBlock x:Name="EmptyMessage" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Text_EmptyPanel}" VerticalAlignment="Center" HorizontalAlignment="Center"></TextBlock>
     </Grid>
 </UserControl>

+ 2 - 2
Demo/Examples/Compdfkit_Tools/Annotation/PDFAnnotationPanel/PDFAnnotationControl/CPDFAnnotationControl.xaml.cs

@@ -23,7 +23,7 @@ namespace Compdfkit_Tools.PDFControl
 
         private bool isTempPanel = false;
 
-        private CPDFAnnotationType currentAnnotationType = CPDFAnnotationType.Unknow;
+        private CPDFAnnotationType currentAnnotationType = CPDFAnnotationType.Unknown;
 
         private CPDFViewer pdfViewer;
 
@@ -337,7 +337,7 @@ namespace Compdfkit_Tools.PDFControl
                         pdfViewer.SetToolParam(annotHandlerEventArgs);
                     }
                     break;
-                case CPDFAnnotationType.Unknow:
+                case CPDFAnnotationType.Unknown:
                     pdfViewer.SetMouseMode(MouseModes.PanTool);
                     return;
                 default:

+ 13 - 14
Demo/Examples/Compdfkit_Tools/Annotation/PDFAnnotationPanel/PDFAnnotationUI/CPDFCreateSignatureDialog.xaml

@@ -3,7 +3,6 @@
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
-        xmlns:local="clr-namespace:Compdfkit_Tools.Annotation.PDFAnnotationPanel.PDFAnnotationUI"
         xmlns:convert="clr-namespace:Compdfkit_Tools.Common" 
         xmlns:common="clr-namespace:Compdfkit_Tools.Common"
         mc:Ignorable="d"
@@ -17,6 +16,7 @@
                 <ResourceDictionary Source="../../../Asset/Styles/ButtonStyle.xaml"></ResourceDictionary>
                 <ResourceDictionary Source="../../../Asset/Styles/ComboBoxStyle.xaml"></ResourceDictionary>
             </ResourceDictionary.MergedDictionaries>
+            <convert:PropertyPanelResourceConverter x:Key="PropertyPanelResourceConverter"></convert:PropertyPanelResourceConverter>
             <convert:ReverseVisibilityConverter x:Key="ReverseVisibilityConverter"/>
             <SolidColorBrush x:Key="TabItem.Selected.Background" Color="#FFFFFF"/>
             <SolidColorBrush x:Key="TabItem.Selected.Border" Color="#ACACAC"/>
@@ -332,7 +332,7 @@
             <RowDefinition Height="11"/>
         </Grid.RowDefinitions>
         <TabControl Margin="23,0,23,0" Grid.Row="1" x:Name="CreateSignatureControl" SelectionChanged="CreateSignatureControl_SelectionChanged" Style="{DynamicResource TabControlStyle1}">
-            <TabItem Style="{DynamicResource TabItemStyle1}" x:Name="InputItem" Header="Trackpad">
+            <TabItem Style="{DynamicResource TabItemStyle1}" x:Name="InputItem" Header="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Button_Trackpad}">
                 <Grid>
                     <Grid.RowDefinitions>
                         <RowDefinition Height="11" />
@@ -345,7 +345,7 @@
                         <InkCanvas x:Name="DrawinkCanvas" Loaded="DrawinkCanvas_Loaded" Unloaded="DrawinkCanvas_Unloaded" Background="#F2F3F5" Grid.ColumnSpan="2" Margin="0,0,0,-10" />
                     </Grid>
                     <StackPanel Grid.Row="3" Grid.Column="2" VerticalAlignment="Center" Orientation="Horizontal">
-                        <TextBlock Text="Line Width"  VerticalAlignment="Center" />
+                        <TextBlock Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_LineWidth}"  VerticalAlignment="Center" />
                         <Slider  x:Name="StrokeWidthSlider" Width="96" Margin="12,0,0,0" Value="4" Minimum="1" IsSnapToTickEnabled="True"  Maximum="10" VerticalAlignment="Center" ValueChanged="StrokeWidth_ValueChanged"/>
                         <TextBox Text="{Binding ElementName=StrokeWidthSlider, Path=Value,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Width="72" Height="32" VerticalContentAlignment="Center" TextChanged="TextBox_TextChanged"/>
                     </StackPanel>
@@ -359,7 +359,7 @@
                     </StackPanel>
                 </Grid>
             </TabItem>
-            <TabItem Header="Keyboard" Style="{DynamicResource TabItemStyle1}">
+            <TabItem Header="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Button_Keyboard}" Style="{DynamicResource TabItemStyle1}">
                 <Grid>
                     <Grid.RowDefinitions>
                         <RowDefinition Height="11" />
@@ -376,7 +376,7 @@
                     VerticalContentAlignment="Center" Grid.ColumnSpan="2"
                         FontSize="45"/>
                     <StackPanel Grid.Row="3" Orientation="Horizontal" Grid.ColumnSpan="2">
-                        <TextBlock Text="Font" VerticalAlignment="Center"/>
+                        <TextBlock  Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_Font}" VerticalAlignment="Center"/>
                         <ComboBox Width="232"
                         Style="{StaticResource ComboBoxStyle1}"
                         Margin="8,0,0,0"
@@ -400,7 +400,7 @@
                     </StackPanel>
                 </Grid>
             </TabItem>
-            <TabItem Header="Image" Style="{DynamicResource TabItemStyle1}">
+            <TabItem Header="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Button_Image}" Style="{DynamicResource TabItemStyle1}">
                 <Grid
                 AllowDrop="True"
                 PreviewDrop="Grid_Drop"
@@ -417,22 +417,21 @@
                             <RowDefinition Height="20"/>
                             <RowDefinition Height="38"/>
                         </Grid.RowDefinitions>
-                        <StackPanel x:Name="AddImagebackground" VerticalAlignment="Bottom">
+                        <StackPanel x:Name="AddImageBackground" VerticalAlignment="Bottom">
                             <Image Height="112" Width="112" Source="pack://application:,,,/Compdfkit_Tools;component/Asset/Resource/Annotation/Signature/Dropimage.png"/>
-                            <TextBlock Text="Drop image here"  HorizontalAlignment="Center"/>
-                            <TextBlock Text="or"  HorizontalAlignment="Center"/>
-                            <Button Style="{DynamicResource LinkButton}" HorizontalAlignment="Center" Content="Select a File" Click="OpenImage_Click"/>
+                            <TextBlock  Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Text_DropImage}"  HorizontalAlignment="Center"/>
+                            <Button Style="{DynamicResource LinkButton}" HorizontalAlignment="Center"  Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Link_SelectFile}" Click="OpenImage_Click"/>
                         </StackPanel>
-                        <Image x:Name="ImageImage" SourceUpdated="ImageImage_SourceUpdated" Grid.RowSpan="3" HorizontalAlignment="Center" VerticalAlignment="Center"  Grid.ColumnSpan="4" Visibility="{Binding ElementName=AddImagebackground,Path=Visibility, Converter={StaticResource ReverseVisibilityConverter}}"/>
+                        <Image x:Name="ImageImage" SourceUpdated="ImageImage_SourceUpdated" Grid.RowSpan="3" HorizontalAlignment="Center" VerticalAlignment="Center"  Grid.ColumnSpan="4" Visibility="{Binding ElementName=AddImageBackground,Path=Visibility, Converter={StaticResource ReverseVisibilityConverter}}"/>
                     </Grid>
                 </Grid>
             </TabItem>
         </TabControl>
         <Grid Grid.Row="2" Margin="11,0,11,0" VerticalAlignment="Top">
-            <Button Height="32" Width="72" HorizontalAlignment="Left" Content="Clear" Click="Clear_Click"/>
+            <Button Height="32" Width="72" HorizontalAlignment="Left" Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Button_Clear}" Click="Clear_Click"/>
             <StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
-                <Button Width="81" Height="32" Content="Cancel" Click="Cancel_Click"/>
-                <Button x:Name="SaveBtn" Width="136" Height="32" Content="Save" Margin="8,0,0,0" Click="Save_Click" Style="{StaticResource ButtonStyle}" IsEnabled="False"/>
+                <Button Width="81" Height="32" Content="{Binding Converter={StaticResource PropertyPanelResourceConverter}, ConverterParameter=Button_Cancel}" Click="Cancel_Click"/>
+                <Button x:Name="SaveBtn" Width="136" Height="32" Content="{Binding Converter={StaticResource PropertyPanelResourceConverter}, ConverterParameter=Button_Save}" Margin="8,0,0,0" Click="Save_Click" Style="{StaticResource ButtonStyle}" IsEnabled="False"/>
             </StackPanel>
         </Grid>
     </Grid>

+ 2 - 2
Demo/Examples/Compdfkit_Tools/Annotation/PDFAnnotationPanel/PDFAnnotationUI/CPDFCreateSignatureDialog.xaml.cs

@@ -78,7 +78,7 @@ namespace Compdfkit_Tools.Annotation.PDFAnnotationPanel.PDFAnnotationUI
             DrawinkCanvas.Strokes.Clear();
             InPutTextBox.Text = "";
             ImageImage.Source = null;
-            AddImagebackground.Visibility = Visibility.Visible;
+            AddImageBackground.Visibility = Visibility.Visible;
             SaveBtn.IsEnabled = false;
 
             DrawinkCanvas.DefaultDrawingAttributes.Color = solidColorBrush.Color;
@@ -126,7 +126,7 @@ namespace Compdfkit_Tools.Annotation.PDFAnnotationPanel.PDFAnnotationUI
                     }
                     SaveToPath = path;
 
-                    AddImagebackground.Visibility = Visibility.Collapsed;
+                    AddImageBackground.Visibility = Visibility.Collapsed;
                     ImageImage.Source = targetBitmap;
                     SaveBtn.IsEnabled = true;
                 }

+ 13 - 13
Demo/Examples/Compdfkit_Tools/Annotation/PDFAnnotationPanel/PDFAnnotationUI/CPDFCreateStampDialog.xaml

@@ -17,6 +17,7 @@
                 <ResourceDictionary Source="../../../Asset/Styles/ButtonStyle.xaml"></ResourceDictionary>
             </ResourceDictionary.MergedDictionaries>
             <cpdfcommon:ReverseVisibilityConverter x:Key="ReverseVisibilityConverter"/>
+            <cpdfcommon:PropertyPanelResourceConverter x:Key="PropertyPanelResourceConverter"></cpdfcommon:PropertyPanelResourceConverter>
             <SolidColorBrush x:Key="TabItem.Selected.Background" Color="#FFFFFF"/>
             <SolidColorBrush x:Key="TabItem.Selected.Border" Color="#ACACAC"/>
             <Style x:Key="TabControlStyle1" TargetType="{x:Type TabControl}">
@@ -331,7 +332,7 @@
             <RowDefinition Height="11"/>
         </Grid.RowDefinitions>
         <TabControl Margin="23,0,23,0" x:Name="CreateHeader" Style="{DynamicResource TabControlStyle1}"  Grid.Row="1" SelectionChanged="CreateHeader_SelectionChanged">
-            <TabItem Header="Text Stamp" Style="{DynamicResource TabItemStyle1}">
+            <TabItem  Header="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Preview_Text}" Style="{DynamicResource TabItemStyle1}">
                 <Grid >
                     <Grid.RowDefinitions>
                         <RowDefinition Height="11" />
@@ -354,22 +355,22 @@
                             <RowDefinition Height="12"/>
                             <RowDefinition Height="20"/>
                         </Grid.RowDefinitions>
-                        <TextBlock Text="Preview" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
+                        <TextBlock Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Title_Preview}" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
                         <Image Grid.Row="1" x:Name="TextImage"  HorizontalAlignment="Center" VerticalAlignment="Center"/>
                         <StackPanel Grid.Row="2" Orientation="Horizontal" Height="32">
-                            <TextBlock Margin="18,0,23,0" Text="Text" VerticalAlignment="Center"/>
+                            <TextBlock Margin="18,0,23,0" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Stamp_Text}" VerticalAlignment="Center"/>
                             <TextBox x:Name="StampText" Width="233"  Text="Stamp Text" VerticalContentAlignment="Center" TextChanged="TextBox_TextChanged"/>
                         </StackPanel>
-                        <CheckBox Grid.Row="4" Name="Date" Content="Date (YYYY-MM-DD)"  Checked="Date_Checked" Unchecked="Date_Unchecked"/>
-                        <CheckBox Grid.Row="6" Name="Time" Content="Time (HH:MM:SS)"  Checked="Time_Checked" Unchecked="Time_Unchecked"/>
+                        <CheckBox Grid.Row="4" Name="Date" Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Check_Date}" Checked="Date_Checked" Unchecked="Date_Unchecked"/>
+                        <CheckBox Grid.Row="6" Name="Time" Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Check_Time}" Checked="Time_Checked" Unchecked="Time_Unchecked"/>
                     </Grid>
                     <StackPanel Grid.Row="1">
-                        <TextBlock Text="Stamp Template:" VerticalAlignment="Center" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
+                        <TextBlock Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Stamp_Template}" VerticalAlignment="Center" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
                         <ListBox x:Name="ShapeBox" SelectedIndex="0"  VerticalContentAlignment="Center" SelectionChanged="ShapeBox_SelectionChanged"/>
                     </StackPanel>
                 </Grid>
             </TabItem>
-            <TabItem Header="Image Stamp"  Style="{DynamicResource TabItemStyle1}">
+            <TabItem Header="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Preview_Image}"  Style="{DynamicResource TabItemStyle1}">
                 <Grid
                 AllowDrop="True"
                 PreviewDrop="Grid_Drop"
@@ -387,9 +388,8 @@
                         </Grid.RowDefinitions>
                         <StackPanel  x:Name="AddImagebackground"  VerticalAlignment="Bottom">
                             <Image Height="112" Width="112" Source="../../../Asset/Resource/Annotation/Signature/Dropimage.png"/>
-                            <TextBlock Text="Drop image here"  HorizontalAlignment="Center"/>
-                            <TextBlock Text="or"  HorizontalAlignment="Center"/>
-                            <Button Style="{DynamicResource LinkButton}" HorizontalAlignment="Center" Content="Select a File" Click="OpenImage_Click"/>
+                            <TextBlock Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Text_DropImage}"  HorizontalAlignment="Center"/>
+                            <Button Style="{DynamicResource LinkButton}" HorizontalAlignment="Center" Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Link_SelectFile}" Click="OpenImage_Click"/>
                         </StackPanel>
                         <Image x:Name="ImageImage" SourceUpdated="ImageImage_SourceUpdated" Grid.RowSpan="3" HorizontalAlignment="Center" VerticalAlignment="Center"  Grid.ColumnSpan="4" Visibility="{Binding ElementName=AddImagebackground,Path=Visibility, Converter={StaticResource ReverseVisibilityConverter}}"/>
                     </Grid>
@@ -397,10 +397,10 @@
             </TabItem>
         </TabControl>
         <Grid Grid.Row="2" Margin="11,0,11,0" VerticalAlignment="Top">
-            <Button Content="Clear" Click="Clear_Click"  Height="32" Width="72" HorizontalAlignment="Left"/>
+            <Button Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Button_Clear}" Click="Clear_Click"  Height="32" Width="72" HorizontalAlignment="Left"/>
             <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" >
-                <Button Content="Cancel" Click="Cancel_Click" Width="81" Height="32"/>
-                <Button Content="Save" Click="Save_Click" x:Name="SaveBtn" Width="136" Height="32"  Margin="8,0,0,0" IsEnabled="True" Style="{StaticResource ButtonStyle}"/>
+                <Button Content="{Binding Converter={StaticResource PropertyPanelResourceConverter}, ConverterParameter=Button_Cancel}" Click="Cancel_Click" Width="81" Height="32"/>
+                <Button Content="{Binding Converter={StaticResource PropertyPanelResourceConverter}, ConverterParameter=Button_Save}" Click="Save_Click" x:Name="SaveBtn" Width="136" Height="32"  Margin="8,0,0,0" IsEnabled="True" Style="{StaticResource ButtonStyle}"/>
             </StackPanel>
         </Grid>
     </Grid>

+ 10 - 4
Demo/Examples/Compdfkit_Tools/Annotation/PDFAnnotationPanel/PDFAnnotationUI/CPDFCreateStampDialog.xaml.cs

@@ -311,10 +311,16 @@ namespace Compdfkit_Tools.Annotation.PDFAnnotationPanel.PDFAnnotationUI
         {
             ShapeBoxList = new ObservableCollection<string>
             {
-                "NormalText",
-                "Rectangle(Green)", "Rectangle(Blue)", "Rectangle(Red)",
-                "Left Arrow Stamp(Green)", "Left Arrow Stamp(Blue)", "Left Arrow Stamp(Red)",
-                "Right Arrow Stamp(Green)","Right Arrow Stamp(Blue)","Right Arrow Stamp(Red)"
+                Helper.LanguageHelper.PropertyPanelManager.GetString("Style_General"),
+                Helper.LanguageHelper.PropertyPanelManager.GetString("Rec_Green"),
+                Helper.LanguageHelper.PropertyPanelManager.GetString("Rec_Blue"),
+                Helper.LanguageHelper.PropertyPanelManager.GetString("Rec_Red"),
+                Helper.LanguageHelper.PropertyPanelManager.GetString("Left_Green"),
+                Helper.LanguageHelper.PropertyPanelManager.GetString("Left_Blue"),
+                Helper.LanguageHelper.PropertyPanelManager.GetString("Left_Red"),
+                Helper.LanguageHelper.PropertyPanelManager.GetString("Right_Green"),
+                Helper.LanguageHelper.PropertyPanelManager.GetString("Right_Blue"),
+                Helper.LanguageHelper.PropertyPanelManager.GetString("Right_Red")
             };
             var flags = BindingFlags.NonPublic | BindingFlags.Static;
             var dpiProperty = typeof(SystemParameters).GetProperty("Dpi", flags);

+ 10 - 5
Demo/Examples/Compdfkit_Tools/Annotation/PDFAnnotationPanel/PDFAnnotationUI/CPDFFreeTextUI.xaml

@@ -8,31 +8,36 @@
              xmlns:cpdftools="clr-namespace:Compdfkit_Tools.PDFControl"
              mc:Ignorable="d" 
              d:DesignHeight="800" d:DesignWidth="300">
+    <UserControl.Resources>
+        <ResourceDictionary>
+            <cpdfcommon:PropertyPanelResourceConverter x:Key="PropertyPanelResourceConverter"></cpdfcommon:PropertyPanelResourceConverter>
+        </ResourceDictionary>
+    </UserControl.Resources>
     <ScrollViewer VerticalScrollBarVisibility="Auto"> 
         <Grid Background="#FAFCFF">
             <StackPanel Orientation="Vertical">
                 <Border BorderThickness="1" BorderBrush="#1A000000">
                     <Grid  Height="40" Background="White" >
-                        <TextBlock x:Name="TitileTextBlock" Text="Text Box" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="16" FontFamily="Microsoft YaHei"></TextBlock>
+                        <TextBlock x:Name="TitileTextBlock" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Title_FreeText}" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="16" FontFamily="Microsoft YaHei"></TextBlock>
                     </Grid>
                 </Border>
                 <StackPanel Orientation="Vertical" Height="150">
                     <cpdftools:CPDFAnnotationPreviewerControl x:Name="CPDFAnnotationPreviewerControl" Height="100" Margin="16"></cpdftools:CPDFAnnotationPreviewerControl>
                 </StackPanel>
                 <StackPanel Height="75" Margin="5">
-                    <TextBlock Text="Font Color"></TextBlock>
+                    <TextBlock Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_FontColor}"></TextBlock>
                     <cpdfcommon:ColorPickerControl x:Name="ColorPickerControl"></cpdfcommon:ColorPickerControl>
                 </StackPanel>
                 <StackPanel Height="75" Margin="5">
-                    <TextBlock Text="Opacity"></TextBlock>
+                    <TextBlock Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_Opacity}"></TextBlock>
                     <cpdfcommon:CPDFOpacityControl x:Name="CPDFOpacityControl"></cpdfcommon:CPDFOpacityControl>
                 </StackPanel>
                 <StackPanel Height="120" Margin="5">
-                    <TextBlock Text="Font Style"></TextBlock>
+                    <TextBlock Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_FontStyle}"></TextBlock>
                     <cpdfcommon:CPDFFontControl x:Name="CPDFFontControl" Width="228"></cpdfcommon:CPDFFontControl>
                 </StackPanel>
                 <StackPanel Height="200" Margin="5">
-                    <TextBlock Text="Note"></TextBlock>
+                    <TextBlock Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_Note}"></TextBlock>
                     <TextBox Height="150"  x:Name="NoteTextBox" TextChanged="NoteTextBox_TextChanged" TextWrapping="Wrap" AcceptsReturn="True"></TextBox>
                 </StackPanel>
             </StackPanel>

+ 6 - 5
Demo/Examples/Compdfkit_Tools/Annotation/PDFAnnotationPanel/PDFAnnotationUI/CPDFFreehandUI.xaml

@@ -13,6 +13,7 @@
             <ResourceDictionary.MergedDictionaries>
                 <ResourceDictionary Source="../../../Asset/Styles/ToggleButtonStyle.xaml"></ResourceDictionary>
             </ResourceDictionary.MergedDictionaries>
+            <cpdfcommon:PropertyPanelResourceConverter x:Key="PropertyPanelResourceConverter"></cpdfcommon:PropertyPanelResourceConverter>
         </ResourceDictionary>
     </UserControl.Resources>
     <ScrollViewer VerticalScrollBarVisibility="Auto"> 
@@ -20,7 +21,7 @@
         <StackPanel Orientation="Vertical">
             <Border BorderThickness="1" BorderBrush="#1A000000">
                 <Grid  Height="40" Background="White" >
-                    <TextBlock x:Name="TitleTextBlock" Text="Freehand" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="16" FontFamily="Microsoft YaHei"></TextBlock>
+                    <TextBlock x:Name="TitleTextBlock" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Title_Ink}" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="16" FontFamily="Microsoft YaHei"></TextBlock>
                 </Grid>
             </Border>
             <StackPanel Orientation="Vertical" Height="130">
@@ -66,19 +67,19 @@
             
             <StackPanel Name="FreehandPanel" Orientation="Vertical">
                 <StackPanel Height="75" Margin="5">
-                    <TextBlock Text="Color"></TextBlock>
+                    <TextBlock Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_Color}"></TextBlock>
                     <cpdfcommon:ColorPickerControl x:Name="ColorPickerControl" TransparentBtnProperty="Collapsed"></cpdfcommon:ColorPickerControl>
                 </StackPanel>
                 <StackPanel Height="75" Margin="5">
-                    <TextBlock Text="Opacity"></TextBlock>
+                    <TextBlock Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_Opacity}"></TextBlock>
                     <cpdfcommon:CPDFOpacityControl x:Name="CPDFOpacityControl"></cpdfcommon:CPDFOpacityControl>
                 </StackPanel>
                 <StackPanel Height="75" Margin="5">
-                    <TextBlock Text="Line Width"></TextBlock>
+                    <TextBlock Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_LineWidth}"></TextBlock>
                     <cpdfcommon:CPDFThicknessControl x:Name="CPDFThicknessControl"></cpdfcommon:CPDFThicknessControl>
                 </StackPanel>
                 <StackPanel Height="200" Margin="5">
-                    <TextBlock Text="Note"></TextBlock>
+                    <TextBlock Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_Note}"></TextBlock>
                     <TextBox Height="150" x:Name="NoteTextBox" TextChanged="NoteTextBox_TextChanged" TextWrapping="Wrap" AcceptsReturn="True"></TextBox>
                 </StackPanel>
             </StackPanel>

+ 7 - 6
Demo/Examples/Compdfkit_Tools/Annotation/PDFAnnotationPanel/PDFAnnotationUI/CPDFLinkUI.xaml

@@ -12,6 +12,7 @@
     <UserControl.Resources>
         <cpdfcommon:TextLengthToVisibilityConverter x:Key="TextLengthToVisibilityConverter"></cpdfcommon:TextLengthToVisibilityConverter>
         <cpdfcommon:BoolToCollapsedConverter x:Key="BoolToCollapsedConverter"></cpdfcommon:BoolToCollapsedConverter>
+        <cpdfcommon:PropertyPanelResourceConverter x:Key="PropertyPanelResourceConverter"></cpdfcommon:PropertyPanelResourceConverter>
         <SolidColorBrush x:Key="TabItem.Selected.Background" Color="#FFFFFF"/>
         <SolidColorBrush x:Key="TabItem.Selected.Border" Color="#ACACAC"/>
         <Style x:Key="TabControlStyle1" TargetType="{x:Type TabControl}">
@@ -437,30 +438,30 @@
                     <RowDefinition Height="*"/>
                 </Grid.RowDefinitions>
                 <TabControl x:Name="HeadTabControl" Style="{DynamicResource TabControlStyle1}">
-                    <TabItem Style="{DynamicResource TabItemStyle1}" Header="Hyperlink">
+                    <TabItem Style="{DynamicResource TabItemStyle1}" Header="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=LinkType_URL}">
                         <Grid IsEnabled="{Binding InputEnable}">
                             <TextBox Style="{DynamicResource TextBoxStyle1}" Height="28"  x:Name="UrlText" VerticalContentAlignment="Center" TextChanged="UrlText_TextChanged" VerticalAlignment="Center" Margin="16"/>
-                            <TextBlock Text="https://www.compdf.com/" VerticalAlignment="Center"  Margin="22" Visibility="{Binding ElementName=UrlText, Path=Text, Converter={StaticResource TextLengthToVisibilityConverter}}" IsHitTestVisible="False"  Foreground="#BBB"></TextBlock>
+                            <TextBlock Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Holder_URL}" VerticalAlignment="Center"  Margin="22" Visibility="{Binding ElementName=UrlText, Path=Text, Converter={StaticResource TextLengthToVisibilityConverter}}" IsHitTestVisible="False"  Foreground="#BBB"></TextBlock>
                         </Grid>
                     </TabItem>
-                    <TabItem Style="{DynamicResource TabItemStyle1}" Header="Go To Pages">
+                    <TabItem Style="{DynamicResource TabItemStyle1}" Header="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=LinkType_Jump}">
                         <Grid IsEnabled="{Binding InputEnable}">
                             <TextBox Style="{DynamicResource TextBoxStyle1}" Height="28"  x:Name="PageText" VerticalContentAlignment="Center" TextChanged="PageText_TextChanged" VerticalAlignment="Center" Margin="16,0,16,0" Grid.ColumnSpan="2"/>
                             <TextBlock Text="{Binding PagePromptText, Mode=OneWay}" VerticalAlignment="Center"  Margin="22,0,22,0" Visibility="{Binding ElementName=PageText, Path=Text, Converter={StaticResource TextLengthToVisibilityConverter}}" IsHitTestVisible="False"  Foreground="#BBB"></TextBlock>
                         </Grid>
                     </TabItem>
-                    <TabItem Style="{DynamicResource TabItemStyle1}" Header="Email">
+                    <TabItem Style="{DynamicResource TabItemStyle1}" Header="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=LinkType_Email}">
                         <Grid IsEnabled="{Binding InputEnable}">
                             <Grid.ColumnDefinitions>
                                 <ColumnDefinition Width="79*"/>
                                 <ColumnDefinition Width="319*"/>
                             </Grid.ColumnDefinitions>
                             <TextBox Style="{DynamicResource TextBoxStyle1}" Height="28" x:Name="EmailText" VerticalContentAlignment="Center"  TextChanged="EmailText_TextChanged" VerticalAlignment="Center" Margin="16,0,16,0" Grid.ColumnSpan="2"/>
-                            <TextBlock Text="support@compdf.com" VerticalAlignment="Center"  Margin="22,0,22,0" Visibility="{Binding ElementName=EmailText, Path=Text, Converter={StaticResource TextLengthToVisibilityConverter}}" IsHitTestVisible="False"  Foreground="#BBB" Grid.ColumnSpan="2"></TextBlock>
+                            <TextBlock Text="{Binding Converter={StaticResource PropertyPanelResourceConverter}, ConverterParameter=Holder_Email}" VerticalAlignment="Center"  Margin="22,0,22,0" Visibility="{Binding ElementName=EmailText, Path=Text, Converter={StaticResource TextLengthToVisibilityConverter}}" IsHitTestVisible="False"  Foreground="#BBB" Grid.ColumnSpan="2"></TextBlock>
                         </Grid>
                     </TabItem>
                 </TabControl>
-                <Button Style="{DynamicResource ButtonStyle1}" x:Name="SaveBtn"  Background="#001A4E" Width="120" Height="32" Grid.Row="1" Foreground="#FFFFFF" Content="Save" VerticalAlignment="Top" Click="Save_Click" IsEnabled="False"/>
+                <Button Style="{DynamicResource ButtonStyle1}" x:Name="SaveBtn"  Background="#001A4E" Width="120" Height="32" Grid.Row="1" Foreground="#FFFFFF" Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Button_Save}" VerticalAlignment="Top" Click="Save_Click" IsEnabled="False"/>
             </Grid>
         </ScrollViewer>
     </Grid>

+ 2 - 2
Demo/Examples/Compdfkit_Tools/Annotation/PDFAnnotationPanel/PDFAnnotationUI/CPDFLinkUI.xaml.cs

@@ -97,7 +97,7 @@ namespace Compdfkit_Tools.Annotation.PDFAnnotationUI
             EmailText.Text = "";
             SaveBtn.IsEnabled = true;
             totalPage = PageCount;
-            PagePromptText = "Add a Page Number Between 1 ~ " + totalPage;
+            PagePromptText = Helper.LanguageHelper.PropertyPanelManager.GetString("Holder_Jump") + totalPage;
             if (AttribEvent.Attribs.ContainsKey(AnnotAttrib.LinkDestIndx))
             {
                 int pageNum = (int)AttribEvent.Attribs[AnnotAttrib.LinkDestIndx] + 1;
@@ -133,7 +133,7 @@ namespace Compdfkit_Tools.Annotation.PDFAnnotationUI
             InputEnable = true;
             LinkAnnot.LinkDrawFinished += LinkAnnot_LinkDrawFinished;
             totalPage = PageCount;
-            PagePromptText = "Add a Page Number Between 1 ~ " + totalPage;
+            PagePromptText = Helper.LanguageHelper.PropertyPanelManager.GetString("Holder_Jump") + totalPage;
         }
 
         private void LinkAnnot_LinkDrawFinished(object sender, bool e)

+ 8 - 3
Demo/Examples/Compdfkit_Tools/Annotation/PDFAnnotationPanel/PDFAnnotationUI/CPDFMarkupUI.xaml

@@ -7,6 +7,11 @@
              xmlns:cpdftools="clr-namespace:Compdfkit_Tools.PDFControl"
              mc:Ignorable="d" 
                d:DesignHeight="800" d:DesignWidth="300">
+    <UserControl.Resources>
+        <ResourceDictionary>
+            <cpdfcommon:PropertyPanelResourceConverter x:Key="PropertyPanelResourceConverter"></cpdfcommon:PropertyPanelResourceConverter>
+        </ResourceDictionary>
+    </UserControl.Resources>
     <ScrollViewer VerticalScrollBarVisibility="Auto"> 
         <Grid Background="#FAFCFF">
             <Grid.RowDefinitions>
@@ -25,15 +30,15 @@
                 <cpdftools:CPDFAnnotationPreviewerControl x:Name="CPDFAnnotationPreviewerControl" Height="100" Margin="16"></cpdftools:CPDFAnnotationPreviewerControl>
             </StackPanel>
             <StackPanel Grid.Row="1" Margin="5">
-                <TextBlock Text="Color"></TextBlock>
+                <TextBlock Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_Color}"></TextBlock>
                 <cpdfcommon:ColorPickerControl x:Name="ColorPickerControl" TransparentBtnProperty="Collapsed"></cpdfcommon:ColorPickerControl>
             </StackPanel>
             <StackPanel Grid.Row="2" Margin="5">
-                <TextBlock Text="Opacity"></TextBlock>
+                <TextBlock Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_Opacity}"></TextBlock>
                 <cpdfcommon:CPDFOpacityControl x:Name="CPDFOpacityControl"></cpdfcommon:CPDFOpacityControl>
             </StackPanel>
             <StackPanel Grid.Row="3" Margin="5">
-                <TextBlock Text="Note"></TextBlock>
+                <TextBlock Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_Note}"></TextBlock>
                 <TextBox Height="150"  x:Name="NoteTextBox" TextChanged="NoteTextBox_TextChanged" TextWrapping="Wrap" AcceptsReturn="True"></TextBox>
             </StackPanel>
         </Grid>

+ 5 - 4
Demo/Examples/Compdfkit_Tools/Annotation/PDFAnnotationPanel/PDFAnnotationUI/CPDFMarkupUI.xaml.cs

@@ -5,6 +5,7 @@ using ComPDFKitViewer.AnnotEvent;
 using System;
 using System.Windows.Controls;
 using System.Windows.Media;
+using Compdfkit_Tools.Helper;
 
 namespace Compdfkit_Tools.PDFControlUI
 {
@@ -89,16 +90,16 @@ namespace Compdfkit_Tools.PDFControlUI
             switch (annotationType)
             {
                 case CPDFAnnotationType.Highlight:
-                    TitleTextBlock.Text = "Highlight";
+                    TitleTextBlock.Text = LanguageHelper.PropertyPanelManager.GetString("Title_Highlight");
                     break;
                 case CPDFAnnotationType.Underline:
-                    TitleTextBlock.Text = "Underline";
+                    TitleTextBlock.Text = LanguageHelper.PropertyPanelManager.GetString("Title_Underline");
                     break;
                 case CPDFAnnotationType.Strikeout:
-                    TitleTextBlock.Text = "Strikethrough";
+                    TitleTextBlock.Text = LanguageHelper.PropertyPanelManager.GetString("Title_Strikeout");
                     break;
                 case CPDFAnnotationType.Squiggly:
-                    TitleTextBlock.Text = "Squiggly";
+                    TitleTextBlock.Text = LanguageHelper.PropertyPanelManager.GetString("Title_Squiggly");
                     break;
                 default:
                     throw new ArgumentException("Not Excepted Argument");

+ 8 - 3
Demo/Examples/Compdfkit_Tools/Annotation/PDFAnnotationPanel/PDFAnnotationUI/CPDFNoteUI.xaml

@@ -8,23 +8,28 @@
              xmlns:cpdftools="clr-namespace:Compdfkit_Tools.PDFControl"
              mc:Ignorable="d" 
              d:DesignHeight="800" d:DesignWidth="300">
+    <UserControl.Resources>
+        <ResourceDictionary>
+            <cpdfcommon:PropertyPanelResourceConverter x:Key="PropertyPanelResourceConverter"></cpdfcommon:PropertyPanelResourceConverter>
+        </ResourceDictionary>
+    </UserControl.Resources>
     <ScrollViewer VerticalScrollBarVisibility="Auto"> 
         <Grid Background="#FAFCFF">
             <StackPanel Orientation="Vertical">
                 <Border BorderThickness="1" BorderBrush="#1A000000">
                     <Grid  Height="40" Background="White" >
-                        <TextBlock x:Name="TitileTextBlock" Text="Note" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="16" FontFamily="Microsoft YaHei"></TextBlock>
+                        <TextBlock x:Name="TitileTextBlock" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Title_Note}" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="16" FontFamily="Microsoft YaHei"></TextBlock>
                     </Grid>
                 </Border>
                 <StackPanel Orientation="Vertical" Height="130">
                     <cpdftools:CPDFAnnotationPreviewerControl x:Name="CPDFAnnotationPreviewerControl" Height="100" Margin="16"></cpdftools:CPDFAnnotationPreviewerControl>
                 </StackPanel>
                 <StackPanel Height="75" Margin="5">
-                    <TextBlock Text="Border Color"></TextBlock>
+                    <TextBlock Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_StrokeColor}"></TextBlock>
                     <cpdfcommon:ColorPickerControl x:Name="ColorPickerControl" TransparentBtnProperty="Collapsed"></cpdfcommon:ColorPickerControl>
                 </StackPanel>
                 <StackPanel Height="200" Margin="5">
-                    <TextBlock Text="Note"></TextBlock>
+                    <TextBlock Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_Note}"></TextBlock>
                     <TextBox Height="150"  x:Name="NoteTextBox" TextChanged="NoteTextBox_TextChanged" TextWrapping="Wrap" AcceptsReturn="True"></TextBox>
                 </StackPanel>
             </StackPanel>

+ 16 - 7
Demo/Examples/Compdfkit_Tools/Annotation/PDFAnnotationPanel/PDFAnnotationUI/CPDFShapeUI.xaml

@@ -8,6 +8,11 @@
             xmlns:cpdfcommon="clr-namespace:Compdfkit_Tools.Common"
              mc:Ignorable="d" 
              d:DesignHeight="800" d:DesignWidth="300">
+    <UserControl.Resources>
+        <ResourceDictionary>
+            <cpdfcommon:PropertyPanelResourceConverter x:Key="PropertyPanelResourceConverter"></cpdfcommon:PropertyPanelResourceConverter>
+        </ResourceDictionary>
+    </UserControl.Resources>
     <ScrollViewer VerticalScrollBarVisibility="Auto"> 
         <Grid Background="#FAFCFF">
             <StackPanel Orientation="Vertical">
@@ -20,31 +25,35 @@
                     <cpdftools:CPDFAnnotationPreviewerControl x:Name="CPDFAnnotationPreviewerControl" Height="100" Margin="16"></cpdftools:CPDFAnnotationPreviewerControl>
                 </StackPanel>
                 <StackPanel Height="75" Margin="5">
-                    <TextBlock Text="Stroke Color"></TextBlock>
+                    <TextBlock Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_StrokeColor}"></TextBlock>
                     <cpdfcommon:ColorPickerControl x:Name="BorderColorPickerControl" Brush="Red" TransparentBtnProperty ="Collapsed"></cpdfcommon:ColorPickerControl>
                 </StackPanel>
                 <StackPanel x:Name="FillColorStackPanel" Height="75" Margin="5">
-                    <TextBlock Text="Fill Color"></TextBlock>
+                    <TextBlock Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_FillColor}"></TextBlock>
                     <cpdfcommon:ColorPickerControl x:Name="FillColorPickerControl" Brush="Transparent"></cpdfcommon:ColorPickerControl>
                 </StackPanel>
                 <StackPanel Height="60" Margin="5">
-                    <TextBlock Text="Opacity"></TextBlock>
+                    <TextBlock Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_Opacity}"></TextBlock>
                     <cpdfcommon:CPDFOpacityControl x:Name="CPDFOpacityControl"></cpdfcommon:CPDFOpacityControl>
                 </StackPanel>
                 <StackPanel Height="60" Margin="5">
-                    <TextBlock Text="Line Width"></TextBlock>
+                    <TextBlock Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_LineWidth}"></TextBlock>
                     <cpdfcommon:CPDFThicknessControl x:Name="CPDFThicknessControl"></cpdfcommon:CPDFThicknessControl>
                 </StackPanel>
                 <StackPanel x:Name="LineStyleStackPanel" Height="90" Margin="5">
-                    <TextBlock Text="Line and Border Style"></TextBlock>
+                    <TextBlock Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_LineStyle}"></TextBlock>
                     <cpdfcommon:CPDFLineStyleControl x:Name="CPDFLineStyleControl"></cpdfcommon:CPDFLineStyleControl>
                 </StackPanel>
                 <StackPanel x:Name="ArrowStackPanel" Visibility="Visible" Height="75"  Margin="5">
-                    <TextBlock Text="Start and End"></TextBlock>
+                    <StackPanel Orientation="Horizontal" Margin="0,0,0,10">
+                        <TextBlock Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_Start}"></TextBlock>
+                        <TextBlock Text=" / "></TextBlock>
+                        <TextBlock Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_End}"></TextBlock>
+                    </StackPanel>
                     <cpdfcommon:CPDFArrowControl x:Name="CPDFArrowControl"></cpdfcommon:CPDFArrowControl>
                 </StackPanel>
                 <StackPanel Height="160" Margin="5">
-                    <TextBlock Text="Note"></TextBlock>
+                    <TextBlock Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_Note}"></TextBlock>
                     <TextBox Height="100"  x:Name="NoteTextBox"  TextChanged="NoteTextBox_TextChanged" TextWrapping="Wrap" AcceptsReturn="True"></TextBox>
                 </StackPanel>
             </StackPanel>

+ 5 - 4
Demo/Examples/Compdfkit_Tools/Annotation/PDFAnnotationPanel/PDFAnnotationUI/CPDFShapeUI.xaml.cs

@@ -6,6 +6,7 @@ using System;
 using System.Windows;
 using System.Windows.Controls;
 using System.Windows.Media;
+using Compdfkit_Tools.Helper;
 using ComPDFKit.PDFAnnotation;
 
 namespace Compdfkit_Tools.PDFControlUI
@@ -239,19 +240,19 @@ namespace Compdfkit_Tools.PDFControlUI
             switch (annotationType)
             {
                 case CPDFAnnotationType.Square:
-                    TitleTextBlock.Text = "Rectangle";
+                    TitleTextBlock.Text = LanguageHelper.PropertyPanelManager.GetString("Title_Square");
                     InitWhenRectAndRound();
                     break;
                 case CPDFAnnotationType.Circle:
-                    TitleTextBlock.Text = "Circle";
+                    TitleTextBlock.Text = LanguageHelper.PropertyPanelManager.GetString("Title_Circle");
                     InitWhenRectAndRound();
                     break;
                 case CPDFAnnotationType.Arrow:
-                    TitleTextBlock.Text = "Arrow";
+                    TitleTextBlock.Text = LanguageHelper.PropertyPanelManager.GetString("Title_Arrow");
                     InitWhenArrowAndLine();
                     break;
                 case CPDFAnnotationType.Line:
-                    TitleTextBlock.Text = "Line";
+                    TitleTextBlock.Text = LanguageHelper.PropertyPanelManager.GetString("Title_Line");
                     InitWhenArrowAndLine();
                     break;
                 default:

+ 4 - 2
Demo/Examples/Compdfkit_Tools/Annotation/PDFAnnotationPanel/PDFAnnotationUI/CPDFSignatureUI.xaml

@@ -4,6 +4,7 @@
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
              xmlns:local="clr-namespace:Compdfkit_Tools.Annotation.PDFAnnotationPanel.PDFAnnotationUI"
+             xmlns:common="clr-namespace:Compdfkit_Tools.Common"
              mc:Ignorable="d" 
              Loaded="UserControl_Loaded"
              Unloaded="UserControl_Unloaded"
@@ -13,6 +14,7 @@
             <ResourceDictionary.MergedDictionaries>
                 <ResourceDictionary Source="../../../Asset/Styles/ButtonStyle.xaml"></ResourceDictionary>
             </ResourceDictionary.MergedDictionaries>
+            <common:PropertyPanelResourceConverter x:Key="PropertyPanelResourceConverter"></common:PropertyPanelResourceConverter>
         </ResourceDictionary>
     </UserControl.Resources>
     <Grid  Background="#FAFCFF">
@@ -24,7 +26,7 @@
         </Grid.RowDefinitions>
         <Border BorderThickness="1" BorderBrush="#1A000000">
             <Grid  Height="40" Background="White" >
-                <TextBlock Text="Signature" FontFamily="Microsoft YaHei" FontSize="16" FontWeight="Bold" VerticalAlignment="Center" HorizontalAlignment="Center"/>
+                <TextBlock Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Title_Sig}" FontFamily="Microsoft YaHei" FontSize="16" FontWeight="Bold" VerticalAlignment="Center" HorizontalAlignment="Center"/>
             </Grid>
         </Border>
         <Button Grid.Row="2" Height="32" Width="236"  Click="CreateSignature_Click" Style="{StaticResource ButtonStyle}">
@@ -33,7 +35,7 @@
                     <Grid Width="17" Height="16">
                         <Path Data="M9 7.5V3H8V7.5H3.5V8.5H8V13H9V8.5H13.5V7.5H9Z" Fill="White"/>
                     </Grid>
-                    <TextBlock Margin="4,0,0,0" Text="New Signature" FontFamily="Microsoft YaHei" FontSize="14" FontWeight="Regular" Foreground="White"/>
+                    <TextBlock Margin="4,0,0,0" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Button_NewSig}" FontFamily="Microsoft YaHei" FontSize="14" FontWeight="Regular" Foreground="White"/>
                 </StackPanel>
             </Button.Content>
         </Button>

+ 8 - 6
Demo/Examples/Compdfkit_Tools/Annotation/PDFAnnotationPanel/PDFAnnotationUI/CPDFStampUI.xaml

@@ -2,7 +2,8 @@
              xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
-             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
+             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+             xmlns:common="clr-namespace:Compdfkit_Tools.Common"
              mc:Ignorable="d" 
              Loaded="UserControl_Loaded"
              d:DesignHeight="450" d:DesignWidth="800">
@@ -13,6 +14,7 @@
                 <ResourceDictionary Source="../../../Asset/Styles/TabControlStyle.xaml"></ResourceDictionary>
                 <ResourceDictionary Source="../../../Asset/Styles/TabItemStyle.xaml"></ResourceDictionary>
             </ResourceDictionary.MergedDictionaries>
+            <common:PropertyPanelResourceConverter x:Key="PropertyPanelResourceConverter"></common:PropertyPanelResourceConverter>
         </ResourceDictionary>
     </UserControl.Resources>
     <Grid Background="#FAFCFF">
@@ -22,11 +24,11 @@
         </Grid.RowDefinitions>
         <Border BorderThickness="1" BorderBrush="#1A000000">
             <Grid  Height="40" Background="White" >
-                <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="Stamp" FontSize="16" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
+                <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Title_Stamp}" FontSize="16" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
             </Grid>
         </Border>
         <TabControl Grid.Row="1" Style="{DynamicResource TabControlStyle1}" >
-            <TabItem Height="32" Style="{DynamicResource TabItemStyle1}" Header="Standard">
+            <TabItem Height="32" Style="{DynamicResource TabItemStyle1}" Header="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Stamp_Standard}">
                 <ListBox
                 x:Name="StandardListBox"
                 VerticalAlignment="Top"
@@ -99,7 +101,7 @@
                     </ListBox.ItemContainerStyle>
                 </ListBox>
             </TabItem>
-            <TabItem Height="32" Style="{DynamicResource TabItemStyle1}" Header="Custom">
+            <TabItem Height="32" Style="{DynamicResource TabItemStyle1}" Header="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Stamp_Custom}">
                 <Grid>
                     <Grid.RowDefinitions>
                         <RowDefinition Height="72"/>
@@ -109,13 +111,13 @@
                         <Button Background="#001A4E"  Height="32" Width="114" Click="Text_Click">
                             <StackPanel Orientation="Horizontal">
                                 <Path Fill="White" Width="16" Height="16" Data="M13 3V5.4074H11.8889V4.11111H8.55569V11.5444H9.72871V12.6555H6.27192V11.5444H7.44458V4.11111H4.11111V5.4074H3V3H13Z"/>
-                                <TextBlock Margin="4,0,0,0" Text="Text Stamp" Foreground="White" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Regular"/>
+                                <TextBlock Margin="4,0,0,0"  Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Custom_Text}" Foreground="White" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Regular"/>
                             </StackPanel>
                         </Button>
                         <Button Background="#001A4E"  Height="32" Width="114" Margin="8,0,0,0" Click="Image_Click">
                             <StackPanel Orientation="Horizontal">
                                 <Path Fill="White" Width="16" Height="16" Data="M1 2.6001H15V13.4001H1V2.6001ZM13.8 3.80009H2.2V10.5677L4.63597 8.00009L8.05143 10.8001L9.89748 8.8543L13.7153 12.2001H13.8V3.80009ZM11.6 7.20009C12.2627 7.20009 12.8 6.66283 12.8 6.00009C12.8 5.33735 12.2627 4.80009 11.6 4.80009C10.9373 4.80009 10.4 5.33735 10.4 6.00009C10.4 6.66283 10.9373 7.20009 11.6 7.20009Z" />
-                                <TextBlock Margin="4,0,0,0" Text="Image Stamp" Foreground="White" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Regular"/>
+                                <TextBlock Margin="4,0,0,0"  Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Custom_Image}" Foreground="White" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Regular"/>
                             </StackPanel>
                         </Button>
                     </StackPanel>

+ 1 - 1
Demo/Examples/Compdfkit_Tools/Asset/Styles/ComboBoxStyle.xaml

@@ -264,7 +264,7 @@
         <Setter Property="Background" Value="White"/>
         <Setter Property="ItemContainerStyle">
             <Setter.Value>
-                <!--ComBoxItem-->
+                <!--CmbItem-->
                 <Style TargetType="ComboBoxItem">
                     <Setter Property="MinHeight" Value="32"></Setter>
                     <Setter Property="MinWidth" Value="60"></Setter>

+ 3 - 2
Demo/Examples/Compdfkit_Tools/Common/BarControl/CPDFAnnotationBarControl.xaml.cs

@@ -6,6 +6,7 @@ using System.Windows.Controls;
 using System.Windows.Controls.Primitives;
 using System.Windows.Media;
 using System.Windows.Shapes;
+using Compdfkit_Tools.Helper;
 
 namespace Compdfkit_Tools.PDFControl
 {
@@ -293,7 +294,6 @@ namespace Compdfkit_Tools.PDFControl
                 canvas.VerticalAlignment = VerticalAlignment.Center;
                 toggleButton.Content = canvas;
                 toggleButton.Click += ToggleButton_Click;
-                toggleButton.ToolTip = toggleButton.Tag.ToString();
                 Grid.SetColumn(toggleButton, annotationCounter++);
                 AnnotationGrid.Children.Add(toggleButton);
             }
@@ -381,7 +381,8 @@ namespace Compdfkit_Tools.PDFControl
                 CPDFAnnotationType annotation = annotationProperties[i];
                 ToggleButton toggleButton = new ToggleButton
                 {
-                    Tag = annotation.ToString()
+                    Tag = annotation.ToString(),
+                    ToolTip = LanguageHelper.ToolBarManager.GetString("Tooltip_" + annotation)
                 };
                 CreateAnnotationButton(toggleButton);
                 AnnotationGrid.Width += 50;

Fichier diff supprimé car celui-ci est trop grand
+ 11 - 7
Demo/Examples/Compdfkit_Tools/Common/BarControl/CPDFDigitalSignatureBarControl.xaml.cs


+ 44 - 2
Demo/Examples/Compdfkit_Tools/Common/BarControl/CPDFPageEditBarControl.xaml.cs

@@ -16,12 +16,22 @@ using System.Windows.Media;
 using System.Windows.Media.Imaging;
 using System.Windows.Navigation;
 using System.Windows.Shapes;
+using Compdfkit_Tools.Helper;
 
 namespace Compdfkit_Tools.PDFControl
 {
     public partial class CPDFPageEditBarControl : UserControl, INotifyPropertyChanged
     {
         #region Data
+
+        private string insert = LanguageHelper.ToolBarManager.GetString("Button_Insert");
+        private string replace = LanguageHelper.ToolBarManager.GetString("Button_Replace");
+        private string extract = LanguageHelper.ToolBarManager.GetString("Button_Extract");
+        private string reverse = LanguageHelper.ToolBarManager.GetString("Button_Reverse");
+        private string copy = LanguageHelper.ToolBarManager.GetString("Button_Copy");
+        private string rotate = LanguageHelper.ToolBarManager.GetString("Button_Rotate");
+        private string delete = LanguageHelper.ToolBarManager.GetString("Button_Delete");
+        
         Dictionary<string, string> ButtonDict = new Dictionary<string, string>
         {
             {"Insert","M0.25 0.25H11.3107L15.75 4.68934V10H14.25V5.311L10.689 1.75H1.75V16.25H8V17.75H0.25V0.25ZM12.75 17H11.25V14.75H9V13.25H11.25V11H12.75V13.25H15V14.75H12.75V17Z"},
@@ -90,7 +100,7 @@ namespace Compdfkit_Tools.PDFControl
             }
             if (!string.IsNullOrEmpty(name))
             {
-                textBlock.Text = name;
+                textBlock.Text = GetToolString(name);
                 textBlock.VerticalAlignment = VerticalAlignment.Center;
                 textBlock.Margin = new Thickness(8, 0, 0, 0);
                 textBlock.FontSize = 12;
@@ -103,12 +113,44 @@ namespace Compdfkit_Tools.PDFControl
             button.BorderThickness = new Thickness(0);
             button.Padding = new Thickness(10, 5, 10, 5);
             button.Tag = name;
-            button.ToolTip = name;
+            button.ToolTip = GetToolString(name);
             button.Style = style;
             button.Content = stackPanel;
             button.Click += PageEditBtn_Click;
             FormGrid.Children.Add(button);
         }
+        
+        private string GetToolString(string name)
+        {
+            string tooltip = string.Empty;
+            switch (name)
+            {
+                case "Insert":
+                    tooltip = insert;
+                    break;
+                case "Replace":
+                    tooltip = replace;
+                    break;
+                case "Extract":
+                    tooltip = extract;
+                    break;
+                case "Reverse":
+                    tooltip = reverse;
+                    break;
+                case "Copy":
+                    tooltip = copy;
+                    break;
+                case "Rotate":
+                    tooltip = rotate;
+                    break;
+                case "Delete":
+                    tooltip = delete;
+                    break;
+                default:
+                    break;
+            }
+            return tooltip;
+        }
 
         private void PageEditBtn_Click(object sender, RoutedEventArgs e)
         {

Fichier diff supprimé car celui-ci est trop grand
+ 33 - 30
Demo/Examples/Compdfkit_Tools/Common/BarControl/FormBarControl.xaml.cs


+ 100 - 0
Demo/Examples/Compdfkit_Tools/Common/Convert/LanguageResourceConverter.cs

@@ -0,0 +1,100 @@
+using System;
+using System.Globalization;
+using System.Resources;
+using System.Windows.Data;
+using Compdfkit_Tools.Helper;
+
+namespace Compdfkit_Tools.Common
+{
+
+
+    public class BotaResourceConverter : IValueConverter
+    {
+        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+        {
+            if (parameter == null || string.IsNullOrEmpty(parameter.ToString()))
+            {
+                return string.Empty;
+            }
+
+            return LanguageHelper.BotaManager.GetString(parameter.ToString());
+        }
+
+        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+        {
+            throw new NotSupportedException();
+        }
+    }
+
+    public class CommonResourceConverter : IValueConverter
+    {
+        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+        {
+            if (parameter == null || string.IsNullOrEmpty(parameter.ToString()))
+            {
+                return string.Empty;
+            }
+
+            return LanguageHelper.CommonManager.GetString(parameter.ToString());
+        }
+
+        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+        {
+            throw new NotSupportedException();
+        }
+    }
+
+    public class PropertyPanelResourceConverter : IValueConverter
+    {
+        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+        {
+            if (parameter == null || string.IsNullOrEmpty(parameter.ToString()))
+            {
+                return string.Empty;
+            }
+
+            return LanguageHelper.PropertyPanelManager.GetString(parameter.ToString());
+        }
+
+        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+        {
+            throw new NotSupportedException();
+        }
+    }
+
+    public class ToolBarResourceConverter : IValueConverter
+    {
+        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+        {
+            if (parameter == null || string.IsNullOrEmpty(parameter.ToString()))
+            {
+                return string.Empty;
+            }
+
+            return LanguageHelper.ToolBarManager.GetString(parameter.ToString());
+        }
+
+        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+        {
+            throw new NotSupportedException();
+        }
+    }
+
+    public class SigResourceConverter : IValueConverter
+    {
+        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+        {
+            if (parameter == null || string.IsNullOrEmpty(parameter.ToString()))
+            {
+                return string.Empty;
+            }
+
+            return LanguageHelper.SigManager.GetString(parameter.ToString());
+        }
+
+        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+        {
+            throw new NotSupportedException();
+        }
+    }
+}

+ 5 - 1
Demo/Examples/Compdfkit_Tools/Common/Helper/LanguageHelper.cs

@@ -5,6 +5,10 @@ namespace Compdfkit_Tools.Helper
 {
     public abstract class LanguageHelper
     {
-		public static ResourceManager ToolsResourceManager= new ResourceManager("Compdfkit_Tools.Strings.Resources", Assembly.GetExecutingAssembly());
+		public static ResourceManager BotaManager= new ResourceManager("Compdfkit_Tools.Strings.Bota", Assembly.GetExecutingAssembly());
+        public static ResourceManager CommonManager= new ResourceManager("Compdfkit_Tools.Strings.Common", Assembly.GetExecutingAssembly());
+        public static ResourceManager PropertyPanelManager= new ResourceManager("Compdfkit_Tools.Strings.PropertyPanel", Assembly.GetExecutingAssembly());
+        public static ResourceManager ToolBarManager= new ResourceManager("Compdfkit_Tools.Strings.ToolBar", Assembly.GetExecutingAssembly());
+        public static ResourceManager SigManager= new ResourceManager("Compdfkit_Tools.Strings.Signature", Assembly.GetExecutingAssembly());
     }
 }

+ 11 - 11
Demo/Examples/Compdfkit_Tools/Common/PropertyControl/PDFArrow/CPDFArrowUI.xaml

@@ -7,7 +7,7 @@
              mc:Ignorable="d" 
              d:DesignHeight="30" d:DesignWidth="115">
     <UserControl.Resources>
-        <ControlTemplate x:Key="ComboxItemTemplate" TargetType="{x:Type ComboBoxItem}">
+        <ControlTemplate x:Key="CmbItemTemplate" TargetType="{x:Type ComboBoxItem}">
             <Border
                     Name="Bd"
                     Padding="{TemplateBinding Control.Padding}"
@@ -91,7 +91,7 @@
                         <Setter Property="Padding" Value="25 0 0 0"></Setter>
                     </Style>
                 </ComboBox.ItemContainerStyle>
-                <ComboBoxItem VerticalAlignment="Center" Height="32" Template="{StaticResource ComboxItemTemplate}">
+                <ComboBoxItem VerticalAlignment="Center" Height="32" Template="{StaticResource CmbItemTemplate}">
                     <Path Fill="#000000" Tag="Line" Height="20">
                         <Path.Data>
                             F1 M40,16z M0,0z M34,7.5L34,7.5 34,8.5 6,8.5 6,7.5z
@@ -99,7 +99,7 @@
                     </Path>
                 </ComboBoxItem>
 
-                <ComboBoxItem  VerticalAlignment="Center" Height="32" VerticalContentAlignment="Center" Template="{StaticResource ComboxItemTemplate}">
+                <ComboBoxItem  VerticalAlignment="Center" Height="32" VerticalContentAlignment="Center" Template="{StaticResource CmbItemTemplate}">
                     <Path Fill="#000000" Tag="Arrow" Height="20">
                         <Path.Data>
                             F1 M40,16z M0,0z M10.7427521,4.57125354L11.2572479,5.42874646 7.80417468,7.49925354 34,7.5 34,8.5 7.80417468,8.49925354 11.2572479,10.5712535 10.7427521,11.4287465 5.02817468,8 10.7427521,4.57125354z
@@ -107,7 +107,7 @@
                     </Path>
                 </ComboBoxItem>
 
-                <ComboBoxItem VerticalAlignment="Center" Height="32" VerticalContentAlignment="Center" Template="{StaticResource ComboxItemTemplate}">
+                <ComboBoxItem VerticalAlignment="Center" Height="32" VerticalContentAlignment="Center" Template="{StaticResource CmbItemTemplate}">
                     <Path Fill="#000000" Tag="CloseArrow" Height="20">
                         <Path.Data>
                             F1 M40,16z M0,0z M11.5,4.11690481L11.4991747,7.49990481 34,7.5 34,8.5 11.4991747,8.49990481 11.5,11.8830952 5.02817468,8 11.5,4.11690481z
@@ -115,7 +115,7 @@
                     </Path>
                 </ComboBoxItem>
 
-                <ComboBoxItem VerticalAlignment="Center" Height="32" VerticalContentAlignment="Center" Template="{StaticResource ComboxItemTemplate}">
+                <ComboBoxItem VerticalAlignment="Center" Height="32" VerticalContentAlignment="Center" Template="{StaticResource CmbItemTemplate}">
                     <Path Fill="#000000" Tag="Square"  Height="20">
                         <Path.Data>
                             M11.5,5 L11.5,7.5 L34,7.5 L34,8.5 L11.5,8.5 L11.5,11 L5.5,11 L5.5,5 L11.5,5 Z
@@ -123,7 +123,7 @@
                     </Path>
                 </ComboBoxItem>
 
-                <ComboBoxItem VerticalAlignment="Center" Height="32" VerticalContentAlignment="Center" Template="{StaticResource ComboxItemTemplate}">
+                <ComboBoxItem VerticalAlignment="Center" Height="32" VerticalContentAlignment="Center" Template="{StaticResource CmbItemTemplate}">
                     <Path Fill="#000000" Tag="Circle"  Height="20">
                         <Path.Data>
                             M8.5,5 C9.98660106,5 11.2206526,6.08129303 11.4585702,7.50029469 L34,7.5 L34,8.5 L11.4584039,8.50069618 C11.2200781,9.9192103 9.98625501,11 8.5,11 C6.84314575,11 5.5,9.65685425 5.5,8 C5.5,6.34314575 6.84314575,5 8.5,5 Z
@@ -131,7 +131,7 @@
                     </Path>
                 </ComboBoxItem>
 
-                <ComboBoxItem VerticalAlignment="Center" Height="32" VerticalContentAlignment="Center" Template="{StaticResource ComboxItemTemplate}">
+                <ComboBoxItem VerticalAlignment="Center" Height="32" VerticalContentAlignment="Center" Template="{StaticResource CmbItemTemplate}">
                     <Path Fill="#000000" Tag="Diamond"  Height="20">
                         <Path.Data>
                             M9,4.29289322 L12.2068932,7.49989322 L34,7.5 L34,8.5 L12.2068932,8.49989322 L9,11.7071068 L5.29289322,8 L9,4.29289322 Z
@@ -139,7 +139,7 @@
                     </Path>
                 </ComboBoxItem>
 
-                <ComboBoxItem VerticalAlignment="Center" Height="32" VerticalContentAlignment="Center" Template="{StaticResource ComboxItemTemplate}">
+                <ComboBoxItem VerticalAlignment="Center" Height="32" VerticalContentAlignment="Center" Template="{StaticResource CmbItemTemplate}">
                     <Path Fill="#000000" Tag="Butt"  Height="20">
                         <Path.Data>
                             M7.5,5.5 L7.5,7.5 L34,7.5 L34,8.5 L7.5,8.5 L7.5,10.5 L6.5,10.5 L6.5,5.5 L7.5,5.5 Z
@@ -147,7 +147,7 @@
                     </Path>
                 </ComboBoxItem>
 
-                <ComboBoxItem  VerticalAlignment="Center" Height="32" VerticalContentAlignment="Center" Template="{StaticResource ComboxItemTemplate}">
+                <ComboBoxItem  VerticalAlignment="Center" Height="32" VerticalContentAlignment="Center" Template="{StaticResource CmbItemTemplate}">
                     <Path Fill="#000000" Tag="RArrow" Height="20" >
                         <Path.Data>
                             M5.58660083,5.07600085 L9.46460189,7.49900085 L34,7.5 L34,8.5 L9.46460189,8.49900085 L5.58660083,10.9239992 L5.05660189,10.0760008 L8.37960136,8 L5.05660189,5.92399915 L5.58660083,5.07600085 Z
@@ -155,14 +155,14 @@
                     </Path>
                 </ComboBoxItem>
 
-                <ComboBoxItem VerticalAlignment="Center" Height="32" VerticalContentAlignment="Center" Template="{StaticResource ComboxItemTemplate}">
+                <ComboBoxItem VerticalAlignment="Center" Height="32" VerticalContentAlignment="Center" Template="{StaticResource CmbItemTemplate}">
                     <Path Fill="#000000" Tag="RCloseArrow" Height="20">
                         <Path.Data>
                             M5.5,4.59787618 L10.143,7.49987618 L34,7.5 L34,8.5 L10.143,8.49987618 L5.5,11.4021238 L5.5,4.59787618 Z
                         </Path.Data>
                     </Path>
                 </ComboBoxItem>
-                <ComboBoxItem VerticalAlignment="Center" Height="32" VerticalContentAlignment="Center" Template="{StaticResource ComboxItemTemplate}">
+                <ComboBoxItem VerticalAlignment="Center" Height="32" VerticalContentAlignment="Center" Template="{StaticResource CmbItemTemplate}">
                     <Path Fill="#000000" Tag="Slash" Height="20">
                         <Path.Data>
                             M9.531981,5.84644661 L10.239087,6.55355339 L9.292447,7.49944661 L34,7.5 L34,8.5 L8.292447,8.49944661 L6.703553,10.0890873 L5.996447,9.38198052 L9.531981,5.84644661 Z

+ 12 - 8
Demo/Examples/Compdfkit_Tools/Common/PropertyControl/PDFFont/CPDFFontUI.xaml.cs

@@ -3,12 +3,16 @@ using System.Collections.Generic;
 using System.ComponentModel;
 using System.Windows;
 using System.Windows.Controls;
+using Compdfkit_Tools.Helper;
 
 namespace Compdfkit_Tools.Common
 {
     public partial class CPDFFontUI : UserControl, INotifyPropertyChanged
     {
-
+        private string regular = LanguageHelper.PropertyPanelManager.GetString("Font_Regular");
+        private string bold = LanguageHelper.PropertyPanelManager.GetString("Font_Bold");
+        private string italic = LanguageHelper.PropertyPanelManager.GetString("Font_Oblique");
+        private string boldItalic = LanguageHelper.PropertyPanelManager.GetString("Font_BoldOblique");
         public event PropertyChangedEventHandler PropertyChanged;
         public event EventHandler FontFamilyChanged;
         public event EventHandler FontStyleChanged;
@@ -157,10 +161,10 @@ namespace Compdfkit_Tools.Common
 
             List<string> fontStyleList = new List<string>()
             {
-                {"Regular" },
-                {"Bold" },
-                {"Italic" },
-                {"Bold and Italic" }
+                regular,
+                bold,
+                italic,
+                boldItalic
             };
             FontStyleComboBox.ItemsSource = fontStyleList;
             FontStyleComboBox.SelectedIndex = 0;
@@ -200,17 +204,17 @@ namespace Compdfkit_Tools.Common
         private void FontStyleComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
         {
             FontStyleTextBox.Text = (sender as ComboBox).SelectedItem.ToString();
-            if (FontStyleTextBox.Text == "Regular")
+            if (FontStyleTextBox.Text == regular)
             {
                 IsBold = false;
                 IsItalic = false;
             }
-            else if (FontStyleTextBox.Text == "Italic")
+            else if (FontStyleTextBox.Text == italic)
             {
                 IsBold = false;
                 IsItalic = true;
             }
-            else if (FontStyleTextBox.Text == "Bold")
+            else if (FontStyleTextBox.Text == bold)
             {
                 IsBold = true;
                 IsItalic = false;

+ 40 - 3
Demo/Examples/Compdfkit_Tools/Compdfkit_Tools.csproj

@@ -133,6 +133,7 @@
     <Compile Include="Common\Convert\AntiStringToVisibilityConverter.cs" />
     <Compile Include="Common\Convert\CaptionHeightConverter.cs" />
     <Compile Include="Common\Convert\IntAndTagToBoolMultiBinding.cs" />
+    <Compile Include="Common\Convert\LanguageResourceConverter.cs" />
     <Compile Include="Common\Convert\ReverseBoolConverter.cs" />
     <Compile Include="Common\Convert\ReverseVisibilityConverter.cs" />
     <Compile Include="Common\Convert\StringToVisibilityConverter.cs" />
@@ -266,8 +267,8 @@
     <Compile Include="DigitalSignature\AddCertificationControl\AddExistedCertificationControl.xaml.cs">
       <DependentUpon>AddExistedCertificationControl.xaml</DependentUpon>
     </Compile>
-    <Compile Include="DigitalSignature\AddCertificationControl\SaveCerficateControl.xaml.cs">
-      <DependentUpon>SaveCerficateControl.xaml</DependentUpon>
+    <Compile Include="DigitalSignature\AddCertificationControl\SaveCertificateControl.xaml.cs">
+      <DependentUpon>SaveCertificateControl.xaml</DependentUpon>
     </Compile>
     <Compile Include="DigitalSignature\DigitalSignatureControl\CPDFSignatureListControl.xaml.cs">
       <DependentUpon>CPDFSignatureListControl.xaml</DependentUpon>
@@ -518,11 +519,26 @@
       <AutoGen>True</AutoGen>
       <DependentUpon>Common.resx</DependentUpon>
     </Compile>
+    <Compile Include="Strings\DocInfo.Designer.cs">
+      <DesignTime>True</DesignTime>
+      <AutoGen>True</AutoGen>
+      <DependentUpon>DocInfo.resx</DependentUpon>
+    </Compile>
     <Compile Include="Strings\PropertyPanel.Designer.cs">
       <DesignTime>True</DesignTime>
       <AutoGen>True</AutoGen>
       <DependentUpon>PropertyPanel.resx</DependentUpon>
     </Compile>
+    <Compile Include="Strings\Security.Designer.cs">
+      <DesignTime>True</DesignTime>
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Security.resx</DependentUpon>
+    </Compile>
+    <Compile Include="Strings\Signature.Designer.cs">
+      <DesignTime>True</DesignTime>
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Signature.resx</DependentUpon>
+    </Compile>
     <Compile Include="Strings\ToolBar.Designer.cs">
       <DesignTime>True</DesignTime>
       <AutoGen>True</AutoGen>
@@ -546,6 +562,13 @@
     <EmbeddedResource Include="Strings\Common.zh.resx">
       <DependentUpon>Common.resx</DependentUpon>
     </EmbeddedResource>
+    <EmbeddedResource Include="Strings\DocInfo.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>DocInfo.Designer.cs</LastGenOutput>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Strings\DocInfo.zh.resx">
+      <DependentUpon>DocInfo.resx</DependentUpon>
+    </EmbeddedResource>
     <EmbeddedResource Include="Strings\PropertyPanel.resx">
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>PropertyPanel.Designer.cs</LastGenOutput>
@@ -553,6 +576,20 @@
     <EmbeddedResource Include="Strings\PropertyPanel.zh.resx">
       <DependentUpon>PropertyPanel.resx</DependentUpon>
     </EmbeddedResource>
+    <EmbeddedResource Include="Strings\Security.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Security.Designer.cs</LastGenOutput>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Strings\Security.zh.resx">
+      <DependentUpon>Security.resx</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Strings\Signature.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Signature.Designer.cs</LastGenOutput>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Strings\Signature.zh.resx">
+      <DependentUpon>Signature.resx</DependentUpon>
+    </EmbeddedResource>
     <EmbeddedResource Include="Strings\ToolBar.resx">
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>ToolBar.Designer.cs</LastGenOutput>
@@ -875,7 +912,7 @@
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
     </Page>
-    <Page Include="DigitalSignature\AddCertificationControl\SaveCerficateControl.xaml">
+    <Page Include="DigitalSignature\AddCertificationControl\SaveCertificateControl.xaml">
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
     </Page>

Fichier diff supprimé car celui-ci est trop grand
+ 13 - 11
Demo/Examples/Compdfkit_Tools/DigitalSignature/AddCertificationControl/AddCertificationControl.xaml


+ 1 - 1
Demo/Examples/Compdfkit_Tools/DigitalSignature/AddCertificationControl/AddCertificationDialog.xaml

@@ -7,7 +7,7 @@
         mc:Ignorable="d"
         ResizeMode="NoResize"
         ShowInTaskbar="False"
-        Title="AddCertificationDialog" Height="505" Width="482"
+        Height="505" Width="482"
         Loaded="Window_Loaded">
     <Border x:Name="BodyBd">
         

+ 16 - 16
Demo/Examples/Compdfkit_Tools/DigitalSignature/AddCertificationControl/AddCertificationDialog.xaml.cs

@@ -22,13 +22,13 @@ namespace Compdfkit_Tools.PDFControl
         private AddCertificationControl addCertificationControl = null;
         private AddCustomCertificationControl addCustomCertificationControl = null;
         private AddExistedCertificationControl addExistedCertificationControl = null;
-        private SaveCerficateControl saveCerficateControl = null;
+        private SaveCertificateControl saveCertificateControl = null;
+
+        private string addCertificationControlTitle = Helper.LanguageHelper.SigManager.GetString("Title_AddDigitalSign");
+        private string addExistedCertificationControlTitle = Helper.LanguageHelper.SigManager.GetString("Title_AddID");
+        private string addCustomCertificationControlTitle = Helper.LanguageHelper.SigManager.GetString("Title_SignAp");
+        private string saveCertificateTitle = Helper.LanguageHelper.SigManager.GetString("Title_Save");
 
-        private string addCertificationControlTitle = "Add Digital Signatures";
-        private string addExistedCertificationControlTitle = "Add A Digital ID";
-        private string addCustomCertificationControlTitle = "Customize the Signature";
-        private string saveCerficateControlTitle = "Save the Self-Signed Digital ID to A File";
-        
         public event EventHandler<CertificateAccess> FillSignatureEvent;
 
 
@@ -80,17 +80,17 @@ namespace Compdfkit_Tools.PDFControl
             }
             else if (e == CreateCertificationMode.SaveCertificate)
             {
-                saveCerficateControl = new SaveCerficateControl();
-                saveCerficateControl.CertificateInfo = addCustomCertificationControl.CertificateInfo;
-                BodyBd.Child = saveCerficateControl;
-                Title = saveCerficateControlTitle;
+                saveCertificateControl = new SaveCertificateControl();
+                saveCertificateControl.CertificateInfo = addCustomCertificationControl.CertificateInfo;
+                BodyBd.Child = saveCertificateControl;
+                Title = saveCertificateTitle;
                 
-                this.Height = saveCerficateControl.Height + 20;
-                this.Width = saveCerficateControl.Width + 20;
-                saveCerficateControl.FillSignatureEvent -= FillSignature;
-                saveCerficateControl.FillSignatureEvent += FillSignature;
-                saveCerficateControl.CancelSaveEvent -= CancelSaveEvent;
-                saveCerficateControl.CancelSaveEvent += CancelSaveEvent;
+                this.Height = saveCertificateControl.Height + 20;
+                this.Width = saveCertificateControl.Width + 20;
+                saveCertificateControl.FillSignatureEvent -= FillSignature;
+                saveCertificateControl.FillSignatureEvent += FillSignature;
+                saveCertificateControl.CancelSaveEvent -= CancelSaveEvent;
+                saveCertificateControl.CancelSaveEvent += CancelSaveEvent;
             }
         }
 

+ 15 - 14
Demo/Examples/Compdfkit_Tools/DigitalSignature/AddCertificationControl/AddCustomCertificationControl.xaml

@@ -10,6 +10,7 @@
     <UserControl.Resources>
         <cpdfcommon:TextLengthToVisibilityConverter x:Key="TextLengthToVisibilityConverter"></cpdfcommon:TextLengthToVisibilityConverter>
         <cpdfcommon:BoolToCollapsedConverter x:Key="BoolToCollapsedConverter"></cpdfcommon:BoolToCollapsedConverter>
+        <cpdfcommon:SigResourceConverter x:Key="SigResourceConverter"></cpdfcommon:SigResourceConverter>
     </UserControl.Resources>
     <Grid>
         <Grid.RowDefinitions>
@@ -18,7 +19,7 @@
             <RowDefinition></RowDefinition>
         </Grid.RowDefinitions>
         <Grid Background="#ffffff"  Margin="20,0,0,0"  Panel.ZIndex="1" Height="20" HorizontalAlignment="Left" VerticalAlignment="Top">
-            <TextBlock Text="Signature Information" FontWeight="Bold" FontSize="16"></TextBlock>
+            <TextBlock Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Title_SigInfo}" FontWeight="Bold" FontSize="16"></TextBlock>
         </Grid>
         <Border Margin="12" BorderBrush="#33000000" BorderThickness="1">
             <Grid Margin="10">
@@ -35,46 +36,46 @@
                     <ColumnDefinition Width="2*"></ColumnDefinition>
                 </Grid.ColumnDefinitions>
                 <StackPanel Orientation="Horizontal">
-                    <TextBlock Text="Grantor Name" VerticalAlignment="Center"></TextBlock>
+                    <TextBlock Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Tip_Name}" VerticalAlignment="Center"></TextBlock>
                     <TextBlock Text="*" Foreground="Red" VerticalAlignment="Center"></TextBlock>
                 </StackPanel>
                 <Grid Grid.Column="1">
                     <TextBox Height="28" x:Name="GrantorNameTxt" VerticalContentAlignment="Center" VerticalAlignment="Center" Text="{Binding GrantorName}"/>
-                    <TextBlock Text="Please Enter Grantor Name" VerticalAlignment="Center"  Margin="10,0,0,0" Visibility="{Binding ElementName=GrantorNameTxt, Path=Text, Converter={StaticResource TextLengthToVisibilityConverter}}" IsHitTestVisible="False"  Foreground="#BBB"></TextBlock>
+                    <TextBlock Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Holder_Name}" VerticalAlignment="Center"  Margin="10,0,0,0" Visibility="{Binding ElementName=GrantorNameTxt, Path=Text, Converter={StaticResource TextLengthToVisibilityConverter}}" IsHitTestVisible="False"  Foreground="#BBB"></TextBlock>
                 </Grid>
-                <TextBlock Grid.Row="1" Text="Organizational Unit" VerticalAlignment="Center"></TextBlock>
+                <TextBlock Grid.Row="1" Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Tip_Unit}" VerticalAlignment="Center"></TextBlock>
                 <Grid Grid.Column="1" Grid.Row="1">
                     <TextBox Height="28" x:Name="OrganizationalUnitTxt" VerticalContentAlignment="Center" Text="{Binding OrganizationalUnit}" VerticalAlignment="Center"/>
-                    <TextBlock Text="Please Enter Organizational Unit" VerticalAlignment="Center"  Margin="10,0,0,0" Visibility="{Binding ElementName=OrganizationalUnitTxt, Path=Text, Converter={StaticResource TextLengthToVisibilityConverter}}" IsHitTestVisible="False"  Foreground="#BBB"></TextBlock>
+                    <TextBlock Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Holder_Unit}" VerticalAlignment="Center"  Margin="10,0,0,0" Visibility="{Binding ElementName=OrganizationalUnitTxt, Path=Text, Converter={StaticResource TextLengthToVisibilityConverter}}" IsHitTestVisible="False"  Foreground="#BBB"></TextBlock>
                 </Grid>
-                <TextBlock Grid.Row="2" Text="Organization" VerticalAlignment="Center"></TextBlock>
+                <TextBlock Grid.Row="2" Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Tip_Organization}" VerticalAlignment="Center"></TextBlock>
                 <Grid Grid.Column="1" Grid.Row="2">
                     <TextBox Height="28" x:Name="OrganizationTxt" VerticalContentAlignment="Center" Text="{Binding Organization}" VerticalAlignment="Center"/>
-                    <TextBlock Text="Please Enter Organization" VerticalAlignment="Center"  Margin="10,0,0,0" Visibility="{Binding ElementName=OrganizationTxt, Path=Text, Converter={StaticResource TextLengthToVisibilityConverter}}" IsHitTestVisible="False"  Foreground="#BBB"></TextBlock>
+                    <TextBlock Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Holder_Organization}" VerticalAlignment="Center"  Margin="10,0,0,0" Visibility="{Binding ElementName=OrganizationTxt, Path=Text, Converter={StaticResource TextLengthToVisibilityConverter}}" IsHitTestVisible="False"  Foreground="#BBB"></TextBlock>
                 </Grid>
                 <StackPanel Grid.Row="3" Orientation="Horizontal">
-                    <TextBlock Text="Email" VerticalAlignment="Center"></TextBlock>
+                    <TextBlock Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Tip_Email}" VerticalAlignment="Center"></TextBlock>
                     <TextBlock Text="*" Foreground="Red" VerticalAlignment="Center"></TextBlock>
                 </StackPanel>
                 <Grid Grid.Column="1" Grid.Row="3">
                     <TextBox Height="28" x:Name="EmailTxt" VerticalContentAlignment="Center" Text="{Binding Email}" VerticalAlignment="Center"/>
-                    <TextBlock Text="Please Enter Email" VerticalAlignment="Center"  Margin="10,0,0,0" Visibility="{Binding ElementName=EmailTxt, Path=Text, Converter={StaticResource TextLengthToVisibilityConverter}}" IsHitTestVisible="False"  Foreground="#BBB"></TextBlock>
+                    <TextBlock Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Holder_Email}" VerticalAlignment="Center"  Margin="10,0,0,0" Visibility="{Binding ElementName=EmailTxt, Path=Text, Converter={StaticResource TextLengthToVisibilityConverter}}" IsHitTestVisible="False"  Foreground="#BBB"></TextBlock>
                 </Grid>
-                <TextBlock Grid.Row="4" Text="Country/Area" VerticalAlignment="Center"></TextBlock>
+                <TextBlock Grid.Row="4" Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Tip_Country}" VerticalAlignment="Center"></TextBlock>
                 <Grid Grid.Column="1" Grid.Row="4">
                     <ComboBox Margin="0,5,0,5" Name="AreaCmb" SelectedIndex="0" SelectionChanged="AreaCmb_SelectionChanged"></ComboBox>
                 </Grid>
-                <TextBlock Grid.Row="5" Text="Purpose" VerticalAlignment="Center"></TextBlock>
+                <TextBlock Grid.Row="5" Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Tip_Use}" VerticalAlignment="Center"></TextBlock>
                 <Grid Grid.Column="1" Grid.Row="5">
-                    <ComboBox Margin="0,5,0,5" Name="PurposeCmb" SelectedIndex="0" SelectionChanged="PurposeCmb_SelectionChanged"></ComboBox>
+                    <ComboBox Margin="0,5,0,5" VerticalContentAlignment="Center" Name="PurposeCmb" SelectedIndex="0" SelectionChanged="PurposeCmb_SelectionChanged"></ComboBox>
                 </Grid>
             </Grid>
         </Border>
         <TextBlock Grid.Row="1" Name="ErrorTipsText" Foreground="Red" Margin="15,0,24,14"></TextBlock>
         <Grid Grid.Row="2">
             <StackPanel Margin="0,-10,24,12" VerticalAlignment="Bottom" Orientation="Horizontal" HorizontalAlignment="Right">
-                <Button x:Name="CancelBtn" Height="32" Width="112" Margin="0,0,8,0" Content="Cancel" Click="CancelBtn_Click"></Button>
-                <Button x:Name="SaveBtn" Height="32" Width="112" Content="Save" Click="SaveBtn_Click"></Button>
+                <Button x:Name="CancelBtn" Height="32" Width="112" Margin="0,0,8,0" Content="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Button_Cancel}" Click="CancelBtn_Click"></Button>
+                <Button x:Name="SaveBtn" Height="32" Width="112" Content="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Button_Continue}" Click="SaveBtn_Click"></Button>
             </StackPanel>   
         </Grid>
     </Grid>

+ 3 - 4
Demo/Examples/Compdfkit_Tools/DigitalSignature/AddCertificationControl/AddCustomCertificationControl.xaml.cs

@@ -96,10 +96,9 @@ namespace Compdfkit_Tools.PDFControl
         private void FillComboBoxWithPropose()
         {
             PurposeCmb.Items.Clear();
-            PurposeCmb.Items.Add("Digital Signatures");
-            PurposeCmb.Items.Add("Data Encryption");
-            PurposeCmb.Items.Add("Digital Signatures and Data Encryption");
-
+            PurposeCmb.Items.Add(LanguageHelper.SigManager.GetString("Option_Sign"));
+            PurposeCmb.Items.Add(LanguageHelper.SigManager.GetString("Option_Encrypt"));
+            PurposeCmb.Items.Add(LanguageHelper.SigManager.GetString("Option_SignAndEncrypt"));
         }
 
         private void FillComboBoxWithCountries()

+ 10 - 9
Demo/Examples/Compdfkit_Tools/DigitalSignature/AddCertificationControl/AddExistedCertificationControl.xaml

@@ -9,6 +9,7 @@
         Height="277" Width="470">
     <UserControl.Resources>
         <common:TextLengthToVisibilityConverter x:Key="TextLengthToVisibilityConverter"></common:TextLengthToVisibilityConverter>
+        <common:SigResourceConverter x:Key="SigResourceConverter"></common:SigResourceConverter>
     </UserControl.Resources>
     <Grid>
         <Grid.RowDefinitions>
@@ -18,30 +19,30 @@
             <RowDefinition></RowDefinition>
         </Grid.RowDefinitions>
         <TextBlock TextWrapping="Wrap" FontSize="14" Foreground="#000000" Margin="10,20,10,20" Height="40"
-                   Text="Browse a digital ID file. Digital ID cards are password-protected. If you do not know the password, you cannot obtain a digital ID card.">
+                   Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Tip_AddID}">
         </TextBlock>
         <StackPanel Grid.Row="1" Orientation="Horizontal" Margin="10,0,10,8">
-            <TextBlock Text="Certificate File" Foreground="#43474D" FontSize="14" VerticalAlignment="Center" Margin="10,0,10,0" HorizontalAlignment="Left" Width="88" FontFamily="Microsoft YaHei"></TextBlock>
+            <TextBlock Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Tip_Cert}" Foreground="#43474D" FontSize="14" VerticalAlignment="Center" Margin="10,0,10,0" HorizontalAlignment="Left" Width="88" FontFamily="Microsoft YaHei"></TextBlock>
             <Grid IsEnabled="{Binding InputEnable}">
                 <TextBox Width="238" Height="28"  x:Name="FileNameTxt" VerticalContentAlignment="Center" VerticalAlignment="Center" IsReadOnly="True" TextChanged="FileNameTxt_OnTextChanged"/>
-                <TextBlock Text="Select a file" Margin="8" VerticalAlignment="Center"   Visibility="{Binding ElementName=FileNameTxt, Path=Text, Converter={StaticResource TextLengthToVisibilityConverter}}" IsHitTestVisible="False"  Foreground="#BBB"></TextBlock>
+                <TextBlock Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Holder_Path}" Margin="8" VerticalAlignment="Center"   Visibility="{Binding ElementName=FileNameTxt, Path=Text, Converter={StaticResource TextLengthToVisibilityConverter}}" IsHitTestVisible="False"  Foreground="#BBB"></TextBlock>
             </Grid>
-            <Button x:Name="SelectFileBtn" Content="Upload" Width="90" Height="28" FontSize="14" FontFamily="Microsoft YaHei" Margin="8,0,0,0" Click="SelectFileBtn_Click"></Button>
+            <Button x:Name="SelectFileBtn" Content="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Button_Upload}" Width="90" Height="28" FontSize="14" FontFamily="Microsoft YaHei" Margin="8,0,0,0" Click="SelectFileBtn_Click"></Button>
         </StackPanel>
         <StackPanel Grid.Row="2" Orientation="Horizontal"  Margin="10,0,0,8">
-            <TextBlock Foreground="#43474D" Width="88" FontSize="14" FontFamily="Microsoft YaHei" Text="Password" VerticalAlignment="Top" Margin="10,5,10,0"></TextBlock>
+            <TextBlock Foreground="#43474D" Width="88" FontSize="14" FontFamily="Microsoft YaHei" Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Tip_Password}" VerticalAlignment="Top" Margin="10,5,10,0"></TextBlock>
             <StackPanel  Margin="0,0,0,0">
                 <Grid>
                     <PasswordBox Name="PasswordBoxTxt" Padding="5,0,0,0" Width="238" Height="28"  VerticalContentAlignment="Center" VerticalAlignment="Center" PasswordChanged="PasswordBoxTxt_OnPasswordChanged"></PasswordBox>
-                    <TextBlock x:Name="PasswordTextBlock" Text="Please enter your password" Margin="8" VerticalAlignment="Center" IsHitTestVisible="False" Foreground="#BBB"></TextBlock>
+                    <TextBlock x:Name="PasswordTextBlock" Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Holder_Password}" Margin="8" VerticalAlignment="Center" IsHitTestVisible="False" Foreground="#BBB"></TextBlock>
                 </Grid>
                 <TextBlock Name="ErrorTipsText" Foreground="Red" Margin="0,4,0,0"></TextBlock>
             </StackPanel>
         </StackPanel>
         <Grid Grid.Row="3">
-            <StackPanel  Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="24"> 
-                <Button x:Name="CancelBtn" Content="Cancel"  Margin="0,0,10,0" Width="112" Height="32" BorderThickness="1" Click="CancelBtn_Click"></Button>
-                <Button x:Name="DoneBtn" Content="OK" Width="112" Height="32" BorderThickness="1" IsEnabled="{Binding CanContinue}" Click="DoneBtn_Click"></Button>
+            <StackPanel  Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="24">
+                <Button x:Name="CancelBtn" Content="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Button_Cancel}"  Margin="0,0,10,0" Width="112" Height="32" BorderThickness="1" Click="CancelBtn_Click"></Button>
+                <Button x:Name="DoneBtn" Content="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Button_OK}" Width="112" Height="32" BorderThickness="1" IsEnabled="{Binding CanContinue}" Click="DoneBtn_Click"></Button>
             </StackPanel>
         </Grid> 
     </Grid>

+ 12 - 11
Demo/Examples/Compdfkit_Tools/DigitalSignature/AddCertificationControl/SaveCerficateControl.xaml

@@ -1,4 +1,4 @@
-<UserControl x:Class="Compdfkit_Tools.PDFControl.SaveCerficateControl"
+<UserControl x:Class="Compdfkit_Tools.PDFControl.SaveCertificateControl"
              xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
@@ -9,6 +9,7 @@
              Height="310" Width="550">
     <UserControl.Resources>
         <common:TextLengthToVisibilityConverter x:Key="TextLengthToVisibilityConverter"></common:TextLengthToVisibilityConverter>
+        <common:SigResourceConverter x:Key="SigResourceConverter"></common:SigResourceConverter>
     </UserControl.Resources>
     <Grid>
         <Grid.RowDefinitions>
@@ -20,36 +21,36 @@
             <RowDefinition></RowDefinition>
         </Grid.RowDefinitions>
         <TextBlock TextWrapping="Wrap" FontSize="14" Foreground="#000000" Margin="10,20,10,20" Height="40"
-                   Text="Save the Self-Signed Digital ID to A File">
+                   Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Title_Save}">
         </TextBlock>
         <StackPanel Grid.Row="1" Orientation="Horizontal" Margin="10,0,0,8">
-            <TextBlock Text="Save Location" Foreground="#43474D" FontSize="14" VerticalAlignment="Center" Margin="10,0,10,0" HorizontalAlignment="Left" Width="135" FontFamily="Microsoft YaHei"></TextBlock>
+            <TextBlock Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Tip_Save}" Foreground="#43474D" FontSize="14" VerticalAlignment="Center" Margin="10,0,10,0" HorizontalAlignment="Left" Width="135" FontFamily="Microsoft YaHei"></TextBlock>
             <Grid>
                 <TextBox Width="258" Height="28"  x:Name="FileNameText" VerticalContentAlignment="Center" VerticalAlignment="Center" IsReadOnly="True" Text="{Binding FilePath, Mode =TwoWay}"/>
-                <TextBlock Text="Select a file" Margin="8" VerticalAlignment="Center"   Visibility="{Binding ElementName=FileNameText, Path=Text, Converter={StaticResource TextLengthToVisibilityConverter}}" IsHitTestVisible="False"  Foreground="#BBB"></TextBlock>
+                <TextBlock Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Holder_SelectFile}" Margin="8" VerticalAlignment="Center"   Visibility="{Binding ElementName=FileNameText, Path=Text, Converter={StaticResource TextLengthToVisibilityConverter}}" IsHitTestVisible="False"  Foreground="#BBB"></TextBlock>
             </Grid>
-            <Button x:Name="SelectFileBtn" Content="Browse" Width="90" Height="28" FontSize="14" FontFamily="Microsoft YaHei" Margin="8,0,0,0" Click="SelectFileBtn_Click"></Button>
+            <Button x:Name="SelectFileBtn" Content="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Button_Browse}" Width="90" Height="28" FontSize="14" FontFamily="Microsoft YaHei" Margin="8,0,0,0" Click="SelectFileBtn_Click"></Button>
         </StackPanel>
         <StackPanel Grid.Row="2" Orientation="Horizontal"  Margin="10,0,0,8">
-            <TextBlock Foreground="#43474D" Width="135" FontSize="14" FontFamily="Microsoft YaHei" Text="Set A Password" VerticalAlignment="Top" Margin="10,5,10,0"></TextBlock>
+            <TextBlock Foreground="#43474D" Width="135" FontSize="14" FontFamily="Microsoft YaHei" Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Tip_SetPassword}" VerticalAlignment="Top" Margin="10,5,10,0"></TextBlock>
             <Grid>
                 <PasswordBox Name="SetPasswordPbx" Padding="5,0,0,0" Width="258" Height="28" VerticalContentAlignment="Center" VerticalAlignment="Center" PasswordChanged="SetPasswordPbx_OnPasswordChanged"></PasswordBox>
-                <TextBlock x:Name="PasswordTextBlock" Text="Please enter your password" Margin="8" VerticalAlignment="Center" IsHitTestVisible="False" Foreground="#BBB"></TextBlock>
+                <TextBlock x:Name="PasswordTextBlock" Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Holder_SetPassword}" Margin="8" VerticalAlignment="Center" IsHitTestVisible="False" Foreground="#BBB"></TextBlock>
             </Grid>
 
         </StackPanel>
         <StackPanel Grid.Row="3" Orientation="Horizontal"  Margin="10,0,0,8">
-            <TextBlock Foreground="#43474D" Width="135" FontSize="14" FontFamily="Microsoft YaHei" Text="Confirm the Password" VerticalAlignment="Top" Margin="10,5,10,0"></TextBlock>
+            <TextBlock Foreground="#43474D" Width="135" FontSize="14" FontFamily="Microsoft YaHei" Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Tip_Confirm}" VerticalAlignment="Top" Margin="10,5,10,0"></TextBlock>
             <Grid>
                 <PasswordBox Name="ConfirmPasswordPbx" Padding="5,0,0,0" Width="258" Height="28"  VerticalContentAlignment="Center" VerticalAlignment="Center" PasswordChanged="ConfirmPasswordPbx_OnPasswordChanged"></PasswordBox>
-                <TextBlock x:Name="ConfirmPasswordTextBlock" Text="Enter the password again" Margin="8" VerticalAlignment="Center" IsHitTestVisible="False" Foreground="#BBB"></TextBlock>
+                <TextBlock x:Name="ConfirmPasswordTextBlock" Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Holder_ConfirmPassword}" Margin="8" VerticalAlignment="Center" IsHitTestVisible="False" Foreground="#BBB"></TextBlock>
             </Grid>
         </StackPanel>
         <TextBlock Name="ErrorTipsText" Foreground="Red" Margin="167,4,0,0" Grid.Row="4"></TextBlock>
         <Grid Grid.Row="5">
             <StackPanel  Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="24">
-                <Button x:Name="CancelBtn" Content="Cancel"  Margin="0,0,10,0" Width="112" Height="32" BorderThickness="1" Click="CancelBtn_Click"></Button>
-                <Button x:Name="DoneBtn" Content="Finish" Width="112" Height="32" BorderThickness="1" Click="DoneBtn_Click"></Button>
+                <Button x:Name="CancelBtn" Content="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Button_Cancel}"  Margin="0,0,10,0" Width="112" Height="32" BorderThickness="1" Click="CancelBtn_Click"></Button>
+                <Button x:Name="DoneBtn" Content="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Button_Finish}" Width="112" Height="32" BorderThickness="1" Click="DoneBtn_Click"></Button>
             </StackPanel>
         </Grid>
     </Grid>

+ 5 - 5
Demo/Examples/Compdfkit_Tools/DigitalSignature/AddCertificationControl/SaveCerficateControl.xaml.cs

@@ -12,7 +12,7 @@ namespace Compdfkit_Tools.PDFControl
     /// <summary>
     /// Interaction logic for SaveCertificateControlControl.xaml
     /// </summary>
-    public partial class SaveCerficateControl : UserControl, INotifyPropertyChanged
+    public partial class SaveCertificateControl : UserControl, INotifyPropertyChanged
     {
         public CertificateInfo CertificateInfo;
         
@@ -29,7 +29,7 @@ namespace Compdfkit_Tools.PDFControl
             set => UpdateProper(ref _filePath, value);
         }
 
-        public SaveCerficateControl()
+        public SaveCertificateControl()
         {
             InitializeComponent();
             this.DataContext = this;
@@ -48,13 +48,13 @@ namespace Compdfkit_Tools.PDFControl
         {
             if(string.IsNullOrEmpty(FilePath))
             {
-                ErrorTipsText.Text = "Please select a file path";
+                ErrorTipsText.Text = LanguageHelper.SigManager.GetString("Warn_NoFile");
                 return;
             }
 
             if (string.IsNullOrEmpty(SetPasswordPbx.Password))
             {
-                ErrorTipsText.Text = "Please enter a password";
+                ErrorTipsText.Text = LanguageHelper.SigManager.GetString("Warn_NoPassword");
                 return;
             }
 
@@ -64,7 +64,7 @@ namespace Compdfkit_Tools.PDFControl
             }
             else
             {
-                ErrorTipsText.Text = "Password and confirm password does not match";
+                ErrorTipsText.Text = LanguageHelper.SigManager.GetString("Warn_Password");
                 return;
             }
 

+ 25 - 24
Demo/Examples/Compdfkit_Tools/DigitalSignature/FillDigitalSignatureControl/FillDigitalSignatureControl.xaml

@@ -15,6 +15,7 @@
                 <ResourceDictionary Source="../../Asset/Styles/ButtonStyle.xaml"></ResourceDictionary>
                 <ResourceDictionary Source="../../Asset/Styles/ComboBoxStyle.xaml"></ResourceDictionary>
             </ResourceDictionary.MergedDictionaries>
+            <common:SigResourceConverter x:Key="SigResourceConverter"></common:SigResourceConverter>
         </ResourceDictionary>
     </UserControl.Resources>
     <Grid>
@@ -41,28 +42,28 @@
                 <Grid>
                     <Border Name="KeyboardBorder" Background="White" Padding="0,0,0,5" BorderBrush="#4982E6" Width="75"
                       MouseDown="Border_MouseDown" Tag="Keyboard">
-                        <TextBlock FontSize="16">Keyboard</TextBlock>
+                        <TextBlock FontSize="16" HorizontalAlignment="Center" Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Option_Keyboard}"></TextBlock>
                     </Border>
                 </Grid>
 
                 <Grid Grid.Column="1">
                     <Border Name="TrackpadBorder" Background="White" Padding="0,0,0,5" BorderBrush="#4982E6" Width="72"
                       MouseDown="Border_MouseDown" Tag="Trackpad">
-                        <TextBlock FontSize="16">Trackpad</TextBlock>
+                        <TextBlock FontSize="16" HorizontalAlignment="Center" Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Option_Trackpad}"></TextBlock>
                     </Border>
                 </Grid>
 
                 <Grid Grid.Column="2">
                     <Border Name="ImageBorder" Background="White" Padding="0,0,0,5" BorderBrush="#4982E6" Width="52"
                       MouseDown="Border_MouseDown" Tag="Image">
-                        <TextBlock FontSize="16">Image</TextBlock>
+                        <TextBlock FontSize="16" HorizontalAlignment="Center" Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Option_Image}"></TextBlock>
                     </Border>
                 </Grid>
 
                 <Grid Grid.Column="3">
                     <Border Name="NoneBorder" Background="White" Padding="0,0,0,5" BorderBrush="#4982E6" Width="43"
                       MouseDown="Border_MouseDown" Tag="None">
-                        <TextBlock FontSize="16">None</TextBlock>
+                        <TextBlock FontSize="16" HorizontalAlignment="Center" Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Option_None}"></TextBlock>
                     </Border>
                 </Grid>
             </Grid>
@@ -73,8 +74,8 @@
 
             <StackPanel Grid.Row="2" Name="ImagePickPanel" HorizontalAlignment="Right" Orientation="Horizontal" Margin="0,6,30,0"
                         Visibility="Hidden">
-                <TextBlock x:Name="BrowseTxt" Foreground="Blue" MouseLeftButtonDown="BrowseTxt_MouseLeftButtonDown">Browse</TextBlock>
-                <TextBlock x:Name="ClearTxt" Margin="10,0,0,0" Foreground="Blue" MouseLeftButtonDown="ClearTxt_MouseLeftButtonDown">Clear</TextBlock>
+                <TextBlock x:Name="BrowseTxt" Foreground="Blue" MouseLeftButtonDown="BrowseTxt_MouseLeftButtonDown" Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Button_Browse}"></TextBlock>
+                <TextBlock x:Name="ClearTxt" Margin="10,0,0,0" Foreground="Blue" MouseLeftButtonDown="ClearTxt_MouseLeftButtonDown" Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Button_Clear}"></TextBlock>
             </StackPanel>
 
             <Grid Grid.Row="3" Margin="25,0,25,0">
@@ -82,9 +83,9 @@
                     <ColumnDefinition Width="*"></ColumnDefinition>
                     <ColumnDefinition Width="auto"></ColumnDefinition>
                 </Grid.ColumnDefinitions>
-                <TextBlock FontSize="14" Margin="0,3,0,0">Include Text</TextBlock>
+                <TextBlock FontSize="14" Margin="0,3,0,0" Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Tip_Include}"></TextBlock>
                 <StackPanel Margin="00,0,20,0" Grid.Column="1" Orientation="Horizontal">
-                    <TextBlock FontSize="14" VerticalAlignment="Center" Margin="0,0,8,0">Alignment</TextBlock>
+                    <TextBlock FontSize="14" VerticalAlignment="Center" Margin="0,0,8,0" Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Tip_TextAlignment}"></TextBlock>
                     <ToggleButton Name="TextAlignLeftBtn" Style="{StaticResource ToggleButtonStyle}" BorderThickness="0" Width="73" Height="30" 
                             IsChecked="True" Click="TextAlignBtn_Click">
                         <Path Fill="Black">
@@ -124,15 +125,15 @@
                         <ColumnDefinition Width="auto"></ColumnDefinition>
                     </Grid.ColumnDefinitions>
 
-                    <CheckBox x:Name="NameChk" FontSize="14" Click="NameChk_Click">Name</CheckBox>
-                    <CheckBox x:Name="DateChk" FontSize="14" Grid.Row="1" Click="DateChk_Click">Date</CheckBox>
-                    <CheckBox x:Name="LogoChk" FontSize="14" Grid.Row="2" Click="LogoChk_Click">Logo</CheckBox>
-                    <CheckBox x:Name="ReasonChk" FontSize="14" Grid.Row="3" Click="ReasonChk_Click">Reason</CheckBox>
+                    <CheckBox x:Name="NameChk" FontSize="14" Click="NameChk_Click" Content="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Tip_Name}"></CheckBox>
+                    <CheckBox x:Name="DateChk" FontSize="14" Grid.Row="1" Click="DateChk_Click" Content="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Tip_Date}"></CheckBox>
+                    <CheckBox x:Name="LogoChk" FontSize="14" Grid.Row="2" Click="LogoChk_Click" Content="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Tip_Logo}"></CheckBox>
+                    <CheckBox x:Name="ReasonChk" FontSize="14" Grid.Row="3" Click="ReasonChk_Click" Content="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Tip_Reason}"></CheckBox>
 
-                    <CheckBox x:Name="DistinguishableNameChk" FontSize="14" Grid.Column="2" Click="DistinguishableNameChk_Click">Distinguishable Name</CheckBox>
-                    <CheckBox x:Name="ComPDFKitVersionChk" FontSize="14" Grid.Column="2" Grid.Row="1" Click="ComPDFKitVersionChk_Click">ComPDFKit Versions</CheckBox>
-                    <CheckBox x:Name="PositionChk" FontSize="14" Grid.Column="2" Grid.Row="2" Click="PositionChk_Click">Position</CheckBox>
-                    <CheckBox x:Name="TabChk" FontSize="14" Grid.Column="2" Grid.Row="3" Click="TabChk_Click">Tab</CheckBox>
+                    <CheckBox x:Name="DistinguishableNameChk" FontSize="14" Grid.Column="2" Click="DistinguishableNameChk_Click" Content="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Tip_DN}"></CheckBox>
+                    <CheckBox x:Name="ComPDFKitVersionChk" FontSize="14" Grid.Column="2" Grid.Row="1" Click="ComPDFKitVersionChk_Click" Content="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Tip_Version}"></CheckBox>
+                    <CheckBox x:Name="PositionChk" FontSize="14" Grid.Column="2" Grid.Row="2" Click="PositionChk_Click" Content="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Tip_Position}"></CheckBox>
+                    <CheckBox x:Name="TabChk" FontSize="14" Grid.Column="2" Grid.Row="3" Click="TabChk_Click" Content="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Tip_Tab}"></CheckBox>
 
                     <StackPanel x:Name="Reasonstp" Visibility="Collapsed" Orientation="Horizontal" Grid.Column="4" Margin="30,0,0,0" Grid.RowSpan="2" Height="30" Width="280">
                         <TextBlock Text="Reason: " VerticalAlignment="Center" Width="50"></TextBlock>
@@ -166,8 +167,8 @@
                 </Grid.ColumnDefinitions>
 
                 <Button x:Name="CancelBtn" Grid.Column="3" Height="32" Width="82" Style="{StaticResource LightButtonStyle}"
-                        Background="#DFE9FF" BorderThickness="0" Click="CancelBtn_Click">Cancel</Button>
-                <Button x:Name="ContinueBtn" Grid.Column="4" Margin="10,0,25,0" Height="32" Width="97" Style="{StaticResource ButtonStyle}" Click="ContinueBtn_Click">Next</Button>
+                        Background="#DFE9FF" BorderThickness="0" Click="CancelBtn_Click" Content="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Button_Cancel}"></Button>
+                <Button x:Name="ContinueBtn" Grid.Column="4" Margin="10,0,25,0" Height="32" Width="97" Style="{StaticResource ButtonStyle}" Click="ContinueBtn_Click" Content="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Button_Save}"></Button>
             </Grid>
         </Grid>
         
@@ -198,11 +199,11 @@
                     </StackPanel>
                     <Grid Grid.Row="3" Margin="25,0,0,20" VerticalAlignment="Top">
                         <Button Height="32" Width="82" Style="{StaticResource LightButtonStyle}" Background="#DFE9FF" 
-                                BorderThickness="0" HorizontalAlignment="Left" Content="Clear" Click="KeyboardClear_Click"/>
+                                BorderThickness="0" HorizontalAlignment="Left" Content="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Button_Clear}" Click="KeyboardClear_Click"/>
                         <StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
                             <Button Height="32" Width="82" Style="{StaticResource LightButtonStyle}" Background="#DFE9FF" 
-                                    BorderThickness="0" Content="Cancel" Click="KeyboardCancel_Click"/>
-                            <Button x:Name="SaveBtn" Margin="10,0,25,0" Height="32" Width="97" Style="{StaticResource ButtonStyle}" Content="Save" Click="KeyboardSave_Click"/>
+                                    BorderThickness="0" Content="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Button_Cancel}" Click="KeyboardCancel_Click"/>
+                            <Button x:Name="SaveBtn" Margin="10,0,25,0" Height="32" Width="97" Style="{StaticResource ButtonStyle}" Content="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Button_Save}" Click="KeyboardSave_Click"/>
                         </StackPanel>
                     </Grid>
                 </Grid>
@@ -241,11 +242,11 @@
                     </Grid.ColumnDefinitions>
 
                     <Button Height="32" Width="82" Style="{StaticResource LightButtonStyle}" Background="#DFE9FF" 
-                            BorderThickness="0" Click="CanvasClearBtn_Click">Clear</Button>
+                            BorderThickness="0" Click="CanvasClearBtn_Click" Content="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Button_Clear}"></Button>
 
                     <Button Grid.Column="2" Height="32" Width="82" Style="{StaticResource LightButtonStyle}" Background="#DFE9FF" 
-                            BorderThickness="0" Click="CanvasPopupClose_Click">Cancel</Button>
-                    <Button Grid.Column="3" Click="CanvasPopupConfirm_Click" Margin="10,0,25,0" Height="32" Width="97" Style="{StaticResource ButtonStyle}">OK</Button>
+                            BorderThickness="0" Click="CanvasPopupClose_Click" Content="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Button_Cancel}"></Button>
+                    <Button Grid.Column="3" Click="CanvasPopupConfirm_Click" Margin="10,0,25,0" Height="32" Width="97" Style="{StaticResource ButtonStyle}" Content="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Button_Save}"></Button>
 
                 </Grid>
             </Grid>

+ 1 - 1
Demo/Examples/Compdfkit_Tools/DigitalSignature/FillDigitalSignatureControl/FillDigitalSignatureDialog.xaml

@@ -7,7 +7,7 @@
         mc:Ignorable="d"
         ResizeMode="NoResize"
         ShowInTaskbar="False"
-        Title="Customize the Signature Appearance"  Width="630" Height="550">
+        Width="630" Height="550">
     <Grid>
         <local:FillDigitalSignatureControl x:Name="FillDigitalSignatureControl"></local:FillDigitalSignatureControl>
     </Grid>

+ 2 - 0
Demo/Examples/Compdfkit_Tools/DigitalSignature/FillDigitalSignatureControl/FillDigitalSignatureDialog.xaml.cs

@@ -13,6 +13,7 @@ using System.Windows.Input;
 using System.Windows.Media;
 using System.Windows.Media.Imaging;
 using System.Windows.Shapes;
+using Compdfkit_Tools.Helper;
 
 namespace Compdfkit_Tools.PDFControl
 {
@@ -72,6 +73,7 @@ namespace Compdfkit_Tools.PDFControl
             InitializeComponent();
             FillDigitalSignatureControl.AfterFillSignature -= ReloadAfterFillSignature;
             FillDigitalSignatureControl.AfterFillSignature += ReloadAfterFillSignature;
+            Title = LanguageHelper.SigManager.GetString("Title_SignAp");
         }
 
         private void ReloadAfterFillSignature(object sender, string e)

+ 7 - 1
Demo/Examples/Compdfkit_Tools/DigitalSignature/SignatureStatusBarControl/SignatureStatusBarControl.xaml

@@ -4,8 +4,14 @@
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
              xmlns:local="clr-namespace:Compdfkit_Tools.PDFControl"
+             xmlns:common="clr-namespace:Compdfkit_Tools.Common"
              mc:Ignorable="d"
              d:DesignHeight="48" d:DesignWidth="1399">
+    <UserControl.Resources>
+        <ResourceDictionary>
+            <common:SigResourceConverter x:Key="SigResourceConverter"></common:SigResourceConverter>
+        </ResourceDictionary>
+    </UserControl.Resources>
     <Grid Background="#DDE9FF">
         <Grid.ColumnDefinitions>
             <ColumnDefinition Width="48"></ColumnDefinition>
@@ -43,6 +49,6 @@
             </Border>
         </Grid>
         <TextBlock Grid.Column="1" Text="{Binding MessageString}" VerticalAlignment="Center" FontSize="14" FontFamily="Microsoft YaHei"></TextBlock>
-        <Button Grid.Column="2" Height="32" Width="128" HorizontalAlignment="Right" Margin="10" BorderBrush="#1460F3" Foreground="#1460F3" Content="View All Signatures" Background="#DDE9FF" Click="ButtonViewSignature_OnClick"></Button>
+        <Button Grid.Column="2" Height="32" Width="128" HorizontalAlignment="Right" Margin="10" BorderBrush="#1460F3" Foreground="#1460F3" Content="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Button_AllSig}" Background="#DDE9FF" Click="ButtonViewSignature_OnClick"></Button>
     </Grid>
 </UserControl>

+ 5 - 4
Demo/Examples/Compdfkit_Tools/DigitalSignature/SignatureStatusBarControl/SignatureStatusBarControl.xaml.cs

@@ -5,6 +5,7 @@ using System.Linq;
 using System.Runtime.CompilerServices;
 using System.Windows;
 using System.Windows.Controls;
+using Compdfkit_Tools.Helper;
 using ComPDFKit.DigitalSign;
 
 namespace Compdfkit_Tools.PDFControl
@@ -25,10 +26,10 @@ namespace Compdfkit_Tools.PDFControl
             get => _messageString;
             set => UpdateProper(ref _messageString, value);
         }
-        private string validString = "The signature is valid";
-        private string invalidString = "The signature is invalid";
-        private string multiSigString = "At least one signature is invalid";
-        private string unknownString = "Signature validity is unknown";
+        private string validString = LanguageHelper.SigManager.GetString("Text_SignerValid");
+        private string invalidString = LanguageHelper.SigManager.GetString("Text_SignerInvalid");
+        private string multiSigString = LanguageHelper.SigManager.GetString("Text_MultiSig");
+        private string unknownString = LanguageHelper.SigManager.GetString("Text_SigUnknown");
 
         public event EventHandler OnViewSignatureButtonClicked;
         

+ 4 - 4
Demo/Examples/Compdfkit_Tools/DigitalSignature/VerifyDigitalSignatureControl/DigitalSignatureInfoControl.xaml.cs

@@ -59,20 +59,20 @@ namespace Compdfkit_Tools.PDFControl
             if (isTrusted && isVerified && notModified)
             {
                 status = SignatureStatus.Valid;
-                validity = "Valid Signature";
+                validity = LanguageHelper.SigManager.GetString("Text_Valid");
             }
             else if (!isTrusted && isVerified && notModified)
             {
                 status = SignatureStatus.Unknown;
-                validity = "Unknown Signature";
+                validity = LanguageHelper.SigManager.GetString("Text_Unknown");
             }
             else
             {
                 status = SignatureStatus.Invalid;
-                validity = "Invalid Signature";
+                validity = LanguageHelper.SigManager.GetString("Text_Invalid");
             }
             Status = status;
-
+            string signedBy = LanguageHelper.SigManager.GetString("Text_Signer");
             signerName = signature.Name;
             email = DictionaryValueConverter.GetEmailFormDictionary(signature.SignerList.First().CertificateList.Last().SubjectDict);
             time = signature.Date;

+ 5 - 1
Demo/Examples/Compdfkit_Tools/DigitalSignature/VerifyDigitalSignatureControl/DigitalSignatureValiditySummaaryControl.xaml

@@ -4,11 +4,15 @@
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
              xmlns:local="clr-namespace:Compdfkit_Tools.PDFControl"
+             xmlns:common="clr-namespace:Compdfkit_Tools.Common"
              mc:Ignorable="d"
              d:DesignHeight="239" d:DesignWidth="504">
+    <UserControl.Resources>
+        <common:SigResourceConverter x:Key="SigResourceConverter"></common:SigResourceConverter>
+    </UserControl.Resources>
     <Grid>
         <Grid Background="#ffffff"  Margin="20,0,0,0"  Panel.ZIndex="1" Height="20" HorizontalAlignment="Left" VerticalAlignment="Top">
-            <TextBlock Text="Validity Summary" FontWeight="Bold" FontSize="14" FontFamily="Microsoft YaHei"></TextBlock>
+            <TextBlock Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Text_Summary}" FontWeight="Bold" FontSize="14" FontFamily="Microsoft YaHei"></TextBlock>
         </Grid>
         <Border Grid.Row="0" Margin="12" BorderBrush="#CCCCCC" BorderThickness="1">
             <TextBlock Margin="10" Text="{Binding ValiditySummaryString}" Width="448" TextWrapping="Wrap"></TextBlock>

+ 8 - 9
Demo/Examples/Compdfkit_Tools/DigitalSignature/VerifyDigitalSignatureControl/DigitalSignatureValiditySummaaryControl.xaml.cs

@@ -34,38 +34,37 @@ namespace Compdfkit_Tools.PDFControl
             string validitySummaryString = "";
             if (isCertTrusted)
             {
-                validitySummaryString += "The signer's identity is valid.\n\n";
+                validitySummaryString += LanguageHelper.SigManager.GetString("Text_SignerValid") + "\n\n";
             }
             else
             {
-                validitySummaryString += "The signer's identity is invalid.\n\n";
+                validitySummaryString += LanguageHelper.SigManager.GetString("Text_SignerInvalid") + "\n\n";
             }
-
             if(isDocModified || (!isSignVerified && !isCertTrusted))
             {
-                validitySummaryString += "The signature is invalid.\n\n";
+                validitySummaryString += LanguageHelper.SigManager.GetString("Text_SigValid") + "\n\n";
             }
             else if (isSignVerified && isCertTrusted)
             {
-                validitySummaryString += "The signature is valid.\n\n";
+                validitySummaryString += LanguageHelper.SigManager.GetString("Text_SigInvalid") + "\n\n";
             }
             else if(isSignVerified && !isCertTrusted)
             {
-                validitySummaryString += "Signature validity is unknown because it has not been included in your list of trusted certificates and none of its parent certificates are trusted certificates.\n\n";
+                validitySummaryString += LanguageHelper.SigManager.GetString("Text_SigUnknown") + "\n\n";
             }
             
             if(isExpired)
             {
-                validitySummaryString += "The file was signed with a certificate that has expired. If you acquired this file recently, it may not be authentic.\n\n";
+                validitySummaryString += LanguageHelper.SigManager.GetString("Text_SigExpired") + "\n\n";
             }
 
             if (!isDocModified)
             {
-                validitySummaryString += "The document has not been modified since this signature was applied.\n";
+                validitySummaryString += LanguageHelper.SigManager.GetString("Text_SigNoModified") + "\n";
             }
             else
             {
-                validitySummaryString += "The document has been altered or corrupted since it was signed by the current user.\n";
+                validitySummaryString += LanguageHelper.SigManager.GetString("Text_SigModified") + "\n";
             }
             ValiditySummaryString = validitySummaryString;
         }

+ 7 - 1
Demo/Examples/Compdfkit_Tools/DigitalSignature/VerifyDigitalSignatureControl/VerifyDigitalSignatureControl.xaml

@@ -4,9 +4,15 @@
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
         xmlns:local="clr-namespace:Compdfkit_Tools.PDFControl"
+        xmlns:common="clr-namespace:Compdfkit_Tools.Common"
         mc:Ignorable="d"
         ShowInTaskbar="False"
         Title="VerifyDigitalSignatureControl" Height="450" Width="552">
+    <Window.Resources>
+        <ResourceDictionary>
+            <common:SigResourceConverter x:Key="SigResourceConverter"></common:SigResourceConverter>
+        </ResourceDictionary>
+    </Window.Resources>
     <Grid>
         <Grid.RowDefinitions>
             <RowDefinition Height="Auto"></RowDefinition>
@@ -18,6 +24,6 @@
         <local:DigitalSignatureInfoControl x:Name="DigitalSignatureInfoControl" Height="52" Margin="0,30,0,10"></local:DigitalSignatureInfoControl>
         <local:DigitalSignatureValiditySummaaryControl x:Name="DigitalSignatureValiditySummaryControl" Grid.Row="1" Height="239" Margin="0,10,0,10"></local:DigitalSignatureValiditySummaaryControl>
         
-        <Button Grid.Row="3" Height="32" Width="158" HorizontalAlignment="Right" Content="View signer certificates" Margin="12" Click="ViewCertificates_OnClick" FontSize="14" FontFamily="Microsoft YaHei"></Button>
+        <Button Grid.Row="3" Height="32" Width="158" HorizontalAlignment="Right" Content="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Button_Details}" Margin="12" Click="ViewCertificates_OnClick" FontSize="14" FontFamily="Microsoft YaHei"></Button>
     </Grid>
 </Window>

+ 25 - 19
Demo/Examples/Compdfkit_Tools/DigitalSignature/ViewCertificationControl/CertificateDetailControl.xaml

@@ -4,103 +4,109 @@
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
              xmlns:local="clr-namespace:Compdfkit_Tools.PDFControl"
+             xmlns:common="clr-namespace:Compdfkit_Tools.Common"
              mc:Ignorable="d" 
              d:DesignHeight="450" d:DesignWidth="600">
+    <UserControl.Resources>
+        <ResourceDictionary>
+            <common:SigResourceConverter x:Key="SigResourceConverter"></common:SigResourceConverter>
+        </ResourceDictionary>
+    </UserControl.Resources>
     <Grid>
         <Grid Background="#ffffff"  Margin="20,0,0,0"  Panel.ZIndex="1" Height="20" HorizontalAlignment="Left" VerticalAlignment="Top">
-            <TextBlock Text="Details" FontWeight="Bold" FontSize="16"></TextBlock>
+            <TextBlock Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Text_Details}" FontWeight="Bold" FontSize="16"></TextBlock>
         </Grid>
        
         <Border Margin="12" BorderBrush="#33000000" BorderThickness="1" >
             <ScrollViewer Margin="0,10,0,0" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
                 <StackPanel VerticalAlignment="Center" Margin="20,0,0,0">
                     <StackPanel Orientation="Horizontal" Margin="0,0,0,6">
-                        <TextBlock Text="Version: " Foreground="Black" FontSize="14"></TextBlock>
+                        <TextBlock Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Text_Version}" Foreground="Black" FontSize="14"></TextBlock>
                         <TextBlock x:Name="AwardTxt" Text="{Binding Version}" Foreground="#666"  FontSize="14" Width="300" TextWrapping="Wrap"></TextBlock>
                     </StackPanel>
 
                     <StackPanel Orientation="Horizontal" Margin="0,0,0,6">
-                        <TextBlock Text="Algorithm: " Foreground="Black" FontSize="14"></TextBlock>
+                        <TextBlock Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Text_Algorithm}" Foreground="Black" FontSize="14"></TextBlock>
                         <TextBlock x:Name="AlgorithmTxt" Text="{Binding Algorithm}" Foreground="#666"  FontSize="14" Width="300" TextWrapping="Wrap"></TextBlock>
                     </StackPanel>
 
                     <StackPanel Orientation="Horizontal" Margin="0,0,0,6">
-                        <TextBlock Text="Subject: " Foreground="Black" FontSize="14"></TextBlock>
+                        <TextBlock Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Text_Subject}" Foreground="Black" FontSize="14"></TextBlock>
                         <TextBlock x:Name="Subjectxt" Text="{Binding Subject}" Foreground="#666"  FontSize="14" Width="300" TextWrapping="Wrap"></TextBlock>
                     </StackPanel>
 
                     <StackPanel Orientation="Horizontal" Margin="0,0,0,6">
-                        <TextBlock Text="Issuer: " Foreground="Black" FontSize="14"></TextBlock>
+                        <TextBlock Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Text_Issuer}" Foreground="Black" FontSize="14"></TextBlock>
                         <TextBlock x:Name="IssuerTxt" Text="{Binding Issuer}" Foreground="#666"  FontSize="14" Width="300" TextWrapping="Wrap"></TextBlock>
                     </StackPanel>
                     
                     <StackPanel Orientation="Horizontal" Margin="0,0,0,6">
-                        <TextBlock Text="Serial Number: " Foreground="Black" FontSize="14"></TextBlock>
+                        <TextBlock Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Text_SerialNum}" Foreground="Black" FontSize="14"></TextBlock>
                         <TextBlock x:Name="SerialNumberTxt" Text="{Binding SerialNumber}" Foreground="#666"  FontSize="14" Width="300" TextWrapping="Wrap"></TextBlock>
                     </StackPanel>
                     
                     <StackPanel Orientation="Horizontal" Margin="0,0,0,6">
-                        <TextBlock Text="Valid from: " Foreground="Black" FontSize="14"></TextBlock>
+                        <TextBlock Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Text_ValidFrom}" Foreground="Black" FontSize="14"></TextBlock>
                         <TextBlock x:Name="ValidityFromTxt" Text="{Binding ValidityFrom}" Foreground="#666"  FontSize="14" Width="300" TextWrapping="Wrap"></TextBlock>
                     </StackPanel>
                     
                     <StackPanel Orientation="Horizontal" Margin="0,0,0,6">
-                        <TextBlock Text="Valid to: " Foreground="Black" FontSize="14"></TextBlock>
+                        <TextBlock Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Text_ValidTo}" Foreground="Black" FontSize="14"></TextBlock>
                         <TextBlock x:Name="ValidityToTxt" Text="{Binding ValidityTo}" Foreground="#666"  FontSize="14" Width="300" TextWrapping="Wrap"></TextBlock>
                     </StackPanel>
                     
                     <StackPanel Orientation="Horizontal" Margin="0,0,0,6">
-                        <TextBlock Text="Certificate Policy: " Foreground="Black" FontSize="14"></TextBlock>
+                        <TextBlock Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Text_CertPolicy}" Foreground="Black" FontSize="14"></TextBlock>
                         <TextBlock x:Name="CertificatePolicyTxt" Text="{Binding CertificatePolicy}" Foreground="#666"  FontSize="14" Width="300" TextWrapping="Wrap"></TextBlock>
                     </StackPanel>
                     
                     <StackPanel Orientation="Horizontal" Margin="0,0,0,6">
-                        <TextBlock Text="CRL Distribution Points: " Foreground="Black" FontSize="14"></TextBlock>
+                        <TextBlock Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Text_CRL}" Foreground="Black" FontSize="14"></TextBlock>
                         <TextBlock x:Name="CRLTxt" Text="{Binding CrlDistributionPoint}" Foreground="#666"  FontSize="14" Width="300" TextWrapping="Wrap"></TextBlock>
                     </StackPanel>
 
                     <StackPanel Orientation="Horizontal" Margin="0,0,0,6">
-                        <TextBlock Text="Issuer Information Access: " Foreground="Black" FontSize="14"></TextBlock>
+                        <TextBlock Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Text_IssuerInfo}" Foreground="Black" FontSize="14"></TextBlock>
                         <TextBlock x:Name="AgencyInformationTxt" Text="{Binding AuthorityInfoAccess}" Foreground="#666"  FontSize="14" Width="300" TextWrapping="Wrap"></TextBlock>
                     </StackPanel>
                     
                     <StackPanel Orientation="Horizontal" Margin="0,0,0,6">
-                        <TextBlock Text="Issuer‘s Key Identifier: " Foreground="Black" FontSize="14"></TextBlock>
+                        <TextBlock Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Text_IssuerID}" Foreground="Black" FontSize="14"></TextBlock>
                         <TextBlock x:Name="AuthoritySecretKeyTxt" Text="{Binding AuthorityKeyIdentifier}" Foreground="#666"  FontSize="14" Width="300" TextWrapping="Wrap"></TextBlock>
                     </StackPanel>
 
                     <StackPanel Orientation="Horizontal" Margin="0,0,0,6">
-                        <TextBlock Text="Subject‘s Key Identifier: " Foreground="Black" FontSize="14"></TextBlock>
+                        <TextBlock Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Text_SubjectID}" Foreground="Black" FontSize="14"></TextBlock>
                         <TextBlock x:Name="SubjectSecretKeyTxt" Text="{Binding SubjectKeyIdentifier}" Foreground="#666"  FontSize="14" Width="300" TextWrapping="Wrap"></TextBlock>
                     </StackPanel>
 
                     <StackPanel Orientation="Horizontal" Margin="0,0,0,6">
-                        <TextBlock Text="Basic Constraints: " Foreground="Black" FontSize="14"></TextBlock>
+                        <TextBlock Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Text_BasicConstraints}" Foreground="Black" FontSize="14"></TextBlock>
                         <TextBlock x:Name="BasicConstraintsTxt" Text="{Binding BasicConstraints}" Foreground="#666"  FontSize="14" Width="300" TextWrapping="Wrap"></TextBlock>
                     </StackPanel>
 
                     <StackPanel Orientation="Horizontal" Margin="0,0,0,6">
-                        <TextBlock Text="Key Usage: " Foreground="Black" FontSize="14"></TextBlock>
+                        <TextBlock Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Text_KeyUsage}" Foreground="Black" FontSize="14"></TextBlock>
                         <TextBlock x:Name="KeyUsageTxt" Text="{Binding KeyUsage}" Foreground="#666"  FontSize="14" Width="300" TextWrapping="Wrap"></TextBlock>
                     </StackPanel>
 
                     <StackPanel Orientation="Horizontal" Margin="0,0,0,6">
-                        <TextBlock Text="Public key: " Foreground="Black" FontSize="14"></TextBlock>
+                        <TextBlock Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Text_PubKey}" Foreground="Black" FontSize="14"></TextBlock>
                         <TextBlock x:Name="PublicKeyTxt" Text="{Binding PublicKey}" Foreground="#666"  FontSize="14" Width="300" TextWrapping="Wrap"></TextBlock>
                     </StackPanel>
                     
                     <StackPanel Orientation="Horizontal" Margin="0,0,0,6">
-                        <TextBlock Text="X.509 Data: " Foreground="Black" FontSize="14"></TextBlock>
+                        <TextBlock Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Text_X509}" Foreground="Black" FontSize="14"></TextBlock>
                         <TextBlock x:Name="X509Txt" Text="{Binding X509Data}" Foreground="#666"  FontSize="14" Width="300" TextWrapping="Wrap"></TextBlock>
                     </StackPanel>
                     
                     <StackPanel Orientation="Horizontal" Margin="0,0,0,6">
-                        <TextBlock Text="SHA1 Abstract: " Foreground="Black" FontSize="14"></TextBlock>
+                        <TextBlock Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Text_SHA1}" Foreground="Black" FontSize="14"></TextBlock>
                         <TextBlock x:Name="SHA1AbstractTxt" Text="{Binding SHA1Digest}" Foreground="#666"  FontSize="14" Width="300" TextWrapping="Wrap"></TextBlock>
                     </StackPanel>
                     
                     <StackPanel Orientation="Horizontal" Margin="0,0,0,6">
-                        <TextBlock Text="MD5 Abstract: " Foreground="Black" FontSize="14"></TextBlock>
+                        <TextBlock Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Text_MD5}" Foreground="Black" FontSize="14"></TextBlock>
                         <TextBlock x:Name="MD5AbstractTxt" Text="{Binding MD5Digest}" Foreground="#666"  FontSize="14" Width="300" TextWrapping="Wrap"></TextBlock>
                     </StackPanel>
                 </StackPanel>

+ 5 - 3
Demo/Examples/Compdfkit_Tools/DigitalSignature/ViewCertificationControl/CertificateInfoControl.xaml

@@ -4,6 +4,7 @@
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
              xmlns:local="clr-namespace:Compdfkit_Tools.PDFControl"
+             xmlns:common="clr-namespace:Compdfkit_Tools.Common"
              mc:Ignorable="d" 
              d:DesignHeight="650" d:DesignWidth="750">
     <UserControl.Resources>
@@ -12,23 +13,24 @@
                 <ResourceDictionary Source="../../Asset/Styles/TabControlStyle.xaml"></ResourceDictionary>
                 <ResourceDictionary Source="../../Asset/Styles/TabItemStyle.xaml"></ResourceDictionary>
             </ResourceDictionary.MergedDictionaries>
+            <common:SigResourceConverter x:Key="SigResourceConverter"></common:SigResourceConverter>
         </ResourceDictionary>
     </UserControl.Resources>
     <Grid>
         <TabControl Style="{StaticResource LineTabControlStyle}"                
                     Width="{Binding ActualWidth, RelativeSource={RelativeSource AncestorType={x:Type Grid}}}"
                 Height="{Binding ActualHeight, RelativeSource={RelativeSource AncestorType={x:Type Grid}}}">
-            <TabItem Header="Summary" Style="{StaticResource LineTabItemStyle}">
+            <TabItem Header="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Text_Summary}" Style="{StaticResource LineTabItemStyle}">
                 <Grid>
                     <local:SummaryControl x:Name="SummaryControl" Height="160" VerticalAlignment="Top"></local:SummaryControl>
                 </Grid>
             </TabItem>
-            <TabItem Header="Details"  Style="{StaticResource LineTabItemStyle}">
+            <TabItem Header="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Text_Details}"  Style="{StaticResource LineTabItemStyle}">
                 <Grid>
                     <local:CertificateDetailControl x:Name="CertificateDetailControl" Height="450" VerticalAlignment="Top"></local:CertificateDetailControl>
                 </Grid>
             </TabItem>
-            <TabItem Header="Trust"  Style="{StaticResource LineTabItemStyle}">
+            <TabItem Header="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Title_Trust}"  Style="{StaticResource LineTabItemStyle}">
                 <Grid>
                     <Grid.RowDefinitions>
                         <RowDefinition Height="150"></RowDefinition>

+ 5 - 4
Demo/Examples/Compdfkit_Tools/DigitalSignature/ViewCertificationControl/ConfidenceControl.xaml

@@ -27,6 +27,7 @@
             </Viewbox>
             <local:ConfidenceStatusToPathConverter x:Key="ConfidenceStatusToPathConverter" />
             <common:ReverseBoolConverter x:Key="ReverseBoolConverter" />
+            <common:SigResourceConverter x:Key="SigResourceConverter"></common:SigResourceConverter>
         </ResourceDictionary>
     </UserControl.Resources>
     
@@ -36,7 +37,7 @@
             <RowDefinition Height="auto"></RowDefinition>
         </Grid.RowDefinitions>
         <Grid Background="#ffffff"  Margin="20,0,0,0"  Panel.ZIndex="1" Height="20" HorizontalAlignment="Left" VerticalAlignment="Top">
-            <TextBlock Text="This Certificate Is Trusted to" FontWeight="Bold" FontSize="16"></TextBlock>
+            <TextBlock Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Tip_TrustTo}" FontWeight="Bold" FontSize="16"></TextBlock>
         </Grid>
         <Border Margin="12" BorderBrush="#33000000" BorderThickness="1" >
             <StackPanel VerticalAlignment="Center" Margin="20,0,0,0">
@@ -45,19 +46,19 @@
                     <Canvas Height="20" Width="20">
                         <ContentControl Content="{Binding IsTrusted, Converter={StaticResource ConfidenceStatusToPathConverter}}" />
                     </Canvas>
-                    <TextBlock Text="Sign document or data" VerticalAlignment="Center"></TextBlock>
+                    <TextBlock Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Trust_Sign}" VerticalAlignment="Center"></TextBlock>
                 </StackPanel>
 
                 <StackPanel Orientation="Horizontal" Margin="0,0,0,6">
                     <Canvas Height="20" Width="20">
                         <ContentControl Content="{Binding IsTrusted, Converter={StaticResource ConfidenceStatusToPathConverter}}" />
                     </Canvas>
-                    <TextBlock Text="Certify document" VerticalAlignment="Center"></TextBlock>
+                    <TextBlock Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Trust_Cert}" VerticalAlignment="Center"></TextBlock>
                 </StackPanel>
 
 
             </StackPanel>
         </Border>
-        <Button Grid.Row="1" Content="Add to Trusted Certificates" IsEnabled="{Binding IsTrusted, Converter={StaticResource ReverseBoolConverter}}" Click="TrustCertificateButton_OnClick" Height="32" Width="230" HorizontalAlignment="Right" Margin="0,0,12,12"></Button>
+        <Button Grid.Row="1" Content="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Button_AddTrust}" IsEnabled="{Binding IsTrusted, Converter={StaticResource ReverseBoolConverter}}" Click="TrustCertificateButton_OnClick" Height="32" Width="230" HorizontalAlignment="Right" Margin="0,0,12,12"></Button>
     </Grid>
 </UserControl>

+ 12 - 6
Demo/Examples/Compdfkit_Tools/DigitalSignature/ViewCertificationControl/SummaryControl.xaml

@@ -4,37 +4,43 @@
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
              xmlns:local="clr-namespace:Compdfkit_Tools.PDFControl"
+             xmlns:common="clr-namespace:Compdfkit_Tools.Common"
              mc:Ignorable="d" 
              d:DesignHeight="160" d:DesignWidth="600">
+    <UserControl.Resources>
+        <ResourceDictionary>
+            <common:SigResourceConverter x:Key="SigResourceConverter"></common:SigResourceConverter>
+        </ResourceDictionary>
+    </UserControl.Resources>
     <Grid>
         <Grid Background="#ffffff"  Margin="20,0,0,0"  Panel.ZIndex="1" Height="20" HorizontalAlignment="Left" VerticalAlignment="Top">
-            <TextBlock Text="Summary" FontWeight="Bold" FontSize="16"></TextBlock>
+            <TextBlock Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Text_Summary}" FontWeight="Bold" FontSize="16"></TextBlock>
         </Grid>
         <Border Margin="12" BorderBrush="#33000000" BorderThickness="1" >
             <ScrollViewer Margin="0,10,0,0" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
                 <StackPanel VerticalAlignment="Center" Margin="20,0,0,0">
                     <StackPanel Orientation="Horizontal" Margin="0,0,0,6">
-                        <TextBlock Text="Issued to: " Foreground="Black"  FontSize="14"></TextBlock>
+                        <TextBlock Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Text_IssuedTo}" Foreground="Black"  FontSize="14"></TextBlock>
                         <TextBlock Text="{Binding Award}" Foreground="#666" FontSize="14"></TextBlock>
                     </StackPanel>
 
                     <StackPanel Orientation="Horizontal" Margin="0,0,0,6">
-                        <TextBlock Text="Issuer: " Foreground="Black"  FontSize="14"></TextBlock>
+                        <TextBlock Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Text_Issuer}" Foreground="Black"  FontSize="14"></TextBlock>
                         <TextBlock Text="{Binding Grantor}" Foreground="#666"  FontSize="14"></TextBlock>
                     </StackPanel>
 
                     <StackPanel Orientation="Horizontal" Margin="0,0,0,6">
-                        <TextBlock Text="Valid from: " Foreground="Black"  FontSize="14"></TextBlock>
+                        <TextBlock Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Text_ValidFrom}" Foreground="Black"  FontSize="14"></TextBlock>
                         <TextBlock Text="{Binding ValidityFrom}" Foreground="#666"  FontSize="14"></TextBlock>
                     </StackPanel>
                     
                     <StackPanel Orientation="Horizontal" Margin="0,0,0,6">
-                        <TextBlock Text="Valid to: " Foreground="Black"  FontSize="14"></TextBlock>
+                        <TextBlock Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Text_ValidTo}" Foreground="Black"  FontSize="14"></TextBlock>
                         <TextBlock Text="{Binding ValidityTo}" Foreground="#666"  FontSize="14"></TextBlock>
                     </StackPanel>
 
                     <StackPanel Orientation="Horizontal" Margin="0,0,0,6">
-                        <TextBlock Text="Intended Usage: " Foreground="Black"  FontSize="14"></TextBlock>
+                        <TextBlock Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Text_Usage}" Foreground="Black"  FontSize="14"></TextBlock>
                         <TextBlock Text="{Binding IntendedUsage}" Foreground="#666"  FontSize="14"></TextBlock>
                     </StackPanel>
                 </StackPanel>

+ 3 - 1
Demo/Examples/Compdfkit_Tools/DigitalSignature/ViewCertificationControl/ViewCertificateDialog.xaml

@@ -4,11 +4,13 @@
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
         xmlns:local="clr-namespace:Compdfkit_Tools.PDFControl"
+        xmlns:common="clr-namespace:Compdfkit_Tools.Common"
         mc:Ignorable="d"
         Title="ViewCertificationControl" Height="670" Width="820" ResizeMode="NoResize" ShowInTaskbar="False">
     
     <Window.Resources>
         <local:DictionaryValueConverter x:Key="DictionaryValueConverter"/>
+        <common:SigResourceConverter x:Key="SigResourceConverter"></common:SigResourceConverter>
     </Window.Resources>
     
     <Grid>
@@ -22,7 +24,7 @@
             <ColumnDefinition></ColumnDefinition>
         </Grid.ColumnDefinitions>
 
-        <TextBlock Grid.ColumnSpan="2" Margin="10,20,10,20" Foreground="#666666" Text="Browse digital ID files. Digital ID files are password protected. If you do not know its password, you cannot access the digital ID card."></TextBlock>
+        <TextBlock Grid.ColumnSpan="2" Margin="10,20,10,20" Foreground="#666666" Text="{Binding Converter={StaticResource SigResourceConverter},ConverterParameter=Text_ViewIDFile}"></TextBlock>
 
         <ListView Grid.Row="1" Grid.Column="0" x:Name="CertificateListView" Margin="10,0,10,0" SelectionChanged="CertificateListView_OnSelectionChanged">
             <ListView.ItemsPanel>

+ 5 - 4
Demo/Examples/Compdfkit_Tools/DigitalSignature/ViewCertificationControl/ViewCertificateDialog.xaml.cs

@@ -12,6 +12,7 @@ using System.Windows.Input;
 using System.Windows.Media;
 using System.Windows.Media.Imaging;
 using System.Windows.Shapes;
+using Compdfkit_Tools.Helper;
 using ComPDFKit.DigitalSign;
 
 namespace Compdfkit_Tools.PDFControl
@@ -147,7 +148,7 @@ namespace Compdfkit_Tools.PDFControl
             }
             if ((usage & 1 << 3) != 0)
             {
-                usageList.Add("Key Agreement");
+                usageList.Add(LanguageHelper.SigManager.GetString("Usage_Key"));
             }
             if ((usage & 1 << 4) != 0)
             {
@@ -155,15 +156,15 @@ namespace Compdfkit_Tools.PDFControl
             }
             if ((usage & 1 << 5) != 0)
             {
-                usageList.Add("Key Encipherment");
+                usageList.Add(LanguageHelper.SigManager.GetString("Usage_Keys"));
             }
             if ((usage & 1 << 6) != 0)
             {
-                usageList.Add("Non Repudiation");
+                usageList.Add(LanguageHelper.SigManager.GetString("Usage_NonRepudiation"));
             }
             if ((usage & 1 << 7) != 0)
             {
-                usageList.Add("Digital Signature");
+                usageList.Add(LanguageHelper.SigManager.GetString("Usage_DigitalSignature"));
             }
             if ((usage & 1 << 15) != 0)
             {

+ 7 - 4
Demo/Examples/Compdfkit_Tools/Edit/ContentEditCOntrol/ContentEditControl.xaml

@@ -17,6 +17,7 @@
             </ResourceDictionary.MergedDictionaries>
             <RoutedUICommand x:Key="Undo" Text="Undo"></RoutedUICommand>
             <RoutedUICommand x:Key="Redo" Text="Redo"></RoutedUICommand>
+            <cpdfcommon:ToolBarResourceConverter x:Key="ToolBarResourceConverter"></cpdfcommon:ToolBarResourceConverter>
         </ResourceDictionary>
     </UserControl.Resources>
 
@@ -53,10 +54,11 @@
                                 3.75H13.5V2.25H15.75V0H17.25V2.25H19.5V3.75H17.25V6H15.75V3.75Z
                             </Path.Data>
                         </Path>
-                        <TextBlock  FontSize="12" VerticalAlignment="Center" Margin="8,0,0,0">Text</TextBlock>
+                        <TextBlock  Text="{Binding Converter={StaticResource ToolBarResourceConverter},ConverterParameter=Button_Text}" 
+                            FontSize="12" VerticalAlignment="Center" Margin="8,0,0,0"></TextBlock>
                     </StackPanel>
                     <ToggleButton.ToolTip>
-                        <ToolTip Content="Text"></ToolTip>
+                        <ToolTip Content="{Binding Converter={StaticResource ToolBarResourceConverter},ConverterParameter=Button_Text}" ></ToolTip>
                     </ToggleButton.ToolTip>
                 </ToggleButton>
 
@@ -69,10 +71,11 @@
                                             3.75H13.5V2.25H15.75V0H17.25V2.25H19.5V3.75H17.25V6H15.75V3.75Z
                             </Path.Data>
                         </Path>
-                        <TextBlock  FontSize="12" VerticalAlignment="Center" Margin="8,0,0,0">Picture</TextBlock>
+                        <TextBlock  Text="{Binding Converter={StaticResource ToolBarResourceConverter},ConverterParameter=Button_Image}" 
+                                    FontSize="12" VerticalAlignment="Center" Margin="8,0,0,0"></TextBlock>
                     </StackPanel>
                     <ToggleButton.ToolTip>
-                        <ToolTip Content="Image"></ToolTip>
+                        <ToolTip Content="{Binding Converter={StaticResource ToolBarResourceConverter},ConverterParameter=Button_Image}" ></ToolTip>
                     </ToggleButton.ToolTip>
                 </ToggleButton>
 

+ 8 - 1
Demo/Examples/Compdfkit_Tools/Form/FromPropertyControl.xaml

@@ -4,12 +4,19 @@
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
              xmlns:local="clr-namespace:Compdfkit_Tools.PDFControl"
+             xmlns:common="clr-namespace:Compdfkit_Tools.Common"
              mc:Ignorable="d" 
              Loaded="UserControl_Loaded"
              Unloaded="UserControl_Unloaded"
              Width="260" Background="#FAFCFF">
+    <UserControl.Resources>
+        <ResourceDictionary>
+            <common:PropertyPanelResourceConverter x:Key="PropertyPanelResourceConverter"></common:PropertyPanelResourceConverter>
+        </ResourceDictionary>
+    </UserControl.Resources>
     <Grid>
-        <TextBlock Name="NoResultText" Foreground="#43474D" FontSize="14" LineHeight="16" TextWrapping="Wrap" Width="190" TextAlignment="Center" VerticalAlignment="Center" HorizontalAlignment="Center">The property panel is empty</TextBlock>
+        <TextBlock Name="NoResultText" Foreground="#43474D" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Text_EmptyPanel}"
+                   FontSize="14" LineHeight="16" TextWrapping="Wrap" Width="190" TextAlignment="Center" VerticalAlignment="Center" HorizontalAlignment="Center"></TextBlock>
         <Border x:Name="FromPropertyPanel"></Border>
     </Grid>
 </UserControl>

+ 24 - 22
Demo/Examples/Compdfkit_Tools/Form/Property/CheckBoxProperty.xaml

@@ -5,6 +5,7 @@
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
              xmlns:cpdfcommon="clr-namespace:Compdfkit_Tools.Common"
              mc:Ignorable="d" 
+             d:DesignHeight="400" d:DesignWidth="300"
              Loaded="UserControl_Loaded"
              Unloaded="UserControl_Unloaded">
     <UserControl.Resources>
@@ -14,6 +15,7 @@
                 <ResourceDictionary Source="../../Asset/Styles/TabItemStyle.xaml"></ResourceDictionary>
                 <ResourceDictionary Source="../../Asset/Styles/ComboBoxStyle.xaml"></ResourceDictionary>
             </ResourceDictionary.MergedDictionaries>
+            <cpdfcommon:PropertyPanelResourceConverter x:Key="PropertyPanelResourceConverter"></cpdfcommon:PropertyPanelResourceConverter>
         </ResourceDictionary>
     </UserControl.Resources>
     <Grid>
@@ -23,11 +25,11 @@
         </Grid.RowDefinitions>
         <Border BorderThickness="0" BorderBrush="#1A000000">
             <Grid  Height="40" Background="White" >
-                <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="Check Box" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
+                <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Title_Chb}" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
             </Grid>
         </Border>
         <TabControl Grid.Row="1" Style="{DynamicResource TabControlStyle1}" BorderThickness="0">
-            <TabItem Height="32" Style="{DynamicResource TabItemStyle1}" Header="General">
+            <TabItem Height="32" Style="{DynamicResource TabItemStyle1}" Header="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Title_General}">
                 <Grid>
                     <Grid.ColumnDefinitions>
                         <ColumnDefinition Width="16"/>
@@ -36,22 +38,22 @@
                     </Grid.ColumnDefinitions>
                     <StackPanel Grid.Column="1">
                         <StackPanel  >
-                            <TextBlock Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="Text" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
+                            <TextBlock Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_Name}" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
                             <TextBox x:Name="FieldNameText" Margin="0,8,0,0" TextChanged="FieldNameText_TextChanged"/>
                         </StackPanel>
                         <StackPanel >
-                            <TextBlock Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="Form Field" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
-                            <ComboBox x:Name="FormFieldCombox" Margin="0,8,0,0" Style="{StaticResource ComboBoxStyle1}" SelectedIndex="0" SelectionChanged="FormFieldCombox_SelectionChanged">
-                                <ComboBoxItem Content="Visible"/>
-                                <ComboBoxItem Content="Hidden"/>
-                                <ComboBoxItem Content="Visible but doesn't print"/>
-                                <ComboBoxItem Content="Hidden but printable"/>
+                            <TextBlock Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_Visibility}" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
+                            <ComboBox x:Name="FormFieldCmb" Margin="0,8,0,0" Style="{StaticResource ComboBoxStyle1}" SelectedIndex="0" SelectionChanged="FormFieldCmb_SelectionChanged">
+                                <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Option_Visible}"/>
+                                <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Option_Hidden}"/>
+                                <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Option_NoPrint}"/>
+                                <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Option_Print}"/>
                             </ComboBox>
                         </StackPanel>
                     </StackPanel>
                 </Grid>
             </TabItem>
-            <TabItem Height="32" Style="{DynamicResource TabItemStyle1}" Header="Appearance">
+            <TabItem Height="32" Style="{DynamicResource TabItemStyle1}" Header="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Title_Appearance}">
                 <Grid>
                     <Grid.ColumnDefinitions>
                         <ColumnDefinition Width="16"/>
@@ -60,17 +62,17 @@
                     </Grid.ColumnDefinitions>
                     <StackPanel Grid.Column="1">
                         <StackPanel>
-                            <TextBlock  Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="Border Color" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
+                            <TextBlock  Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_StrokeColor}" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
                             <cpdfcommon:ColorPickerControl Margin="0,18,0,0" x:Name="BorderColorPickerControl" ColorChanged="BorderColorPickerControl_ColorChanged"/>
                         </StackPanel>
                         <StackPanel>
-                            <TextBlock  Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="Background Color" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
+                            <TextBlock  Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_BgColor}" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
                             <cpdfcommon:ColorPickerControl Margin="0,18,0,0" x:Name="BackgroundColorPickerControl" ColorChanged="BackgroundColorPickerControl_ColorChanged"/>
                         </StackPanel>
                     </StackPanel>
                 </Grid>
             </TabItem>
-            <TabItem Height="32" Style="{DynamicResource TabItemStyle1}" Header="Preferences">
+            <TabItem Height="32" Style="{DynamicResource TabItemStyle1}" Header="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Title_Preferences}">
                 <Grid>
                     <Grid.ColumnDefinitions>
                         <ColumnDefinition Width="16"/>
@@ -79,18 +81,18 @@
                     </Grid.ColumnDefinitions>
                     <StackPanel Grid.Column="1">
                         <StackPanel  >
-                            <TextBlock Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="Button Style" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
-                            <ComboBox x:Name="CheckButtonStyleCombox" Margin="0,8,0,0" Style="{StaticResource ComboBoxStyle1}" SelectedIndex="0" SelectionChanged="CheckButtonStyleCombox_SelectionChanged">
-                                <ComboBoxItem Content="Check"/>
-                                <ComboBoxItem Content="Circle"/>
-                                <ComboBoxItem Content="Cross"/>
-                                <ComboBoxItem Content="Diamond"/>
-                                <ComboBoxItem Content="Square"/>
-                                <ComboBoxItem Content="Star"/>
+                            <TextBlock Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Check_Style}" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
+                            <ComboBox x:Name="CheckButtonStyleCmb" Margin="0,8,0,0" Style="{StaticResource ComboBoxStyle1}" SelectedIndex="0" SelectionChanged="CheckButtonStyleCmb_SelectionChanged">
+                                <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Style_Check}"/>
+                                <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Style_Circle}"/>
+                                <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Style_Cross}"/>
+                                <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Style_Diamond}"/>
+                                <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Style_Square}"/>
+                                <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Style_Star}"/>
                             </ComboBox>
                         </StackPanel>
                         <StackPanel >
-                            <CheckBox x:Name="chkSelected" Content="Selected by default" FontSize="14" VerticalContentAlignment="Center" FontFamily="Microsoft YaHei" FontWeight="Bold" Margin="0 14 0 0" Checked="chkSelected_Checked"  Unchecked="chkSelected_Unchecked"/>
+                            <CheckBox x:Name="chkSelected" Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Style_Default}" FontSize="14" VerticalContentAlignment="Center" FontFamily="Microsoft YaHei" FontWeight="Bold" Margin="0 14 0 0" Checked="chkSelected_Checked"  Unchecked="chkSelected_Unchecked"/>
                         </StackPanel>
                     </StackPanel>
                 </Grid>

+ 4 - 4
Demo/Examples/Compdfkit_Tools/Form/Property/CheckBoxProperty.xaml.cs

@@ -29,10 +29,10 @@ namespace Compdfkit_Tools.PDFControl
         private void UserControl_Loaded(object sender, RoutedEventArgs e)
         {
             FieldNameText.Text = widgetArgs.FieldName;
-            FormFieldCombox.SelectedIndex = (int)widgetArgs.FormField;
+            FormFieldCmb.SelectedIndex = (int)widgetArgs.FormField;
             BorderColorPickerControl.SetCheckedForColor(widgetArgs.LineColor);
             BackgroundColorPickerControl.SetCheckedForColor(widgetArgs.BgColor);
-            CheckButtonStyleCombox.SelectedIndex = (int)widgetArgs.CheckStyle;
+            CheckButtonStyleCmb.SelectedIndex = (int)widgetArgs.CheckStyle;
             chkSelected.IsChecked = widgetArgs.IsChecked;
             IsLoadedData = true;
 
@@ -54,7 +54,7 @@ namespace Compdfkit_Tools.PDFControl
             }
         }
 
-        private void FormFieldCombox_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        private void FormFieldCmb_SelectionChanged(object sender, SelectionChangedEventArgs e)
         {
             if (IsLoadedData)
             {
@@ -81,7 +81,7 @@ namespace Compdfkit_Tools.PDFControl
             }
         }
 
-        private void CheckButtonStyleCombox_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        private void CheckButtonStyleCmb_SelectionChanged(object sender, SelectionChangedEventArgs e)
         {
             if (IsLoadedData)
             {

+ 26 - 24
Demo/Examples/Compdfkit_Tools/Form/Property/ComboBoxProperty.xaml

@@ -5,6 +5,7 @@
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
              xmlns:local="clr-namespace:Compdfkit_Tools.PDFControl" xmlns:cpdfcommon="clr-namespace:Compdfkit_Tools.Common"
              mc:Ignorable="d" 
+             d:DesignHeight="400" d:DesignWidth="300"
              Loaded="UserControl_Loaded"
              Unloaded="UserControl_Unloaded"
              >
@@ -15,6 +16,7 @@
                 <ResourceDictionary Source="../../Asset/Styles/TabItemStyle.xaml"></ResourceDictionary>
                 <ResourceDictionary Source="../../Asset/Styles/ComboBoxStyle.xaml"></ResourceDictionary>
             </ResourceDictionary.MergedDictionaries>
+            <cpdfcommon:PropertyPanelResourceConverter x:Key="PropertyPanelResourceConverter"></cpdfcommon:PropertyPanelResourceConverter>
         </ResourceDictionary>
     </UserControl.Resources>
     <Grid>
@@ -24,11 +26,11 @@
         </Grid.RowDefinitions>
         <Border BorderThickness="0" BorderBrush="#1A000000">
             <Grid  Height="40" Background="White" >
-                <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="Combo Box" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
+                <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Title_Cmb}" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
             </Grid>
         </Border>
         <TabControl x:Name="TopTabControl" Grid.Row="1" Style="{DynamicResource TabControlStyle1}" BorderThickness="0">
-            <TabItem Height="32" Style="{DynamicResource TabItemStyle1}" Header="General">
+            <TabItem Height="32" Style="{DynamicResource TabItemStyle1}" Header="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Title_General}">
                 <Grid>
                     <Grid.ColumnDefinitions>
                         <ColumnDefinition Width="16"/>
@@ -37,22 +39,22 @@
                     </Grid.ColumnDefinitions>
                     <StackPanel Grid.Column="1">
                         <StackPanel  >
-                            <TextBlock Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="Text" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
+                            <TextBlock Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_Name}" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
                             <TextBox x:Name="FieldNameText" Margin="0,8,0,0" TextChanged="FieldNameText_TextChanged"/>
                         </StackPanel>
                         <StackPanel >
-                            <TextBlock Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="Form Field" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
-                            <ComboBox x:Name="FormFieldCombox" Margin="0,8,0,0" Style="{StaticResource ComboBoxStyle1}" SelectedIndex="0" SelectionChanged="FormFieldCombox_SelectionChanged">
-                                <ComboBoxItem Content="Visible"/>
-                                <ComboBoxItem Content="Hidden"/>
-                                <ComboBoxItem Content="Visible but doesn't print"/>
-                                <ComboBoxItem Content="Hidden but printable"/>
+                            <TextBlock Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_Visibility}" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
+                            <ComboBox x:Name="FormFieldCmb" Margin="0,8,0,0" Style="{StaticResource ComboBoxStyle1}" SelectedIndex="0" SelectionChanged="FormFieldCmb_SelectionChanged">
+                                <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Option_Visible}"/>
+                                <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Option_Hidden}"/>
+                                <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Option_NoPrint}"/>
+                                <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Option_Print}"/>
                             </ComboBox>
                         </StackPanel>
                     </StackPanel>
                 </Grid>
             </TabItem>
-            <TabItem Height="32" Style="{DynamicResource TabItemStyle1}" Header="Appearance">
+            <TabItem Height="32" Style="{DynamicResource TabItemStyle1}" Header="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Title_Appearance}">
                 <Grid>
                     <Grid.ColumnDefinitions>
                         <ColumnDefinition Width="16"/>
@@ -61,38 +63,38 @@
                     </Grid.ColumnDefinitions>
                     <StackPanel Grid.Column="1">
                         <StackPanel>
-                            <TextBlock  Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="Border Color" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
+                            <TextBlock  Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_StrokeColor}" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
                             <cpdfcommon:ColorPickerControl Margin="0,18,0,0" x:Name="BorderColorPickerControl" ColorChanged="BorderColorPickerControl_ColorChanged"/>
                         </StackPanel>
                         <StackPanel>
-                            <TextBlock  Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="Background Color" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
+                            <TextBlock  Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_BgColor}" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
                             <cpdfcommon:ColorPickerControl Margin="0,18,0,0" x:Name="BackgroundColorPickerControl" ColorChanged="BackgroundColorPickerControl_ColorChanged"/>
                         </StackPanel>
                         <StackPanel>
-                            <TextBlock  Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="Text Color" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
+                            <TextBlock  Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_FontColor}" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
                             <cpdfcommon:ColorPickerControl Margin="0,18,0,0" x:Name="TextColorPickerControl" ColorChanged="TextColorPickerControl_ColorChanged"/>
                         </StackPanel>
                         <StackPanel>
-                            <TextBlock  Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="Text" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold" />
-                            <ComboBox x:Name="FontCombox" Margin="0,8,0,0" Style="{StaticResource ComboBoxStyle1}" SelectedIndex="0" SelectionChanged="FontCombox_SelectionChanged">
+                            <TextBlock  Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_Font}" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold" />
+                            <ComboBox x:Name="FontCmb" Margin="0,8,0,0" Style="{StaticResource ComboBoxStyle1}" SelectedIndex="0" SelectionChanged="FontCmb_SelectionChanged">
                                 <ComboBoxItem Content="Arial"/>
                                 <ComboBoxItem Content="Courier New"/>
                                 <ComboBoxItem Content="Times New Roman"/>
                             </ComboBox>
                             <StackPanel Orientation="Horizontal" >
-                                <ComboBox x:Name="FontStyleCombox"  Margin="0,8,0,0" Width="148" Style="{StaticResource ComboBoxStyle1}" SelectedIndex="0" SelectionChanged="FontStyleCombox_SelectionChanged">
-                                    <ComboBoxItem Content="Regular"/>
-                                    <ComboBoxItem Content="Bold"/>
-                                    <ComboBoxItem Content="Italic"/>
-                                    <ComboBoxItem Content="Bold Italic"/>
+                                <ComboBox x:Name="FontStyleCmb"  Margin="0,8,0,0" Width="148" Style="{StaticResource ComboBoxStyle1}" SelectedIndex="0" SelectionChanged="FontStyleCmb_SelectionChanged">
+                                    <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Font_Regular}"/>
+                                    <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Font_Bold}"/>
+                                    <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Font_Oblique}"/>
+                                    <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Font_BoldOblique}"/>
                                 </ComboBox>
-                                <ComboBox x:Name="FontSizeCombox" Margin="4,8,0,0" Width="72" Style="{StaticResource ComboBoxStyle1}" SelectedIndex="0" SelectionChanged="FontSizeCombox_SelectionChanged"/>
+                                <ComboBox x:Name="FontSizeCmb" Margin="4,8,0,0" Width="72" Style="{StaticResource ComboBoxStyle1}" SelectedIndex="0" SelectionChanged="FontSizeCmb_SelectionChanged"/>
                             </StackPanel>
                         </StackPanel>
                     </StackPanel>
                 </Grid>
             </TabItem>
-            <TabItem  Style="{DynamicResource TabItemStyle1}" Header="Preferences">
+            <TabItem  Style="{DynamicResource TabItemStyle1}" Header="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Title_Preferences}">
                 <Grid>
                     <Grid.ColumnDefinitions>
                         <ColumnDefinition Width="16"/>
@@ -101,7 +103,7 @@
                     </Grid.ColumnDefinitions>
                     <StackPanel Grid.Column="1">
                         <StackPanel>
-                            <TextBlock Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="Item" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
+                            <TextBlock Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Title_Item}" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
                             <StackPanel Orientation="Horizontal" Margin="0,12,0,0">
                                 <TextBox Name="txtItemInput" Width="192" Height="28" VerticalContentAlignment="Center" FontSize="14" HorizontalAlignment="Left" TextChanged="txtItemInput_TextChanged"/>
                                 <Button Name="btnAddItem" Margin="8,0,0,0" Width="20" Height="20"  Background="Transparent" IsEnabled="False" BorderThickness="1" HorizontalAlignment="Right"  Click="btnAddItem_Click" >
@@ -110,7 +112,7 @@
                             </StackPanel>
                         </StackPanel>
                         <StackPanel >
-                            <TextBlock Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="Item List" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
+                            <TextBlock Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Title_ItemList}" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
                             <StackPanel Orientation="Horizontal">
                                 <ListBox x:Name="itemsListBox" Margin="0,0,0,0" SelectionMode="Single" Height="96" HorizontalAlignment="Left" Width="192" SelectionChanged="itemsListBox_SelectionChanged"/>
                                 <StackPanel Height="96" Margin="8,0,0,0">

+ 9 - 9
Demo/Examples/Compdfkit_Tools/Form/Property/ComboBoxProperty.xaml.cs

@@ -40,10 +40,10 @@ namespace Compdfkit_Tools.PDFControl
             Binding SizeListbinding = new Binding();
             SizeListbinding.Source = this;
             SizeListbinding.Path = new System.Windows.PropertyPath("SizeList");
-            FontSizeCombox.SetBinding(ComboBox.ItemsSourceProperty, SizeListbinding);
+            FontSizeCmb.SetBinding(ComboBox.ItemsSourceProperty, SizeListbinding);
 
             FieldNameText.Text = widgetArgs.FieldName;
-            FormFieldCombox.SelectedIndex = (int)widgetArgs.FormField;
+            FormFieldCmb.SelectedIndex = (int)widgetArgs.FormField;
             BorderColorPickerControl.SetCheckedForColor(widgetArgs.LineColor);
             BackgroundColorPickerControl.SetCheckedForColor(widgetArgs.BgColor);
             TextColorPickerControl.SetCheckedForColor(widgetArgs.FontColor);
@@ -77,7 +77,7 @@ namespace Compdfkit_Tools.PDFControl
         private void SetFontSize(double size)
         {
             int index = SizeList.IndexOf((int)size);
-            FontSizeCombox.SelectedIndex = index;
+            FontSizeCmb.SelectedIndex = index;
         }
 
         private void SetFontStyle(bool IsItalic, bool IsBold)
@@ -95,7 +95,7 @@ namespace Compdfkit_Tools.PDFControl
             {
                 index = 1;
             }
-            FontStyleCombox.SelectedIndex = index;
+            FontStyleCmb.SelectedIndex = index;
         }
 
         private void SetFontName(string fontName)
@@ -110,7 +110,7 @@ namespace Compdfkit_Tools.PDFControl
                     index = i;
                 }
             }
-            FontCombox.SelectedIndex = index;
+            FontCmb.SelectedIndex = index;
         }
 
         #endregion
@@ -123,7 +123,7 @@ namespace Compdfkit_Tools.PDFControl
             }
         }
 
-        private void FormFieldCombox_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        private void FormFieldCmb_SelectionChanged(object sender, SelectionChangedEventArgs e)
         {
             if (IsLoadedData)
             {
@@ -159,7 +159,7 @@ namespace Compdfkit_Tools.PDFControl
             }
         }
 
-        private void FontCombox_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        private void FontCmb_SelectionChanged(object sender, SelectionChangedEventArgs e)
         {
             if (IsLoadedData)
             {
@@ -168,7 +168,7 @@ namespace Compdfkit_Tools.PDFControl
             }
         }
 
-        private void FontStyleCombox_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        private void FontStyleCmb_SelectionChanged(object sender, SelectionChangedEventArgs e)
         {
             if (IsLoadedData)
             {
@@ -197,7 +197,7 @@ namespace Compdfkit_Tools.PDFControl
             }
         }
 
-        private void FontSizeCombox_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        private void FontSizeCmb_SelectionChanged(object sender, SelectionChangedEventArgs e)
         {
             if (IsLoadedData)
             {

+ 25 - 23
Demo/Examples/Compdfkit_Tools/Form/Property/ListBoxProperty.xaml

@@ -6,6 +6,7 @@
              xmlns:local="clr-namespace:Compdfkit_Tools.PDFControl" 
              xmlns:cpdfcommon="clr-namespace:Compdfkit_Tools.Common"
              mc:Ignorable="d" 
+             d:DesignHeight="400" d:DesignWidth="300"
              Loaded="UserControl_Loaded"
              Unloaded="UserControl_Unloaded"
              >
@@ -16,6 +17,7 @@
                 <ResourceDictionary Source="../../Asset/Styles/TabItemStyle.xaml"></ResourceDictionary>
                 <ResourceDictionary Source="../../Asset/Styles/ComboBoxStyle.xaml"></ResourceDictionary>
             </ResourceDictionary.MergedDictionaries>
+            <cpdfcommon:PropertyPanelResourceConverter x:Key="PropertyPanelResourceConverter"></cpdfcommon:PropertyPanelResourceConverter>
         </ResourceDictionary>
     </UserControl.Resources>
     <Grid>
@@ -25,11 +27,11 @@
         </Grid.RowDefinitions>
         <Border BorderThickness="0" BorderBrush="#1A000000">
             <Grid  Height="40" Background="White" >
-                <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="ListBox" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
+                <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Title_ListBox}" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
             </Grid>
         </Border>
         <TabControl x:Name="TopTabControl" Grid.Row="1" Style="{DynamicResource TabControlStyle1}" BorderThickness="0">
-            <TabItem Height="32" Style="{DynamicResource TabItemStyle1}" Header="General">
+            <TabItem Height="32" Style="{DynamicResource TabItemStyle1}" Header="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Title_General}">
                 <Grid>
                     <Grid.ColumnDefinitions>
                         <ColumnDefinition Width="16"/>
@@ -38,22 +40,22 @@
                     </Grid.ColumnDefinitions>
                     <StackPanel Grid.Column="1">
                         <StackPanel  >
-                            <TextBlock Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="Text" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
+                            <TextBlock Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_Name}" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
                             <TextBox x:Name="FieldNameText" Margin="0,8,0,0" TextChanged="FieldNameText_TextChanged"/>
                         </StackPanel>
                         <StackPanel >
-                            <TextBlock Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="Form Field" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
-                            <ComboBox x:Name="FormFieldCombox" Margin="0,8,0,0" Style="{StaticResource ComboBoxStyle1}" SelectedIndex="0" SelectionChanged="FormFieldCombox_SelectionChanged">
-                                <ComboBoxItem Content="Visible"/>
-                                <ComboBoxItem Content="Hidden"/>
-                                <ComboBoxItem Content="Visible but doesn't print"/>
-                                <ComboBoxItem Content="Hidden but printable"/>
+                            <TextBlock Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_Visibility}" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
+                            <ComboBox x:Name="FormFieldCmb" Margin="0,8,0,0" Style="{StaticResource ComboBoxStyle1}" SelectedIndex="0" SelectionChanged="FormFieldCmb_SelectionChanged">
+                                <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Option_Visible}"/>
+                                <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Option_Hidden}"/>
+                                <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Option_NoPrint}"/>
+                                <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Option_Print}"/>
                             </ComboBox>
                         </StackPanel>
                     </StackPanel>
                 </Grid>
             </TabItem>
-            <TabItem Height="32" Style="{DynamicResource TabItemStyle1}" Header="Appearance">
+            <TabItem Height="32" Style="{DynamicResource TabItemStyle1}" Header="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Title_Appearance}">
                 <Grid>
                     <Grid.ColumnDefinitions>
                         <ColumnDefinition Width="16"/>
@@ -62,38 +64,38 @@
                     </Grid.ColumnDefinitions>
                     <StackPanel Grid.Column="1">
                         <StackPanel>
-                            <TextBlock  Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="Border Color" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
+                            <TextBlock  Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_StrokeColor}" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
                             <cpdfcommon:ColorPickerControl Margin="0,18,0,0" x:Name="BorderColorPickerControl" ColorChanged="BorderColorPickerControl_ColorChanged"/>
                         </StackPanel>
                         <StackPanel>
-                            <TextBlock  Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="Background Color" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
+                            <TextBlock  Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_BgColor}" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
                             <cpdfcommon:ColorPickerControl Margin="0,18,0,0" x:Name="BackgroundColorPickerControl" ColorChanged="BackgroundColorPickerControl_ColorChanged"/>
                         </StackPanel>
                         <StackPanel>
-                            <TextBlock  Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="Text Color" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
+                            <TextBlock  Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_FontColor}" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
                             <cpdfcommon:ColorPickerControl Margin="0,18,0,0" x:Name="TextColorPickerControl" ColorChanged="TextColorPickerControl_ColorChanged"/>
                         </StackPanel>
                         <StackPanel>
                             <TextBlock  Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="Text" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold" />
-                            <ComboBox x:Name="FontCombox" Margin="0,8,0,0" Style="{StaticResource ComboBoxStyle1}" SelectedIndex="0" SelectionChanged="FontCombox_SelectionChanged">
+                            <ComboBox x:Name="FontCmb" Margin="0,8,0,0" Style="{StaticResource ComboBoxStyle1}" SelectedIndex="0" SelectionChanged="FontCmb_SelectionChanged">
                                 <ComboBoxItem Content="Arial"/>
                                 <ComboBoxItem Content="Courier New"/>
                                 <ComboBoxItem Content="Times New Roman"/>
                             </ComboBox>
                             <StackPanel Orientation="Horizontal" >
-                                <ComboBox x:Name="FontStyleCombox"  Margin="0,8,0,0" Width="148" Style="{StaticResource ComboBoxStyle1}" SelectedIndex="0" SelectionChanged="FontStyleCombox_SelectionChanged">
-                                    <ComboBoxItem Content="Regular"/>
-                                    <ComboBoxItem Content="Bold"/>
-                                    <ComboBoxItem Content="Italic"/>
-                                    <ComboBoxItem Content="Bold Italic"/>
+                                <ComboBox x:Name="FontStyleCmb"  Margin="0,8,0,0" Width="148" Style="{StaticResource ComboBoxStyle1}" SelectedIndex="0" SelectionChanged="FontStyleCmb_SelectionChanged">
+                                    <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Font_Regular}"/>
+                                    <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Font_Bold}"/>
+                                    <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Font_Oblique}"/>
+                                    <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Font_BoldOblique}"/>
                                 </ComboBox>
-                                <ComboBox x:Name="FontSizeCombox" Margin="4,8,0,0" Width="72" Style="{StaticResource ComboBoxStyle1}" SelectedIndex="0" SelectionChanged="FontSizeCombox_SelectionChanged"/>
+                                <ComboBox x:Name="FontSizeCmb" Margin="4,8,0,0" Width="72" Style="{StaticResource ComboBoxStyle1}" SelectedIndex="0" SelectionChanged="FontSizeCmb_SelectionChanged"/>
                             </StackPanel>
                         </StackPanel>
                     </StackPanel>
                 </Grid>
             </TabItem>
-            <TabItem  Style="{DynamicResource TabItemStyle1}" Header="Preferences">
+            <TabItem  Style="{DynamicResource TabItemStyle1}" Header="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Title_Preferences}">
                 <Grid>
                     <Grid.ColumnDefinitions>
                         <ColumnDefinition Width="16"/>
@@ -102,7 +104,7 @@
                     </Grid.ColumnDefinitions>
                     <StackPanel Grid.Column="1">
                         <StackPanel>
-                            <TextBlock Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="Item" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
+                            <TextBlock Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Title_Item}" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
                             <StackPanel Orientation="Horizontal" Margin="0,12,0,0">
                                 <TextBox Name="txtItemInput" Width="192" Height="28" VerticalContentAlignment="Center" FontSize="14" HorizontalAlignment="Left" TextChanged="txtItemInput_TextChanged"/>
                                 <Button Name="btnAddItem" Margin="8,0,0,0" Width="20" Height="20"  Background="Transparent" IsEnabled="False" BorderThickness="1" HorizontalAlignment="Right"  Click="btnAddItem_Click" >
@@ -111,7 +113,7 @@
                             </StackPanel>
                         </StackPanel>
                         <StackPanel >
-                            <TextBlock Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="Item List" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
+                            <TextBlock Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Title_ItemList}" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
                             <StackPanel Orientation="Horizontal">
                             <ListBox x:Name="itemsListBox" Margin="0,0,0,0" SelectionMode="Single" Height="96" HorizontalAlignment="Left" Width="192" SelectionChanged="itemsListBox_SelectionChanged"/>
                                 <StackPanel Height="96" Margin="8,0,0,0">

+ 9 - 9
Demo/Examples/Compdfkit_Tools/Form/Property/ListBoxProperty.xaml.cs

@@ -41,10 +41,10 @@ namespace Compdfkit_Tools.PDFControl
             Binding SizeListbinding = new Binding();
             SizeListbinding.Source = this;
             SizeListbinding.Path = new System.Windows.PropertyPath("SizeList");
-            FontSizeCombox.SetBinding(ComboBox.ItemsSourceProperty, SizeListbinding);
+            FontSizeCmb.SetBinding(ComboBox.ItemsSourceProperty, SizeListbinding);
 
             FieldNameText.Text = widgetArgs.FieldName;
-            FormFieldCombox.SelectedIndex = (int)widgetArgs.FormField;
+            FormFieldCmb.SelectedIndex = (int)widgetArgs.FormField;
             BorderColorPickerControl.SetCheckedForColor(widgetArgs.LineColor);
             BackgroundColorPickerControl.SetCheckedForColor(widgetArgs.BgColor);
             TextColorPickerControl.SetCheckedForColor(widgetArgs.FontColor);
@@ -79,7 +79,7 @@ namespace Compdfkit_Tools.PDFControl
         private void SetFontSize(double size)
         {
             int index = SizeList.IndexOf((int)size);
-            FontSizeCombox.SelectedIndex = index;
+            FontSizeCmb.SelectedIndex = index;
         }
 
         private void SetFontStyle(bool IsItalic, bool IsBold)
@@ -97,7 +97,7 @@ namespace Compdfkit_Tools.PDFControl
             {
                 index = 1;
             }
-            FontStyleCombox.SelectedIndex = index;
+            FontStyleCmb.SelectedIndex = index;
         }
 
         private void SetFontName(string fontName)
@@ -112,7 +112,7 @@ namespace Compdfkit_Tools.PDFControl
                     index = i;
                 }
             }
-            FontCombox.SelectedIndex = index;
+            FontCmb.SelectedIndex = index;
         }
 
         #endregion
@@ -126,7 +126,7 @@ namespace Compdfkit_Tools.PDFControl
             }
         }
 
-        private void FormFieldCombox_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        private void FormFieldCmb_SelectionChanged(object sender, SelectionChangedEventArgs e)
         {
             if (IsLoadedData)
             {
@@ -162,7 +162,7 @@ namespace Compdfkit_Tools.PDFControl
             }
         }
 
-        private void FontCombox_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        private void FontCmb_SelectionChanged(object sender, SelectionChangedEventArgs e)
         {
             if (IsLoadedData)
             {
@@ -171,7 +171,7 @@ namespace Compdfkit_Tools.PDFControl
             }
         }
 
-        private void FontStyleCombox_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        private void FontStyleCmb_SelectionChanged(object sender, SelectionChangedEventArgs e)
         {
             if (IsLoadedData)
             {
@@ -200,7 +200,7 @@ namespace Compdfkit_Tools.PDFControl
             }
         }
 
-        private void FontSizeCombox_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        private void FontSizeCmb_SelectionChanged(object sender, SelectionChangedEventArgs e)
         {
             if (IsLoadedData)
             {

+ 29 - 27
Demo/Examples/Compdfkit_Tools/Form/Property/PushButtonProperty.xaml

@@ -5,6 +5,7 @@
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
              xmlns:local="clr-namespace:Compdfkit_Tools.PDFControl" xmlns:cpdfcommon="clr-namespace:Compdfkit_Tools.Common"
              mc:Ignorable="d" 
+             d:DesignHeight="400" d:DesignWidth="300"
              Loaded="UserControl_Loaded"
              Unloaded="UserControl_Unloaded"
              >
@@ -15,6 +16,7 @@
                 <ResourceDictionary Source="../../Asset/Styles/TabItemStyle.xaml"></ResourceDictionary>
                 <ResourceDictionary Source="../../Asset/Styles/ComboBoxStyle.xaml"></ResourceDictionary>
             </ResourceDictionary.MergedDictionaries>
+            <cpdfcommon:PropertyPanelResourceConverter x:Key="PropertyPanelResourceConverter"></cpdfcommon:PropertyPanelResourceConverter>
 
             <VisualBrush x:Key="HintText" TileMode="None" Opacity="0.5" Stretch="None" AlignmentX="Left">
                 <VisualBrush.Visual>
@@ -41,11 +43,11 @@
         </Grid.RowDefinitions>
         <Border BorderThickness="0" BorderBrush="#1A000000">
             <Grid  Height="40" Background="White" >
-                <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="PushButton" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
+                <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Title_Btn}" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
             </Grid>
         </Border>
         <TabControl x:Name="TopTabControl" Grid.Row="1" Style="{DynamicResource TabControlStyle1}" BorderThickness="0">
-            <TabItem Height="32" Style="{DynamicResource TabItemStyle1}" Header="General">
+            <TabItem Height="32" Style="{DynamicResource TabItemStyle1}" Header="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Title_General}">
                 <Grid>
                     <Grid.ColumnDefinitions>
                         <ColumnDefinition Width="16"/>
@@ -54,22 +56,22 @@
                     </Grid.ColumnDefinitions>
                     <StackPanel Grid.Column="1">
                         <StackPanel>
-                            <TextBlock Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="Text" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
+                            <TextBlock Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_Name}" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
                             <TextBox x:Name="FieldNameText" Margin="0,8,0,0" TextChanged="FieldNameText_TextChanged"/>
                         </StackPanel>
                         <StackPanel >
-                            <TextBlock Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="Form Field" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
-                            <ComboBox x:Name="FormFieldCombox" Margin="0,8,0,0" Style="{StaticResource ComboBoxStyle1}" SelectedIndex="0" SelectionChanged="FormFieldCombox_SelectionChanged">
-                                <ComboBoxItem Content="Visible"/>
-                                <ComboBoxItem Content="Hidden"/>
-                                <ComboBoxItem Content="Visible but doesn't print"/>
-                                <ComboBoxItem Content="Hidden but printable"/>
+                            <TextBlock Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_Visibility}" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
+                            <ComboBox x:Name="FormFieldCmb" Margin="0,8,0,0" Style="{StaticResource ComboBoxStyle1}" SelectedIndex="0" SelectionChanged="FormFieldCmb_SelectionChanged">
+                                <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Option_Visible}"/>
+                                <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Option_Hidden}"/>
+                                <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Option_NoPrint}"/>
+                                <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Option_Print}"/>
                             </ComboBox>
                         </StackPanel>
                     </StackPanel>
                 </Grid>
             </TabItem>
-            <TabItem Height="32" Style="{DynamicResource TabItemStyle1}" Header="Appearance">
+            <TabItem Height="32" Style="{DynamicResource TabItemStyle1}" Header="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Title_Appearance}">
                 <Grid>
                     <Grid.ColumnDefinitions>
                         <ColumnDefinition Width="16"/>
@@ -78,38 +80,38 @@
                     </Grid.ColumnDefinitions>
                     <StackPanel Grid.Column="1">
                         <StackPanel>
-                            <TextBlock  Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="Border Color" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
+                            <TextBlock  Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_StrokeColor}" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
                             <cpdfcommon:ColorPickerControl Margin="0,18,0,0" x:Name="BorderColorPickerControl" ColorChanged="BorderColorPickerControl_ColorChanged"/>
                         </StackPanel>
                         <StackPanel>
-                            <TextBlock  Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="Background Color" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
+                            <TextBlock  Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_BgColor}" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
                             <cpdfcommon:ColorPickerControl Margin="0,18,0,0" x:Name="BackgroundColorPickerControl" ColorChanged="BackgroundColorPickerControl_ColorChanged"/>
                         </StackPanel>
                         <StackPanel>
-                            <TextBlock  Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="Text Color" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
+                            <TextBlock  Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_FontColor}" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
                             <cpdfcommon:ColorPickerControl Margin="0,18,0,0" x:Name="TextColorPickerControl" ColorChanged="TextColorPickerControl_ColorChanged"/>
                         </StackPanel>
                         <StackPanel>
                             <TextBlock  Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="Text" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold" />
-                            <ComboBox x:Name="FontCombox" Margin="0,8,0,0" Style="{StaticResource ComboBoxStyle1}" SelectedIndex="0" SelectionChanged="FontCombox_SelectionChanged">
+                            <ComboBox x:Name="FontCmb" Margin="0,8,0,0" Style="{StaticResource ComboBoxStyle1}" SelectedIndex="0" SelectionChanged="FontCmb_SelectionChanged">
                                 <ComboBoxItem Content="Arial"/>
                                 <ComboBoxItem Content="Courier New"/>
                                 <ComboBoxItem Content="Times New Roman"/>
                             </ComboBox>
                             <StackPanel Orientation="Horizontal" >
-                                <ComboBox x:Name="FontStyleCombox"  Margin="0,8,0,0" Width="148" Style="{StaticResource ComboBoxStyle1}" SelectedIndex="0" SelectionChanged="FontStyleCombox_SelectionChanged">
-                                    <ComboBoxItem Content="Regular"/>
-                                    <ComboBoxItem Content="Bold"/>
-                                    <ComboBoxItem Content="Italic"/>
-                                    <ComboBoxItem Content="Bold Italic"/>
+                                <ComboBox x:Name="FontStyleCmb"  Margin="0,8,0,0" Width="148" Style="{StaticResource ComboBoxStyle1}" SelectedIndex="0" SelectionChanged="FontStyleCmb_SelectionChanged">
+                                    <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Font_Regular}"/>
+                                    <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Font_Bold}"/>
+                                    <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Font_Oblique}"/>
+                                    <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Font_BoldOblique}"/>
                                 </ComboBox>
-                                <ComboBox x:Name="FontSizeCombox" Margin="4,8,0,0" Width="72" Style="{StaticResource ComboBoxStyle1}" SelectedIndex="0" SelectionChanged="FontSizeCombox_SelectionChanged"/>
+                                <ComboBox x:Name="FontSizeCmb" Margin="4,8,0,0" Width="72" Style="{StaticResource ComboBoxStyle1}" SelectedIndex="0" SelectionChanged="FontSizeCmb_SelectionChanged"/>
                             </StackPanel>
                         </StackPanel>
                     </StackPanel>
                 </Grid>
             </TabItem>
-            <TabItem Height="32" Style="{DynamicResource TabItemStyle1}" Header="Preferences">
+            <TabItem Height="32" Style="{DynamicResource TabItemStyle1}" Header="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Title_Preferences}">
                 <Grid>
                     <Grid.ColumnDefinitions>
                         <ColumnDefinition Width="16"/>
@@ -118,15 +120,15 @@
                     </Grid.ColumnDefinitions>
                     <StackPanel Grid.Column="1">
                     <StackPanel>
-                        <TextBlock Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="Value Text" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
+                        <TextBlock Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Title_BtnContent}" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
                             <TextBox x:Name="ItemText" Margin="0,8,0,0" TextChanged="ItemText_TextChanged"/>
                     </StackPanel>
                         <StackPanel>
-                            <TextBlock Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="Effect after selection" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
-                            <ComboBox x:Name="TextAlignmentCombox" Margin="0,8,0,0" Style="{StaticResource ComboBoxStyle1}" SelectedIndex="0" SelectionChanged="TextAlignmentCombox_SelectionChanged">
-                                <ComboBoxItem Content="None"/>
-                                <ComboBoxItem Content="Go To Pages"/>
-                                <ComboBoxItem Content="Open a Web Link"/>
+                            <TextBlock Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Btn_Action}" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
+                            <ComboBox x:Name="TextAlignmentCmb" Margin="0,8,0,0" Style="{StaticResource ComboBoxStyle1}" SelectedIndex="0" SelectionChanged="TextAlignmentCmb_SelectionChanged">
+                                <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Action_None}"/>
+                                <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Action_Jump}"/>
+                                <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Action_Link}"/>
                             </ComboBox>
                             <TextBox x:Name="ActionContentText" Margin="0,4,0,0" Text="123" TextChanged="ActionContentText_TextChanged" Visibility="Collapsed"/>
                         </StackPanel>

+ 16 - 16
Demo/Examples/Compdfkit_Tools/Form/Property/PushButtonProperty.xaml.cs

@@ -42,11 +42,11 @@ namespace Compdfkit_Tools.PDFControl
             Binding SizeListbinding = new Binding();
             SizeListbinding.Source = this;
             SizeListbinding.Path = new System.Windows.PropertyPath("SizeList");
-            FontSizeCombox.SetBinding(ComboBox.ItemsSourceProperty, SizeListbinding);
+            FontSizeCmb.SetBinding(ComboBox.ItemsSourceProperty, SizeListbinding);
 
             TopTabControl.SelectedIndex = 2;
             FieldNameText.Text = widgetArgs.FieldName;
-            FormFieldCombox.SelectedIndex = (int)widgetArgs.FormField;
+            FormFieldCmb.SelectedIndex = (int)widgetArgs.FormField;
             BorderColorPickerControl.SetCheckedForColor(widgetArgs.LineColor);
             BackgroundColorPickerControl.SetCheckedForColor(widgetArgs.BgColor);
             TextColorPickerControl.SetCheckedForColor(widgetArgs.FontColor);
@@ -69,21 +69,21 @@ namespace Compdfkit_Tools.PDFControl
             {
                 if (key == C_ACTION_TYPE.ACTION_TYPE_GOTO)
                 {
-                    TextAlignmentCombox.SelectedIndex = 1; 
+                    TextAlignmentCmb.SelectedIndex = 1; 
                     ActionContentText.Visibility = Visibility.Visible;
                     ActionContentText.Text = (Convert.ToInt32( keyValuePairs[key])+1).ToString();
                     break;
                 }
                 if (key == C_ACTION_TYPE.ACTION_TYPE_URI)
                 {
-                    TextAlignmentCombox.SelectedIndex = 2; 
+                    TextAlignmentCmb.SelectedIndex = 2; 
                     ActionContentText.Visibility = Visibility.Visible;
                     ActionContentText.Text = keyValuePairs[key];
                     break;
                 }
                 else
                 {
-                    TextAlignmentCombox.SelectedIndex = 0;
+                    TextAlignmentCmb.SelectedIndex = 0;
                     ActionContentText.Text = "";
                     break;
                 }
@@ -92,7 +92,7 @@ namespace Compdfkit_Tools.PDFControl
         private void SetFontSize(double size)
         {
             int index = SizeList.IndexOf((int)size);
-            FontSizeCombox.SelectedIndex = index;
+            FontSizeCmb.SelectedIndex = index;
         }
 
         private void SetFontStyle(bool IsItalic, bool IsBold)
@@ -110,7 +110,7 @@ namespace Compdfkit_Tools.PDFControl
             {
                 index = 1;
             }
-            FontStyleCombox.SelectedIndex = index;
+            FontStyleCmb.SelectedIndex = index;
         }
 
         private void SetFontName(string fontName)
@@ -125,7 +125,7 @@ namespace Compdfkit_Tools.PDFControl
                     index = i;
                 }
             }
-            FontCombox.SelectedIndex = index;
+            FontCmb.SelectedIndex = index;
         }
 
         #endregion
@@ -142,7 +142,7 @@ namespace Compdfkit_Tools.PDFControl
         }
 
 
-        private void FormFieldCombox_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        private void FormFieldCmb_SelectionChanged(object sender, SelectionChangedEventArgs e)
         {
             if (IsLoadedData)
             {
@@ -180,7 +180,7 @@ namespace Compdfkit_Tools.PDFControl
             }
         }
 
-        private void FontCombox_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        private void FontCmb_SelectionChanged(object sender, SelectionChangedEventArgs e)
         {
             if (IsLoadedData)
             {
@@ -189,7 +189,7 @@ namespace Compdfkit_Tools.PDFControl
             }
         }
 
-        private void FontStyleCombox_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        private void FontStyleCmb_SelectionChanged(object sender, SelectionChangedEventArgs e)
         {
             if (IsLoadedData)
             {
@@ -218,7 +218,7 @@ namespace Compdfkit_Tools.PDFControl
             }
         }
 
-        private void FontSizeCombox_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        private void FontSizeCmb_SelectionChanged(object sender, SelectionChangedEventArgs e)
         {
             if (IsLoadedData)
             {
@@ -228,12 +228,12 @@ namespace Compdfkit_Tools.PDFControl
         }
         #endregion
 
-        private void TextAlignmentCombox_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        private void TextAlignmentCmb_SelectionChanged(object sender, SelectionChangedEventArgs e)
         {
             if (IsLoadedData)
             {
                 ActionContentText.Style = null;
-                switch (TextAlignmentCombox.SelectedIndex)
+                switch (TextAlignmentCmb.SelectedIndex)
                 {
                     case 0:
                         ActionContentText.Visibility = Visibility.Collapsed;
@@ -257,7 +257,7 @@ namespace Compdfkit_Tools.PDFControl
         private void AddAction()
         {
             Dictionary<C_ACTION_TYPE, string> ActionDict = new Dictionary<C_ACTION_TYPE, string>();
-            if (TextAlignmentCombox.SelectedIndex == 1 && !string.IsNullOrEmpty(TextAlignmentCombox.Text))
+            if (TextAlignmentCmb.SelectedIndex == 1 && !string.IsNullOrEmpty(TextAlignmentCmb.Text))
             {
                 int page = 0;
                 int.TryParse(ActionContentText.Text.Trim(), out page);
@@ -266,7 +266,7 @@ namespace Compdfkit_Tools.PDFControl
                 if (page - 1 >= 0)
                     ActionDict[C_ACTION_TYPE.ACTION_TYPE_GOTO] = (page - 1).ToString();
             }
-            if (TextAlignmentCombox.SelectedIndex == 2)
+            if (TextAlignmentCmb.SelectedIndex == 2)
             {
                 if (string.IsNullOrEmpty(ActionContentText.Text.Trim()))
                 {

Fichier diff supprimé car celui-ci est trop grand
+ 26 - 24
Demo/Examples/Compdfkit_Tools/Form/Property/RadioButtonProperty.xaml


+ 4 - 4
Demo/Examples/Compdfkit_Tools/Form/Property/RadioButtonProperty.xaml.cs

@@ -36,10 +36,10 @@ namespace Compdfkit_Tools.PDFControl
         private void UserControl_Loaded(object sender, RoutedEventArgs e)
         {
             FieldNameText.Text = widgetArgs.FieldName;
-            FormFieldCombox.SelectedIndex = (int)widgetArgs.FormField;
+            FormFieldCmb.SelectedIndex = (int)widgetArgs.FormField;
             BorderColorPickerControl.SetCheckedForColor(widgetArgs.LineColor);
             BackgroundColorPickerControl.SetCheckedForColor(widgetArgs.BgColor);
-            RadioButtonStyleCombox.SelectedIndex = (int)widgetArgs.CheckStyle;
+            RadioButtonStyleCmb.SelectedIndex = (int)widgetArgs.CheckStyle;
             chkSelected.IsChecked = widgetArgs.IsChecked;
 
             if (IsShowWarning())
@@ -84,7 +84,7 @@ namespace Compdfkit_Tools.PDFControl
             }
         }
 
-        private void FormFieldCombox_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        private void FormFieldCmb_SelectionChanged(object sender, SelectionChangedEventArgs e)
         {
             if (IsLoadedData)
             {
@@ -111,7 +111,7 @@ namespace Compdfkit_Tools.PDFControl
             }
         }
 
-        private void RadioButtonStyleCombox_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        private void RadioButtonStyleCmb_SelectionChanged(object sender, SelectionChangedEventArgs e)
         {
             if (IsLoadedData)
             {

+ 10 - 8
Demo/Examples/Compdfkit_Tools/Form/Property/SignatureProperty.xaml

@@ -3,8 +3,9 @@
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
-             xmlns:local="clr-namespace:Compdfkit_Tools.PDFControl"
+             xmlns:local="clr-namespace:Compdfkit_Tools.PDFControl" xmlns:cpdfcommon="clr-namespace:Compdfkit_Tools.Common"
              mc:Ignorable="d" 
+             d:DesignHeight="400" d:DesignWidth="300"
              Loaded="UserControl_Loaded"
              Unloaded="UserControl_Unloaded"
              >
@@ -13,6 +14,7 @@
             <ResourceDictionary.MergedDictionaries>
                 <ResourceDictionary Source="../../Asset/Styles/ComboBoxStyle.xaml"></ResourceDictionary>
             </ResourceDictionary.MergedDictionaries>
+            <cpdfcommon:PropertyPanelResourceConverter x:Key="PropertyPanelResourceConverter"></cpdfcommon:PropertyPanelResourceConverter>
         </ResourceDictionary>
     </UserControl.Resources>
     <Grid Background="White">
@@ -22,7 +24,7 @@
         </Grid.RowDefinitions>
         <Border BorderThickness="0" BorderBrush="#1A000000">
             <Grid  Height="40" Background="White" >
-                <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="Signature" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
+                <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Title_Sig}" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
             </Grid>
         </Border>
         <Grid Grid.Row="1">
@@ -33,12 +35,12 @@
             </Grid.ColumnDefinitions>
 
             <StackPanel Grid.Column="1">
-                <TextBlock Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="Form Field" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
-                <ComboBox x:Name="FormFieldCombox" Margin="0,8,0,0" Style="{StaticResource ComboBoxStyle1}" SelectedIndex="0" SelectionChanged="FormFieldCombox_SelectionChanged">
-                    <ComboBoxItem Content="Visible"/>
-                    <ComboBoxItem Content="Hidden"/>
-                    <ComboBoxItem Content="Visible but doesn't print"/>
-                    <ComboBoxItem Content="Hidden but printable"/>
+                <TextBlock Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_Visibility}" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
+                <ComboBox x:Name="FormFieldCmb" Margin="0,8,0,0" Style="{StaticResource ComboBoxStyle1}" SelectedIndex="0" SelectionChanged="FormFieldCmb_SelectionChanged">
+                    <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Option_Visible}"/>
+                    <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Option_Hidden}"/>
+                    <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Option_NoPrint}"/>
+                    <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Option_Print}"/>
                 </ComboBox>
             </StackPanel>
         </Grid>

+ 2 - 2
Demo/Examples/Compdfkit_Tools/Form/Property/SignatureProperty.xaml.cs

@@ -25,7 +25,7 @@ namespace Compdfkit_Tools.PDFControl
 
         private void UserControl_Loaded(object sender, RoutedEventArgs e)
         {
-            FormFieldCombox.SelectedIndex = (int)widgetArgs.FormField;
+            FormFieldCmb.SelectedIndex = (int)widgetArgs.FormField;
             IsLoadedData = true;
         }
 
@@ -34,7 +34,7 @@ namespace Compdfkit_Tools.PDFControl
             IsLoadedData = false;
         }
 
-        private void FormFieldCombox_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        private void FormFieldCmb_SelectionChanged(object sender, SelectionChangedEventArgs e)
         {
             if (IsLoadedData)
             {

+ 30 - 28
Demo/Examples/Compdfkit_Tools/Form/Property/TextFieldProperty.xaml

@@ -5,6 +5,7 @@
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
              xmlns:local="clr-namespace:Compdfkit_Tools.PDFControl" xmlns:cpdfcommon="clr-namespace:Compdfkit_Tools.Common"
              mc:Ignorable="d"
+             d:DesignHeight="400" d:DesignWidth="300"
              Loaded="UserControl_Loaded"
              Unloaded="UserControl_Unloaded"
              >
@@ -15,6 +16,7 @@
                 <ResourceDictionary Source="../../Asset/Styles/TabItemStyle.xaml"></ResourceDictionary>
                 <ResourceDictionary Source="../../Asset/Styles/ComboBoxStyle.xaml"></ResourceDictionary>
             </ResourceDictionary.MergedDictionaries>
+            <cpdfcommon:PropertyPanelResourceConverter x:Key="PropertyPanelResourceConverter"></cpdfcommon:PropertyPanelResourceConverter>
         </ResourceDictionary>
     </UserControl.Resources>
     <Grid>
@@ -24,11 +26,11 @@
         </Grid.RowDefinitions>
         <Border BorderThickness="0" BorderBrush="#1A000000">
             <Grid  Height="40" Background="White" >
-                <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="Text Field" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
+                <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Title_TextField}" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
             </Grid>
         </Border>
         <TabControl Grid.Row="1" Style="{DynamicResource TabControlStyle1}" BorderThickness="0">
-            <TabItem Height="32" Style="{DynamicResource TabItemStyle1}" Header="General">
+            <TabItem Height="32" Style="{DynamicResource TabItemStyle1}" Header="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Title_General}">
                 <Grid>
                     <Grid.ColumnDefinitions>
                         <ColumnDefinition Width="16"/>
@@ -37,22 +39,22 @@
                     </Grid.ColumnDefinitions>
                     <StackPanel Grid.Column="1">
                         <StackPanel  >
-                            <TextBlock Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="Text" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
+                            <TextBlock Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_Name}" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
                             <TextBox x:Name="FieldNameText" Margin="0,8,0,0" TextChanged="FieldNameText_TextChanged"/>
                         </StackPanel>
                         <StackPanel >
-                            <TextBlock Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="Form Field" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
-                            <ComboBox x:Name="FormFieldCombox" Margin="0,8,0,0" Style="{StaticResource ComboBoxStyle1}" SelectedIndex="0" SelectionChanged="FormFieldCombox_SelectionChanged">
-                                <ComboBoxItem Content="Visible"/>
-                                <ComboBoxItem Content="Hidden"/>
-                                <ComboBoxItem Content="Visible but doesn't print"/>
-                                <ComboBoxItem Content="Hidden but printable"/>
+                            <TextBlock Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_Visibility}" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
+                            <ComboBox x:Name="FormFieldCmb" Margin="0,8,0,0" Style="{StaticResource ComboBoxStyle1}" SelectedIndex="0" SelectionChanged="FormFieldCmb_SelectionChanged">
+                                <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Option_Visible}"/>
+                                <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Option_Hidden}"/>
+                                <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Option_NoPrint}"/>
+                                <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Option_Print}"/>
                             </ComboBox>
                         </StackPanel>
                     </StackPanel>
                 </Grid>
             </TabItem>
-            <TabItem Height="32" Style="{DynamicResource TabItemStyle1}" Header="Appearance">
+            <TabItem Height="32" Style="{DynamicResource TabItemStyle1}" Header="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Title_Appearance}">
                 <Grid>
                     <Grid.ColumnDefinitions>
                         <ColumnDefinition Width="16"/>
@@ -61,38 +63,38 @@
                     </Grid.ColumnDefinitions>
                     <StackPanel Grid.Column="1">
                         <StackPanel>
-                            <TextBlock  Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="Border Color" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
+                            <TextBlock  Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_StrokeColor}" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
                             <cpdfcommon:ColorPickerControl Margin="0,18,0,0" x:Name="BorderColorPickerControl" ColorChanged="BorderColorPickerControl_ColorChanged"/>
                         </StackPanel>
                         <StackPanel>
-                            <TextBlock  Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="Background Color" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
+                            <TextBlock  Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_BgColor}" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
                             <cpdfcommon:ColorPickerControl Margin="0,18,0,0" x:Name="BackgroundColorPickerControl" ColorChanged="BackgroundColorPickerControl_ColorChanged"/>
                         </StackPanel>
                         <StackPanel>
-                            <TextBlock  Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="Text Color" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
+                            <TextBlock  Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_FontColor}" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
                             <cpdfcommon:ColorPickerControl Margin="0,18,0,0" x:Name="TextColorPickerControl" ColorChanged="TextColorPickerControl_ColorChanged"/>
                         </StackPanel>
                         <StackPanel>
                             <TextBlock  Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="Text" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold" />
-                            <ComboBox x:Name="FontCombox" Margin="0,8,0,0" Style="{StaticResource ComboBoxStyle1}" SelectedIndex="0" SelectionChanged="FontCombox_SelectionChanged">
+                            <ComboBox x:Name="FontCmb" Margin="0,8,0,0" Style="{StaticResource ComboBoxStyle1}" SelectedIndex="0" SelectionChanged="FontCmb_SelectionChanged">
                                 <ComboBoxItem Content="Arial"/>
                                 <ComboBoxItem Content="Courier New"/>
                                 <ComboBoxItem Content="Times New Roman"/>
                             </ComboBox>
                             <StackPanel Orientation="Horizontal" >
-                                <ComboBox x:Name="FontStyleCombox"  Margin="0,8,0,0" Width="148" Style="{StaticResource ComboBoxStyle1}" SelectedIndex="0" SelectionChanged="FontStyleCombox_SelectionChanged">
-                                    <ComboBoxItem Content="Regular"/>
-                                    <ComboBoxItem Content="Bold"/>
-                                    <ComboBoxItem Content="Italic"/>
-                                    <ComboBoxItem Content="Bold Italic"/>
+                                <ComboBox x:Name="FontStyleCmb"  Margin="0,8,0,0" Width="148" Style="{StaticResource ComboBoxStyle1}" SelectedIndex="0" SelectionChanged="FontStyleCmb_SelectionChanged">
+                                    <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Font_Regular}"/>
+                                    <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Font_Bold}"/>
+                                    <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Font_Oblique}"/>
+                                    <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Font_BoldOblique}"/>
                                 </ComboBox>
-                                <ComboBox x:Name="FontSizeCombox" Margin="4,8,0,0" Width="72" Style="{StaticResource ComboBoxStyle1}" SelectedIndex="0" SelectionChanged="FontSizeCombox_SelectionChanged"/>
+                                <ComboBox x:Name="FontSizeCmb" Margin="4,8,0,0" Width="72" Style="{StaticResource ComboBoxStyle1}" SelectedIndex="0" SelectionChanged="FontSizeCmb_SelectionChanged"/>
                             </StackPanel>
                         </StackPanel>
                     </StackPanel>
                 </Grid>
             </TabItem>
-            <TabItem Height="32" Style="{DynamicResource TabItemStyle1}" Header="Preferences">
+            <TabItem Height="32" Style="{DynamicResource TabItemStyle1}" Header="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Title_Preferences}">
                 <Grid>
                     <Grid.ColumnDefinitions>
                         <ColumnDefinition Width="16"/>
@@ -101,17 +103,17 @@
                     </Grid.ColumnDefinitions>
                     <StackPanel Grid.Column="1">
                         <StackPanel  >
-                            <TextBlock Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="Text alignment" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
-                            <ComboBox x:Name="TextAlignmentCombox" Margin="0,8,0,0" Style="{StaticResource ComboBoxStyle1}" SelectedIndex="0" SelectionChanged="TextAlignmentCombox_SelectionChanged">
-                                <ComboBoxItem Content="Left Alignment"/>
-                                <ComboBoxItem Content="Center"/>
-                                <ComboBoxItem Content="Right Alignment"/>
+                            <TextBlock Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_Alignment}" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
+                            <ComboBox x:Name="TextAlignmentCmb" Margin="0,8,0,0" Style="{StaticResource ComboBoxStyle1}" SelectedIndex="0" SelectionChanged="TextAlignmentCmb_SelectionChanged">
+                                <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Alignment_Left}"/>
+                                <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Alignment_Center}"/>
+                                <ComboBoxItem Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Alignment_Right}"/>
                             </ComboBox>
                         </StackPanel>
                         <StackPanel >
-                            <TextBlock Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="Default Value" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
+                            <TextBlock Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_DefaultValue}" FontSize="14" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
                             <TextBox x:Name="DefaultText" Margin="0,8,0,0"  Width="224" Height="112" AcceptsReturn="True" TextWrapping="Wrap" TextChanged="DefaultText_TextChanged"/>
-                            <CheckBox x:Name="chkMutiline" Content="Muti-Line" FontSize="14" VerticalContentAlignment="Center" Margin="0 14 0 0" Checked="chkMutiline_Checked" Unchecked="chkMutiline_Unchecked"/>
+                            <CheckBox x:Name="chkMutiline" Content="{Binding Converter={StaticResource PropertyPanelResourceConverter},ConverterParameter=Property_MultiLine}" FontSize="14" VerticalContentAlignment="Center" Margin="0 14 0 0" Checked="chkMutiline_Checked" Unchecked="chkMutiline_Unchecked"/>
                         </StackPanel>
                     </StackPanel>
                 </Grid>

+ 11 - 11
Demo/Examples/Compdfkit_Tools/Form/Property/TextFieldProperty.xaml.cs

@@ -40,17 +40,17 @@ namespace Compdfkit_Tools.PDFControl
             Binding SizeListbinding = new Binding();
             SizeListbinding.Source = this;
             SizeListbinding.Path = new System.Windows.PropertyPath("SizeList");
-            FontSizeCombox.SetBinding(ComboBox.ItemsSourceProperty, SizeListbinding);
+            FontSizeCmb.SetBinding(ComboBox.ItemsSourceProperty, SizeListbinding);
 
             FieldNameText.Text = widgetArgs.FieldName;
-            FormFieldCombox.SelectedIndex = (int)widgetArgs.FormField;
+            FormFieldCmb.SelectedIndex = (int)widgetArgs.FormField;
             BorderColorPickerControl.SetCheckedForColor(widgetArgs.LineColor);
             BackgroundColorPickerControl.SetCheckedForColor(widgetArgs.BgColor);
             TextColorPickerControl.SetCheckedForColor(widgetArgs.FontColor);
             SetFontName(widgetArgs.FontName);
             SetFontStyle(widgetArgs.IsItalic, widgetArgs.IsBold);
             SetFontSize(widgetArgs.FontSize);
-            TextAlignmentCombox.SelectedIndex = (int)widgetArgs.Alignment;
+            TextAlignmentCmb.SelectedIndex = (int)widgetArgs.Alignment;
             DefaultText.Text = widgetArgs.Text;
             chkMutiline.IsChecked = widgetArgs.IsMultiLine;
             IsLoadedData = true;
@@ -64,7 +64,7 @@ namespace Compdfkit_Tools.PDFControl
         private void SetFontSize(double size)
         {
             int index = SizeList.IndexOf((int)size);
-            FontSizeCombox.SelectedIndex = index;
+            FontSizeCmb.SelectedIndex = index;
         }
 
         private void SetFontStyle(bool IsItalic, bool IsBold)
@@ -82,7 +82,7 @@ namespace Compdfkit_Tools.PDFControl
             {
                 index = 1;
             }
-            FontStyleCombox.SelectedIndex = index;
+            FontStyleCmb.SelectedIndex = index;
         }
 
         private void SetFontName(string fontName)
@@ -97,7 +97,7 @@ namespace Compdfkit_Tools.PDFControl
                     index = i;
                 }
             }
-            FontCombox.SelectedIndex = index;
+            FontCmb.SelectedIndex = index;
         }
 
         #endregion
@@ -114,7 +114,7 @@ namespace Compdfkit_Tools.PDFControl
         }
 
 
-        private void FormFieldCombox_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        private void FormFieldCmb_SelectionChanged(object sender, SelectionChangedEventArgs e)
         {
             if (IsLoadedData)
             {
@@ -152,7 +152,7 @@ namespace Compdfkit_Tools.PDFControl
             }
         }
 
-        private void FontCombox_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        private void FontCmb_SelectionChanged(object sender, SelectionChangedEventArgs e)
         {
             if (IsLoadedData)
             {
@@ -161,7 +161,7 @@ namespace Compdfkit_Tools.PDFControl
             }
         }
 
-        private void FontStyleCombox_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        private void FontStyleCmb_SelectionChanged(object sender, SelectionChangedEventArgs e)
         {
             if (IsLoadedData)
             {
@@ -190,7 +190,7 @@ namespace Compdfkit_Tools.PDFControl
             }
         }
 
-        private void FontSizeCombox_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        private void FontSizeCmb_SelectionChanged(object sender, SelectionChangedEventArgs e)
         {
             if (IsLoadedData)
             {
@@ -199,7 +199,7 @@ namespace Compdfkit_Tools.PDFControl
             }
         }
 
-        private void TextAlignmentCombox_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        private void TextAlignmentCmb_SelectionChanged(object sender, SelectionChangedEventArgs e)
         {
             if (IsLoadedData)
             {

+ 105 - 0
Demo/Examples/Compdfkit_Tools/Strings/Bota.resx

@@ -18,4 +18,109 @@
     <resheader name="writer">
         <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
     </resheader>
+    <data name="Tooltip_Thumb" xml:space="preserve">
+        <value>View Thumbnails</value>
+    </data>
+    <data name="Title_Thumb" xml:space="preserve">
+        <value>Thumbnails</value>
+    </data>
+    <data name="Tooltip_Thumb" xml:space="preserve">
+        <value>View Outlines</value>
+    </data>
+    <data name="Title_Outlines" xml:space="preserve">
+        <value>Outlines</value>
+    </data>
+    <data name="Text_NoOutline" xml:space="preserve">
+        <value>No Outlines</value>
+    </data>
+    <data name="Tooltip_Thumb" xml:space="preserve">
+        <value>View Bookmarks</value>
+    </data>
+    <data name="Title_Bookmarks" xml:space="preserve">
+        <value>Bookmarks</value>
+    </data>
+    <data name="Text_NoBookmarks" xml:space="preserve">
+        <value>No Bookmarks</value>
+    </data>
+    <data name="Tooltip_AddBookmarks" xml:space="preserve">
+        <value>Add Bookmarks</value>
+    </data>
+    <data name="Holder_BookmarkTitle" xml:space="preserve">
+        <value>Bookmark Title</value>
+    </data>
+    <data name="Text_Page" xml:space="preserve">
+        <value>Page </value>
+    </data>
+    <data name="Button_Create" xml:space="preserve">
+        <value>Create</value>
+    </data>
+    <data name="Button_Cancel" xml:space="preserve">
+        <value>Cancel</value>
+    </data>
+    <data name="ToolTip_Edit" xml:space="preserve">
+        <value>Edit</value>
+    </data>
+    <data name="ToolTip_Delete" xml:space="preserve">
+        <value>Delete</value>
+    </data>
+    <data name="Tooltip_Search" xml:space="preserve">
+        <value>Search</value>
+    </data>
+    <data name="Holder_Search" xml:space="preserve">
+        <value>Search</value>
+    </data>
+    <data name="Button_Done" xml:space="preserve">
+        <value>Done</value>
+    </data>
+    <data name="Text_NoResult" xml:space="preserve">
+        <value>No Results</value>
+    </data>
+    <data name="Text_Result" xml:space="preserve">
+        <value>Results: </value>
+    </data>
+    <data name="Text_Page" xml:space="preserve">
+        <value>Page</value>
+    </data>
+    <data name="Tooltip_SigList" xml:space="preserve">
+        <value>Signature List</value>
+    </data>
+    <data name="Menu_SigDetail" xml:space="preserve">
+        <value>Signature Details</value>
+    </data>
+    <data name="Menu_CertDetail" xml:space="preserve">
+        <value>Certification Details</value>
+    </data>
+    <data name="Button_Cancel" xml:space="preserve">
+        <value>Delete</value>
+    </data>
+    <data name="Warn_Warning" xml:space="preserve">
+        <value>Warning</value>
+    </data>
+    <data name="Text_SureDelete" xml:space="preserve">
+        <value>Are you sure to delete it?</value>
+    </data>
+    <data name="Button_Cancel" xml:space="preserve">
+        <value>Cancel</value>
+    </data>
+    <data name="Button_OK" xml:space="preserve">
+        <value>OK</value>
+    </data>
+    <data name="Tooltip_AnnotationList" xml:space="preserve">
+        <value>View Annotations</value>
+    </data>
+    <data name="ToolTip_AnnotationList" xml:space="preserve">
+        <value>Annotations</value>
+    </data>
+    <data name="ToolTip_ImportAnnot" xml:space="preserve">
+        <value>Import Annotations</value>
+    </data>
+    <data name="ToolTip_ExportAnnot" xml:space="preserve">
+        <value>Export Annotations</value>
+    </data>
+    <data name="Text_NoAnnotations" xml:space="preserve">
+        <value>No Annotations</value>
+    </data>
+    <data name="Text_Page" xml:space="preserve">
+        <value>Page </value>
+    </data>
 </root>

+ 105 - 0
Demo/Examples/Compdfkit_Tools/Strings/Bota.zh.resx

@@ -11,4 +11,109 @@
     <resheader name="writer">
         <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
     </resheader>
+    <data name="Tooltip_Thumb" xml:space="preserve">
+        <value>缩略图</value>
+    </data>
+    <data name="Title_Thumb" xml:space="preserve">
+        <value>缩略图</value>
+    </data>
+    <data name="Tooltip_Thumb" xml:space="preserve">
+        <value>大纲</value>
+    </data>
+    <data name="Title_Outlines" xml:space="preserve">
+        <value>大纲</value>
+    </data>
+    <data name="Text_NoOutline" xml:space="preserve">
+        <value>无大纲</value>
+    </data>
+    <data name="Tooltip_Thumb" xml:space="preserve">
+        <value>书签</value>
+    </data>
+    <data name="Title_Bookmarks" xml:space="preserve">
+        <value>书签</value>
+    </data>
+    <data name="Text_NoBookmarks" xml:space="preserve">
+        <value>无书签</value>
+    </data>
+    <data name="Tooltip_AddBookmarks" xml:space="preserve">
+        <value>添加书签</value>
+    </data>
+    <data name="Holder_BookmarkTitle" xml:space="preserve">
+        <value>输入书签标题</value>
+    </data>
+    <data name="Text_Page" xml:space="preserve">
+        <value>页码 </value>
+    </data>
+    <data name="Button_Create" xml:space="preserve">
+        <value>确定</value>
+    </data>
+    <data name="Button_Cancel" xml:space="preserve">
+        <value>取消</value>
+    </data>
+    <data name="ToolTip_Edit" xml:space="preserve">
+        <value>编辑</value>
+    </data>
+    <data name="ToolTip_Delete" xml:space="preserve">
+        <value>删除</value>
+    </data>
+    <data name="Tooltip_Search" xml:space="preserve">
+        <value>搜索</value>
+    </data>
+    <data name="Holder_Search" xml:space="preserve">
+        <value>输入搜索内容</value>
+    </data>
+    <data name="Button_Done" xml:space="preserve">
+        <value>完成</value>
+    </data>
+    <data name="Text_NoResult" xml:space="preserve">
+        <value>无匹配的结果</value>
+    </data>
+    <data name="Text_Result" xml:space="preserve">
+        <value>搜索结果:</value>
+    </data>
+    <data name="Text_Page" xml:space="preserve">
+        <value>页码</value>
+    </data>
+    <data name="Tooltip_SigList" xml:space="preserve">
+        <value>签名列表</value>
+    </data>
+    <data name="Menu_SigDetail" xml:space="preserve">
+        <value>查看签名详情</value>
+    </data>
+    <data name="Menu_CertDetail" xml:space="preserve">
+        <value>查看证书详情</value>
+    </data>
+    <data name="Button_Cancel" xml:space="preserve">
+        <value>删除</value>
+    </data>
+    <data name="Warn_Warning" xml:space="preserve">
+        <value>注意</value>
+    </data>
+    <data name="Text_SureDelete" xml:space="preserve">
+        <value>确定删除该内容?</value>
+    </data>
+    <data name="Button_Cancel" xml:space="preserve">
+        <value>取消</value>
+    </data>
+    <data name="Button_OK" xml:space="preserve">
+        <value>确定</value>
+    </data>
+    <data name="Tooltip_AnnotationList" xml:space="preserve">
+        <value>注释</value>
+    </data>
+    <data name="ToolTip_AnnotationList" xml:space="preserve">
+        <value>注释</value>
+    </data>
+    <data name="ToolTip_ImportAnnot" xml:space="preserve">
+        <value>导入注释</value>
+    </data>
+    <data name="ToolTip_ExportAnnot" xml:space="preserve">
+        <value>导出注释</value>
+    </data>
+    <data name="Text_NoAnnotations" xml:space="preserve">
+        <value>无注释</value>
+    </data>
+    <data name="Text_Page" xml:space="preserve">
+        <value>页码 </value>
+    </data>
 </root>

+ 269 - 0
Demo/Examples/Compdfkit_Tools/Strings/DocInfo.Designer.cs

@@ -0,0 +1,269 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace Compdfkit_Tools.Strings {
+    using System;
+    
+    
+    /// <summary>
+    ///   A strongly-typed resource class, for looking up localized strings, etc.
+    /// </summary>
+    // This class was auto-generated by the StronglyTypedResourceBuilder
+    // class via a tool like ResGen or Visual Studio.
+    // To add or remove a member, edit your .ResX file then rerun ResGen
+    // with the /str option, or rebuild your VS project.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    internal class DocInfo {
+        
+        private static global::System.Resources.ResourceManager resourceMan;
+        
+        private static global::System.Globalization.CultureInfo resourceCulture;
+        
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal DocInfo() {
+        }
+        
+        /// <summary>
+        ///   Returns the cached ResourceManager instance used by this class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Resources.ResourceManager ResourceManager {
+            get {
+                if (object.ReferenceEquals(resourceMan, null)) {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Compdfkit_Tools.Strings.DocInfo", typeof(DocInfo).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+        
+        /// <summary>
+        ///   Overrides the current thread's CurrentUICulture property for all
+        ///   resource lookups using this strongly typed resource class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Globalization.CultureInfo Culture {
+            get {
+                return resourceCulture;
+            }
+            set {
+                resourceCulture = value;
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Not Allowed.
+        /// </summary>
+        internal static string Allow_False {
+            get {
+                return ResourceManager.GetString("Allow_False", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Allowed.
+        /// </summary>
+        internal static string Allow_True {
+            get {
+                return ResourceManager.GetString("Allow_True", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Document Assembly.
+        /// </summary>
+        internal static string Info_Assembly {
+            get {
+                return ResourceManager.GetString("Info_Assembly", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Author.
+        /// </summary>
+        internal static string Info_Author {
+            get {
+                return ResourceManager.GetString("Info_Author", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Commenting.
+        /// </summary>
+        internal static string Info_Comment {
+            get {
+                return ResourceManager.GetString("Info_Comment", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Content Copying.
+        /// </summary>
+        internal static string Info_Copy {
+            get {
+                return ResourceManager.GetString("Info_Copy", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Creation Date.
+        /// </summary>
+        internal static string Info_CreationDate {
+            get {
+                return ResourceManager.GetString("Info_CreationDate", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Creator.
+        /// </summary>
+        internal static string Info_Creator {
+            get {
+                return ResourceManager.GetString("Info_Creator", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to File Name.
+        /// </summary>
+        internal static string Info_FileName {
+            get {
+                return ResourceManager.GetString("Info_FileName", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Filling of Form Field.
+        /// </summary>
+        internal static string Info_Form {
+            get {
+                return ResourceManager.GetString("Info_Form", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Keywords.
+        /// </summary>
+        internal static string Info_Keywords {
+            get {
+                return ResourceManager.GetString("Info_Keywords", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Document Change.
+        /// </summary>
+        internal static string Info_Mod {
+            get {
+                return ResourceManager.GetString("Info_Mod", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Modification Date.
+        /// </summary>
+        internal static string Info_ModDate {
+            get {
+                return ResourceManager.GetString("Info_ModDate", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Pages.
+        /// </summary>
+        internal static string Info_Pages {
+            get {
+                return ResourceManager.GetString("Info_Pages", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Printing.
+        /// </summary>
+        internal static string Info_Print {
+            get {
+                return ResourceManager.GetString("Info_Print", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to File Size.
+        /// </summary>
+        internal static string Info_Size {
+            get {
+                return ResourceManager.GetString("Info_Size", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Subject.
+        /// </summary>
+        internal static string Info_Subject {
+            get {
+                return ResourceManager.GetString("Info_Subject", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Title.
+        /// </summary>
+        internal static string Info_Title {
+            get {
+                return ResourceManager.GetString("Info_Title", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Version.
+        /// </summary>
+        internal static string Info_Version {
+            get {
+                return ResourceManager.GetString("Info_Version", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Abstract.
+        /// </summary>
+        internal static string Subtitle_Abstract {
+            get {
+                return ResourceManager.GetString("Subtitle_Abstract", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Create Information.
+        /// </summary>
+        internal static string Subtitle_CreationInfo {
+            get {
+                return ResourceManager.GetString("Subtitle_CreationInfo", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Access Permissions.
+        /// </summary>
+        internal static string Subtitle_Permissions {
+            get {
+                return ResourceManager.GetString("Subtitle_Permissions", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Document Info.
+        /// </summary>
+        internal static string Title_DocInfo {
+            get {
+                return ResourceManager.GetString("Title_DocInfo", resourceCulture);
+            }
+        }
+    }
+}

+ 90 - 0
Demo/Examples/Compdfkit_Tools/Strings/DocInfo.resx

@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<root>
+    <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+        <xsd:element name="root" msdata:IsDataSet="true">
+            
+        </xsd:element>
+    </xsd:schema>
+    <resheader name="resmimetype">
+        <value>text/microsoft-resx</value>
+    </resheader>
+    <resheader name="version">
+        <value>1.3</value>
+    </resheader>
+    <resheader name="reader">
+        <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    </resheader>
+    <resheader name="writer">
+        <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    </resheader>
+    <data name="Title_DocInfo" xml:space="preserve">
+        <value>Document Info</value>
+    </data>
+    <data name="Subtitle_Abstract" xml:space="preserve">
+        <value>Abstract</value>
+    </data>
+    <data name="Info_FileName" xml:space="preserve">
+        <value>File Name</value>
+    </data>
+    <data name="Info_Size" xml:space="preserve">
+        <value>File Size</value>
+    </data>
+    <data name="Info_Title" xml:space="preserve">
+        <value>Title</value>
+    </data>
+    <data name="Info_Author" xml:space="preserve">
+        <value>Author</value>
+    </data>
+    <data name="Info_Subject" xml:space="preserve">
+        <value>Subject</value>
+    </data>
+    <data name="Info_Keywords" xml:space="preserve">
+        <value>Keywords</value>
+    </data>
+    <data name="Subtitle_CreationInfo" xml:space="preserve">
+        <value>Create Information</value>
+    </data>
+    <data name="Info_Version" xml:space="preserve">
+        <value>Version</value>
+    </data>
+    <data name="Info_Pages" xml:space="preserve">
+        <value>Pages</value>
+    </data>
+    <data name="Info_Creator" xml:space="preserve">
+        <value>Creator</value>
+    </data>
+    <data name="Info_CreationDate" xml:space="preserve">
+        <value>Creation Date</value>
+    </data>
+    <data name="Info_ModDate" xml:space="preserve">
+        <value>Modification Date</value>
+    </data>
+    <data name="Subtitle_Permissions" xml:space="preserve">
+        <value>Access Permissions</value>
+    </data>
+    <data name="Info_Print" xml:space="preserve">
+        <value>Printing</value>
+    </data>
+    <data name="Info_Copy" xml:space="preserve">
+        <value>Content Copying</value>
+    </data>
+    <data name="Info_Mod" xml:space="preserve">
+        <value>Document Change</value>
+    </data>
+    <data name="Info_Assembly" xml:space="preserve">
+        <value>Document Assembly</value>
+    </data>
+    <data name="Info_Comment" xml:space="preserve">
+        <value>Commenting</value>
+    </data>
+    <data name="Info_Form" xml:space="preserve">
+        <value>Filling of Form Field</value>
+    </data>
+    <data name="Allow_True" xml:space="preserve">
+        <value>Allowed</value>
+    </data>
+    <data name="Allow_False" xml:space="preserve">
+        <value>Not Allowed</value>
+    </data>
+</root>

+ 83 - 0
Demo/Examples/Compdfkit_Tools/Strings/DocInfo.zh.resx

@@ -0,0 +1,83 @@
+<root>
+    <resheader name="resmimetype">
+        <value>text/microsoft-resx</value>
+    </resheader>
+    <resheader name="version">
+        <value>1.3</value>
+    </resheader>
+    <resheader name="reader">
+        <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    </resheader>
+    <resheader name="writer">
+        <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    </resheader>
+    <data name="Title_DocInfo" xml:space="preserve">
+        <value>文档信息</value>
+    </data>
+    <data name="Subtitle_Abstract" xml:space="preserve">
+        <value>摘要</value>
+    </data>
+    <data name="Info_FileName" xml:space="preserve">
+        <value>文件</value>
+    </data>
+    <data name="Info_Size" xml:space="preserve">
+        <value>文件大小</value>
+    </data>
+    <data name="Info_Title" xml:space="preserve">
+        <value>标题</value>
+    </data>
+    <data name="Info_Author" xml:space="preserve">
+        <value>作者</value>
+    </data>
+    <data name="Info_Subject" xml:space="preserve">
+        <value>主题</value>
+    </data>
+    <data name="Info_Keywords" xml:space="preserve">
+        <value>关键字</value>
+    </data>
+    <data name="Subtitle_CreationInfo" xml:space="preserve">
+        <value>创建信息</value>
+    </data>
+    <data name="Info_Version" xml:space="preserve">
+        <value>版本</value>
+    </data>
+    <data name="Info_Pages" xml:space="preserve">
+        <value>页数</value>
+    </data>
+    <data name="Info_Creator" xml:space="preserve">
+        <value>创建者</value>
+    </data>
+    <data name="Info_CreationDate" xml:space="preserve">
+        <value>创建日期</value>
+    </data>
+    <data name="Info_ModDate" xml:space="preserve">
+        <value>修改日期</value>
+    </data>
+    <data name="Subtitle_Permissions" xml:space="preserve">
+        <value>权限</value>
+    </data>
+    <data name="Info_Print" xml:space="preserve">
+        <value>打印</value>
+    </data>
+    <data name="Info_Copy" xml:space="preserve">
+        <value>复制提取内容</value>
+    </data>
+    <data name="Info_Mod" xml:space="preserve">
+        <value>编辑文档</value>
+    </data>
+    <data name="Info_Assembly" xml:space="preserve">
+        <value>文档组合</value>
+    </data>
+    <data name="Info_Comment" xml:space="preserve">
+        <value>注释评论</value>
+    </data>
+    <data name="Info_Form" xml:space="preserve">
+        <value>填写表单</value>
+    </data>
+    <data name="Allow_True" xml:space="preserve">
+        <value>允许</value>
+    </data>
+    <data name="Allow_False" xml:space="preserve">
+        <value>不允许</value>
+    </data>
+</root>

+ 141 - 15
Demo/Examples/Compdfkit_Tools/Strings/PropertyPanel.Designer.cs

@@ -1,4 +1,4 @@
-//------------------------------------------------------------------------------
+//------------------------------------------------------------------------------
 // <auto-generated>
 //     This code was generated by a tool.
 //
@@ -131,6 +131,15 @@ namespace Compdfkit_Tools.Strings.Common {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to Cancel.
+        /// </summary>
+        internal static string Button_Cancel {
+            get {
+                return ResourceManager.GetString("Button_Cancel", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to Clear.
         /// </summary>
@@ -195,7 +204,7 @@ namespace Compdfkit_Tools.Strings.Common {
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to Date.
+        ///   Looks up a localized string similar to Date(YYYY-MM-dd).
         /// </summary>
         internal static string Check_Date {
             get {
@@ -213,7 +222,7 @@ namespace Compdfkit_Tools.Strings.Common {
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to Time.
+        ///   Looks up a localized string similar to Time(HH:mm:ss).
         /// </summary>
         internal static string Check_Time {
             get {
@@ -339,7 +348,7 @@ namespace Compdfkit_Tools.Strings.Common {
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to Add a Page Number Between .
+        ///   Looks up a localized string similar to Add a Page Number Between 1 ~.
         /// </summary>
         internal static string Holder_Jump {
             get {
@@ -392,6 +401,33 @@ namespace Compdfkit_Tools.Strings.Common {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to Left arrow (blue).
+        /// </summary>
+        internal static string Left_Blue {
+            get {
+                return ResourceManager.GetString("Left_Blue", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Left arrow (green).
+        /// </summary>
+        internal static string Left_Green {
+            get {
+                return ResourceManager.GetString("Left_Green", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Left arrow (red).
+        /// </summary>
+        internal static string Left_Red {
+            get {
+                return ResourceManager.GetString("Left_Red", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to Select a File.
         /// </summary>
@@ -465,29 +501,29 @@ namespace Compdfkit_Tools.Strings.Common {
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to Text.
+        ///   Looks up a localized string similar to Image.
         /// </summary>
-        internal static string Preview_Text {
+        internal static string Preview_Image {
             get {
-                return ResourceManager.GetString("Preview_Text", resourceCulture);
+                return ResourceManager.GetString("Preview_Image", resourceCulture);
             }
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to Alignment.
+        ///   Looks up a localized string similar to Text.
         /// </summary>
-        internal static string Property_Alignment {
+        internal static string Preview_Text {
             get {
-                return ResourceManager.GetString("Property_Alignment", resourceCulture);
+                return ResourceManager.GetString("Preview_Text", resourceCulture);
             }
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to Arrow.
+        ///   Looks up a localized string similar to Alignment.
         /// </summary>
-        internal static string Property_Arrow {
+        internal static string Property_Alignment {
             get {
-                return ResourceManager.GetString("Property_Arrow", resourceCulture);
+                return ResourceManager.GetString("Property_Alignment", resourceCulture);
             }
         }
         
@@ -653,6 +689,60 @@ namespace Compdfkit_Tools.Strings.Common {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to Rectangle (blue).
+        /// </summary>
+        internal static string Rec_Blue {
+            get {
+                return ResourceManager.GetString("Rec_Blue", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Rectangle (green).
+        /// </summary>
+        internal static string Rec_Green {
+            get {
+                return ResourceManager.GetString("Rec_Green", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Rectangle (red).
+        /// </summary>
+        internal static string Rec_Red {
+            get {
+                return ResourceManager.GetString("Rec_Red", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Right arrow (blue).
+        /// </summary>
+        internal static string Right_Blue {
+            get {
+                return ResourceManager.GetString("Right_Blue", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Right arrow (green).
+        /// </summary>
+        internal static string Right_Green {
+            get {
+                return ResourceManager.GetString("Right_Green", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Right arrow (red).
+        /// </summary>
+        internal static string Right_Red {
+            get {
+                return ResourceManager.GetString("Right_Red", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to Font.
         /// </summary>
@@ -746,9 +836,9 @@ namespace Compdfkit_Tools.Strings.Common {
         /// <summary>
         ///   Looks up a localized string similar to Button is checked by default.
         /// </summary>
-        internal static string Style_Defualt {
+        internal static string Style_Default {
             get {
-                return ResourceManager.GetString("Style_Defualt", resourceCulture);
+                return ResourceManager.GetString("Style_Default", resourceCulture);
             }
         }
         
@@ -761,6 +851,15 @@ namespace Compdfkit_Tools.Strings.Common {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to General Style.
+        /// </summary>
+        internal static string Style_General {
+            get {
+                return ResourceManager.GetString("Style_General", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to Square.
         /// </summary>
@@ -824,6 +923,15 @@ namespace Compdfkit_Tools.Strings.Common {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to Arrow.
+        /// </summary>
+        internal static string Title_Arrow {
+            get {
+                return ResourceManager.GetString("Title_Arrow", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to Push Button.
         /// </summary>
@@ -941,6 +1049,15 @@ namespace Compdfkit_Tools.Strings.Common {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to Note.
+        /// </summary>
+        internal static string Title_Note {
+            get {
+                return ResourceManager.GetString("Title_Note", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to Preferences.
         /// </summary>
@@ -950,6 +1067,15 @@ namespace Compdfkit_Tools.Strings.Common {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to Preview.
+        /// </summary>
+        internal static string Title_Preview {
+            get {
+                return ResourceManager.GetString("Title_Preview", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to Radio Button.
         /// </summary>

+ 47 - 5
Demo/Examples/Compdfkit_Tools/Strings/PropertyPanel.resx

@@ -63,7 +63,7 @@
     <data name="Title_Line" xml:space="preserve">
         <value>Line</value>
     </data>
-    <data name="Property_Arrow" xml:space="preserve">
+    <data name="Title_Arrow" xml:space="preserve">
         <value>Arrow</value>
     </data>
     <data name="Property_Start" xml:space="preserve">
@@ -106,7 +106,7 @@
         <value>Page Number</value>
     </data>
     <data name="Holder_Jump" xml:space="preserve">
-        <value>Add a Page Number Between </value>
+        <value>Add a Page Number Between 1 ~</value>
     </data>
     <data name="LinkType_URL" xml:space="preserve">
         <value>URL</value>
@@ -187,10 +187,10 @@
         <value>Color</value>
     </data>
     <data name="Check_Date" xml:space="preserve">
-        <value>Date</value>
+        <value>Date(YYYY-MM-dd)</value>
     </data>
     <data name="Check_Time" xml:space="preserve">
-        <value>Time</value>
+        <value>Time(HH:mm:ss)</value>
     </data>
     <data name="Button_OK" xml:space="preserve">
         <value>OK</value>
@@ -285,7 +285,7 @@
     <data name="Style_Star" xml:space="preserve">
         <value>Star</value>
     </data>
-    <data name="Style_Defualt" xml:space="preserve">
+    <data name="Style_Default" xml:space="preserve">
         <value>Button is checked by default</value>
     </data>
     <data name="Title_Rdo" xml:space="preserve">
@@ -348,4 +348,46 @@
     <data name="Title_TextProperty" xml:space="preserve">
         <value>Text Properties</value>
     </data>
+    <data name="Title_Note" xml:space="preserve">
+        <value>Note</value>
+    </data>
+    <data name="Preview_Image" xml:space="preserve">
+        <value>Image</value>
+    </data>
+    <data name="Title_Preview" xml:space="preserve">
+        <value>Preview</value>
+    </data>
+    <data name="Button_Cancel" xml:space="preserve">
+        <value>Cancel</value>
+    </data>
+    <data name="Style_General" xml:space="preserve">
+        <value>General Style</value>
+    </data>
+    <data name="Rec_Green" xml:space="preserve">
+        <value>Rectangle (green)</value>
+    </data>
+    <data name="Rec_Blue" xml:space="preserve">
+        <value>Rectangle (blue)</value>
+    </data>
+    <data name="Rec_Red" xml:space="preserve">
+        <value>Rectangle (red)</value>
+    </data>
+    <data name="Left_Green" xml:space="preserve">
+        <value>Left arrow (green)</value>
+    </data>
+    <data name="Left_Blue" xml:space="preserve">
+        <value>Left arrow (blue)</value>
+    </data>
+    <data name="Left_Red" xml:space="preserve">
+        <value>Left arrow (red)</value>
+    </data>
+    <data name="Right_Green" xml:space="preserve">
+        <value>Right arrow (green)</value>
+    </data>
+    <data name="Right_Red" xml:space="preserve">
+        <value>Right arrow (red)</value>
+    </data>
+    <data name="Right_Blue" xml:space="preserve">
+        <value>Right arrow (blue)</value>
+    </data>
 </root>

+ 49 - 4
Demo/Examples/Compdfkit_Tools/Strings/PropertyPanel.zh.resx

@@ -56,7 +56,7 @@
     <data name="Title_Line" xml:space="preserve">
         <value>线</value>
     </data>
-    <data name="Property_Arrow" xml:space="preserve">
+    <data name="Title_Arrow" xml:space="preserve">
         <value>箭头</value>
     </data>
     <data name="Property_Start" xml:space="preserve">
@@ -177,10 +177,10 @@
         <value>颜色</value>
     </data>
     <data name="Check_Date" xml:space="preserve">
-        <value>日期</value>
+        <value>日期 (YYYY-MM-dd)</value>
     </data>
     <data name="Check_Time" xml:space="preserve">
-        <value>时间</value>
+        <value>时间 (HH:mm:ss)</value>
     </data>
     <data name="Button_OK" xml:space="preserve">
         <value>确定</value>
@@ -275,7 +275,7 @@
     <data name="Style_Star" xml:space="preserve">
         <value>星形</value>
     </data>
-    <data name="Style_Defualt" xml:space="preserve">
+    <data name="Style_Default" xml:space="preserve">
         <value>预设为已选取</value>
     </data>
     <data name="Title_Rdo" xml:space="preserve">
@@ -338,4 +338,49 @@
     <data name="Title_TextProperty" xml:space="preserve">
         <value>文字属性</value>
     </data>
+    <data name="Title_Note" xml:space="preserve">
+        <value>便签</value>
+    </data>
+    <data name="Preview_Image" xml:space="preserve">
+        <value>图片图章</value>
+    </data>
+    <data name="Title_Preview" xml:space="preserve">
+        <value>预览</value>
+    </data>
+    <data name="Button_Cancel" xml:space="preserve">
+        <value>取消</value>
+    </data>
+    <data name="Style_General" xml:space="preserve">
+        <value>常规</value>
+    </data>
+    <data name="Rec_Green" xml:space="preserve">
+        <value>矩形 (绿色)</value>
+    </data>
+    <data name="Rec_Red" xml:space="preserve">
+        <value>矩形 (红色)</value>
+    </data>
+    <data name="Rec_Blue" xml:space="preserve">
+        <value>矩形 (蓝色)</value>
+    </data>
+    <data name="Right_Blue" xml:space="preserve">
+        <value>右箭头 (蓝色)</value>
+    </data>
+    <data name="Right_Green" xml:space="preserve">
+        <value>右箭头 (绿色)</value>
+    </data>
+    <data name="Right_Red" xml:space="preserve">
+        <value>右箭头 (红色)</value>
+    </data>
+    <data name="Left_Green" xml:space="preserve">
+        <value>左箭头 (绿色)</value>
+    </data>
+    <data name="Left_Blue" xml:space="preserve">
+        <value>左箭头 (蓝色)</value>
+    </data>
+    <data name="Left_Red" xml:space="preserve">
+        <value>左箭头 (红色)</value>
+    </data>
+    <data name="Holder_Jump" xml:space="preserve">
+        <value>1 ~ </value>
+    </data>
 </root>

+ 566 - 0
Demo/Examples/Compdfkit_Tools/Strings/Security.Designer.cs

@@ -0,0 +1,566 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace Compdfkit_Tools.Strings {
+    using System;
+    
+    
+    /// <summary>
+    ///   A strongly-typed resource class, for looking up localized strings, etc.
+    /// </summary>
+    // This class was auto-generated by the StronglyTypedResourceBuilder
+    // class via a tool like ResGen or Visual Studio.
+    // To add or remove a member, edit your .ResX file then rerun ResGen
+    // with the /str option, or rebuild your VS project.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    internal class Security {
+        
+        private static global::System.Resources.ResourceManager resourceMan;
+        
+        private static global::System.Globalization.CultureInfo resourceCulture;
+        
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal Security() {
+        }
+        
+        /// <summary>
+        ///   Returns the cached ResourceManager instance used by this class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Resources.ResourceManager ResourceManager {
+            get {
+                if (object.ReferenceEquals(resourceMan, null)) {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Compdfkit_Tools.Strings.Security", typeof(Security).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+        
+        /// <summary>
+        ///   Overrides the current thread's CurrentUICulture property for all
+        ///   resource lookups using this strongly typed resource class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Globalization.CultureInfo Culture {
+            get {
+                return resourceCulture;
+            }
+            set {
+                resourceCulture = value;
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Add Files.
+        /// </summary>
+        internal static string Button_AddFiles {
+            get {
+                return ResourceManager.GetString("Button_AddFiles", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Apply.
+        /// </summary>
+        internal static string Button_Apply {
+            get {
+                return ResourceManager.GetString("Button_Apply", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Cancel.
+        /// </summary>
+        internal static string Button_Cancel {
+            get {
+                return ResourceManager.GetString("Button_Cancel", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Encrypt.
+        /// </summary>
+        internal static string Button_Encrypt {
+            get {
+                return ResourceManager.GetString("Button_Encrypt", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Click and Select your watermark image..
+        /// </summary>
+        internal static string Button_ImageWatermark {
+            get {
+                return ResourceManager.GetString("Button_ImageWatermark", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to OK.
+        /// </summary>
+        internal static string Button_OK {
+            get {
+                return ResourceManager.GetString("Button_OK", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Remove All Files.
+        /// </summary>
+        internal static string Button_RemoveAll {
+            get {
+                return ResourceManager.GetString("Button_RemoveAll", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Remove Selected Files.
+        /// </summary>
+        internal static string Button_RemoveSelected {
+            get {
+                return ResourceManager.GetString("Button_RemoveSelected", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Restrict document printing.
+        /// </summary>
+        internal static string Chk_EmptyPassword {
+            get {
+                return ResourceManager.GetString("Chk_EmptyPassword", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Enter Owner`s Password to Change the Security.
+        /// </summary>
+        internal static string Chk_OwnerPassword {
+            get {
+                return ResourceManager.GetString("Chk_OwnerPassword", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Tile.
+        /// </summary>
+        internal static string Chk_Tile {
+            get {
+                return ResourceManager.GetString("Chk_Tile", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Enter the password.
+        /// </summary>
+        internal static string Holder_EnterPassword {
+            get {
+                return ResourceManager.GetString("Holder_EnterPassword", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Please enter the owner`s password.
+        /// </summary>
+        internal static string Holder_OwnerPassword {
+            get {
+                return ResourceManager.GetString("Holder_OwnerPassword", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Type your watermark text here..
+        /// </summary>
+        internal static string Holder_TextWatermark {
+            get {
+                return ResourceManager.GetString("Holder_TextWatermark", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to 128-bit AES.
+        /// </summary>
+        internal static string Option_128AES {
+            get {
+                return ResourceManager.GetString("Option_128AES", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to 128-bit RC4.
+        /// </summary>
+        internal static string Option_128RC4 {
+            get {
+                return ResourceManager.GetString("Option_128RC4", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to 256-bit AES.
+        /// </summary>
+        internal static string Option_256AES {
+            get {
+                return ResourceManager.GetString("Option_256AES", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to All Pages.
+        /// </summary>
+        internal static string Option_AllPages {
+            get {
+                return ResourceManager.GetString("Option_AllPages", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Add Passwords.
+        /// </summary>
+        internal static string Options_AddPassword {
+            get {
+                return ResourceManager.GetString("Options_AddPassword", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Add Watermarks.
+        /// </summary>
+        internal static string Options_AddWatermarks {
+            get {
+                return ResourceManager.GetString("Options_AddWatermarks", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Remove Passwords.
+        /// </summary>
+        internal static string Options_RemovePassword {
+            get {
+                return ResourceManager.GetString("Options_RemovePassword", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Remove Watermarks.
+        /// </summary>
+        internal static string Options_RemoveWatermark {
+            get {
+                return ResourceManager.GetString("Options_RemoveWatermark", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Behind the text.
+        /// </summary>
+        internal static string Rdo_Behind {
+            get {
+                return ResourceManager.GetString("Rdo_Behind", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to In front of the text.
+        /// </summary>
+        internal static string Rdo_Front {
+            get {
+                return ResourceManager.GetString("Rdo_Front", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Image Watermark.
+        /// </summary>
+        internal static string Rdo_ImageWatermark {
+            get {
+                return ResourceManager.GetString("Rdo_ImageWatermark", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Text Watermark.
+        /// </summary>
+        internal static string Rdo_TextWatermark {
+            get {
+                return ResourceManager.GetString("Rdo_TextWatermark", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to File Name.
+        /// </summary>
+        internal static string Table_FileName {
+            get {
+                return ResourceManager.GetString("Table_FileName", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Page Range.
+        /// </summary>
+        internal static string Table_PageRange {
+            get {
+                return ResourceManager.GetString("Table_PageRange", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Path.
+        /// </summary>
+        internal static string Table_Path {
+            get {
+                return ResourceManager.GetString("Table_Path", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Algorithm.
+        /// </summary>
+        internal static string Text_Algorithm {
+            get {
+                return ResourceManager.GetString("Text_Algorithm", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Current Page.
+        /// </summary>
+        internal static string Text_CurrentPage {
+            get {
+                return ResourceManager.GetString("Text_CurrentPage", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Permission Settings.
+        /// </summary>
+        internal static string Text_EmptyPassword {
+            get {
+                return ResourceManager.GetString("Text_EmptyPassword", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Encryption Level.
+        /// </summary>
+        internal static string Text_EncryptionLevel {
+            get {
+                return ResourceManager.GetString("Text_EncryptionLevel", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Files in Total: .
+        /// </summary>
+        internal static string Text_FileCount {
+            get {
+                return ResourceManager.GetString("Text_FileCount", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Layout Options.
+        /// </summary>
+        internal static string Text_Layout {
+            get {
+                return ResourceManager.GetString("Text_Layout", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Opacity.
+        /// </summary>
+        internal static string Text_Opacity {
+            get {
+                return ResourceManager.GetString("Text_Opacity", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Open Password.
+        /// </summary>
+        internal static string Text_OpenPassword {
+            get {
+                return ResourceManager.GetString("Text_OpenPassword", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Operation Types.
+        /// </summary>
+        internal static string Text_OperationType {
+            get {
+                return ResourceManager.GetString("Text_OperationType", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Owner Password.
+        /// </summary>
+        internal static string Text_OwnerPassword {
+            get {
+                return ResourceManager.GetString("Text_OwnerPassword", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Page Range.
+        /// </summary>
+        internal static string Text_PageRange {
+            get {
+                return ResourceManager.GetString("Text_PageRange", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Permissions.
+        /// </summary>
+        internal static string Text_Permisions {
+            get {
+                return ResourceManager.GetString("Text_Permisions", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Preview.
+        /// </summary>
+        internal static string Text_Preview {
+            get {
+                return ResourceManager.GetString("Text_Preview", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Ratio.
+        /// </summary>
+        internal static string Text_Ratio {
+            get {
+                return ResourceManager.GetString("Text_Ratio", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Rotation.
+        /// </summary>
+        internal static string Text_Rotation {
+            get {
+                return ResourceManager.GetString("Text_Rotation", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Security Settings.
+        /// </summary>
+        internal static string Text_SecuritySettings {
+            get {
+                return ResourceManager.GetString("Text_SecuritySettings", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Support: Numbers, letters, @, $, !, %, ?, &amp;.
+        /// </summary>
+        internal static string Text_Support {
+            get {
+                return ResourceManager.GetString("Text_Support", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Open the Document.
+        /// </summary>
+        internal static string Title_OpenDocument {
+            get {
+                return ResourceManager.GetString("Title_OpenDocument", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Password.
+        /// </summary>
+        internal static string Title_Password {
+            get {
+                return ResourceManager.GetString("Title_Password", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Remove Watermarks.
+        /// </summary>
+        internal static string Title_RemoveWatermark {
+            get {
+                return ResourceManager.GetString("Title_RemoveWatermark", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Watermark.
+        /// </summary>
+        internal static string Title_Watermark {
+            get {
+                return ResourceManager.GetString("Title_Watermark", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Next.
+        /// </summary>
+        internal static string ToolTip_Next {
+            get {
+                return ResourceManager.GetString("ToolTip_Next", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Previous.
+        /// </summary>
+        internal static string ToolTip_Previous {
+            get {
+                return ResourceManager.GetString("ToolTip_Previous", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to The password can`t be empty..
+        /// </summary>
+        internal static string Warn_Empty {
+            get {
+                return ResourceManager.GetString("Warn_Empty", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to The password can`t be empty..
+        /// </summary>
+        internal static string Warn_EmptyPassword {
+            get {
+                return ResourceManager.GetString("Warn_EmptyPassword", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Invalid Password.
+        /// </summary>
+        internal static string Warn_InvaildPassword {
+            get {
+                return ResourceManager.GetString("Warn_InvaildPassword", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to The password to open the document should be different from the owner`s password..
+        /// </summary>
+        internal static string Warn_SamePassword {
+            get {
+                return ResourceManager.GetString("Warn_SamePassword", resourceCulture);
+            }
+        }
+    }
+}

+ 189 - 0
Demo/Examples/Compdfkit_Tools/Strings/Security.resx

@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<root>
+    <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+        <xsd:element name="root" msdata:IsDataSet="true">
+            
+        </xsd:element>
+    </xsd:schema>
+    <resheader name="resmimetype">
+        <value>text/microsoft-resx</value>
+    </resheader>
+    <resheader name="version">
+        <value>1.3</value>
+    </resheader>
+    <resheader name="reader">
+        <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    </resheader>
+    <resheader name="writer">
+        <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    </resheader>
+    <data name="Title_Password" xml:space="preserve">
+        <value>Password</value>
+    </data>
+    <data name="Text_OperationType" xml:space="preserve">
+        <value>Operation Types</value>
+    </data>
+    <data name="Options_RemovePassword" xml:space="preserve">
+        <value>Remove Passwords</value>
+    </data>
+    <data name="Options_AddPassword" xml:space="preserve">
+        <value>Add Passwords</value>
+    </data>
+    <data name="Title_Watermark" xml:space="preserve">
+        <value>Watermark</value>
+    </data>
+    <data name="Options_RemoveWatermark" xml:space="preserve">
+        <value>Remove Watermarks</value>
+    </data>
+    <data name="Options_AddWatermarks" xml:space="preserve">
+        <value>Add Watermarks</value>
+    </data>
+    <data name="Text_SecuritySettings" xml:space="preserve">
+        <value>Security Settings</value>
+    </data>
+    <data name="Title_OpenDocument" xml:space="preserve">
+        <value>Open the Document</value>
+    </data>
+    <data name="Text_OpenPassword" xml:space="preserve">
+        <value>Open Password</value>
+    </data>
+    <data name="Holder_EnterPassword" xml:space="preserve">
+        <value>Enter the password</value>
+    </data>
+    <data name="Text_Support" xml:space="preserve">
+        <value>Support: Numbers, letters, @, $, !, %, ?, &amp;</value>
+    </data>
+    <data name="Warn_Empty" xml:space="preserve">
+        <value>The password can`t be empty.</value>
+    </data>
+    <data name="Text_Permisions" xml:space="preserve">
+        <value>Permissions</value>
+    </data>
+    <data name="Text_OwnerPassword" xml:space="preserve">
+        <value>Owner Password</value>
+    </data>
+    <data name="Holder_OwnerPassword" xml:space="preserve">
+        <value>Please enter the owner`s password</value>
+    </data>
+    <data name="Warn_SamePassword" xml:space="preserve">
+        <value>The password to open the document should be different from the owner`s password.</value>
+    </data>
+    <data name="Warn_EmptyPassword" xml:space="preserve">
+        <value>The password can`t be empty.</value>
+    </data>
+    <data name="Text_EmptyPassword" xml:space="preserve">
+        <value>Permission Settings</value>
+    </data>
+    <data name="Chk_EmptyPassword" xml:space="preserve">
+        <value>Restrict document printing</value>
+    </data>
+    <data name="Text_EncryptionLevel" xml:space="preserve">
+        <value>Encryption Level</value>
+    </data>
+    <data name="Text_Algorithm" xml:space="preserve">
+        <value>Algorithm</value>
+    </data>
+    <data name="Option_128RC4" xml:space="preserve">
+        <value>128-bit RC4</value>
+    </data>
+    <data name="Option_128AES" xml:space="preserve">
+        <value>128-bit AES</value>
+    </data>
+    <data name="Option_256AES" xml:space="preserve">
+        <value>256-bit AES</value>
+    </data>
+    <data name="Button_Cancel" xml:space="preserve">
+        <value>Cancel</value>
+    </data>
+    <data name="Button_Encrypt" xml:space="preserve">
+        <value>Encrypt</value>
+    </data>
+    <data name="Chk_OwnerPassword" xml:space="preserve">
+        <value>Enter Owner`s Password to Change the Security</value>
+    </data>
+    <data name="Warn_InvaildPassword" xml:space="preserve">
+        <value>Invalid Password</value>
+    </data>
+    <data name="Button_OK" xml:space="preserve">
+        <value>OK</value>
+    </data>
+    <data name="Text_Preview" xml:space="preserve">
+        <value>Preview</value>
+    </data>
+    <data name="ToolTip_Next" xml:space="preserve">
+        <value>Next</value>
+    </data>
+    <data name="ToolTip_Previous" xml:space="preserve">
+        <value>Previous</value>
+    </data>
+    <data name="Rdo_TextWatermark" xml:space="preserve">
+        <value>Text Watermark</value>
+    </data>
+    <data name="Holder_TextWatermark" xml:space="preserve">
+        <value>Type your watermark text here.</value>
+    </data>
+    <data name="Rdo_ImageWatermark" xml:space="preserve">
+        <value>Image Watermark</value>
+    </data>
+    <data name="Button_ImageWatermark" xml:space="preserve">
+        <value>Click and Select your watermark image.</value>
+    </data>
+    <data name="Text_Ratio" xml:space="preserve">
+        <value>Ratio</value>
+    </data>
+    <data name="Text_Rotation" xml:space="preserve">
+        <value>Rotation</value>
+    </data>
+    <data name="Text_Opacity" xml:space="preserve">
+        <value>Opacity</value>
+    </data>
+    <data name="Text_Layout" xml:space="preserve">
+        <value>Layout Options</value>
+    </data>
+    <data name="Rdo_Front" xml:space="preserve">
+        <value>In front of the text</value>
+    </data>
+    <data name="Rdo_Behind" xml:space="preserve">
+        <value>Behind the text</value>
+    </data>
+    <data name="Text_PageRange" xml:space="preserve">
+        <value>Page Range</value>
+    </data>
+    <data name="Text_CurrentPage" xml:space="preserve">
+        <value>Current Page</value>
+    </data>
+    <data name="Option_AllPages" xml:space="preserve">
+        <value>All Pages</value>
+    </data>
+    <data name="Chk_Tile" xml:space="preserve">
+        <value>Tile</value>
+    </data>
+    <data name="Button_Apply" xml:space="preserve">
+        <value>Apply</value>
+    </data>
+    <data name="Title_RemoveWatermark" xml:space="preserve">
+        <value>Remove Watermarks</value>
+    </data>
+    <data name="Button_AddFiles" xml:space="preserve">
+        <value>Add Files</value>
+    </data>
+    <data name="Button_RemoveAll" xml:space="preserve">
+        <value>Remove All Files</value>
+    </data>
+    <data name="Button_RemoveSelected" xml:space="preserve">
+        <value>Remove Selected Files</value>
+    </data>
+    <data name="Text_FileCount" xml:space="preserve">
+        <value>Files in Total: </value>
+    </data>
+    <data name="Table_FileName" xml:space="preserve">
+        <value>File Name</value>
+    </data>
+    <data name="Table_PageRange" xml:space="preserve">
+        <value>Page Range</value>
+    </data>
+    <data name="Table_Path" xml:space="preserve">
+        <value>Path</value>
+    </data>
+</root>

+ 182 - 0
Demo/Examples/Compdfkit_Tools/Strings/Security.zh.resx

@@ -0,0 +1,182 @@
+<root>
+    <resheader name="resmimetype">
+        <value>text/microsoft-resx</value>
+    </resheader>
+    <resheader name="version">
+        <value>1.3</value>
+    </resheader>
+    <resheader name="reader">
+        <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    </resheader>
+    <resheader name="writer">
+        <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    </resheader>
+    <data name="Title_Password" xml:space="preserve">
+        <value>密码</value>
+    </data>
+    <data name="Text_OperationType" xml:space="preserve">
+        <value>操作类型</value>
+    </data>
+    <data name="Options_RemovePassword" xml:space="preserve">
+        <value>移除密码</value>
+    </data>
+    <data name="Options_AddPassword" xml:space="preserve">
+        <value>添加密码</value>
+    </data>
+    <data name="Title_Watermark" xml:space="preserve">
+        <value>水印</value>
+    </data>
+    <data name="Options_RemoveWatermark" xml:space="preserve">
+        <value>移除水印</value>
+    </data>
+    <data name="Options_AddWatermarks" xml:space="preserve">
+        <value>添加水印</value>
+    </data>
+    <data name="Text_SecuritySettings" xml:space="preserve">
+        <value>安全设置</value>
+    </data>
+    <data name="Title_OpenDocument" xml:space="preserve">
+        <value>打开文档</value>
+    </data>
+    <data name="Text_OpenPassword" xml:space="preserve">
+        <value>文档开启密码</value>
+    </data>
+    <data name="Holder_EnterPassword" xml:space="preserve">
+        <value>请输入密码</value>
+    </data>
+    <data name="Text_Support" xml:space="preserve">
+        <value>支持字符:数字、字母、@、$、!、%、?、&amp;</value>
+    </data>
+    <data name="Warn_Empty" xml:space="preserve">
+        <value>密码不能为空。</value>
+    </data>
+    <data name="Text_Permisions" xml:space="preserve">
+        <value>权限</value>
+    </data>
+    <data name="Text_OwnerPassword" xml:space="preserve">
+        <value>文档所有者密码</value>
+    </data>
+    <data name="Holder_OwnerPassword" xml:space="preserve">
+        <value>请输入权限密码</value>
+    </data>
+    <data name="Warn_SamePassword" xml:space="preserve">
+        <value>文档开启密码与权限密码不可相同。</value>
+    </data>
+    <data name="Warn_EmptyPassword" xml:space="preserve">
+        <value>密码不能为空。</value>
+    </data>
+    <data name="Text_EmptyPassword" xml:space="preserve">
+        <value>权限设置</value>
+    </data>
+    <data name="Chk_EmptyPassword" xml:space="preserve">
+        <value>禁止打印</value>
+    </data>
+    <data name="Text_EncryptionLevel" xml:space="preserve">
+        <value>加密级别</value>
+    </data>
+    <data name="Text_Algorithm" xml:space="preserve">
+        <value>算法</value>
+    </data>
+    <data name="Option_128RC4" xml:space="preserve">
+        <value>128 - bit RC4</value>
+    </data>
+    <data name="Option_128AES" xml:space="preserve">
+        <value>128 - bit AES</value>
+    </data>
+    <data name="Option_256AES" xml:space="preserve">
+        <value>256 - bit AES</value>
+    </data>
+    <data name="Button_Cancel" xml:space="preserve">
+        <value>取消</value>
+    </data>
+    <data name="Button_Encrypt" xml:space="preserve">
+        <value>加密</value>
+    </data>
+    <data name="Chk_OwnerPassword" xml:space="preserve">
+        <value>输入权限密码进行安全设置</value>
+    </data>
+    <data name="Warn_InvaildPassword" xml:space="preserve">
+        <value>密码错误,请重试</value>
+    </data>
+    <data name="Button_OK" xml:space="preserve">
+        <value>确认</value>
+    </data>
+    <data name="Text_Preview" xml:space="preserve">
+        <value>预览</value>
+    </data>
+    <data name="ToolTip_Next" xml:space="preserve">
+        <value>下一页</value>
+    </data>
+    <data name="ToolTip_Previous" xml:space="preserve">
+        <value>上一页</value>
+    </data>
+    <data name="Rdo_TextWatermark" xml:space="preserve">
+        <value>文字水印</value>
+    </data>
+    <data name="Holder_TextWatermark" xml:space="preserve">
+        <value>请在此处输入水印文字</value>
+    </data>
+    <data name="Rdo_ImageWatermark" xml:space="preserve">
+        <value>图片水印</value>
+    </data>
+    <data name="Button_ImageWatermark" xml:space="preserve">
+        <value>选择水印图片</value>
+    </data>
+    <data name="Text_Ratio" xml:space="preserve">
+        <value>图片缩放比</value>
+    </data>
+    <data name="Text_Rotation" xml:space="preserve">
+        <value>旋转</value>
+    </data>
+    <data name="Text_Opacity" xml:space="preserve">
+        <value>不透明度</value>
+    </data>
+    <data name="Text_Layout" xml:space="preserve">
+        <value>图层次序</value>
+    </data>
+    <data name="Rdo_Front" xml:space="preserve">
+        <value>置于顶层</value>
+    </data>
+    <data name="Rdo_Behind" xml:space="preserve">
+        <value>置于底层</value>
+    </data>
+    <data name="Text_PageRange" xml:space="preserve">
+        <value>页面范围</value>
+    </data>
+    <data name="Text_CurrentPage" xml:space="preserve">
+        <value>当前页</value>
+    </data>
+    <data name="Option_AllPages" xml:space="preserve">
+        <value>所有页面</value>
+    </data>
+    <data name="Chk_Tile" xml:space="preserve">
+        <value>平铺水印</value>
+    </data>
+    <data name="Button_Apply" xml:space="preserve">
+        <value>确认</value>
+    </data>
+    <data name="Title_RemoveWatermark" xml:space="preserve">
+        <value>移除水印</value>
+    </data>
+    <data name="Button_AddFiles" xml:space="preserve">
+        <value>添加文件</value>
+    </data>
+    <data name="Button_RemoveAll" xml:space="preserve">
+        <value>移除文件</value>
+    </data>
+    <data name="Button_RemoveSelected" xml:space="preserve">
+        <value>删除所选文件</value>
+    </data>
+    <data name="Text_FileCount" xml:space="preserve">
+        <value>文件数:</value>
+    </data>
+    <data name="Table_FileName" xml:space="preserve">
+        <value>文件名</value>
+    </data>
+    <data name="Table_PageRange" xml:space="preserve">
+        <value>页面</value>
+    </data>
+    <data name="Table_Path" xml:space="preserve">
+        <value>路径</value>
+    </data>
+</root>

Fichier diff supprimé car celui-ci est trop grand
+ 1484 - 0
Demo/Examples/Compdfkit_Tools/Strings/Signature.Designer.cs


+ 501 - 0
Demo/Examples/Compdfkit_Tools/Strings/Signature.resx

@@ -0,0 +1,501 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<root>
+    <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+        <xsd:element name="root" msdata:IsDataSet="true">
+            
+        </xsd:element>
+    </xsd:schema>
+    <resheader name="resmimetype">
+        <value>text/microsoft-resx</value>
+    </resheader>
+    <resheader name="version">
+        <value>1.3</value>
+    </resheader>
+    <resheader name="reader">
+        <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    </resheader>
+    <resheader name="writer">
+        <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    </resheader>
+    <data name="Title_AddDigitalSign" xml:space="preserve">
+        <value>Add Digital Signatures</value>
+    </data>
+    <data name="Title_IDType" xml:space="preserve">
+        <value>Select a type of Digital ID.</value>
+    </data>
+    <data name="Option_FileID" xml:space="preserve">
+        <value>Use a Digital ID from A File</value>
+    </data>
+    <data name="Tip_ID" xml:space="preserve">
+        <value>A digital ID is required to create a digital signature. The most secure Digital ID is issued by trusted Certificate authorities and is based on secure devices like smart cards or tokens. Some are based on a file.</value>
+    </data>
+    <data name="Option_NewID" xml:space="preserve">
+        <value>Create A New Digital ID</value>
+    </data>
+    <data name="Tip_NewID" xml:space="preserve">
+        <value>You can create a new Digital ID, but they provide a low level of identity assurance.</value>
+    </data>
+    <data name="Button_Cancel" xml:space="preserve">
+        <value>Cancel</value>
+    </data>
+    <data name="Button_Continue" xml:space="preserve">
+        <value>Continue</value>
+    </data>
+    <data name="Title_AddID" xml:space="preserve">
+        <value>Add A Digital ID</value>
+    </data>
+    <data name="Tip_AddID" xml:space="preserve">
+        <value>Browse a digital ID file. Digital ID cards are password-protected. If you do not know the password, you cannot obtain a digital ID card.</value>
+    </data>
+    <data name="Holder_Path" xml:space="preserve">
+        <value>Certificate File</value>
+    </data>
+    <data name="Button_Upload" xml:space="preserve">
+        <value>Upload</value>
+    </data>
+    <data name="Tip_Password" xml:space="preserve">
+        <value>Password</value>
+    </data>
+    <data name="Holder_Password" xml:space="preserve">
+        <value>Enter the password of the certificate file</value>
+    </data>
+    <data name="Tip_PasswordStatus" xml:space="preserve">
+        <value>Invalid Password</value>
+    </data>
+    <data name="Option_Trackpad" xml:space="preserve">
+        <value>Trackpad</value>
+    </data>
+    <data name="Option_Keyboard" xml:space="preserve">
+        <value>Keyboard</value>
+    </data>
+    <data name="Option_Image" xml:space="preserve">
+        <value>Image</value>
+    </data>
+    <data name="Option_None" xml:space="preserve">
+        <value>None</value>
+    </data>
+    <data name="Button_Clear" xml:space="preserve">
+        <value>Clear</value>
+    </data>
+    <data name="Unknown_Tip1" xml:space="preserve">
+        <value>Sign Here!</value>
+    </data>
+    <data name="Tip_TextAlignment" xml:space="preserve">
+        <value>Text Alignment</value>
+    </data>
+    <data name="Tip_Include" xml:space="preserve">
+        <value>Include Text</value>
+    </data>
+    <data name="Tip_Name" xml:space="preserve">
+        <value>Name</value>
+    </data>
+    <data name="Tip_DN" xml:space="preserve">
+        <value>Distinguishable name</value>
+    </data>
+    <data name="Tip_Date" xml:space="preserve">
+        <value>Date</value>
+    </data>
+    <data name="Tip_Version" xml:space="preserve">
+        <value>ComPDFKit Version</value>
+    </data>
+    <data name="Tip_Logo" xml:space="preserve">
+        <value>Logo</value>
+    </data>
+    <data name="Tip_Position" xml:space="preserve">
+        <value>Position</value>
+    </data>
+    <data name="Tip_Reason" xml:space="preserve">
+        <value>Reason</value>
+    </data>
+    <data name="Tip_Tab" xml:space="preserve">
+        <value>Tab</value>
+    </data>
+    <data name="Unknown_Tip2" xml:space="preserve">
+        <value>Preset Name</value>
+    </data>
+    <data name="Unknown_Tip3" xml:space="preserve">
+        <value>Draw Your Signature</value>
+    </data>
+    <data name="Tip_DrawClear" xml:space="preserve">
+        <value>Clear</value>
+    </data>
+    <data name="Tip_DrawCancel" xml:space="preserve">
+        <value>Cancel</value>
+    </data>
+    <data name="Tip_DrawOK" xml:space="preserve">
+        <value>OK</value>
+    </data>
+    <data name="Tip_CreateID" xml:space="preserve">
+        <value>Create A Self-Signed Digital ID</value>
+    </data>
+    <data name="Tip_IDWarning" xml:space="preserve">
+        <value>Digital IDs that are self-signed by individuals do not provide the assurance that the identifying information is valid. For this reason, they may not be accepted in some cases.</value>
+    </data>
+    <data name="Holder_Name" xml:space="preserve">
+        <value>Please enter your name</value>
+    </data>
+    <data name="Tip_Unit" xml:space="preserve">
+        <value>Organization Unit</value>
+    </data>
+    <data name="Holder_Unit" xml:space="preserve">
+        <value>Enter the name of the organization unit</value>
+    </data>
+    <data name="Tip_Organization" xml:space="preserve">
+        <value>Organization Name</value>
+    </data>
+    <data name="Holder_Organization" xml:space="preserve">
+        <value>Enter the name of the organization</value>
+    </data>
+    <data name="Tip_Email" xml:space="preserve">
+        <value>Email Address</value>
+    </data>
+    <data name="Holder_Email" xml:space="preserve">
+        <value>Please enter your email address</value>
+    </data>
+    <data name="Tip_Country" xml:space="preserve">
+        <value>Country/Region</value>
+    </data>
+    <data name="Tip_Use" xml:space="preserve">
+        <value>Use Digital ID for</value>
+    </data>
+    <data name="Option_Sign" xml:space="preserve">
+        <value>Digital Signatures</value>
+    </data>
+    <data name="Option_Encrypt" xml:space="preserve">
+        <value>Data Encryption</value>
+    </data>
+    <data name="Option_SignAndEncrypt" xml:space="preserve">
+        <value>Digital Signatures and Data Encryption</value>
+    </data>
+    <data name="Warn_Email" xml:space="preserve">
+        <value>Email address is not valid.</value>
+    </data>
+    <data name="Warn_Name" xml:space="preserve">
+        <value>Name is required.</value>
+    </data>
+    <data name="Title_Save" xml:space="preserve">
+        <value>Save to File</value>
+    </data>
+    <data name="Button_OK" xml:space="preserve">
+        <value>OK</value>
+    </data>
+    <data name="Tip_Save" xml:space="preserve">
+        <value>Save Location</value>
+    </data>
+    <data name="Button_Browse" xml:space="preserve">
+        <value>Browse</value>
+    </data>
+    <data name="Warn_Password" xml:space="preserve">
+        <value>Password and confirm password does not match</value>
+    </data>
+    <data name="Button_Finish" xml:space="preserve">
+        <value>Finish</value>
+    </data>
+    <data name="Title_SignAp" xml:space="preserve">
+        <value>Customize the Signature Appearance</value>
+    </data>
+    <data name="Unknown_Tip5" xml:space="preserve">
+        <value>Sign Here!</value>
+    </data>
+    <data name="Chk_Name" xml:space="preserve">
+        <value>Name</value>
+    </data>
+    <data name="Chk_DN" xml:space="preserve">
+        <value>Distinguishable name</value>
+    </data>
+    <data name="Chk_Date" xml:space="preserve">
+        <value>Date</value>
+    </data>
+    <data name="Chk_Version" xml:space="preserve">
+        <value>ComPDFKit Version</value>
+    </data>
+    <data name="Chk_Logo" xml:space="preserve">
+        <value>Logo</value>
+    </data>
+    <data name="Chk_Position" xml:space="preserve">
+        <value>Location</value>
+    </data>
+    <data name="Chk_Reason" xml:space="preserve">
+        <value>Reason</value>
+    </data>
+    <data name="Tip_Sign" xml:space="preserve">
+        <value>Reason</value>
+    </data>
+    <data name="Option_Owner" xml:space="preserve">
+        <value>I am the owner of the document</value>
+    </data>
+    <data name="Option_Approving" xml:space="preserve">
+        <value>I am approving the document</value>
+    </data>
+    <data name="Option_Review" xml:space="preserve">
+        <value>I have reviewed this document</value>
+    </data>
+    <data name="Unknown_Label" xml:space="preserve">
+        <value>Labels</value>
+    </data>
+    <data name="Unknown_Preset" xml:space="preserve">
+        <value>Preset Name</value>
+    </data>
+    <data name="Unknow_Draw" xml:space="preserve">
+        <value>Draw Your Signature</value>
+    </data>
+    <data name="Text_Signer" xml:space="preserve">
+        <value>Signed by:</value>
+    </data>
+    <data name="Text_Date" xml:space="preserve">
+        <value>Date:</value>
+    </data>
+    <data name="Text_Status" xml:space="preserve">
+        <value>Status:</value>
+    </data>
+    <data name="Text_SignerValid" xml:space="preserve">
+        <value>The signer's identity is valid.</value>
+    </data>
+    <data name="Text_SignerInvalid" xml:space="preserve">
+        <value>The signer's identity is invalid.</value>
+    </data>
+    <data name="Text_SigExpired" xml:space="preserve">
+        <value>The file was signed with a certificate that has expired. If you acquired this file recently, it may not be authentic.</value>
+    </data>
+    <data name="Text_SigInvalid" xml:space="preserve">
+        <value>The signature is invalid.</value>
+    </data>
+    <data name="Text_SigValid" xml:space="preserve">
+        <value>The signature is valid.</value>
+    </data>
+    <data name="Text_SigUnknown" xml:space="preserve">
+        <value>Signature validity is unknown because it has not been included in your list of trusted certificates and none of its parent certificates are trusted certificates.</value>
+    </data>
+    <data name="Text_SigNoModified" xml:space="preserve">
+        <value>The document has not been modified since this signature was applied.</value>
+    </data>
+    <data name="Text_SigModified" xml:space="preserve">
+        <value>The document has been altered or corrupted since it was signed by the current user.</value>
+    </data>
+    <data name="Text_MultiSig" xml:space="preserve">
+        <value>At least one signature is invalid.</value>
+    </data>
+    <data name="Button_AllSig" xml:space="preserve">
+        <value>View All Signatures</value>
+    </data>
+    <data name="Title_SigList" xml:space="preserve">
+        <value>Signature List</value>
+    </data>
+    <data name="Button_SigDetails" xml:space="preserve">
+        <value>Signature Details</value>
+    </data>
+    <data name="Button_CertDetails" xml:space="preserve">
+        <value>Certification Details</value>
+    </data>
+    <data name="Button_Delete" xml:space="preserve">
+        <value>Delete</value>
+    </data>
+    <data name="Text_Warning" xml:space="preserve">
+        <value>Warning</value>
+    </data>
+    <data name="Text_Delete " xml:space="preserve">
+        <value>Are you sure to delete it?</value>
+    </data>
+    <data name="Button_Details" xml:space="preserve">
+        <value>Digital Signature Details</value>
+    </data>
+    <data name="Text_Signature" xml:space="preserve">
+        <value>Signature</value>
+    </data>
+    <data name="Text_SignTime" xml:space="preserve">
+        <value>Signing Time</value>
+    </data>
+    <data name="Text_Statement" xml:space="preserve">
+        <value>Certification Authority Statement</value>
+    </data>
+    <data name="Text_IDValid." xml:space="preserve">
+        <value>The signer's identity is valid.</value>
+    </data>
+    <data name="Text_IDInvalid." xml:space="preserve">
+        <value>The signer's identity is invalid.</value>
+    </data>
+    <data name="Text_Unknow" xml:space="preserve">
+        <value>Signature validity is unknown because it has not been included in your list of trusted certificates and none of its parent certificates are trusted certificates.</value>
+    </data>
+    <data name="Text_Expired" xml:space="preserve">
+        <value>The file was signed with a certificate that has expired. If you acquired this file recently, it may not be authentic.</value>
+    </data>
+    <data name="Text_NotModified " xml:space="preserve">
+        <value>The document has not been modified since this signature was applied.</value>
+    </data>
+    <data name="Text_Modified " xml:space="preserve">
+        <value>The document has been altered or corrupted since it was signed by the current user.</value>
+    </data>
+    <data name="Button_Close" xml:space="preserve">
+        <value>Close</value>
+    </data>
+    <data name="Text_ViewIDFile" xml:space="preserve">
+        <value>View a digital ID file. Digital ID cards are password-protected. If you do not know the password, you cannot obtain a digital ID card.</value>
+    </data>
+    <data name="Text_CertViewer" xml:space="preserve">
+        <value>Certificate Viewer</value>
+    </data>
+    <data name="Text_Summary" xml:space="preserve">
+        <value>Summary</value>
+    </data>
+    <data name="Text_IssuedTo" xml:space="preserve">
+        <value>Issued to:</value>
+    </data>
+    <data name="Text_Issuer" xml:space="preserve">
+        <value>Issuer</value>
+    </data>
+    <data name="Text_ValidFrom" xml:space="preserve">
+        <value>Valid from:</value>
+    </data>
+    <data name="Text_ValidTo" xml:space="preserve">
+        <value>Valid to:</value>
+    </data>
+    <data name="Text_Usage" xml:space="preserve">
+        <value>Intended Usage:</value>
+    </data>
+    <data name="Unknown_7" xml:space="preserve">
+        <value>Digital Signature, Non-Repudiation
+Encrypt Keys
+Encrypt Document
+Key Agreement
+Client Authentication
+Email Protection</value>
+    </data>
+    <data name="Text_Details" xml:space="preserve">
+        <value>Details</value>
+    </data>
+    <data name="Text_Version" xml:space="preserve">
+        <value>Version</value>
+    </data>
+    <data name="Text_Algorithm" xml:space="preserve">
+        <value>Algorithm</value>
+    </data>
+    <data name="Text_Subject" xml:space="preserve">
+        <value>Subject</value>
+    </data>
+    <data name="Text_SerialNum" xml:space="preserve">
+        <value>Serial Number</value>
+    </data>
+    <data name="Text_CertPolicy" xml:space="preserve">
+        <value>Certificate Policy:</value>
+    </data>
+    <data name="Text_CRL" xml:space="preserve">
+        <value>CRL Distribution Points:</value>
+    </data>
+    <data name="Text_IssuerInfo" xml:space="preserve">
+        <value>Issuer Information Access:</value>
+    </data>
+    <data name="Text_IssuerID" xml:space="preserve">
+        <value>Issuer‘s Key Identifier:</value>
+    </data>
+    <data name="Text_SubjectID" xml:space="preserve">
+        <value>Subject‘s Key Identifier:</value>
+    </data>
+    <data name="Text_BasicConstraints" xml:space="preserve">
+        <value>Basic Constraints:</value>
+    </data>
+    <data name="Text_KeyUsage" xml:space="preserve">
+        <value>Key Usage:</value>
+    </data>
+    <data name="Text_PubKey" xml:space="preserve">
+        <value>Public Key:</value>
+    </data>
+    <data name="Text_X509" xml:space="preserve">
+        <value>X.509 Data:</value>
+    </data>
+    <data name="Text_SHA1" xml:space="preserve">
+        <value>SHA1 Digest:</value>
+    </data>
+    <data name="Text_MD5" xml:space="preserve">
+        <value>MD5 Digest:</value>
+    </data>
+    <data name="Title_Trust" xml:space="preserve">
+        <value>Trust</value>
+    </data>
+    <data name="Tip_TrustTo" xml:space="preserve">
+        <value>This Certificate Is Trusted to:</value>
+    </data>
+    <data name="Unknown_Tip6" xml:space="preserve">
+        <value>Sign document or data
+Certify document
+Execute dynamic content that is embedded in a certified document
+Execute high privilege JavaScripts that are embedded in a certified document
+Perform privileged system operations (networking, printing, file access, etc.)</value>
+    </data>
+    <data name="Button_AddTrust" xml:space="preserve">
+        <value>Add to Trusted Certificates</value>
+    </data>
+    <data name="Tip_Cert" xml:space="preserve">
+        <value>Certificate file</value>
+    </data>
+    <data name="Title_SigInfo" xml:space="preserve">
+        <value>Signature Information</value>
+    </data>
+    <data name="Describe_Import" xml:space="preserve">
+        <value> Import an existing Digital ID that you have obtained as file</value>
+    </data>
+    <data name="Describe_Create" xml:space="preserve">
+        <value> Create your self-signed Digital ID</value>
+    </data>
+    <data name="Button_Save" xml:space="preserve">
+        <value>Save</value>
+    </data>
+    <data name="Holder_SelectFile" xml:space="preserve">
+        <value>Select a File</value>
+    </data>
+    <data name="Tip_SetPassword" xml:space="preserve">
+        <value>Set A Password</value>
+    </data>
+    <data name="Tip_Confirm" xml:space="preserve">
+        <value>Confirm the Password</value>
+    </data>
+    <data name="Holder_SetPassword" xml:space="preserve">
+        <value>Please enter your password</value>
+    </data>
+    <data name="Holder_ConfirmPassword" xml:space="preserve">
+        <value>Enter the password again</value>
+    </data>
+    <data name="Warn_NoFile" xml:space="preserve">
+        <value>Please select a file.</value>
+    </data>
+    <data name="Warn_NoPassword" xml:space="preserve">
+        <value>Please enter a password</value>
+    </data>
+    <data name="Text_Valid" xml:space="preserve">
+        <value>Valid Signature, </value>
+    </data>
+    <data name="Text_Invalid" xml:space="preserve">
+        <value>Invalid Signature, </value>
+    </data>
+    <data name="Text_Unknown" xml:space="preserve">
+        <value>Unknown Signature, </value>
+    </data>
+    <data name="Trust_Sign" xml:space="preserve">
+        <value>Sign document or data</value>
+    </data>
+    <data name="Trust_Cert" xml:space="preserve">
+        <value>Certify document</value>
+    </data>
+    <data name="Usage_DigitalSignature" xml:space="preserve">
+        <value>Digital Signature</value>
+    </data>
+    <data name="Usage_NonRepudiation" xml:space="preserve">
+        <value>Non-Repudiation</value>
+    </data>
+    <data name="Usage_Keys" xml:space="preserve">
+        <value>Encrypt Keys</value>
+    </data>
+    <data name="Usage_Document" xml:space="preserve">
+        <value>Encrypt Document</value>
+    </data>
+    <data name="Usage_Client" xml:space="preserve">
+        <value>Client Authentication</value>
+    </data>
+    <data name="Usage_Email" xml:space="preserve">
+        <value>Email Protection</value>
+    </data>
+    <data name="Usage_Key" xml:space="preserve">
+        <value>Key Agreement</value>
+    </data>
+</root>

+ 496 - 0
Demo/Examples/Compdfkit_Tools/Strings/Signature.zh.resx

@@ -0,0 +1,496 @@
+<root>
+    <resheader name="resmimetype">
+        <value>text/microsoft-resx</value>
+    </resheader>
+    <resheader name="version">
+        <value>1.3</value>
+    </resheader>
+    <resheader name="reader">
+        <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    </resheader>
+    <resheader name="writer">
+        <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    </resheader>
+    <data name="Title_AddDigitalSign" xml:space="preserve">
+        <value>添加数字签名</value>
+    </data>
+    <data name="Title_IDType" xml:space="preserve">
+        <value>选择数字身份证类型:</value>
+    </data>
+    <data name="Option_FileID" xml:space="preserve">
+        <value>使用文件中的数字身份证</value>
+    </data>
+    <data name="Tip_ID" xml:space="preserve">
+        <value>需要数字身份证才能创建数字签名。最安全的数字身份证由受信任的证书机构颁发,并基于智能卡或令牌之类的安全设备。某些则基于文件。</value>
+    </data>
+    <data name="Option_NewID" xml:space="preserve">
+        <value>创建新的数字身份证</value>
+    </data>
+    <data name="Tip_NewID" xml:space="preserve">
+        <value>您还可以创建一个新的数字身份证,但它们只提供低级别的身份保证。</value>
+    </data>
+    <data name="Button_Cancel" xml:space="preserve">
+        <value>取消</value>
+    </data>
+    <data name="Button_Continue" xml:space="preserve">
+        <value>继续</value>
+    </data>
+    <data name="Title_AddID" xml:space="preserve">
+        <value>添加数字身份证</value>
+    </data>
+    <data name="Tip_AddID" xml:space="preserve">
+        <value>浏览数字身份证文件。数字身份证受密码保护。如果你不知道密码,你就无法获取数字身份证。</value>
+    </data>
+    <data name="Holder_Path" xml:space="preserve">
+        <value>使用文件中的证书</value>
+    </data>
+    <data name="Button_Upload" xml:space="preserve">
+        <value>浏览</value>
+    </data>
+    <data name="Tip_Password" xml:space="preserve">
+        <value>证书密码</value>
+    </data>
+    <data name="Holder_Password" xml:space="preserve">
+        <value>请输入证书密码</value>
+    </data>
+    <data name="Tip_PasswordStatus" xml:space="preserve">
+        <value>密码错误,请重试</value>
+    </data>
+    <data name="Option_Trackpad" xml:space="preserve">
+        <value>触摸板</value>
+    </data>
+    <data name="Option_Keyboard" xml:space="preserve">
+        <value>键盘</value>
+    </data>
+    <data name="Option_Image" xml:space="preserve">
+        <value>图片</value>
+    </data>
+    <data name="Option_None" xml:space="preserve">
+        <value>无</value>
+    </data>
+    <data name="Button_Clear" xml:space="preserve">
+        <value>清除</value>
+    </data>
+    <data name="Unknown_Tip1" xml:space="preserve">
+        <value>请在此处输入签名!</value>
+    </data>
+    <data name="Tip_TextAlignment" xml:space="preserve">
+        <value>文本方向</value>
+    </data>
+    <data name="Tip_Include" xml:space="preserve">
+        <value>包含文本</value>
+    </data>
+    <data name="Tip_Name" xml:space="preserve">
+        <value>名称</value>
+    </data>
+    <data name="Tip_DN" xml:space="preserve">
+        <value>辨别名</value>
+    </data>
+    <data name="Tip_Date" xml:space="preserve">
+        <value>日期</value>
+    </data>
+    <data name="Tip_Version" xml:space="preserve">
+        <value>ComPDFKit 版本</value>
+    </data>
+    <data name="Tip_Logo" xml:space="preserve">
+        <value>徽标</value>
+    </data>
+    <data name="Tip_Position" xml:space="preserve">
+        <value>位置</value>
+    </data>
+    <data name="Tip_Reason" xml:space="preserve">
+        <value>原因</value>
+    </data>
+    <data name="Tip_Tab" xml:space="preserve">
+        <value>标签</value>
+    </data>
+    <data name="Unknown_Tip2" xml:space="preserve">
+        <value>预设名</value>
+    </data>
+    <data name="Unknown_Tip3" xml:space="preserve">
+        <value>绘制签名</value>
+    </data>
+    <data name="Tip_DrawClear" xml:space="preserve">
+        <value>清除</value>
+    </data>
+    <data name="Tip_DrawCancel" xml:space="preserve">
+        <value>取消</value>
+    </data>
+    <data name="Tip_DrawOK" xml:space="preserve">
+        <value>确定</value>
+    </data>
+    <data name="Tip_CreateID" xml:space="preserve">
+        <value>创建自签名数字身份证</value>
+    </data>
+    <data name="Tip_IDWarning" xml:space="preserve">
+        <value>自签名数字身份证不会保证身份信息的有效性。出于这一原因,它们在某些用例中可能不被接受。</value>
+    </data>
+    <data name="Holder_Name" xml:space="preserve">
+        <value>请输入身份证名称</value>
+    </data>
+    <data name="Tip_Unit" xml:space="preserve">
+        <value>部门</value>
+    </data>
+    <data name="Holder_Unit" xml:space="preserve">
+        <value>请输入部门</value>
+    </data>
+    <data name="Tip_Organization" xml:space="preserve">
+        <value>单位名称</value>
+    </data>
+    <data name="Holder_Organization" xml:space="preserve">
+        <value>请输入单位名称</value>
+    </data>
+    <data name="Tip_Email" xml:space="preserve">
+        <value>电子邮件地址</value>
+    </data>
+    <data name="Holder_Email" xml:space="preserve">
+        <value>请输入电子邮箱地址</value>
+    </data>
+    <data name="Tip_Country" xml:space="preserve">
+        <value>国家/地区</value>
+    </data>
+    <data name="Tip_Use" xml:space="preserve">
+        <value>数字ID用于</value>
+    </data>
+    <data name="Option_Sign" xml:space="preserve">
+        <value>数字签名</value>
+    </data>
+    <data name="Option_Encrypt" xml:space="preserve">
+        <value>数据加密</value>
+    </data>
+    <data name="Option_SignAndEncrypt" xml:space="preserve">
+        <value>数字签名和数据加密</value>
+    </data>
+    <data name="Warn_Email" xml:space="preserve">
+        <value>电子邮件无效。</value>
+    </data>
+    <data name="Warn_Name" xml:space="preserve">
+        <value>姓名为必填项。</value>
+    </data>
+    <data name="Title_Save" xml:space="preserve">
+        <value>保存到文件</value>
+    </data>
+    <data name="Button_OK" xml:space="preserve">
+        <value>完成</value>
+    </data>
+    <data name="Tip_Save" xml:space="preserve">
+        <value>保存地址</value>
+    </data>
+    <data name="Button_Browse" xml:space="preserve">
+        <value>浏览</value>
+    </data>
+    <data name="Warn_Password" xml:space="preserve">
+        <value>密码不一致,请重新输入</value>
+    </data>
+    <data name="Button_Finish" xml:space="preserve">
+        <value>完成</value>
+    </data>
+    <data name="Title_SignAp" xml:space="preserve">
+        <value>设置数字签名外观</value>
+    </data>
+    <data name="Unknown_Tip5" xml:space="preserve">
+        <value>请在此处输入签名!</value>
+    </data>
+    <data name="Chk_Name" xml:space="preserve">
+        <value>名称</value>
+    </data>
+    <data name="Chk_DN" xml:space="preserve">
+        <value>辨别名</value>
+    </data>
+    <data name="Chk_Date" xml:space="preserve">
+        <value>日期</value>
+    </data>
+    <data name="Chk_Version" xml:space="preserve">
+        <value>ComPDFKit 版本</value>
+    </data>
+    <data name="Chk_Logo" xml:space="preserve">
+        <value>徽标</value>
+    </data>
+    <data name="Chk_Position" xml:space="preserve">
+        <value>位置</value>
+    </data>
+    <data name="Chk_Reason" xml:space="preserve">
+        <value>原因</value>
+    </data>
+    <data name="Tip_Sign" xml:space="preserve">
+        <value>签署原因</value>
+    </data>
+    <data name="Option_Owner" xml:space="preserve">
+        <value>我是该文档的作者</value>
+    </data>
+    <data name="Option_Approving" xml:space="preserve">
+        <value>我正在批准该文档</value>
+    </data>
+    <data name="Option_Review" xml:space="preserve">
+        <value>我已审阅该文档</value>
+    </data>
+    <data name="Unknown_Label" xml:space="preserve">
+        <value>标签</value>
+    </data>
+    <data name="Unknown_Preset" xml:space="preserve">
+        <value>预设名</value>
+    </data>
+    <data name="Unknow_Draw" xml:space="preserve">
+        <value>绘制签名</value>
+    </data>
+    <data name="Text_Signer" xml:space="preserve">
+        <value>签名为:</value>
+    </data>
+    <data name="Text_Date" xml:space="preserve">
+        <value>日期</value>
+    </data>
+    <data name="Text_Status" xml:space="preserve">
+        <value>状态</value>
+    </data>
+    <data name="Text_SignerValid" xml:space="preserve">
+        <value>签名者的身份有效。</value>
+    </data>
+    <data name="Text_SignerInvalid" xml:space="preserve">
+        <value>签名者的身份无效。</value>
+    </data>
+    <data name="Text_SigExpired" xml:space="preserve">
+        <value>该文件是用已过期的证书签名的。如果您最近获取了此文件,则该文件可能不真实。</value>
+    </data>
+    <data name="Text_SigInvalid" xml:space="preserve">
+        <value>签名无效。</value>
+    </data>
+    <data name="Text_SigValid" xml:space="preserve">
+        <value>签名有效。</value>
+    </data>
+    <data name="Text_SigUnknown" xml:space="preserve">
+        <value>签名有效性未知,因为它未包含在您的受信任证书列表中,并且它的父证书都不是受信任证书。</value>
+    </data>
+    <data name="Text_SigNoModified" xml:space="preserve">
+        <value>自应用此签名以来,文档未被修改。</value>
+    </data>
+    <data name="Text_SigModified" xml:space="preserve">
+        <value>自当前用户签署文档以来,该文档已被更改或损坏。</value>
+    </data>
+    <data name="Text_MultiSig" xml:space="preserve">
+        <value>至少一个签名无效,文档可能被篡改。</value>
+    </data>
+    <data name="Button_AllSig" xml:space="preserve">
+        <value>查看所有签名</value>
+    </data>
+    <data name="Title_SigList" xml:space="preserve">
+        <value>签名列表</value>
+    </data>
+    <data name="Button_SigDetails" xml:space="preserve">
+        <value>查看签名详情</value>
+    </data>
+    <data name="Button_CertDetails" xml:space="preserve">
+        <value>查看证书详情</value>
+    </data>
+    <data name="Button_Delete" xml:space="preserve">
+        <value>删除</value>
+    </data>
+    <data name="Text_Warning" xml:space="preserve">
+        <value>注意</value>
+    </data>
+    <data name="Text_Delete " xml:space="preserve">
+        <value>确定删除该内容?</value>
+    </data>
+    <data name="Button_Details" xml:space="preserve">
+        <value>数字签名详细信息</value>
+    </data>
+    <data name="Text_Signature" xml:space="preserve">
+        <value>数字签名</value>
+    </data>
+    <data name="Text_SignTime" xml:space="preserve">
+        <value>签署时间</value>
+    </data>
+    <data name="Text_Statement" xml:space="preserve">
+        <value>有效性小结</value>
+    </data>
+    <data name="Text_IDValid." xml:space="preserve">
+        <value>签名者的身份有效。</value>
+    </data>
+    <data name="Text_IDInvalid." xml:space="preserve">
+        <value>签名者的身份无效。</value>
+    </data>
+    <data name="Text_Unknow" xml:space="preserve">
+        <value>签名有效性未知,因为它未包含在您的受信任证书列表中,并且它的父证书都不是受信任证书。</value>
+    </data>
+    <data name="Text_Expired" xml:space="preserve">
+        <value>该文件是用已过期的证书签名的。如果您最近获取了此文件,则该文件可能不真实。</value>
+    </data>
+    <data name="Text_NotModified " xml:space="preserve">
+        <value>自应用此签名以来,文档未被修改。</value>
+    </data>
+    <data name="Text_Modified " xml:space="preserve">
+        <value>自当前用户签署文档以来,该文档已被更改或损坏。</value>
+    </data>
+    <data name="Button_Close" xml:space="preserve">
+        <value>关闭</value>
+    </data>
+    <data name="Text_ViewIDFile" xml:space="preserve">
+        <value>浏览数字身份证文件。数字身份证受密码保护。如果你不知道密码,你就无法获取数字身份证。</value>
+    </data>
+    <data name="Text_CertViewer" xml:space="preserve">
+        <value>证书查看程序</value>
+    </data>
+    <data name="Text_Summary" xml:space="preserve">
+        <value>小结</value>
+    </data>
+    <data name="Text_IssuedTo" xml:space="preserve">
+        <value>颁发给</value>
+    </data>
+    <data name="Text_Issuer" xml:space="preserve">
+        <value>颁发者</value>
+    </data>
+    <data name="Text_ValidFrom" xml:space="preserve">
+        <value>有效起始日期</value>
+    </data>
+    <data name="Text_ValidTo" xml:space="preserve">
+        <value>有效截止日期</value>
+    </data>
+    <data name="Text_Usage" xml:space="preserve">
+        <value>预期用途</value>
+    </data>
+    <data name="Unknown_7" xml:space="preserve">
+        <value>数字签名,不可否认
+加密密钥
+加密文档
+关键协议
+客户端身份验证
+电子邮件保护</value>
+    </data>
+    <data name="Text_Details" xml:space="preserve">
+        <value>详细信息</value>
+    </data>
+    <data name="Text_Version" xml:space="preserve">
+        <value>版本</value>
+    </data>
+    <data name="Text_Algorithm" xml:space="preserve">
+        <value>签名算法</value>
+    </data>
+    <data name="Text_Subject" xml:space="preserve">
+        <value>主题</value>
+    </data>
+    <data name="Text_SerialNum" xml:space="preserve">
+        <value>序列号</value>
+    </data>
+    <data name="Text_CertPolicy" xml:space="preserve">
+        <value>证书策略</value>
+    </data>
+    <data name="Text_CRL" xml:space="preserve">
+        <value>CRL分发点</value>
+    </data>
+    <data name="Text_IssuerInfo" xml:space="preserve">
+        <value>颁发机构信息访问</value>
+    </data>
+    <data name="Text_IssuerID" xml:space="preserve">
+        <value>颁发机构密钥标识符</value>
+    </data>
+    <data name="Text_SubjectID" xml:space="preserve">
+        <value>主体密钥标识符</value>
+    </data>
+    <data name="Text_BasicConstraints" xml:space="preserve">
+        <value>基本约束</value>
+    </data>
+    <data name="Text_KeyUsage" xml:space="preserve">
+        <value>密钥用法</value>
+    </data>
+    <data name="Text_PubKey" xml:space="preserve">
+        <value>公钥</value>
+    </data>
+    <data name="Text_X509" xml:space="preserve">
+        <value>X.509</value>
+    </data>
+    <data name="Text_SHA1" xml:space="preserve">
+        <value>SHA1</value>
+    </data>
+    <data name="Text_MD5" xml:space="preserve">
+        <value>MD5</value>
+    </data>
+    <data name="Title_Trust" xml:space="preserve">
+        <value>信任</value>
+    </data>
+    <data name="Tip_TrustTo" xml:space="preserve">
+        <value>本证书信任于:</value>
+    </data>
+    <data name="Unknown_Tip6" xml:space="preserve">
+        <value>签名文档或数据
+验证文档
+执行嵌入已验证文档的动态内容
+执行嵌入已验证文档的高优先级的
+JavaScript 脚本
+执行特权系统操作(建立网络连接、打
+印、文件访问等。)</value>
+    </data>
+    <data name="Button_AddTrust" xml:space="preserve">
+        <value>添加到可信任证书</value>
+    </data>
+    <data name="Tip_Cert" xml:space="preserve">
+        <value>证书文件</value>
+    </data>
+    <data name="Title_SigInfo" xml:space="preserve">
+        <value>签名信息</value>
+    </data>
+    <data name="Describe_Import" xml:space="preserve">
+        <value>导入以文件形式获取的现有数字身份证</value>
+    </data>
+    <data name="Describe_Create" xml:space="preserve">
+        <value>创建您的自签名数字身份证</value>
+    </data>
+    <data name="Button_Save" xml:space="preserve">
+        <value>保存</value>
+    </data>
+    <data name="Holder_SelectFile" xml:space="preserve">
+        <value>选择文件</value>
+    </data>
+    <data name="Tip_Confirm" xml:space="preserve">
+        <value>重新输入密码</value>
+    </data>
+    <data name="Tip_SetPassword" xml:space="preserve">
+        <value>输入密码</value>
+    </data>
+    <data name="Holder_SetPassword" xml:space="preserve">
+        <value>请输入密码</value>
+    </data>
+    <data name="Holder_ConfirmPassword" xml:space="preserve">
+        <value>请再次输入密码</value>
+    </data>
+    <data name="Warn_NoFile" xml:space="preserve">
+        <value>请选择文件。</value>
+    </data>
+    <data name="Warn_NoPassword" xml:space="preserve">
+        <value>请输入密码</value>
+    </data>
+    <data name="Text_Valid" xml:space="preserve">
+        <value>签名有效,</value>
+    </data>
+    <data name="Text_Invalid" xml:space="preserve">
+        <value>签名无效,</value>
+    </data>
+    <data name="Text_Unknown" xml:space="preserve">
+        <value>签名有效性未知</value>
+    </data>
+    <data name="Trust_Sign" xml:space="preserve">
+        <value>签名文档或数据</value>
+    </data>
+    <data name="Trust_Cert" xml:space="preserve">
+        <value>验证文档</value>
+    </data>
+    <data name="Usage_DigitalSignature" xml:space="preserve">
+        <value>数字签名</value>
+    </data>
+    <data name="Usage_NonRepudiation" xml:space="preserve">
+        <value>不可否认</value>
+    </data>
+    <data name="Usage_Client" xml:space="preserve">
+        <value>客户端身份验证</value>
+    </data>
+    <data name="Usage_Document" xml:space="preserve">
+        <value>加密文档</value>
+    </data>
+    <data name="Usage_Email" xml:space="preserve">
+        <value>电子邮件保护</value>
+    </data>
+    <data name="Usage_Keys" xml:space="preserve">
+        <value>加密密钥</value>
+    </data>
+    <data name="Usage_Key" xml:space="preserve">
+        <value>关键协议</value>
+    </data>
+</root>

+ 334 - 1
Demo/Examples/Compdfkit_Tools/Strings/ToolBar.Designer.cs

@@ -1,4 +1,4 @@
-//------------------------------------------------------------------------------
+//------------------------------------------------------------------------------
 // <auto-generated>
 //     This code was generated by a tool.
 //
@@ -58,5 +58,338 @@ namespace Compdfkit_Tools.Strings.Common {
                 resourceCulture = value;
             }
         }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Push Button.
+        /// </summary>
+        internal static string Button_Btn {
+            get {
+                return ResourceManager.GetString("Button_Btn", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Check Box.
+        /// </summary>
+        internal static string Button_Chb {
+            get {
+                return ResourceManager.GetString("Button_Chb", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Combo Button.
+        /// </summary>
+        internal static string Button_Cmb {
+            get {
+                return ResourceManager.GetString("Button_Cmb", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Copy.
+        /// </summary>
+        internal static string Button_Copy {
+            get {
+                return ResourceManager.GetString("Button_Copy", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Delete.
+        /// </summary>
+        internal static string Button_Delete {
+            get {
+                return ResourceManager.GetString("Button_Delete", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Extract.
+        /// </summary>
+        internal static string Button_Extract {
+            get {
+                return ResourceManager.GetString("Button_Extract", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Add Image.
+        /// </summary>
+        internal static string Button_Image {
+            get {
+                return ResourceManager.GetString("Button_Image", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Insert.
+        /// </summary>
+        internal static string Button_Insert {
+            get {
+                return ResourceManager.GetString("Button_Insert", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to List Box.
+        /// </summary>
+        internal static string Button_ListBox {
+            get {
+                return ResourceManager.GetString("Button_ListBox", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Merge.
+        /// </summary>
+        internal static string Button_Merge {
+            get {
+                return ResourceManager.GetString("Button_Merge", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Add a Signature Field.
+        /// </summary>
+        internal static string Button_NewSig {
+            get {
+                return ResourceManager.GetString("Button_NewSig", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Paste.
+        /// </summary>
+        internal static string Button_Paste {
+            get {
+                return ResourceManager.GetString("Button_Paste", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Radio Button.
+        /// </summary>
+        internal static string Button_Rdo {
+            get {
+                return ResourceManager.GetString("Button_Rdo", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Replace.
+        /// </summary>
+        internal static string Button_Replace {
+            get {
+                return ResourceManager.GetString("Button_Replace", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Reverse.
+        /// </summary>
+        internal static string Button_Reverse {
+            get {
+                return ResourceManager.GetString("Button_Reverse", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Rotate.
+        /// </summary>
+        internal static string Button_Rotate {
+            get {
+                return ResourceManager.GetString("Button_Rotate", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Signatures.
+        /// </summary>
+        internal static string Button_Sig {
+            get {
+                return ResourceManager.GetString("Button_Sig", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Split.
+        /// </summary>
+        internal static string Button_Split {
+            get {
+                return ResourceManager.GetString("Button_Split", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Add Text.
+        /// </summary>
+        internal static string Button_Text {
+            get {
+                return ResourceManager.GetString("Button_Text", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Text Field.
+        /// </summary>
+        internal static string Button_TextField {
+            get {
+                return ResourceManager.GetString("Button_TextField", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Verify the Signature.
+        /// </summary>
+        internal static string Button_VerifySig {
+            get {
+                return ResourceManager.GetString("Button_VerifySig", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Arrow.
+        /// </summary>
+        internal static string Tooltip_Arrow {
+            get {
+                return ResourceManager.GetString("Tooltip_Arrow", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Audio.
+        /// </summary>
+        internal static string Tooltip_Audio {
+            get {
+                return ResourceManager.GetString("Tooltip_Audio", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Circle.
+        /// </summary>
+        internal static string Tooltip_Circle {
+            get {
+                return ResourceManager.GetString("Tooltip_Circle", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Ink.
+        /// </summary>
+        internal static string Tooltip_FreeHand {
+            get {
+                return ResourceManager.GetString("Tooltip_FreeHand", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to FreeText.
+        /// </summary>
+        internal static string Tooltip_FreeText {
+            get {
+                return ResourceManager.GetString("Tooltip_FreeText", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Highlight.
+        /// </summary>
+        internal static string Tooltip_Highlight {
+            get {
+                return ResourceManager.GetString("Tooltip_Highlight", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Image.
+        /// </summary>
+        internal static string Tooltip_Image {
+            get {
+                return ResourceManager.GetString("Tooltip_Image", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Line.
+        /// </summary>
+        internal static string Tooltip_Line {
+            get {
+                return ResourceManager.GetString("Tooltip_Line", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Link.
+        /// </summary>
+        internal static string Tooltip_Link {
+            get {
+                return ResourceManager.GetString("Tooltip_Link", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Note.
+        /// </summary>
+        internal static string Tooltip_Note {
+            get {
+                return ResourceManager.GetString("Tooltip_Note", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Signatures.
+        /// </summary>
+        internal static string Tooltip_Signature {
+            get {
+                return ResourceManager.GetString("Tooltip_Signature", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Square.
+        /// </summary>
+        internal static string Tooltip_Square {
+            get {
+                return ResourceManager.GetString("Tooltip_Square", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Squiggly.
+        /// </summary>
+        internal static string Tooltip_Squiggly {
+            get {
+                return ResourceManager.GetString("Tooltip_Squiggly", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Stamp.
+        /// </summary>
+        internal static string Tooltip_Stamp {
+            get {
+                return ResourceManager.GetString("Tooltip_Stamp", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Strikeout.
+        /// </summary>
+        internal static string Tooltip_Strikeout {
+            get {
+                return ResourceManager.GetString("Tooltip_Strikeout", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Underline.
+        /// </summary>
+        internal static string Tooltip_Underline {
+            get {
+                return ResourceManager.GetString("Tooltip_Underline", resourceCulture);
+            }
+        }
     }
 }

+ 14 - 2
Demo/Examples/Compdfkit_Tools/Strings/ToolBar.resx

@@ -33,7 +33,7 @@
     <data name="Tooltip_Squiggly" xml:space="preserve">
         <value>Squiggly</value>
     </data>
-    <data name="Tooltip_Ink" xml:space="preserve">
+    <data name="Tooltip_FreeHand" xml:space="preserve">
         <value>Ink</value>
     </data>
     <data name="Tooltip_Circle" xml:space="preserve">
@@ -51,7 +51,7 @@
     <data name="Tooltip_FreeText" xml:space="preserve">
         <value>FreeText</value>
     </data>
-    <data name="Tooltip_Sig" xml:space="preserve">
+    <data name="Tooltip_Signature" xml:space="preserve">
         <value>Signatures</value>
     </data>
     <data name="Tooltip_Stamp" xml:space="preserve">
@@ -117,4 +117,16 @@
     <data name="Button_VerifySig" xml:space="preserve">
         <value>Verify the Signature</value>
     </data>
+    <data name="Button_Copy" xml:space="preserve">
+        <value>Copy</value>
+    </data>
+    <data name="Button_Paste" xml:space="preserve">
+        <value>Paste</value>
+    </data>
+    <data name="Button_Rotate" xml:space="preserve">
+        <value>Rotate</value>
+    </data>
+    <data name="Button_Delete" xml:space="preserve">
+        <value>Delete</value>
+    </data>
 </root>

+ 14 - 2
Demo/Examples/Compdfkit_Tools/Strings/ToolBar.zh.resx

@@ -26,7 +26,7 @@
     <data name="Tooltip_Squiggly" xml:space="preserve">
         <value>波浪线</value>
     </data>
-    <data name="Tooltip_Ink" xml:space="preserve">
+    <data name="Tooltip_FreeHand" xml:space="preserve">
         <value>手绘</value>
     </data>
     <data name="Tooltip_Circle" xml:space="preserve">
@@ -44,7 +44,7 @@
     <data name="Tooltip_FreeText" xml:space="preserve">
         <value>文本</value>
     </data>
-    <data name="Tooltip_Sig" xml:space="preserve">
+    <data name="Tooltip_Signature" xml:space="preserve">
         <value>签名</value>
     </data>
     <data name="Tooltip_Stamp" xml:space="preserve">
@@ -110,4 +110,16 @@
     <data name="Button_VerifySig" xml:space="preserve">
         <value>验证签名</value>
     </data>
+    <data name="Button_Copy" xml:space="preserve">
+        <value>复制</value>
+    </data>
+    <data name="Button_Delete" xml:space="preserve">
+        <value>删除</value>
+    </data>
+    <data name="Button_Paste" xml:space="preserve">
+        <value>粘贴</value>
+    </data>
+    <data name="Button_Rotate" xml:space="preserve">
+        <value>旋转</value>
+    </data>
 </root>