Ver Fonte

Merge branch 'dev' of http://git.kdan.cc:8865/Windows/PDFOffice_Windows_exe into dev

# Conflicts:
#	PDF Office/Views/BOTA/BookmarkContent.xaml.cs
ZhouJieSheng há 2 anos atrás
pai
commit
fa3881fd41
55 ficheiros alterados com 3327 adições e 509 exclusões
  1. BIN
      PDF Office/ComPDFKit.Desk.dll
  2. BIN
      PDF Office/ComPDFKit.Viewer.dll
  3. 68 9
      PDF Office/Helper/CropPageUndoManager.cs
  4. 377 0
      PDF Office/Helper/ErrorCodeHelper.cs
  5. 1 2
      PDF Office/Helper/SecurityHelper.cs
  6. 23 17
      PDF Office/Helper/ServiceHelper.cs
  7. 2 0
      PDF Office/Model/ParameterNames.cs
  8. 274 1
      PDF Office/MultilingualResources/PDF Office.en.xlf
  9. 274 1
      PDF Office/MultilingualResources/PDF Office.zh-Hans.xlf
  10. 274 1
      PDF Office/MultilingualResources/PDF Office.zh-Hant.xlf
  11. 1 0
      PDF Office/PDF Master.csproj
  12. 0 54
      PDF Office/PDF Office.sln
  13. 612 0
      PDF Office/Strings/Service/Service.Designer.cs
  14. 320 97
      PDF Office/Strings/Service/Service.resx
  15. 8 1
      PDF Office/ViewModels/BOTA/AnnotationContentViewModel.cs
  16. 1 1
      PDF Office/ViewModels/Dialog/FullScreenWindowViewModel.cs
  17. 5 0
      PDF Office/ViewModels/Dialog/HomePageToolsDialogs/HomePagePrinter/HomePagePrinterDialogViewModel.cs
  18. 83 24
      PDF Office/ViewModels/Dialog/ServiceDialog/CodeRegionViewModel.cs
  19. 75 14
      PDF Office/ViewModels/Dialog/ServiceDialog/LoginPasswordRegionViewModel.cs
  20. 100 30
      PDF Office/ViewModels/Dialog/ServiceDialog/LoginRegionViewModel.cs
  21. 50 1
      PDF Office/ViewModels/Dialog/ServiceDialog/NoInternetRegionViewModel.cs
  22. 61 21
      PDF Office/ViewModels/Dialog/ServiceDialog/PasswordUpdataRegionVIewModel.cs
  23. 36 3
      PDF Office/ViewModels/Dialog/ServiceDialog/RegisterOKRegionViewModel.cs
  24. 167 49
      PDF Office/ViewModels/Dialog/ServiceDialog/RegisterRegionViewModel.cs
  25. 118 18
      PDF Office/ViewModels/Dialog/ServiceDialog/UserDialogViewModel.cs
  26. 6 5
      PDF Office/ViewModels/Dialog/ServiceDialog/UserOutCodeRegionViewModel.cs
  27. 62 4
      PDF Office/ViewModels/Dialog/ServiceDialog/UserOutingLoginViewModel.cs
  28. 77 39
      PDF Office/ViewModels/Dialog/ToolsDialogs/MergeDialogViewModel.cs
  29. 1 1
      PDF Office/ViewModels/EditTools/Background/BackgroundDocumentContentViewModel.cs
  30. 1 1
      PDF Office/ViewModels/EditTools/Bates/BatesDocumentContentViewModel.cs
  31. 1 1
      PDF Office/ViewModels/EditTools/HeaderFooter/HeaderFooterDocumentContentViewModel.cs
  32. 1 1
      PDF Office/ViewModels/EditTools/Redaction/RedactionContentViewModel.cs
  33. 1 1
      PDF Office/ViewModels/EditTools/Watermark/WatermarkDocumentContentViewModel.cs
  34. 1 0
      PDF Office/ViewModels/FillAndSign/FillAndSignContentViewModel.cs
  35. 8 5
      PDF Office/ViewModels/HomePanel/PDFTools/QuickToolsContentViewModel.cs
  36. 42 1
      PDF Office/ViewModels/MainWindowViewModel.cs
  37. 35 2
      PDF Office/ViewModels/PropertyPanel/AnnotPanel/LinkAnnotPropertyViewModel.cs
  38. 7 4
      PDF Office/ViewModels/PropertyPanel/AnnotPanel/SnapshotEditMenuViewModel.cs
  39. 6 5
      PDF Office/ViewModels/Tools/AnnotToolContentViewModel.Command.cs
  40. 1 1
      PDF Office/ViewModels/Tools/AnnotToolContentViewModel.Function.cs
  41. 36 33
      PDF Office/ViewModels/Tools/AnnotToolContentViewModel.Layout.cs
  42. 15 5
      PDF Office/ViewModels/Tools/AnnotToolContentViewModel.cs
  43. 5 0
      PDF Office/ViewModels/Tools/ToolsBarContentViewModel.cs
  44. 11 5
      PDF Office/ViewModels/ViewContentViewModel.cs
  45. 12 7
      PDF Office/Views/BOTA/BookmarkContent.xaml.cs
  46. 8 4
      PDF Office/Views/Dialog/ServiceDialog/CodeRegion.xaml
  47. 11 7
      PDF Office/Views/Dialog/ServiceDialog/LoginPasswordRegion.xaml
  48. 7 5
      PDF Office/Views/Dialog/ServiceDialog/LoginRegion.xaml
  49. 3 3
      PDF Office/Views/Dialog/ServiceDialog/NOInternetRegion.xaml
  50. 2 2
      PDF Office/Views/Dialog/ServiceDialog/PasswordUpdataRegion.xaml
  51. 2 2
      PDF Office/Views/Dialog/ServiceDialog/RegisterOKRegion.xaml
  52. 14 7
      PDF Office/Views/Dialog/ServiceDialog/RegisterRegion.xaml
  53. 3 3
      PDF Office/Views/Dialog/ServiceDialog/UserDialog.xaml
  54. 4 5
      PDF Office/Views/Dialog/ServiceDialog/UserOutingLogin.xaml
  55. 14 6
      PDF Office/Views/MainWindow.xaml

BIN
PDF Office/ComPDFKit.Desk.dll


BIN
PDF Office/ComPDFKit.Viewer.dll


+ 68 - 9
PDF Office/Helper/CropPageUndoManager.cs

@@ -1,4 +1,6 @@
-using ComPDFKitViewer;
+using ComPDFKit.Import;
+using ComPDFKit.PDFPage;
+using ComPDFKitViewer;
 using ComPDFKitViewer.PdfViewer;
 using Microsoft.Office.Core;
 using System;
@@ -6,6 +8,7 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using System.Windows;
 
 namespace PDF_Master.Helper
 {
@@ -15,6 +18,60 @@ namespace PDF_Master.Helper
         CropAllPagesWM
     }
 
+    public class AreaCropPageUndoManager : IHistory
+    {
+        private CPDFViewer pdfviewer = null;
+
+        private List<Tuple<List<int>, Rect,Size>> history = new List<Tuple<List<int>, Rect, Size>>();
+
+        private int historyIndex = -1;
+
+        public AreaCropPageUndoManager(CPDFViewer pDFViewer) {
+            pdfviewer = pDFViewer;
+        }
+
+       
+
+        public void ADDAreaCropPage(List<int> pageindex, Rect rect,Size pagesize)
+        {
+            historyIndex++;
+            history.Add(new Tuple<List<int>, Rect, Size>(pageindex, rect, pagesize));
+        }
+
+        public bool Redo()
+        {
+            historyIndex++;
+            if (historyIndex < history.Count)
+            {
+                pdfviewer?.CropPage(CPDFDisplayBox.CropBox, history[historyIndex].Item2, history[historyIndex].Item1);
+                pdfviewer.UndoManager.CanSave = true;
+                return true;
+            }
+            else
+            {
+                return false;
+            }
+
+        }
+
+        public bool Undo()
+        {
+            if (historyIndex > -1)
+            {
+                Rect newRect =new Rect( -history[historyIndex].Item2.Left, -history[historyIndex].Item2.Top, history[historyIndex].Item3.Width+ history[historyIndex].Item2.Left, history[historyIndex].Item3.Height + history[historyIndex].Item2.Top);
+                pdfviewer?.CropPage(CPDFDisplayBox.CropBox, newRect, history[historyIndex].Item1);
+                historyIndex--;
+                pdfviewer.UndoManager.CanSave = true;
+                return true;
+            }
+            else
+            {
+                return false;
+            }
+
+        }
+    }
+
     public class CropPageUndoManager : IHistory
     {
         public List<int> cropPageList = new List<int>();
@@ -43,8 +100,8 @@ namespace PDF_Master.Helper
             cropPageEnumList.Insert(cropPageEnumIndex, CropPageEnum.CropCurrentPageWM);
             if (cropPageEnumIndex != cropPageEnumList.Count - 1)
             {
-                cropPageEnumList.RemoveRange(cropPageEnumIndex + 1, cropPageEnumList.Count - cropPageEnumIndex-1);
-                cropPageList.RemoveRange(cropPageList.Count - cropPageListInterval-1, cropPageListInterval);
+                cropPageEnumList.RemoveRange(cropPageEnumIndex + 1, cropPageEnumList.Count - cropPageEnumIndex - 1);
+                cropPageList.RemoveRange(cropPageList.Count - cropPageListInterval - 1, cropPageListInterval);
                 cropPageListInterval = 0;
             }
 
@@ -57,11 +114,11 @@ namespace PDF_Master.Helper
             cropPageEnumList.Insert(cropPageEnumIndex, CropPageEnum.CropAllPagesWM);
             if (cropPageEnumIndex != cropPageEnumList.Count - 1)
             {
-                cropPageEnumList.RemoveRange(cropPageEnumIndex+1, cropPageEnumList.Count - cropPageEnumIndex-1);
-                cropPageList.RemoveRange(cropPageList.Count - cropPageListInterval- pdfviewer.Document.PageCount, cropPageListInterval);
+                cropPageEnumList.RemoveRange(cropPageEnumIndex + 1, cropPageEnumList.Count - cropPageEnumIndex - 1);
+                cropPageList.RemoveRange(cropPageList.Count - cropPageListInterval - pdfviewer.Document.PageCount, cropPageListInterval);
                 cropPageListInterval = 0;
             }
-            
+
         }
 
         public void setPageList(List<int> CropPageList)
@@ -72,12 +129,13 @@ namespace PDF_Master.Helper
         public bool Redo()
         {
             cropPageEnumIndex++;
-            if (cropPageEnumIndex < cropPageEnumList.Count )
+            if (cropPageEnumIndex < cropPageEnumList.Count)
             {
-                
+
                 if (cropPageEnumList[cropPageEnumIndex] == CropPageEnum.CropAllPagesWM) { cropPageListInterval -= pdfviewer.Document.PageCount; } else { cropPageListInterval--; }
-                
+
                 if (cropPageList.Count - cropPageListInterval == 0) { pdfviewer.SetCropMode(false); } else { pdfviewer.SetCropMode(true, cropPageList.GetRange(0, cropPageList.Count - cropPageListInterval)); }
+                pdfviewer.UndoManager.CanSave = true;
                 return true;
             }
             else
@@ -101,6 +159,7 @@ namespace PDF_Master.Helper
                 if (cropPageList.Count - cropPageListInterval == 0) { pdfviewer.SetCropMode(false); } else { pdfviewer.SetCropMode(true, cropPageList.GetRange(0, cropPageList.Count - cropPageListInterval)); }
 
                 cropPageEnumIndex--;
+                pdfviewer.UndoManager.CanSave = true;
                 return true;
             }
             else

+ 377 - 0
PDF Office/Helper/ErrorCodeHelper.cs

@@ -0,0 +1,377 @@
+using Prism.Mvvm;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace PDF_Master.Helper
+{
+    public class ErrorCodeHelper : BindableBase
+    {
+
+        #region 文案
+
+        private string _code301 = "";
+
+        public string code301
+        {
+            get { return _code301; }
+            set
+            {
+                SetProperty(ref _code301, value);
+            }
+        }
+
+        private string _code302 = "";
+
+        public string code302
+        {
+            get { return _code302; }
+            set
+            {
+                SetProperty(ref _code302, value);
+            }
+        }
+
+
+        private string _code304 = "";
+        public string code304
+        {
+            get { return _code304; }
+            set
+            {
+                SetProperty(ref _code304, value);
+            }
+        }
+
+
+        private string _code305 = "";
+        public string code305
+        {
+            get { return _code305; }
+            set
+            {
+                SetProperty(ref _code305, value);
+            }
+        }
+
+        private string _code306 = "";
+        public string code306
+        {
+            get { return _code306; }
+            set
+            {
+                SetProperty(ref _code306, value);
+            }
+        }
+
+        private string _code307 = "";
+        public string code307
+        {
+            get { return _code307; }
+            set
+            {
+                SetProperty(ref _code307, value);
+            }
+        }
+
+        private string _code308 = "";
+        public string code308
+        {
+            get { return _code308; }
+            set
+            {
+                SetProperty(ref _code308, value);
+            }
+        }
+
+        private string _code309 = "";
+        public string code309
+        {
+            get { return _code309; }
+            set
+            {
+                SetProperty(ref _code309, value);
+            }
+        }
+
+        private string _code310 = "";
+        public string code310
+        {
+            get { return _code310; }
+            set
+            {
+                SetProperty(ref _code310, value);
+            }
+        }
+
+        private string _code311 = "";
+        public string code311
+        {
+            get { return _code311; }
+            set
+            {
+                SetProperty(ref _code311, value);
+            }
+        }
+
+        private string _code312 = "";
+        public string code312
+        {
+            get { return _code312; }
+            set
+            {
+                SetProperty(ref _code312, value);
+            }
+        }
+
+        private string _code313 = "";
+        public string code313
+        {
+            get { return _code313; }
+            set
+            {
+                SetProperty(ref _code313, value);
+            }
+        }
+
+        private string _code314 = "";
+        public string code314
+        {
+            get { return _code314; }
+            set
+            {
+                SetProperty(ref _code314, value);
+            }
+        }
+
+        private string _code315 = "";
+        public string code315
+        {
+            get { return _code315; }
+            set
+            {
+                SetProperty(ref _code315, value);
+            }
+        }
+
+        private string _code316 = "";
+        public string code316
+        {
+            get { return _code316; }
+            set
+            {
+                SetProperty(ref _code316, value);
+            }
+        }
+
+        private string _code317 = "";
+        public string code317
+        {
+            get { return _code317; }
+            set
+            {
+                SetProperty(ref _code317, value);
+            }
+        }
+
+        private string _code318 = "";
+        public string code318
+        {
+            get { return _code318; }
+            set
+            {
+                SetProperty(ref _code318, value);
+            }
+        }
+
+        private string _code319 = "";
+        public string code319
+        {
+            get { return _code319; }
+            set
+            {
+                SetProperty(ref _code319, value);
+            }
+        }
+
+        private string _code320 = "";
+        public string code320
+        {
+            get { return _code320; }
+            set
+            {
+                SetProperty(ref _code320, value);
+            }
+        }
+
+        private string _code321 = "";
+        public string code321
+        {
+            get { return _code321; }
+            set
+            {
+                SetProperty(ref _code321, value);
+            }
+        }
+
+        private string _code322 = "";
+        public string code322
+        {
+            get { return _code322; }
+            set
+            {
+                SetProperty(ref _code322, value);
+            }
+        }
+
+        private string _code323 = "";
+        public string code323
+        {
+            get { return _code323; }
+            set
+            {
+                SetProperty(ref _code323, value);
+            }
+        }
+
+        private string _code324 = "";
+        public string code324
+        {
+            get { return _code324; }
+            set
+            {
+                SetProperty(ref _code324, value);
+            }
+        }
+
+        private string _code325 = "";
+        public string code325
+        {
+            get { return _code325; }
+            set
+            {
+                SetProperty(ref _code325, value);
+            }
+        }
+
+        private string _code326 = "";
+        public string code326
+        {
+            get { return _code326; }
+            set
+            {
+                SetProperty(ref _code326, value);
+            }
+        }
+
+        private string _code300 = "";
+        public string code300
+        {
+            get { return _code300; }
+            set
+            {
+                SetProperty(ref _code300, value);
+            }
+        }
+        public void InitString()
+        {
+            
+            code301 = App.ServiceLoader.GetString("code301");
+            code302 = App.ServiceLoader.GetString("code302");
+            code304 = App.ServiceLoader.GetString("code304");
+            code305 = App.ServiceLoader.GetString("code305");
+            code306 = App.ServiceLoader.GetString("code306");
+            code307 = App.ServiceLoader.GetString("code307");
+            code308 = App.ServiceLoader.GetString("code308");
+            code309 = App.ServiceLoader.GetString("code309");
+            code310 = App.ServiceLoader.GetString("code310");
+            code311 = App.ServiceLoader.GetString("code311");
+            code312 = App.ServiceLoader.GetString("code312");
+            code313 = App.ServiceLoader.GetString("code313");
+            code314 = App.ServiceLoader.GetString("code314");
+            code315 = App.ServiceLoader.GetString("code315");
+            code316 = App.ServiceLoader.GetString("code316");
+            code317 = App.ServiceLoader.GetString("code317");
+            code318 = App.ServiceLoader.GetString("code318");
+            code319 = App.ServiceLoader.GetString("code319");
+            code320 = App.ServiceLoader.GetString("code320");
+            code321 = App.ServiceLoader.GetString("code321");
+            code322 = App.ServiceLoader.GetString("code322");
+            code323 = App.ServiceLoader.GetString("code323");
+            code324 = App.ServiceLoader.GetString("code324");
+            code325 = App.ServiceLoader.GetString("code325");
+            code326 = App.ServiceLoader.GetString("code326");
+            code300 = App.ServiceLoader.GetString("code300");
+
+        }
+
+        
+
+        public  string  Ercode( string code)
+        {
+            InitString();
+
+
+            if (code == "200")
+                return "success";
+            else if (code == "301")
+                return code301;
+            else if (code == "302")
+                return code302;
+            else if (code == "304")
+                return code304;
+            else if (code == "305")
+                return code305;
+            else if (code == "306")
+                return code306;
+            else if (code == "307")
+                return code307;
+            else if (code == "308")
+                return code308;
+            else if (code == "309")
+                return code309;
+            else if (code == "310")
+                return code310;
+            else if (code == "311")
+                return code311;
+            else if (code == "312")
+                return code312;
+            else if (code == "313")
+                return code313;
+            else if (code == "314")
+                return code314;
+            else if (code == "315")
+                return code315;
+            else if (code == "316")
+                return code316;
+            else if (code == "317")
+                return code317;
+            else if (code == "318")
+                return code318;
+            else if (code == "319")
+                return code319;
+            else if (code == "320")
+                return code320;
+            else if (code == "321")
+                return code321;
+            else if (code == "322")
+                return code322;
+            else if (code == "323")
+                return code323;
+            else if (code == "324")
+                return code324;
+            else if (code == "325")
+                return code325;
+            else if (code == "326")
+                return code326;
+            else
+                return code300;
+        }
+
+
+        #endregion
+
+    }
+}

+ 1 - 2
PDF Office/Helper/SecurityHelper.cs

@@ -121,8 +121,7 @@ namespace PDF_Master.Helper
             dialogService.ShowDialog(DialogNames.CheckPasswordDialog, value, e =>
             {
                 verifyPasswordResult.IsDiscryptied = e.Parameters.GetValue<bool>(ParameterNames.PasswordResult);
-                verifyPasswordResult.Password = e.Parameters.GetValue<string>(ParameterNames.Password);
-                
+                verifyPasswordResult.Password = e.Parameters.GetValue<string>(ParameterNames.Password); 
             });
             return verifyPasswordResult;
         }

+ 23 - 17
PDF Office/Helper/ServiceHelper.cs

@@ -35,6 +35,8 @@ namespace PDF_Master.Helper
         public static string AppCode = "com.brother.pdfreaderprofree.windows";
         public static string RequestHost = "http://139.196.160.101:8081";
 
+
+
         //验证邮箱
         public static string OKemailUrl = "/pdf-office-sso/auth/validUser";
 
@@ -62,6 +64,12 @@ namespace PDF_Master.Helper
         //获取用户信息
         public static string GetUserUrl = "/pdf-office-sso/user/me";
 
+
+       
+
+
+
+
         private static string computerInfo;
         /// <summary>
         /// 电脑品牌信息
@@ -266,7 +274,7 @@ namespace PDF_Master.Helper
            }
             catch
             {
-                return "NOINT";
+                return "300";
             }
            
                
@@ -326,14 +334,14 @@ namespace PDF_Master.Helper
                     {
                         request.Abort();
                     }
-                    return jobject["msg"].ToObject<string>().ToLower();
+                    return jobject["code"].ToObject<string>().ToLower();
 
 
                 }
             }
             catch
             {
-                return "网络不稳定请重试";
+                return "300";
             }
            
         }
@@ -412,13 +420,13 @@ namespace PDF_Master.Helper
                     {
                         request.Abort();
                     }
-                    return jobject["msg"].ToObject<string>().ToLower();
+                    return jobject["code"].ToObject<string>().ToLower();
 
                 }
             }
             catch
             {
-                return "网络不稳定请重试";
+                return "300";
             }
            
         }
@@ -478,20 +486,20 @@ namespace PDF_Master.Helper
                         request.Abort();
                     }
 
-                    if (jobject["msg"].ToObject<string>().ToLower() == "success")
+                    if (jobject["code"].ToObject<string>().ToLower() == "200")
                     {
                         App.IsLogin =true;
                         access_token = jobject["result"]["access_token"].ToObject<string>().ToLower();
                         Settings.Default.AppProperties.LoginToken = jobject["result"]["access_token"].ToObject<string>().ToLower();
                         Settings.Default.Save();
                     }
-                    return jobject["msg"].ToObject<string>().ToLower();
+                    return jobject["code"].ToObject<string>().ToLower();
 
                 }
             }
             catch
             {
-                return "网络不稳定请重试";
+                return "300";
             }
           
         }
@@ -517,8 +525,6 @@ namespace PDF_Master.Helper
                     Console.WriteLine(responseData);
                     reader.Close();
                     JObject jobject = (JObject)JsonConvert.DeserializeObject(responseData);
-                    outlogin = jobject["msg"].ToObject<string>().ToLower();
-
                     if (response != null)
                     {
                         response.Close();
@@ -527,20 +533,20 @@ namespace PDF_Master.Helper
                     {
                         request.Abort();
                     }
-                    if (jobject["msg"].ToObject<string>().ToLower() == "success")
+                    if (jobject["code"].ToObject<string>().ToLower() == "200")
                     {
                         App.IsLogin = true;
                         access_token = jobject["result"]["access_token"].ToObject<string>().ToLower();
                         Settings.Default.AppProperties.LoginToken = jobject["result"]["access_token"].ToObject<string>().ToLower();
                         Settings.Default.Save();
                     }
-                    return jobject["msg"].ToObject<string>().ToLower();
+                    return jobject["code"].ToObject<string>().ToLower();
 
                 }
             }
             catch
             {
-                return "网络不稳定请重试";
+                return "300";
             }
            
         }
@@ -619,7 +625,7 @@ namespace PDF_Master.Helper
                         request.Abort();
                     }
 
-                    return jobject["msg"].ToObject<string>().ToLower();
+                    return jobject["code"].ToObject<string>().ToLower();
 
 
 
@@ -627,7 +633,7 @@ namespace PDF_Master.Helper
             }
             catch
             {
-                return "网络不稳定请重试";
+                return "300";
             }
            
         }
@@ -688,7 +694,7 @@ namespace PDF_Master.Helper
                     {
                         request.Abort();
                     }
-                    return jobject["msg"].ToObject<string>().ToLower();
+                    return jobject["code"].ToObject<string>().ToLower();
 
 
                 }
@@ -696,7 +702,7 @@ namespace PDF_Master.Helper
             }
             catch
             {
-                return "网络不稳定请重试";
+                return "300";
             }
            
         }

+ 2 - 0
PDF Office/Model/ParameterNames.cs

@@ -44,6 +44,8 @@ namespace PDF_Master.Model
 
         public static string PasswordInfo = "PasswordInfo";
 
+        public static string Tag = "Tag";
+
         /// <summary>
         /// 页码集合
         /// </summary>

+ 274 - 1
PDF Office/MultilingualResources/PDF Office.en.xlf

@@ -5,7 +5,280 @@
       <tool tool-id="MultilingualAppToolkit" tool-name="Multilingual App Toolkit" tool-version="4.1.12.0" tool-company="Microsoft" />
     </header>
     <body>
-      <group id="PDF MASTER/STRINGS/SERVICE/SERVICE.RESX" datatype="resx" />
+      <group id="PDF MASTER/STRINGS/SERVICE/SERVICE.RESX" datatype="resx">
+        <trans-unit id="Msgtologin" translate="yes" xml:space="preserve">
+          <source>Enjoy Advanced Features</source>
+          <target state="new">Enjoy Advanced Features</target>
+        </trans-unit>
+        <trans-unit id="RegisterEmailMsg" translate="yes" xml:space="preserve">
+          <source>Enter email address</source>
+          <target state="new">Enter email address</target>
+        </trans-unit>
+        <trans-unit id="RegisterNextStep" translate="yes" xml:space="preserve">
+          <source>Next Step</source>
+          <target state="new">Next Step</target>
+        </trans-unit>
+        <trans-unit id="RegisterPasswordMsg" translate="yes" xml:space="preserve">
+          <source>Enter your password</source>
+          <target state="new">Enter your password</target>
+        </trans-unit>
+        <trans-unit id="Registertext1" translate="yes" xml:space="preserve">
+          <source>Already have an account?</source>
+          <target state="new">Already have an account?</target>
+        </trans-unit>
+        <trans-unit id="Text_Signup" translate="yes" xml:space="preserve">
+          <source>Sign Up</source>
+          <target state="new">Sign Up</target>
+        </trans-unit>
+        <trans-unit id="Text_and" translate="yes" xml:space="preserve">
+          <source>and</source>
+          <target state="new">and</target>
+        </trans-unit>
+        <trans-unit id="Text_licens" translate="yes" xml:space="preserve">
+          <source>License Agreement</source>
+          <target state="new">License Agreement</target>
+        </trans-unit>
+        <trans-unit id="Text_Login" translate="yes" xml:space="preserve">
+          <source>Log In</source>
+          <target state="new">Log In</target>
+        </trans-unit>
+        <trans-unit id="Text_privary" translate="yes" xml:space="preserve">
+          <source>Privacy Policy</source>
+          <target state="new">Privacy Policy</target>
+        </trans-unit>
+        <trans-unit id="Text_remsg" translate="yes" xml:space="preserve">
+          <source>By registering, you agree to the</source>
+          <target state="new">By registering, you agree to the</target>
+        </trans-unit>
+        <trans-unit id="Codemax" translate="yes" xml:space="preserve">
+          <source>Up to 24 characters</source>
+          <target state="new">Up to 24 characters</target>
+        </trans-unit>
+        <trans-unit id="Codemin" translate="yes" xml:space="preserve">
+          <source>At least 6 characters</source>
+          <target state="new">At least 6 characters</target>
+        </trans-unit>
+        <trans-unit id="Mailerr" translate="yes" xml:space="preserve">
+          <source>Please enter a valid email</source>
+          <target state="new">Please enter a valid email</target>
+        </trans-unit>
+        <trans-unit id="Text_getstart" translate="yes" xml:space="preserve">
+          <source>Getting Started</source>
+          <target state="new">Getting Started</target>
+        </trans-unit>
+        <trans-unit id="Text_regisuccess" translate="yes" xml:space="preserve">
+          <source>Register successfully</source>
+          <target state="new">Register successfully</target>
+        </trans-unit>
+        <trans-unit id="Text_back" translate="yes" xml:space="preserve">
+          <source>Back to previous step</source>
+          <target state="new">Back to previous step</target>
+        </trans-unit>
+        <trans-unit id="Text_novcode" translate="yes" xml:space="preserve">
+          <source>Didn't receive the verification code?</source>
+          <target state="new">Didn't receive the verification code?</target>
+        </trans-unit>
+        <trans-unit id="Text_recode" translate="yes" xml:space="preserve">
+          <source>Resend Code</source>
+          <target state="new">Resend Code</target>
+        </trans-unit>
+        <trans-unit id="Text_toocode" translate="yes" xml:space="preserve">
+          <source>Reset Password</source>
+          <target state="new">Reset Password</target>
+        </trans-unit>
+        <trans-unit id="Text_vcode" translate="yes" xml:space="preserve">
+          <source>Enter the verification code</source>
+          <target state="new">Enter the verification code</target>
+        </trans-unit>
+        <trans-unit id="LoginPasswordMsg" translate="yes" xml:space="preserve">
+          <source>Enter new password again</source>
+          <target state="new">Enter new password again</target>
+        </trans-unit>
+        <trans-unit id="LoginPasswordMsg2" translate="yes" xml:space="preserve">
+          <source>Enter new password</source>
+          <target state="new">Enter new password</target>
+        </trans-unit>
+        <trans-unit id="Text_admail" translate="yes" xml:space="preserve">
+          <source>E-mail Address</source>
+          <target state="new">E-mail Address</target>
+        </trans-unit>
+        <trans-unit id="Text_chmail" translate="yes" xml:space="preserve">
+          <source>Change Email</source>
+          <target state="new">Change Email</target>
+        </trans-unit>
+        <trans-unit id="Text_emailac" translate="yes" xml:space="preserve">
+          <source>Enter email account</source>
+          <target state="new">Enter email account</target>
+        </trans-unit>
+        <trans-unit id="Text_forgetpass" translate="yes" xml:space="preserve">
+          <source>Forgot your password?</source>
+          <target state="new">Forgot your password?</target>
+        </trans-unit>
+        <trans-unit id="Text_logout" translate="yes" xml:space="preserve">
+          <source>Log Out</source>
+          <target state="new">Log Out</target>
+        </trans-unit>
+        <trans-unit id="Text_no" translate="yes" xml:space="preserve">
+          <source>No</source>
+          <target state="new">No</target>
+        </trans-unit>
+        <trans-unit id="Text_noacc" translate="yes" xml:space="preserve">
+          <source>Dont’t have an account yet?</source>
+          <target state="new">Dont’t have an account yet?</target>
+        </trans-unit>
+        <trans-unit id="Text_nonet" translate="yes" xml:space="preserve">
+          <source>No Network Detected</source>
+          <target state="new">No Network Detected</target>
+        </trans-unit>
+        <trans-unit id="Text_ok" translate="yes" xml:space="preserve">
+          <source>OK</source>
+          <target state="new">OK</target>
+        </trans-unit>
+        <trans-unit id="Text_retry" translate="yes" xml:space="preserve">
+          <source>Retry</source>
+          <target state="new">Retry</target>
+        </trans-unit>
+        <trans-unit id="Text_toconnect" translate="yes" xml:space="preserve">
+          <source>To access your files, please connect to the internet and try again.</source>
+          <target state="new">To access your files, please connect to the internet and try again.</target>
+        </trans-unit>
+        <trans-unit id="Text_useracc" translate="yes" xml:space="preserve">
+          <source>Account Information</source>
+          <target state="new">Account Information</target>
+        </trans-unit>
+        <trans-unit id="Text_useroutinglogin" translate="yes" xml:space="preserve">
+          <source>Unable to Log In</source>
+          <target state="new">Unable to Log In</target>
+        </trans-unit>
+        <trans-unit id="Text_useroutingloginmsg1" translate="yes" xml:space="preserve">
+          <source>Your account is currently being logged out and cannot be logged in.                                                                                  If you have questions, please </source>
+          <target state="new">Your account is currently being logged out and cannot be logged in.                                                                                  If you have questions, please </target>
+        </trans-unit>
+        <trans-unit id="Text_useroutingloginmsg2" translate="yes" xml:space="preserve">
+          <source>contact customer service</source>
+          <target state="new">contact customer service</target>
+        </trans-unit>
+        <trans-unit id="Text_useroutmsg" translate="yes" xml:space="preserve">
+          <source>Cancellation cannot be withdrawn, it will be completed within 3 working days, until then your account will be frozen and cannot be logged in, are you sure you want to delete your account?</source>
+          <target state="new">Cancellation cannot be withdrawn, it will be completed within 3 working days, until then your account will be frozen and cannot be logged in, are you sure you want to delete your account?</target>
+        </trans-unit>
+        <trans-unit id="Text_userouttol" translate="yes" xml:space="preserve">
+          <source>Are you sure you want to cancel your account?</source>
+          <target state="new">Are you sure you want to cancel your account?</target>
+        </trans-unit>
+        <trans-unit id="Text_yes" translate="yes" xml:space="preserve">
+          <source>Yes</source>
+          <target state="new">Yes</target>
+        </trans-unit>
+        <trans-unit id="LoginPasswordMsg0" translate="yes" xml:space="preserve">
+          <source>Enter password</source>
+          <target state="new">Enter password</target>
+        </trans-unit>
+        <trans-unit id="code300" translate="yes" xml:space="preserve">
+          <source>Network error</source>
+          <target state="new">Network error</target>
+        </trans-unit>
+        <trans-unit id="code301" translate="yes" xml:space="preserve">
+          <source>Graphic verification code error</source>
+          <target state="new">Graphic verification code error</target>
+        </trans-unit>
+        <trans-unit id="code302" translate="yes" xml:space="preserve">
+          <source>Email address is not registered</source>
+          <target state="new">Email address is not registered</target>
+        </trans-unit>
+        <trans-unit id="code304" translate="yes" xml:space="preserve">
+          <source>Invalid token or token has expired</source>
+          <target state="new">Invalid token or token has expired</target>
+        </trans-unit>
+        <trans-unit id="code305" translate="yes" xml:space="preserve">
+          <source>You have reached the maximum number of devices, please log out of other devices and log in again</source>
+          <target state="new">You have reached the maximum number of devices, please log out of other devices and log in again</target>
+        </trans-unit>
+        <trans-unit id="code306" translate="yes" xml:space="preserve">
+          <source>User is not logged in. Please log in and try again.</source>
+          <target state="new">User is not logged in. Please log in and try again.</target>
+        </trans-unit>
+        <trans-unit id="code307" translate="yes" xml:space="preserve">
+          <source>Failed to obtain authorization code</source>
+          <target state="new">Failed to obtain authorization code</target>
+        </trans-unit>
+        <trans-unit id="code308" translate="yes" xml:space="preserve">
+          <source>Failed to obtain token</source>
+          <target state="new">Failed to obtain token</target>
+        </trans-unit>
+        <trans-unit id="code309" translate="yes" xml:space="preserve">
+          <source>Email code error!</source>
+          <target state="new">Email code error!</target>
+        </trans-unit>
+        <trans-unit id="code310" translate="yes" xml:space="preserve">
+          <source>Register error!</source>
+          <target state="new">Register error!</target>
+        </trans-unit>
+        <trans-unit id="code311" translate="yes" xml:space="preserve">
+          <source>The password is incorrect, please re-enter it</source>
+          <target state="new">The password is incorrect, please re-enter it</target>
+        </trans-unit>
+        <trans-unit id="code312" translate="yes" xml:space="preserve">
+          <source>Incorrect code</source>
+          <target state="new">Incorrect code</target>
+        </trans-unit>
+        <trans-unit id="code313" translate="yes" xml:space="preserve">
+          <source>Code send error</source>
+          <target state="new">Code send error</target>
+        </trans-unit>
+        <trans-unit id="code314" translate="yes" xml:space="preserve">
+          <source>Mail send error</source>
+          <target state="new">Mail send error</target>
+        </trans-unit>
+        <trans-unit id="code315" translate="yes" xml:space="preserve">
+          <source>Too many codes sent, please try again later</source>
+          <target state="new">Too many codes sent, please try again later</target>
+        </trans-unit>
+        <trans-unit id="code316" translate="yes" xml:space="preserve">
+          <source>This email is already registered, please login</source>
+          <target state="new">This email is already registered, please login</target>
+        </trans-unit>
+        <trans-unit id="code317" translate="yes" xml:space="preserve">
+          <source>This account is not registered, click Sign Up to create a new account</source>
+          <target state="new">This account is not registered, click Sign Up to create a new account</target>
+        </trans-unit>
+        <trans-unit id="code318" translate="yes" xml:space="preserve">
+          <source>Your account is currently being cancelled and cannot be logged in. If you have any questions, please contact customer service</source>
+          <target state="new">Your account is currently being cancelled and cannot be logged in. If you have any questions, please contact customer service</target>
+        </trans-unit>
+        <trans-unit id="code319" translate="yes" xml:space="preserve">
+          <source>Please enter a valid email address</source>
+          <target state="new">Please enter a valid email address</target>
+        </trans-unit>
+        <trans-unit id="code320" translate="yes" xml:space="preserve">
+          <source>Passwords are different. Please re-enter them.</source>
+          <target state="new">Passwords are different. Please re-enter them.</target>
+        </trans-unit>
+        <trans-unit id="code321" translate="yes" xml:space="preserve">
+          <source>At least 6 characters</source>
+          <target state="new">At least 6 characters</target>
+        </trans-unit>
+        <trans-unit id="code322" translate="yes" xml:space="preserve">
+          <source>Up to 24 characters</source>
+          <target state="new">Up to 24 characters</target>
+        </trans-unit>
+        <trans-unit id="code323" translate="yes" xml:space="preserve">
+          <source>Please add auth config</source>
+          <target state="new">Please add auth config</target>
+        </trans-unit>
+        <trans-unit id="code324" translate="yes" xml:space="preserve">
+          <source>You are still in the subscription and cannot log out. Please click Cancel Account after the subscription period ends</source>
+          <target state="new">You are still in the subscription and cannot log out. Please click Cancel Account after the subscription period ends</target>
+        </trans-unit>
+        <trans-unit id="code325" translate="yes" xml:space="preserve">
+          <source>You are still in the subscription and cannot log out. Please click logout after the trial expired</source>
+          <target state="new">You are still in the subscription and cannot log out. Please click logout after the trial expired</target>
+        </trans-unit>
+        <trans-unit id="code326" translate="yes" xml:space="preserve">
+          <source>Time transfer error</source>
+          <target state="new">Time transfer error</target>
+        </trans-unit>
+      </group>
     </body>
   </file>
   <file datatype="xml" source-language="en-US" target-language="en" original="PDF MASTER/PROPERTIES/RESOURCES.RESX" tool-id="MultilingualAppToolkit" product-name="n/a" product-version="n/a" build-num="n/a">

+ 274 - 1
PDF Office/MultilingualResources/PDF Office.zh-Hans.xlf

@@ -5,7 +5,280 @@
       <tool tool-id="MultilingualAppToolkit" tool-name="Multilingual App Toolkit" tool-version="4.1.12.0" tool-company="Microsoft" />
     </header>
     <body>
-      <group id="PDF MASTER/STRINGS/SERVICE/SERVICE.RESX" datatype="resx" />
+      <group id="PDF MASTER/STRINGS/SERVICE/SERVICE.RESX" datatype="resx">
+        <trans-unit id="Msgtologin" translate="yes" xml:space="preserve">
+          <source>Enjoy Advanced Features</source>
+          <target state="new">Enjoy Advanced Features</target>
+        </trans-unit>
+        <trans-unit id="RegisterEmailMsg" translate="yes" xml:space="preserve">
+          <source>Enter email address</source>
+          <target state="new">Enter email address</target>
+        </trans-unit>
+        <trans-unit id="RegisterNextStep" translate="yes" xml:space="preserve">
+          <source>Next Step</source>
+          <target state="new">Next Step</target>
+        </trans-unit>
+        <trans-unit id="RegisterPasswordMsg" translate="yes" xml:space="preserve">
+          <source>Enter your password</source>
+          <target state="new">Enter your password</target>
+        </trans-unit>
+        <trans-unit id="Registertext1" translate="yes" xml:space="preserve">
+          <source>Already have an account?</source>
+          <target state="new">Already have an account?</target>
+        </trans-unit>
+        <trans-unit id="Text_Signup" translate="yes" xml:space="preserve">
+          <source>Sign Up</source>
+          <target state="new">Sign Up</target>
+        </trans-unit>
+        <trans-unit id="Text_and" translate="yes" xml:space="preserve">
+          <source>and</source>
+          <target state="new">and</target>
+        </trans-unit>
+        <trans-unit id="Text_licens" translate="yes" xml:space="preserve">
+          <source>License Agreement</source>
+          <target state="new">License Agreement</target>
+        </trans-unit>
+        <trans-unit id="Text_Login" translate="yes" xml:space="preserve">
+          <source>Log In</source>
+          <target state="new">Log In</target>
+        </trans-unit>
+        <trans-unit id="Text_privary" translate="yes" xml:space="preserve">
+          <source>Privacy Policy</source>
+          <target state="new">Privacy Policy</target>
+        </trans-unit>
+        <trans-unit id="Text_remsg" translate="yes" xml:space="preserve">
+          <source>By registering, you agree to the</source>
+          <target state="new">By registering, you agree to the</target>
+        </trans-unit>
+        <trans-unit id="Codemax" translate="yes" xml:space="preserve">
+          <source>Up to 24 characters</source>
+          <target state="new">Up to 24 characters</target>
+        </trans-unit>
+        <trans-unit id="Codemin" translate="yes" xml:space="preserve">
+          <source>At least 6 characters</source>
+          <target state="new">At least 6 characters</target>
+        </trans-unit>
+        <trans-unit id="Mailerr" translate="yes" xml:space="preserve">
+          <source>Please enter a valid email</source>
+          <target state="new">Please enter a valid email</target>
+        </trans-unit>
+        <trans-unit id="Text_getstart" translate="yes" xml:space="preserve">
+          <source>Getting Started</source>
+          <target state="new">Getting Started</target>
+        </trans-unit>
+        <trans-unit id="Text_regisuccess" translate="yes" xml:space="preserve">
+          <source>Register successfully</source>
+          <target state="new">Register successfully</target>
+        </trans-unit>
+        <trans-unit id="Text_back" translate="yes" xml:space="preserve">
+          <source>Back to previous step</source>
+          <target state="new">Back to previous step</target>
+        </trans-unit>
+        <trans-unit id="Text_novcode" translate="yes" xml:space="preserve">
+          <source>Didn't receive the verification code?</source>
+          <target state="new">Didn't receive the verification code?</target>
+        </trans-unit>
+        <trans-unit id="Text_recode" translate="yes" xml:space="preserve">
+          <source>Resend Code</source>
+          <target state="new">Resend Code</target>
+        </trans-unit>
+        <trans-unit id="Text_toocode" translate="yes" xml:space="preserve">
+          <source>Reset Password</source>
+          <target state="new">Reset Password</target>
+        </trans-unit>
+        <trans-unit id="Text_vcode" translate="yes" xml:space="preserve">
+          <source>Enter the verification code</source>
+          <target state="new">Enter the verification code</target>
+        </trans-unit>
+        <trans-unit id="LoginPasswordMsg" translate="yes" xml:space="preserve">
+          <source>Enter new password again</source>
+          <target state="new">Enter new password again</target>
+        </trans-unit>
+        <trans-unit id="LoginPasswordMsg2" translate="yes" xml:space="preserve">
+          <source>Enter new password</source>
+          <target state="new">Enter new password</target>
+        </trans-unit>
+        <trans-unit id="Text_admail" translate="yes" xml:space="preserve">
+          <source>E-mail Address</source>
+          <target state="new">E-mail Address</target>
+        </trans-unit>
+        <trans-unit id="Text_chmail" translate="yes" xml:space="preserve">
+          <source>Change Email</source>
+          <target state="new">Change Email</target>
+        </trans-unit>
+        <trans-unit id="Text_emailac" translate="yes" xml:space="preserve">
+          <source>Enter email account</source>
+          <target state="new">Enter email account</target>
+        </trans-unit>
+        <trans-unit id="Text_forgetpass" translate="yes" xml:space="preserve">
+          <source>Forgot your password?</source>
+          <target state="new">Forgot your password?</target>
+        </trans-unit>
+        <trans-unit id="Text_logout" translate="yes" xml:space="preserve">
+          <source>Log Out</source>
+          <target state="new">Log Out</target>
+        </trans-unit>
+        <trans-unit id="Text_no" translate="yes" xml:space="preserve">
+          <source>No</source>
+          <target state="new">No</target>
+        </trans-unit>
+        <trans-unit id="Text_noacc" translate="yes" xml:space="preserve">
+          <source>Dont’t have an account yet?</source>
+          <target state="new">Dont’t have an account yet?</target>
+        </trans-unit>
+        <trans-unit id="Text_nonet" translate="yes" xml:space="preserve">
+          <source>No Network Detected</source>
+          <target state="new">No Network Detected</target>
+        </trans-unit>
+        <trans-unit id="Text_ok" translate="yes" xml:space="preserve">
+          <source>OK</source>
+          <target state="new">OK</target>
+        </trans-unit>
+        <trans-unit id="Text_retry" translate="yes" xml:space="preserve">
+          <source>Retry</source>
+          <target state="new">Retry</target>
+        </trans-unit>
+        <trans-unit id="Text_toconnect" translate="yes" xml:space="preserve">
+          <source>To access your files, please connect to the internet and try again.</source>
+          <target state="new">To access your files, please connect to the internet and try again.</target>
+        </trans-unit>
+        <trans-unit id="Text_useracc" translate="yes" xml:space="preserve">
+          <source>Account Information</source>
+          <target state="new">Account Information</target>
+        </trans-unit>
+        <trans-unit id="Text_useroutinglogin" translate="yes" xml:space="preserve">
+          <source>Unable to Log In</source>
+          <target state="new">Unable to Log In</target>
+        </trans-unit>
+        <trans-unit id="Text_useroutingloginmsg1" translate="yes" xml:space="preserve">
+          <source>Your account is currently being logged out and cannot be logged in.                                                                                  If you have questions, please </source>
+          <target state="new">Your account is currently being logged out and cannot be logged in.                                                                                  If you have questions, please </target>
+        </trans-unit>
+        <trans-unit id="Text_useroutingloginmsg2" translate="yes" xml:space="preserve">
+          <source>contact customer service</source>
+          <target state="new">contact customer service</target>
+        </trans-unit>
+        <trans-unit id="Text_useroutmsg" translate="yes" xml:space="preserve">
+          <source>Cancellation cannot be withdrawn, it will be completed within 3 working days, until then your account will be frozen and cannot be logged in, are you sure you want to delete your account?</source>
+          <target state="new">Cancellation cannot be withdrawn, it will be completed within 3 working days, until then your account will be frozen and cannot be logged in, are you sure you want to delete your account?</target>
+        </trans-unit>
+        <trans-unit id="Text_userouttol" translate="yes" xml:space="preserve">
+          <source>Are you sure you want to cancel your account?</source>
+          <target state="new">Are you sure you want to cancel your account?</target>
+        </trans-unit>
+        <trans-unit id="Text_yes" translate="yes" xml:space="preserve">
+          <source>Yes</source>
+          <target state="new">Yes</target>
+        </trans-unit>
+        <trans-unit id="LoginPasswordMsg0" translate="yes" xml:space="preserve">
+          <source>Enter password</source>
+          <target state="new">Enter password</target>
+        </trans-unit>
+        <trans-unit id="code300" translate="yes" xml:space="preserve">
+          <source>Network error</source>
+          <target state="new">Network error</target>
+        </trans-unit>
+        <trans-unit id="code301" translate="yes" xml:space="preserve">
+          <source>Graphic verification code error</source>
+          <target state="new">Graphic verification code error</target>
+        </trans-unit>
+        <trans-unit id="code302" translate="yes" xml:space="preserve">
+          <source>Email address is not registered</source>
+          <target state="new">Email address is not registered</target>
+        </trans-unit>
+        <trans-unit id="code304" translate="yes" xml:space="preserve">
+          <source>Invalid token or token has expired</source>
+          <target state="new">Invalid token or token has expired</target>
+        </trans-unit>
+        <trans-unit id="code305" translate="yes" xml:space="preserve">
+          <source>You have reached the maximum number of devices, please log out of other devices and log in again</source>
+          <target state="new">You have reached the maximum number of devices, please log out of other devices and log in again</target>
+        </trans-unit>
+        <trans-unit id="code306" translate="yes" xml:space="preserve">
+          <source>User is not logged in. Please log in and try again.</source>
+          <target state="new">User is not logged in. Please log in and try again.</target>
+        </trans-unit>
+        <trans-unit id="code307" translate="yes" xml:space="preserve">
+          <source>Failed to obtain authorization code</source>
+          <target state="new">Failed to obtain authorization code</target>
+        </trans-unit>
+        <trans-unit id="code308" translate="yes" xml:space="preserve">
+          <source>Failed to obtain token</source>
+          <target state="new">Failed to obtain token</target>
+        </trans-unit>
+        <trans-unit id="code309" translate="yes" xml:space="preserve">
+          <source>Email code error!</source>
+          <target state="new">Email code error!</target>
+        </trans-unit>
+        <trans-unit id="code310" translate="yes" xml:space="preserve">
+          <source>Register error!</source>
+          <target state="new">Register error!</target>
+        </trans-unit>
+        <trans-unit id="code311" translate="yes" xml:space="preserve">
+          <source>The password is incorrect, please re-enter it</source>
+          <target state="new">The password is incorrect, please re-enter it</target>
+        </trans-unit>
+        <trans-unit id="code312" translate="yes" xml:space="preserve">
+          <source>Incorrect code</source>
+          <target state="new">Incorrect code</target>
+        </trans-unit>
+        <trans-unit id="code313" translate="yes" xml:space="preserve">
+          <source>Code send error</source>
+          <target state="new">Code send error</target>
+        </trans-unit>
+        <trans-unit id="code314" translate="yes" xml:space="preserve">
+          <source>Mail send error</source>
+          <target state="new">Mail send error</target>
+        </trans-unit>
+        <trans-unit id="code315" translate="yes" xml:space="preserve">
+          <source>Too many codes sent, please try again later</source>
+          <target state="new">Too many codes sent, please try again later</target>
+        </trans-unit>
+        <trans-unit id="code316" translate="yes" xml:space="preserve">
+          <source>This email is already registered, please login</source>
+          <target state="new">This email is already registered, please login</target>
+        </trans-unit>
+        <trans-unit id="code317" translate="yes" xml:space="preserve">
+          <source>This account is not registered, click Sign Up to create a new account</source>
+          <target state="new">This account is not registered, click Sign Up to create a new account</target>
+        </trans-unit>
+        <trans-unit id="code318" translate="yes" xml:space="preserve">
+          <source>Your account is currently being cancelled and cannot be logged in. If you have any questions, please contact customer service</source>
+          <target state="new">Your account is currently being cancelled and cannot be logged in. If you have any questions, please contact customer service</target>
+        </trans-unit>
+        <trans-unit id="code319" translate="yes" xml:space="preserve">
+          <source>Please enter a valid email address</source>
+          <target state="new">Please enter a valid email address</target>
+        </trans-unit>
+        <trans-unit id="code320" translate="yes" xml:space="preserve">
+          <source>Passwords are different. Please re-enter them.</source>
+          <target state="new">Passwords are different. Please re-enter them.</target>
+        </trans-unit>
+        <trans-unit id="code321" translate="yes" xml:space="preserve">
+          <source>At least 6 characters</source>
+          <target state="new">At least 6 characters</target>
+        </trans-unit>
+        <trans-unit id="code322" translate="yes" xml:space="preserve">
+          <source>Up to 24 characters</source>
+          <target state="new">Up to 24 characters</target>
+        </trans-unit>
+        <trans-unit id="code323" translate="yes" xml:space="preserve">
+          <source>Please add auth config</source>
+          <target state="new">Please add auth config</target>
+        </trans-unit>
+        <trans-unit id="code324" translate="yes" xml:space="preserve">
+          <source>You are still in the subscription and cannot log out. Please click Cancel Account after the subscription period ends</source>
+          <target state="new">You are still in the subscription and cannot log out. Please click Cancel Account after the subscription period ends</target>
+        </trans-unit>
+        <trans-unit id="code325" translate="yes" xml:space="preserve">
+          <source>You are still in the subscription and cannot log out. Please click logout after the trial expired</source>
+          <target state="new">You are still in the subscription and cannot log out. Please click logout after the trial expired</target>
+        </trans-unit>
+        <trans-unit id="code326" translate="yes" xml:space="preserve">
+          <source>Time transfer error</source>
+          <target state="new">Time transfer error</target>
+        </trans-unit>
+      </group>
     </body>
   </file>
   <file datatype="xml" source-language="en-US" target-language="zh-Hans" original="PDF MASTER/PROPERTIES/RESOURCES.RESX" tool-id="MultilingualAppToolkit" product-name="n/a" product-version="n/a" build-num="n/a">

+ 274 - 1
PDF Office/MultilingualResources/PDF Office.zh-Hant.xlf

@@ -5,7 +5,280 @@
       <tool tool-id="MultilingualAppToolkit" tool-name="Multilingual App Toolkit" tool-version="4.1.12.0" tool-company="Microsoft" />
     </header>
     <body>
-      <group id="PDF MASTER/STRINGS/SERVICE/SERVICE.RESX" datatype="resx" />
+      <group id="PDF MASTER/STRINGS/SERVICE/SERVICE.RESX" datatype="resx">
+        <trans-unit id="Msgtologin" translate="yes" xml:space="preserve">
+          <source>Enjoy Advanced Features</source>
+          <target state="new">Enjoy Advanced Features</target>
+        </trans-unit>
+        <trans-unit id="RegisterEmailMsg" translate="yes" xml:space="preserve">
+          <source>Enter email address</source>
+          <target state="new">Enter email address</target>
+        </trans-unit>
+        <trans-unit id="RegisterNextStep" translate="yes" xml:space="preserve">
+          <source>Next Step</source>
+          <target state="new">Next Step</target>
+        </trans-unit>
+        <trans-unit id="RegisterPasswordMsg" translate="yes" xml:space="preserve">
+          <source>Enter your password</source>
+          <target state="new">Enter your password</target>
+        </trans-unit>
+        <trans-unit id="Registertext1" translate="yes" xml:space="preserve">
+          <source>Already have an account?</source>
+          <target state="new">Already have an account?</target>
+        </trans-unit>
+        <trans-unit id="Text_Signup" translate="yes" xml:space="preserve">
+          <source>Sign Up</source>
+          <target state="new">Sign Up</target>
+        </trans-unit>
+        <trans-unit id="Text_and" translate="yes" xml:space="preserve">
+          <source>and</source>
+          <target state="new">and</target>
+        </trans-unit>
+        <trans-unit id="Text_licens" translate="yes" xml:space="preserve">
+          <source>License Agreement</source>
+          <target state="new">License Agreement</target>
+        </trans-unit>
+        <trans-unit id="Text_Login" translate="yes" xml:space="preserve">
+          <source>Log In</source>
+          <target state="new">Log In</target>
+        </trans-unit>
+        <trans-unit id="Text_privary" translate="yes" xml:space="preserve">
+          <source>Privacy Policy</source>
+          <target state="new">Privacy Policy</target>
+        </trans-unit>
+        <trans-unit id="Text_remsg" translate="yes" xml:space="preserve">
+          <source>By registering, you agree to the</source>
+          <target state="new">By registering, you agree to the</target>
+        </trans-unit>
+        <trans-unit id="Codemax" translate="yes" xml:space="preserve">
+          <source>Up to 24 characters</source>
+          <target state="new">Up to 24 characters</target>
+        </trans-unit>
+        <trans-unit id="Codemin" translate="yes" xml:space="preserve">
+          <source>At least 6 characters</source>
+          <target state="new">At least 6 characters</target>
+        </trans-unit>
+        <trans-unit id="Mailerr" translate="yes" xml:space="preserve">
+          <source>Please enter a valid email</source>
+          <target state="new">Please enter a valid email</target>
+        </trans-unit>
+        <trans-unit id="Text_getstart" translate="yes" xml:space="preserve">
+          <source>Getting Started</source>
+          <target state="new">Getting Started</target>
+        </trans-unit>
+        <trans-unit id="Text_regisuccess" translate="yes" xml:space="preserve">
+          <source>Register successfully</source>
+          <target state="new">Register successfully</target>
+        </trans-unit>
+        <trans-unit id="Text_back" translate="yes" xml:space="preserve">
+          <source>Back to previous step</source>
+          <target state="new">Back to previous step</target>
+        </trans-unit>
+        <trans-unit id="Text_novcode" translate="yes" xml:space="preserve">
+          <source>Didn't receive the verification code?</source>
+          <target state="new">Didn't receive the verification code?</target>
+        </trans-unit>
+        <trans-unit id="Text_recode" translate="yes" xml:space="preserve">
+          <source>Resend Code</source>
+          <target state="new">Resend Code</target>
+        </trans-unit>
+        <trans-unit id="Text_toocode" translate="yes" xml:space="preserve">
+          <source>Reset Password</source>
+          <target state="new">Reset Password</target>
+        </trans-unit>
+        <trans-unit id="Text_vcode" translate="yes" xml:space="preserve">
+          <source>Enter the verification code</source>
+          <target state="new">Enter the verification code</target>
+        </trans-unit>
+        <trans-unit id="LoginPasswordMsg" translate="yes" xml:space="preserve">
+          <source>Enter new password again</source>
+          <target state="new">Enter new password again</target>
+        </trans-unit>
+        <trans-unit id="LoginPasswordMsg2" translate="yes" xml:space="preserve">
+          <source>Enter new password</source>
+          <target state="new">Enter new password</target>
+        </trans-unit>
+        <trans-unit id="Text_admail" translate="yes" xml:space="preserve">
+          <source>E-mail Address</source>
+          <target state="new">E-mail Address</target>
+        </trans-unit>
+        <trans-unit id="Text_chmail" translate="yes" xml:space="preserve">
+          <source>Change Email</source>
+          <target state="new">Change Email</target>
+        </trans-unit>
+        <trans-unit id="Text_emailac" translate="yes" xml:space="preserve">
+          <source>Enter email account</source>
+          <target state="new">Enter email account</target>
+        </trans-unit>
+        <trans-unit id="Text_forgetpass" translate="yes" xml:space="preserve">
+          <source>Forgot your password?</source>
+          <target state="new">Forgot your password?</target>
+        </trans-unit>
+        <trans-unit id="Text_logout" translate="yes" xml:space="preserve">
+          <source>Log Out</source>
+          <target state="new">Log Out</target>
+        </trans-unit>
+        <trans-unit id="Text_no" translate="yes" xml:space="preserve">
+          <source>No</source>
+          <target state="new">No</target>
+        </trans-unit>
+        <trans-unit id="Text_noacc" translate="yes" xml:space="preserve">
+          <source>Dont’t have an account yet?</source>
+          <target state="new">Dont’t have an account yet?</target>
+        </trans-unit>
+        <trans-unit id="Text_nonet" translate="yes" xml:space="preserve">
+          <source>No Network Detected</source>
+          <target state="new">No Network Detected</target>
+        </trans-unit>
+        <trans-unit id="Text_ok" translate="yes" xml:space="preserve">
+          <source>OK</source>
+          <target state="new">OK</target>
+        </trans-unit>
+        <trans-unit id="Text_retry" translate="yes" xml:space="preserve">
+          <source>Retry</source>
+          <target state="new">Retry</target>
+        </trans-unit>
+        <trans-unit id="Text_toconnect" translate="yes" xml:space="preserve">
+          <source>To access your files, please connect to the internet and try again.</source>
+          <target state="new">To access your files, please connect to the internet and try again.</target>
+        </trans-unit>
+        <trans-unit id="Text_useracc" translate="yes" xml:space="preserve">
+          <source>Account Information</source>
+          <target state="new">Account Information</target>
+        </trans-unit>
+        <trans-unit id="Text_useroutinglogin" translate="yes" xml:space="preserve">
+          <source>Unable to Log In</source>
+          <target state="new">Unable to Log In</target>
+        </trans-unit>
+        <trans-unit id="Text_useroutingloginmsg1" translate="yes" xml:space="preserve">
+          <source>Your account is currently being logged out and cannot be logged in.                                                                                  If you have questions, please </source>
+          <target state="new">Your account is currently being logged out and cannot be logged in.                                                                                  If you have questions, please </target>
+        </trans-unit>
+        <trans-unit id="Text_useroutingloginmsg2" translate="yes" xml:space="preserve">
+          <source>contact customer service</source>
+          <target state="new">contact customer service</target>
+        </trans-unit>
+        <trans-unit id="Text_useroutmsg" translate="yes" xml:space="preserve">
+          <source>Cancellation cannot be withdrawn, it will be completed within 3 working days, until then your account will be frozen and cannot be logged in, are you sure you want to delete your account?</source>
+          <target state="new">Cancellation cannot be withdrawn, it will be completed within 3 working days, until then your account will be frozen and cannot be logged in, are you sure you want to delete your account?</target>
+        </trans-unit>
+        <trans-unit id="Text_userouttol" translate="yes" xml:space="preserve">
+          <source>Are you sure you want to cancel your account?</source>
+          <target state="new">Are you sure you want to cancel your account?</target>
+        </trans-unit>
+        <trans-unit id="Text_yes" translate="yes" xml:space="preserve">
+          <source>Yes</source>
+          <target state="new">Yes</target>
+        </trans-unit>
+        <trans-unit id="LoginPasswordMsg0" translate="yes" xml:space="preserve">
+          <source>Enter password</source>
+          <target state="new">Enter password</target>
+        </trans-unit>
+        <trans-unit id="code300" translate="yes" xml:space="preserve">
+          <source>Network error</source>
+          <target state="new">Network error</target>
+        </trans-unit>
+        <trans-unit id="code301" translate="yes" xml:space="preserve">
+          <source>Graphic verification code error</source>
+          <target state="new">Graphic verification code error</target>
+        </trans-unit>
+        <trans-unit id="code302" translate="yes" xml:space="preserve">
+          <source>Email address is not registered</source>
+          <target state="new">Email address is not registered</target>
+        </trans-unit>
+        <trans-unit id="code304" translate="yes" xml:space="preserve">
+          <source>Invalid token or token has expired</source>
+          <target state="new">Invalid token or token has expired</target>
+        </trans-unit>
+        <trans-unit id="code305" translate="yes" xml:space="preserve">
+          <source>You have reached the maximum number of devices, please log out of other devices and log in again</source>
+          <target state="new">You have reached the maximum number of devices, please log out of other devices and log in again</target>
+        </trans-unit>
+        <trans-unit id="code306" translate="yes" xml:space="preserve">
+          <source>User is not logged in. Please log in and try again.</source>
+          <target state="new">User is not logged in. Please log in and try again.</target>
+        </trans-unit>
+        <trans-unit id="code307" translate="yes" xml:space="preserve">
+          <source>Failed to obtain authorization code</source>
+          <target state="new">Failed to obtain authorization code</target>
+        </trans-unit>
+        <trans-unit id="code308" translate="yes" xml:space="preserve">
+          <source>Failed to obtain token</source>
+          <target state="new">Failed to obtain token</target>
+        </trans-unit>
+        <trans-unit id="code309" translate="yes" xml:space="preserve">
+          <source>Email code error!</source>
+          <target state="new">Email code error!</target>
+        </trans-unit>
+        <trans-unit id="code310" translate="yes" xml:space="preserve">
+          <source>Register error!</source>
+          <target state="new">Register error!</target>
+        </trans-unit>
+        <trans-unit id="code311" translate="yes" xml:space="preserve">
+          <source>The password is incorrect, please re-enter it</source>
+          <target state="new">The password is incorrect, please re-enter it</target>
+        </trans-unit>
+        <trans-unit id="code312" translate="yes" xml:space="preserve">
+          <source>Incorrect code</source>
+          <target state="new">Incorrect code</target>
+        </trans-unit>
+        <trans-unit id="code313" translate="yes" xml:space="preserve">
+          <source>Code send error</source>
+          <target state="new">Code send error</target>
+        </trans-unit>
+        <trans-unit id="code314" translate="yes" xml:space="preserve">
+          <source>Mail send error</source>
+          <target state="new">Mail send error</target>
+        </trans-unit>
+        <trans-unit id="code315" translate="yes" xml:space="preserve">
+          <source>Too many codes sent, please try again later</source>
+          <target state="new">Too many codes sent, please try again later</target>
+        </trans-unit>
+        <trans-unit id="code316" translate="yes" xml:space="preserve">
+          <source>This email is already registered, please login</source>
+          <target state="new">This email is already registered, please login</target>
+        </trans-unit>
+        <trans-unit id="code317" translate="yes" xml:space="preserve">
+          <source>This account is not registered, click Sign Up to create a new account</source>
+          <target state="new">This account is not registered, click Sign Up to create a new account</target>
+        </trans-unit>
+        <trans-unit id="code318" translate="yes" xml:space="preserve">
+          <source>Your account is currently being cancelled and cannot be logged in. If you have any questions, please contact customer service</source>
+          <target state="new">Your account is currently being cancelled and cannot be logged in. If you have any questions, please contact customer service</target>
+        </trans-unit>
+        <trans-unit id="code319" translate="yes" xml:space="preserve">
+          <source>Please enter a valid email address</source>
+          <target state="new">Please enter a valid email address</target>
+        </trans-unit>
+        <trans-unit id="code320" translate="yes" xml:space="preserve">
+          <source>Passwords are different. Please re-enter them.</source>
+          <target state="new">Passwords are different. Please re-enter them.</target>
+        </trans-unit>
+        <trans-unit id="code321" translate="yes" xml:space="preserve">
+          <source>At least 6 characters</source>
+          <target state="new">At least 6 characters</target>
+        </trans-unit>
+        <trans-unit id="code322" translate="yes" xml:space="preserve">
+          <source>Up to 24 characters</source>
+          <target state="new">Up to 24 characters</target>
+        </trans-unit>
+        <trans-unit id="code323" translate="yes" xml:space="preserve">
+          <source>Please add auth config</source>
+          <target state="new">Please add auth config</target>
+        </trans-unit>
+        <trans-unit id="code324" translate="yes" xml:space="preserve">
+          <source>You are still in the subscription and cannot log out. Please click Cancel Account after the subscription period ends</source>
+          <target state="new">You are still in the subscription and cannot log out. Please click Cancel Account after the subscription period ends</target>
+        </trans-unit>
+        <trans-unit id="code325" translate="yes" xml:space="preserve">
+          <source>You are still in the subscription and cannot log out. Please click logout after the trial expired</source>
+          <target state="new">You are still in the subscription and cannot log out. Please click logout after the trial expired</target>
+        </trans-unit>
+        <trans-unit id="code326" translate="yes" xml:space="preserve">
+          <source>Time transfer error</source>
+          <target state="new">Time transfer error</target>
+        </trans-unit>
+      </group>
     </body>
   </file>
   <file datatype="xml" source-language="en-US" target-language="zh-Hant" original="PDF MASTER/PROPERTIES/RESOURCES.RESX" tool-id="MultilingualAppToolkit" product-name="n/a" product-version="n/a" build-num="n/a">

+ 1 - 0
PDF Office/PDF Master.csproj

@@ -374,6 +374,7 @@
     <Compile Include="Helper\CacheFilePath.cs" />
     <Compile Include="Helper\ConverterHelper.cs" />
     <Compile Include="Helper\CropPageUndoManager.cs" />
+    <Compile Include="Helper\ErrorCodeHelper.cs" />
     <Compile Include="Helper\KeyEventsHelper.cs" />
     <Compile Include="Helper\Win32Helper.cs" />
     <Compile Include="Helper\DpiHelpers.cs" />

+ 0 - 54
PDF Office/PDF Office.sln

@@ -1,54 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 17
-VisualStudioVersion = 17.4.33205.214
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PDF Office", "PDF Office.csproj", "{F3A2111D-9EAF-4ECE-9A92-B7F21D429DCD}"
-	ProjectSection(ProjectDependencies) = postProject
-		{BEE73AAE-9A2C-446B-B64D-3A8F042C985D} = {BEE73AAE-9A2C-446B-B64D-3A8F042C985D}
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PDFSettings", "..\PDFSettings\PDFSettings.csproj", "{BEE73AAE-9A2C-446B-B64D-3A8F042C985D}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Any CPU = Debug|Any CPU
-		Debug|x64 = Debug|x64
-		Debug|x86 = Debug|x86
-		Release|Any CPU = Release|Any CPU
-		Release|x64 = Release|x64
-		Release|x86 = Release|x86
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{F3A2111D-9EAF-4ECE-9A92-B7F21D429DCD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{F3A2111D-9EAF-4ECE-9A92-B7F21D429DCD}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{F3A2111D-9EAF-4ECE-9A92-B7F21D429DCD}.Debug|x64.ActiveCfg = Debug|x64
-		{F3A2111D-9EAF-4ECE-9A92-B7F21D429DCD}.Debug|x64.Build.0 = Debug|x64
-		{F3A2111D-9EAF-4ECE-9A92-B7F21D429DCD}.Debug|x86.ActiveCfg = Debug|x86
-		{F3A2111D-9EAF-4ECE-9A92-B7F21D429DCD}.Debug|x86.Build.0 = Debug|x86
-		{F3A2111D-9EAF-4ECE-9A92-B7F21D429DCD}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{F3A2111D-9EAF-4ECE-9A92-B7F21D429DCD}.Release|Any CPU.Build.0 = Release|Any CPU
-		{F3A2111D-9EAF-4ECE-9A92-B7F21D429DCD}.Release|x64.ActiveCfg = Release|x64
-		{F3A2111D-9EAF-4ECE-9A92-B7F21D429DCD}.Release|x64.Build.0 = Release|x64
-		{F3A2111D-9EAF-4ECE-9A92-B7F21D429DCD}.Release|x86.ActiveCfg = Release|x86
-		{F3A2111D-9EAF-4ECE-9A92-B7F21D429DCD}.Release|x86.Build.0 = Release|x86
-		{BEE73AAE-9A2C-446B-B64D-3A8F042C985D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{BEE73AAE-9A2C-446B-B64D-3A8F042C985D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{BEE73AAE-9A2C-446B-B64D-3A8F042C985D}.Debug|x64.ActiveCfg = Debug|x64
-		{BEE73AAE-9A2C-446B-B64D-3A8F042C985D}.Debug|x64.Build.0 = Debug|x64
-		{BEE73AAE-9A2C-446B-B64D-3A8F042C985D}.Debug|x86.ActiveCfg = Debug|x86
-		{BEE73AAE-9A2C-446B-B64D-3A8F042C985D}.Debug|x86.Build.0 = Debug|x86
-		{BEE73AAE-9A2C-446B-B64D-3A8F042C985D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{BEE73AAE-9A2C-446B-B64D-3A8F042C985D}.Release|Any CPU.Build.0 = Release|Any CPU
-		{BEE73AAE-9A2C-446B-B64D-3A8F042C985D}.Release|x64.ActiveCfg = Release|x64
-		{BEE73AAE-9A2C-446B-B64D-3A8F042C985D}.Release|x64.Build.0 = Release|x64
-		{BEE73AAE-9A2C-446B-B64D-3A8F042C985D}.Release|x86.ActiveCfg = Release|x86
-		{BEE73AAE-9A2C-446B-B64D-3A8F042C985D}.Release|x86.Build.0 = Release|x86
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-	GlobalSection(ExtensibilityGlobals) = postSolution
-		SolutionGuid = {3FB3414D-2545-4F50-B787-20C332327ECC}
-	EndGlobalSection
-EndGlobal

+ 612 - 0
PDF Office/Strings/Service/Service.Designer.cs

@@ -59,5 +59,617 @@ namespace PDF_Master.Strings.Service {
                 resourceCulture = value;
             }
         }
+        
+        /// <summary>
+        ///   查找类似 Network error 的本地化字符串。
+        /// </summary>
+        public static string code300 {
+            get {
+                return ResourceManager.GetString("code300", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Graphic verification code error 的本地化字符串。
+        /// </summary>
+        public static string code301 {
+            get {
+                return ResourceManager.GetString("code301", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Email address is not registered 的本地化字符串。
+        /// </summary>
+        public static string code302 {
+            get {
+                return ResourceManager.GetString("code302", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Invalid token or token has expired 的本地化字符串。
+        /// </summary>
+        public static string code304 {
+            get {
+                return ResourceManager.GetString("code304", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 You have reached the maximum number of devices, please log out of other devices and log in again 的本地化字符串。
+        /// </summary>
+        public static string code305 {
+            get {
+                return ResourceManager.GetString("code305", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 User is not logged in. Please log in and try again. 的本地化字符串。
+        /// </summary>
+        public static string code306 {
+            get {
+                return ResourceManager.GetString("code306", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Failed to obtain authorization code 的本地化字符串。
+        /// </summary>
+        public static string code307 {
+            get {
+                return ResourceManager.GetString("code307", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Failed to obtain token 的本地化字符串。
+        /// </summary>
+        public static string code308 {
+            get {
+                return ResourceManager.GetString("code308", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Email code error! 的本地化字符串。
+        /// </summary>
+        public static string code309 {
+            get {
+                return ResourceManager.GetString("code309", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Register error! 的本地化字符串。
+        /// </summary>
+        public static string code310 {
+            get {
+                return ResourceManager.GetString("code310", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 The password is incorrect, please re-enter it 的本地化字符串。
+        /// </summary>
+        public static string code311 {
+            get {
+                return ResourceManager.GetString("code311", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Incorrect code 的本地化字符串。
+        /// </summary>
+        public static string code312 {
+            get {
+                return ResourceManager.GetString("code312", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Code send error 的本地化字符串。
+        /// </summary>
+        public static string code313 {
+            get {
+                return ResourceManager.GetString("code313", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Mail send error 的本地化字符串。
+        /// </summary>
+        public static string code314 {
+            get {
+                return ResourceManager.GetString("code314", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Too many codes sent, please try again later 的本地化字符串。
+        /// </summary>
+        public static string code315 {
+            get {
+                return ResourceManager.GetString("code315", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 This email is already registered, please login 的本地化字符串。
+        /// </summary>
+        public static string code316 {
+            get {
+                return ResourceManager.GetString("code316", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 This account is not registered, click Sign Up to create a new account 的本地化字符串。
+        /// </summary>
+        public static string code317 {
+            get {
+                return ResourceManager.GetString("code317", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Your account is currently being cancelled and cannot be logged in. If you have any questions, please contact customer service 的本地化字符串。
+        /// </summary>
+        public static string code318 {
+            get {
+                return ResourceManager.GetString("code318", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Please enter a valid email address 的本地化字符串。
+        /// </summary>
+        public static string code319 {
+            get {
+                return ResourceManager.GetString("code319", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Passwords are different. Please re-enter them. 的本地化字符串。
+        /// </summary>
+        public static string code320 {
+            get {
+                return ResourceManager.GetString("code320", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 At least 6 characters 的本地化字符串。
+        /// </summary>
+        public static string code321 {
+            get {
+                return ResourceManager.GetString("code321", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Up to 24 characters 的本地化字符串。
+        /// </summary>
+        public static string code322 {
+            get {
+                return ResourceManager.GetString("code322", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Please add auth config 的本地化字符串。
+        /// </summary>
+        public static string code323 {
+            get {
+                return ResourceManager.GetString("code323", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 You are still in the subscription and cannot log out. Please click Cancel Account after the subscription period ends 的本地化字符串。
+        /// </summary>
+        public static string code324 {
+            get {
+                return ResourceManager.GetString("code324", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 You are still in the subscription and cannot log out. Please click logout after the trial expired 的本地化字符串。
+        /// </summary>
+        public static string code325 {
+            get {
+                return ResourceManager.GetString("code325", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Time transfer error 的本地化字符串。
+        /// </summary>
+        public static string code326 {
+            get {
+                return ResourceManager.GetString("code326", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Up to 24 characters 的本地化字符串。
+        /// </summary>
+        public static string Codemax {
+            get {
+                return ResourceManager.GetString("Codemax", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 At least 6 characters 的本地化字符串。
+        /// </summary>
+        public static string Codemin {
+            get {
+                return ResourceManager.GetString("Codemin", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Enter new password again 的本地化字符串。
+        /// </summary>
+        public static string LoginPasswordMsg {
+            get {
+                return ResourceManager.GetString("LoginPasswordMsg", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Enter password 的本地化字符串。
+        /// </summary>
+        public static string LoginPasswordMsg0 {
+            get {
+                return ResourceManager.GetString("LoginPasswordMsg0", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Enter new password 的本地化字符串。
+        /// </summary>
+        public static string LoginPasswordMsg2 {
+            get {
+                return ResourceManager.GetString("LoginPasswordMsg2", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Please enter a valid email 的本地化字符串。
+        /// </summary>
+        public static string Mailerr {
+            get {
+                return ResourceManager.GetString("Mailerr", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Enjoy Advanced Features 的本地化字符串。
+        /// </summary>
+        public static string Msgtologin {
+            get {
+                return ResourceManager.GetString("Msgtologin", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Enter email address 的本地化字符串。
+        /// </summary>
+        public static string RegisterEmailMsg {
+            get {
+                return ResourceManager.GetString("RegisterEmailMsg", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Next Step 的本地化字符串。
+        /// </summary>
+        public static string RegisterNextStep {
+            get {
+                return ResourceManager.GetString("RegisterNextStep", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Enter your password 的本地化字符串。
+        /// </summary>
+        public static string RegisterPasswordMsg {
+            get {
+                return ResourceManager.GetString("RegisterPasswordMsg", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Already have an account? 的本地化字符串。
+        /// </summary>
+        public static string Registertext1 {
+            get {
+                return ResourceManager.GetString("Registertext1", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 E-mail Address 的本地化字符串。
+        /// </summary>
+        public static string Text_admail {
+            get {
+                return ResourceManager.GetString("Text_admail", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 and 的本地化字符串。
+        /// </summary>
+        public static string Text_and {
+            get {
+                return ResourceManager.GetString("Text_and", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Back to previous step 的本地化字符串。
+        /// </summary>
+        public static string Text_back {
+            get {
+                return ResourceManager.GetString("Text_back", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Change Email 的本地化字符串。
+        /// </summary>
+        public static string Text_chmail {
+            get {
+                return ResourceManager.GetString("Text_chmail", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Enter email account 的本地化字符串。
+        /// </summary>
+        public static string Text_emailac {
+            get {
+                return ResourceManager.GetString("Text_emailac", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Forgot your password? 的本地化字符串。
+        /// </summary>
+        public static string Text_forgetpass {
+            get {
+                return ResourceManager.GetString("Text_forgetpass", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Getting Started 的本地化字符串。
+        /// </summary>
+        public static string Text_getstart {
+            get {
+                return ResourceManager.GetString("Text_getstart", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 License Agreement 的本地化字符串。
+        /// </summary>
+        public static string Text_licens {
+            get {
+                return ResourceManager.GetString("Text_licens", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Log In 的本地化字符串。
+        /// </summary>
+        public static string Text_Login {
+            get {
+                return ResourceManager.GetString("Text_Login", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Log Out 的本地化字符串。
+        /// </summary>
+        public static string Text_logout {
+            get {
+                return ResourceManager.GetString("Text_logout", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 No 的本地化字符串。
+        /// </summary>
+        public static string Text_no {
+            get {
+                return ResourceManager.GetString("Text_no", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Dont’t have an account yet? 的本地化字符串。
+        /// </summary>
+        public static string Text_noacc {
+            get {
+                return ResourceManager.GetString("Text_noacc", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 No Network Detected 的本地化字符串。
+        /// </summary>
+        public static string Text_nonet {
+            get {
+                return ResourceManager.GetString("Text_nonet", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Didn&apos;t receive the verification code? 的本地化字符串。
+        /// </summary>
+        public static string Text_novcode {
+            get {
+                return ResourceManager.GetString("Text_novcode", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 OK 的本地化字符串。
+        /// </summary>
+        public static string Text_ok {
+            get {
+                return ResourceManager.GetString("Text_ok", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Privacy Policy 的本地化字符串。
+        /// </summary>
+        public static string Text_privary {
+            get {
+                return ResourceManager.GetString("Text_privary", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Resend Code 的本地化字符串。
+        /// </summary>
+        public static string Text_recode {
+            get {
+                return ResourceManager.GetString("Text_recode", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Register successfully 的本地化字符串。
+        /// </summary>
+        public static string Text_regisuccess {
+            get {
+                return ResourceManager.GetString("Text_regisuccess", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 By registering, you agree to the 的本地化字符串。
+        /// </summary>
+        public static string Text_remsg {
+            get {
+                return ResourceManager.GetString("Text_remsg", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Retry 的本地化字符串。
+        /// </summary>
+        public static string Text_retry {
+            get {
+                return ResourceManager.GetString("Text_retry", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Sign Up 的本地化字符串。
+        /// </summary>
+        public static string Text_Signup {
+            get {
+                return ResourceManager.GetString("Text_Signup", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 To access your files, please connect to the internet and try again. 的本地化字符串。
+        /// </summary>
+        public static string Text_toconnect {
+            get {
+                return ResourceManager.GetString("Text_toconnect", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Reset Password 的本地化字符串。
+        /// </summary>
+        public static string Text_toocode {
+            get {
+                return ResourceManager.GetString("Text_toocode", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Account Information 的本地化字符串。
+        /// </summary>
+        public static string Text_useracc {
+            get {
+                return ResourceManager.GetString("Text_useracc", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Unable to Log In 的本地化字符串。
+        /// </summary>
+        public static string Text_useroutinglogin {
+            get {
+                return ResourceManager.GetString("Text_useroutinglogin", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Your account is currently being logged out and cannot be logged in.                                                                                  If you have questions, please  的本地化字符串。
+        /// </summary>
+        public static string Text_useroutingloginmsg1 {
+            get {
+                return ResourceManager.GetString("Text_useroutingloginmsg1", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 contact customer service 的本地化字符串。
+        /// </summary>
+        public static string Text_useroutingloginmsg2 {
+            get {
+                return ResourceManager.GetString("Text_useroutingloginmsg2", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Cancellation cannot be withdrawn, it will be completed within 3 working days, until then your account will be frozen and cannot be logged in, are you sure you want to delete your account? 的本地化字符串。
+        /// </summary>
+        public static string Text_useroutmsg {
+            get {
+                return ResourceManager.GetString("Text_useroutmsg", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Are you sure you want to cancel your account? 的本地化字符串。
+        /// </summary>
+        public static string Text_userouttol {
+            get {
+                return ResourceManager.GetString("Text_userouttol", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Enter the verification code 的本地化字符串。
+        /// </summary>
+        public static string Text_vcode {
+            get {
+                return ResourceManager.GetString("Text_vcode", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Yes 的本地化字符串。
+        /// </summary>
+        public static string Text_yes {
+            get {
+                return ResourceManager.GetString("Text_yes", resourceCulture);
+            }
+        }
     }
 }

+ 320 - 97
PDF Office/Strings/Service/Service.resx

@@ -1,101 +1,324 @@
 <?xml version="1.0" encoding="utf-8"?>
 <root>
-	<!-- 
-		Microsoft ResX Schema
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
 
-		Version 1.3
-
-		The primary goals of this format is to allow a simple XML format 
-		that is mostly human readable. The generation and parsing of the 
-		various data types are done through the TypeConverter classes 
-		associated with the data types.
-
-		Example:
-
-		... ado.net/XML headers & schema ...
-		<resheader name="resmimetype">text/microsoft-resx</resheader>
-		<resheader name="version">1.3</resheader>
-		<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-		<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-		<data name="Name1">this is my long string</data>
-		<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-		<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-			[base64 mime encoded serialized .NET Framework object]
-		</data>
-		<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-			[base64 mime encoded string representing a byte array form of the .NET Framework object]
-		</data>
-
-		There are any number of "resheader" rows that contain simple 
-		name/value pairs.
-
-		Each data row contains a name, and value. The row also contains a 
-		type or mimetype. Type corresponds to a .NET class that support 
-		text/value conversion through the TypeConverter architecture. 
-		Classes that don't support this are serialized and stored with the 
-		mimetype set.
-
-		The mimetype is used for serialized objects, and tells the 
-		ResXResourceReader how to depersist the object. This is currently not 
-		extensible. For a given mimetype the value must be set accordingly:
-
-		Note - application/x-microsoft.net.object.binary.base64 is the format 
-		that the ResXResourceWriter will generate, however the reader can 
-		read any of the formats listed below.
-
-		mimetype: application/x-microsoft.net.object.binary.base64
-		value   : The object must be serialized with 
-			: System.Serialization.Formatters.Binary.BinaryFormatter
-			: and then encoded with base64 encoding.
-
-		mimetype: application/x-microsoft.net.object.soap.base64
-		value   : The object must be serialized with 
-			: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-			: and then encoded with base64 encoding.
-
-		mimetype: application/x-microsoft.net.object.bytearray.base64
-		value   : The object must be serialized into a byte array 
-			: using a System.ComponentModel.TypeConverter
-			: and then encoded with base64 encoding.
-	-->
-	
-	<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:complexType>
-				<xsd:choice maxOccurs="unbounded">
-					<xsd:element name="data">
-						<xsd:complexType>
-							<xsd:sequence>
-								<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-								<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-							</xsd:sequence>
-							<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
-							<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-							<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-						</xsd:complexType>
-					</xsd:element>
-					<xsd:element name="resheader">
-						<xsd:complexType>
-							<xsd:sequence>
-								<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-							</xsd:sequence>
-							<xsd:attribute name="name" type="xsd:string" use="required" />
-						</xsd:complexType>
-					</xsd:element>
-				</xsd:choice>
-			</xsd:complexType>
-		</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.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-	</resheader>
-	<resheader name="writer">
-		<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-	</resheader>
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="code300" xml:space="preserve">
+    <value>Network error</value>
+  </data>
+  <data name="code301" xml:space="preserve">
+    <value>Graphic verification code error</value>
+  </data>
+  <data name="code302" xml:space="preserve">
+    <value>Email address is not registered</value>
+  </data>
+  <data name="code304" xml:space="preserve">
+    <value>Invalid token or token has expired</value>
+  </data>
+  <data name="code305" xml:space="preserve">
+    <value>You have reached the maximum number of devices, please log out of other devices and log in again</value>
+  </data>
+  <data name="code306" xml:space="preserve">
+    <value>User is not logged in. Please log in and try again.</value>
+  </data>
+  <data name="code307" xml:space="preserve">
+    <value>Failed to obtain authorization code</value>
+  </data>
+  <data name="code308" xml:space="preserve">
+    <value>Failed to obtain token</value>
+  </data>
+  <data name="code309" xml:space="preserve">
+    <value>Email code error!</value>
+  </data>
+  <data name="code310" xml:space="preserve">
+    <value>Register error!</value>
+  </data>
+  <data name="code311" xml:space="preserve">
+    <value>The password is incorrect, please re-enter it</value>
+  </data>
+  <data name="code312" xml:space="preserve">
+    <value>Incorrect code</value>
+  </data>
+  <data name="code313" xml:space="preserve">
+    <value>Code send error</value>
+  </data>
+  <data name="code314" xml:space="preserve">
+    <value>Mail send error</value>
+  </data>
+  <data name="code315" xml:space="preserve">
+    <value>Too many codes sent, please try again later</value>
+  </data>
+  <data name="code316" xml:space="preserve">
+    <value>This email is already registered, please login</value>
+  </data>
+  <data name="code317" xml:space="preserve">
+    <value>This account is not registered, click Sign Up to create a new account</value>
+  </data>
+  <data name="code318" xml:space="preserve">
+    <value>Your account is currently being cancelled and cannot be logged in. If you have any questions, please contact customer service</value>
+  </data>
+  <data name="code319" xml:space="preserve">
+    <value>Please enter a valid email address</value>
+  </data>
+  <data name="code320" xml:space="preserve">
+    <value>Passwords are different. Please re-enter them.</value>
+  </data>
+  <data name="code321" xml:space="preserve">
+    <value>At least 6 characters</value>
+  </data>
+  <data name="code322" xml:space="preserve">
+    <value>Up to 24 characters</value>
+  </data>
+  <data name="code323" xml:space="preserve">
+    <value>Please add auth config</value>
+  </data>
+  <data name="code324" xml:space="preserve">
+    <value>You are still in the subscription and cannot log out. Please click Cancel Account after the subscription period ends</value>
+  </data>
+  <data name="code325" xml:space="preserve">
+    <value>You are still in the subscription and cannot log out. Please click logout after the trial expired</value>
+  </data>
+  <data name="code326" xml:space="preserve">
+    <value>Time transfer error</value>
+  </data>
+  <data name="Codemax" xml:space="preserve">
+    <value>Up to 24 characters</value>
+  </data>
+  <data name="Codemin" xml:space="preserve">
+    <value>At least 6 characters</value>
+  </data>
+  <data name="LoginPasswordMsg" xml:space="preserve">
+    <value>Enter new password again</value>
+  </data>
+  <data name="LoginPasswordMsg0" xml:space="preserve">
+    <value>Enter password</value>
+  </data>
+  <data name="LoginPasswordMsg2" xml:space="preserve">
+    <value>Enter new password</value>
+  </data>
+  <data name="Mailerr" xml:space="preserve">
+    <value>Please enter a valid email</value>
+  </data>
+  <data name="Msgtologin" xml:space="preserve">
+    <value>Enjoy Advanced Features</value>
+  </data>
+  <data name="RegisterEmailMsg" xml:space="preserve">
+    <value>Enter email address</value>
+  </data>
+  <data name="RegisterNextStep" xml:space="preserve">
+    <value>Next Step</value>
+  </data>
+  <data name="RegisterPasswordMsg" xml:space="preserve">
+    <value>Enter your password</value>
+  </data>
+  <data name="Registertext1" xml:space="preserve">
+    <value>Already have an account?</value>
+  </data>
+  <data name="Text_admail" xml:space="preserve">
+    <value>E-mail Address</value>
+  </data>
+  <data name="Text_and" xml:space="preserve">
+    <value>and</value>
+  </data>
+  <data name="Text_back" xml:space="preserve">
+    <value>Back to previous step</value>
+  </data>
+  <data name="Text_chmail" xml:space="preserve">
+    <value>Change Email</value>
+  </data>
+  <data name="Text_emailac" xml:space="preserve">
+    <value>Enter email account</value>
+  </data>
+  <data name="Text_forgetpass" xml:space="preserve">
+    <value>Forgot your password?</value>
+  </data>
+  <data name="Text_getstart" xml:space="preserve">
+    <value>Getting Started</value>
+  </data>
+  <data name="Text_licens" xml:space="preserve">
+    <value>License Agreement</value>
+  </data>
+  <data name="Text_Login" xml:space="preserve">
+    <value>Log In</value>
+  </data>
+  <data name="Text_logout" xml:space="preserve">
+    <value>Log Out</value>
+  </data>
+  <data name="Text_no" xml:space="preserve">
+    <value>No</value>
+  </data>
+  <data name="Text_noacc" xml:space="preserve">
+    <value>Dont’t have an account yet?</value>
+  </data>
+  <data name="Text_nonet" xml:space="preserve">
+    <value>No Network Detected</value>
+  </data>
+  <data name="Text_novcode" xml:space="preserve">
+    <value>Didn't receive the verification code?</value>
+  </data>
+  <data name="Text_ok" xml:space="preserve">
+    <value>OK</value>
+  </data>
+  <data name="Text_privary" xml:space="preserve">
+    <value>Privacy Policy</value>
+  </data>
+  <data name="Text_recode" xml:space="preserve">
+    <value>Resend Code</value>
+  </data>
+  <data name="Text_regisuccess" xml:space="preserve">
+    <value>Register successfully</value>
+  </data>
+  <data name="Text_remsg" xml:space="preserve">
+    <value>By registering, you agree to the</value>
+  </data>
+  <data name="Text_retry" xml:space="preserve">
+    <value>Retry</value>
+  </data>
+  <data name="Text_Signup" xml:space="preserve">
+    <value>Sign Up</value>
+  </data>
+  <data name="Text_toconnect" xml:space="preserve">
+    <value>To access your files, please connect to the internet and try again.</value>
+  </data>
+  <data name="Text_toocode" xml:space="preserve">
+    <value>Reset Password</value>
+  </data>
+  <data name="Text_useracc" xml:space="preserve">
+    <value>Account Information</value>
+  </data>
+  <data name="Text_useroutinglogin" xml:space="preserve">
+    <value>Unable to Log In</value>
+  </data>
+  <data name="Text_useroutingloginmsg1" xml:space="preserve">
+    <value>Your account is currently being logged out and cannot be logged in.                                                                                  If you have questions, please </value>
+  </data>
+  <data name="Text_useroutingloginmsg2" xml:space="preserve">
+    <value>contact customer service</value>
+  </data>
+  <data name="Text_useroutmsg" xml:space="preserve">
+    <value>Cancellation cannot be withdrawn, it will be completed within 3 working days, until then your account will be frozen and cannot be logged in, are you sure you want to delete your account?</value>
+  </data>
+  <data name="Text_userouttol" xml:space="preserve">
+    <value>Are you sure you want to cancel your account?</value>
+  </data>
+  <data name="Text_vcode" xml:space="preserve">
+    <value>Enter the verification code</value>
+  </data>
+  <data name="Text_yes" xml:space="preserve">
+    <value>Yes</value>
+  </data>
 </root>

+ 8 - 1
PDF Office/ViewModels/BOTA/AnnotationContentViewModel.cs

@@ -981,6 +981,11 @@ namespace PDF_Master.ViewModels.BOTA
                 if (item.AnnotIndex == annotIndex && item.EventType != AnnotArgsType.AnnotRedaction)
                 {
                     AnnotationHandlerEventArgs args = GetAddAnnotEventArgs(item);
+                    // 注释列表 不显示链接
+                    if (args.AnnotHandlerEventArgs is LinkAnnotArgs)
+                    {
+                        continue;
+                    }
                     if (args.AnnotHandlerEventArgs != null)
                     {
                         AnnotationListItems.Add(args);
@@ -1307,7 +1312,9 @@ namespace PDF_Master.ViewModels.BOTA
                 foreach (var item in items)
                 {
                     //原型图上,目前对波浪线的类型,在注释列表不显示
-                    if (item.EventType != AnnotArgsType.AnnotRedaction && item.EventType != AnnotArgsType.AnnotSquiggly)
+                    //注释列表 不显示链接注释
+                    if (item.EventType != AnnotArgsType.AnnotRedaction && item.EventType != AnnotArgsType.AnnotSquiggly
+                        && item.EventType != AnnotArgsType.AnnotLink)
                     {
                         if (item.EventType == AnnotArgsType.AnnotLink)
                         {

+ 1 - 1
PDF Office/ViewModels/Dialog/FullScreenWindowViewModel.cs

@@ -112,7 +112,7 @@ namespace PDF_Master.ViewModels.Dialog
                     }
                 }
                 PDFViewer.Load();
-                PDFViewer.SetMouseMode(MouseModes.Default);
+                PDFViewer.SetMouseMode(MouseModes.PanTool);
             }
         }
 

+ 5 - 0
PDF Office/ViewModels/Dialog/HomePageToolsDialogs/HomePagePrinter/HomePagePrinterDialogViewModel.cs

@@ -1033,6 +1033,11 @@ namespace PDF_Master.ViewModels.Dialog.HomePageToolsDialogs.HomePagePrinter
                         PDFViewer.Document.CheckOwnerPassword(result.Password);
                     }
                 }
+                string appUnicode = string.Empty;
+                if (parameters.TryGetValue<string>(ParameterNames.Unicode, out appUnicode))
+                {
+                    this.printEvent.GetEvent<ShowTipEvent>().Publish(new ShowTipEventArgs() { enumTipKind = EnumTipKind.StatusNone , Unicode= appUnicode });
+                }
             }
 
             if (!result.IsDiscryptied)

+ 83 - 24
PDF Office/ViewModels/Dialog/ServiceDialog/CodeRegionViewModel.cs

@@ -20,10 +20,69 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
         private RegisterDialogViewModel RegisterDialogViewModel;
         private LoginDialogViewModel LoginDialogViewModel;
         public IDialogService dialogs;
-
+        private ErrorCodeHelper ErrorCodeHelper = new ErrorCodeHelper();
         //60秒倒计时
         private int time = 60;
 
+        #region 文案
+
+        private string _Text_Signup = "";
+        public string Text_Signup
+        {
+            get { return _Text_Signup; }
+            set { SetProperty(ref _Text_Signup, value); }
+        }
+
+        private string _Text_toocode = "";
+        public string Text_toocode
+        {
+            get { return _Text_toocode; }
+            set { SetProperty(ref _Text_toocode, value); }
+        }
+
+        private string _Text_vcode = "";
+        public string Text_vcode
+        {
+            get { return _Text_vcode; }
+            set { SetProperty(ref _Text_vcode, value); }
+        }
+
+        private string _Text_novcode = "";
+        public string Text_novcode
+        {
+            get { return _Text_novcode; }
+            set { SetProperty(ref _Text_novcode, value); }
+        }
+
+        private string _Text_recode = "";
+        public string Text_recode
+        {
+            get { return _Text_recode; }
+            set { SetProperty(ref _Text_recode, value); }
+        }
+
+        private string _Text_back = "";
+        public string Text_back
+        {
+            get { return _Text_back; }
+            set { SetProperty(ref _Text_back, value); }
+        }
+
+        private void InitString()
+        {
+
+            Text_Signup = App.ServiceLoader.GetString("Text_Signup");
+            Text_toocode = App.ServiceLoader.GetString("Text_toocode");
+            Text_vcode = App.ServiceLoader.GetString("Text_vcode");
+            Text_novcode = App.ServiceLoader.GetString("Text_novcode");
+            Text_recode = App.ServiceLoader.GetString("Text_recode");
+            Text_back = App.ServiceLoader.GetString("Text_back");
+
+        }
+
+
+        #endregion
+
         private bool _EnableNextStep = true;
         public bool EnableNextStep
         {
@@ -31,15 +90,14 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
             set { SetProperty(ref _EnableNextStep, value); }
         }
 
-        private string _CodeTypeName = "注册账号";
+        private string _CodeTypeName = "";
         public string CodeTypeName
         {
             get { return _CodeTypeName; }
             set { SetProperty(ref _CodeTypeName, value); }
         }
 
-
-        private string _CodeType = "user_register";
+        private string _CodeType = "";
         public string CodeType
         {
             get { return _CodeType; }
@@ -184,7 +242,7 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
         {
             navigationContext.Parameters.TryGetValue<RegisterDialogViewModel>("RegisterDialogViewModel", out RegisterDialogViewModel);
             navigationContext.Parameters.TryGetValue<LoginDialogViewModel>("LoginDialogViewModel", out LoginDialogViewModel);
-
+            InitString();
             if (LoginDialogViewModel!=null&&LoginDialogViewModel.IsReset == true)
             {
                 CodeType = "user_reset_password";
@@ -197,14 +255,14 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
             }
             if (CodeType == "user_reset_password")
             {
-                CodeTypeName = "重置密码";
+                CodeTypeName = Text_toocode;
             }
             else
             {
-                CodeTypeName = "注册账号";
+                CodeTypeName = Text_Signup;
 
             }
-
+           
         }
         
         public DelegateCommand BackRegisterLastCommand { get; set; }
@@ -234,13 +292,14 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
                 CodeType = "user_register";
 
             }
+
             if (CodeType == "user_reset_password")
             {
-                CodeTypeName = "重置密码";
+                CodeTypeName = Text_toocode;
             }
             else
             {
-                CodeTypeName = "注册账号";
+                CodeTypeName = Text_Signup;
 
             }
         }
@@ -273,10 +332,10 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
                 if (CodeType == "user_register")
                 {
                     
-                    if (ServiceHelper.Ok_code(RegisterDialogViewModel.RegisterEmail, Codesum, CodeType) == "success")
+                    if (ServiceHelper.Ok_code(RegisterDialogViewModel.RegisterEmail, Codesum, CodeType) == "200")
                     {
                         
-                        if (ServiceHelper.Register_email(RegisterDialogViewModel.RegisterEmail, RegisterDialogViewModel.RegisterPassword, Codesum, uuid) == "success")
+                        if (ServiceHelper.Register_email(RegisterDialogViewModel.RegisterEmail, RegisterDialogViewModel.RegisterPassword, Codesum, uuid) == "200")
                         {
                             App.mainWindowViewModel.UserVis = Visibility.Visible;
                             App.mainWindowViewModel.RegisterVis = Visibility.Collapsed;
@@ -287,27 +346,27 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
                         }
                         else
                         {
-                            RegisterCodemsg = ServiceHelper.Register_email(RegisterDialogViewModel.RegisterEmail, RegisterDialogViewModel.RegisterPassword, Codesum, uuid);
+                            RegisterCodemsg = ErrorCodeHelper.Ercode(ServiceHelper.Register_email(RegisterDialogViewModel.RegisterEmail, RegisterDialogViewModel.RegisterPassword, Codesum, uuid));
                             RegisterCodemsgVis = Visibility.Visible;
                         }
                     }
                     else
                     {
-                        RegisterCodemsg = ServiceHelper.Ok_code(RegisterDialogViewModel.RegisterEmail, Codesum, CodeType);
+                        RegisterCodemsg = ErrorCodeHelper.Ercode(ErrorCodeHelper.Ercode(ServiceHelper.Ok_code(RegisterDialogViewModel.RegisterEmail, Codesum, CodeType)));
                         RegisterCodemsgVis = Visibility.Visible;
                     }
                 }
                 else
                 {
                     
-                    if (ServiceHelper.Ok_code(LoginDialogViewModel.LoginEmail, Codesum, CodeType) == "success")
+                    if (ServiceHelper.Ok_code(LoginDialogViewModel.LoginEmail, Codesum, CodeType) == "200")
                     {
                         LoginDialogViewModel.PasswordCode = Codesum;
                         LoginDialogViewModel.RegionMan("PasswordUpdataRegion");
                     }
                     else
                     {
-                        RegisterCodemsg = ServiceHelper.Ok_code(LoginDialogViewModel.LoginEmail, Codesum, CodeType);
+                        RegisterCodemsg = ErrorCodeHelper.Ercode(ServiceHelper.Ok_code(LoginDialogViewModel.LoginEmail, Codesum, CodeType));
                         RegisterCodemsgVis = Visibility.Visible;
                     }
                 }
@@ -315,7 +374,7 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
                 }
                 else
             {
-                RegisterCodemsg = "请输入六位数验证码";
+                RegisterCodemsg = "Please enter a six digit verification code";
             }
             
         }
@@ -331,10 +390,10 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
                     if (CodeType == "user_register")
                     {
                        
-                        if (ServiceHelper.Ok_code(RegisterDialogViewModel.RegisterEmail, Codesum, CodeType) == "success")
+                        if (ServiceHelper.Ok_code(RegisterDialogViewModel.RegisterEmail, Codesum, CodeType) == "200")
                         {
                             
-                            if (ServiceHelper.Register_email(RegisterDialogViewModel.RegisterEmail, RegisterDialogViewModel.RegisterPassword, Codesum, uuid) == "success")
+                            if (ServiceHelper.Register_email(RegisterDialogViewModel.RegisterEmail, RegisterDialogViewModel.RegisterPassword, Codesum, uuid) == "200")
                             {
                                 App.mainWindowViewModel.UserVis = Visibility.Visible;
                                 App.mainWindowViewModel.RegisterVis = Visibility.Collapsed;
@@ -345,27 +404,27 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
                             }
                             else
                             {
-                                RegisterCodemsg = ServiceHelper.Register_email(RegisterDialogViewModel.RegisterEmail, RegisterDialogViewModel.RegisterPassword, Codesum, uuid);
+                                RegisterCodemsg = ErrorCodeHelper.Ercode(ServiceHelper.Register_email(RegisterDialogViewModel.RegisterEmail, RegisterDialogViewModel.RegisterPassword, Codesum, uuid));
                                 RegisterCodemsgVis = Visibility.Visible;
                             }
                         }
                         else
                         {
-                            RegisterCodemsg = ServiceHelper.Ok_code(RegisterDialogViewModel.RegisterEmail, Codesum, CodeType);
+                            RegisterCodemsg = ErrorCodeHelper.Ercode(ServiceHelper.Ok_code(RegisterDialogViewModel.RegisterEmail, Codesum, CodeType));
                             RegisterCodemsgVis = Visibility.Visible;
                         }
                     }
                     else
                     {
                         
-                        if (ServiceHelper.Ok_code(LoginDialogViewModel.LoginEmail, Codesum, CodeType) == "success")
+                        if (ServiceHelper.Ok_code(LoginDialogViewModel.LoginEmail, Codesum, CodeType) == "200")
                         {
                             LoginDialogViewModel.PasswordCode = Codesum;
                             LoginDialogViewModel.RegionMan("PasswordUpdataRegion");
                         }
                         else
                         {
-                            RegisterCodemsg = ServiceHelper.Ok_code(LoginDialogViewModel.LoginEmail, Codesum, CodeType);
+                            RegisterCodemsg = ErrorCodeHelper.Ercode(ServiceHelper.Ok_code(LoginDialogViewModel.LoginEmail, Codesum, CodeType));
                             RegisterCodemsgVis = Visibility.Visible;
                         }
                     }
@@ -373,7 +432,7 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
                 }
                 else
                 {
-                    RegisterCodemsg = "请输入六位数验证码";
+                    RegisterCodemsg = "Please enter a six digit verification code";
                     RegisterCodemsgVis = Visibility.Visible;
                 }
 

+ 75 - 14
PDF Office/ViewModels/Dialog/ServiceDialog/LoginPasswordRegionViewModel.cs

@@ -24,6 +24,7 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
     {
         private string uuid = ServiceHelper.GetDeviceSerialNumber();
         private LoginDialogViewModel LoginDialogViewModel;
+        private ErrorCodeHelper ErrorCodeHelper = new ErrorCodeHelper();
         public IDialogService dialogs;
 
         public bool IsNavigationTarget(NavigationContext navigationContext)
@@ -44,6 +45,76 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
         }
 
 
+        #region 文案
+
+        private string _Text_login = "";
+
+        public string Text_login
+        {
+            get { return _Text_login; }
+            set
+            {
+                SetProperty(ref _Text_login, value);
+            }
+        }
+
+        private string _Text_chmail = "";
+
+        public string Text_chmail
+        {
+            get { return _Text_chmail; }
+            set
+            {
+                SetProperty(ref _Text_chmail, value);
+            }
+        }
+
+        private string _Text_enterpass = "";
+
+        public string Text_enterpass
+        {
+            get { return _Text_enterpass; }
+            set
+            {
+                SetProperty(ref _Text_enterpass, value);
+            }
+        }
+
+        private string _LoginPasswordMsg0 = "";
+
+        public string LoginPasswordMsg0
+        {
+            get { return _LoginPasswordMsg0; }
+            set
+            {
+                SetProperty(ref _LoginPasswordMsg0, value);
+            }
+        }
+
+
+        private string _Text_forgetpass = "";
+
+        public string Text_forgetpass
+        {
+            get { return _Text_forgetpass; }
+            set
+            {
+                SetProperty(ref _Text_forgetpass, value);
+            }
+        }
+
+        private void InitString()
+        {
+
+            Text_login = App.ServiceLoader.GetString("Text_login");
+            Text_chmail = App.ServiceLoader.GetString("Text_chmail");
+            Text_enterpass = App.ServiceLoader.GetString("RegisterPasswordMsg");
+            Text_forgetpass = App.ServiceLoader.GetString("Text_forgetpass");
+            LoginPasswordMsg0 = App.ServiceLoader.GetString("LoginPasswordMsg0");
+        }
+
+
+        #endregion
 
 
 
@@ -99,17 +170,6 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
         }
 
 
-       
-        private string _LoginPasswordMsg = "Enter your password";
-        public string LoginPasswordMsg
-        {
-            get { return _LoginPasswordMsg; }
-            set
-            {
-                SetProperty(ref _LoginPasswordMsg, value);
-            }
-        }
-
         private string _LoginPasswordmsglook = "";
         public string LoginPasswordmsglook
         {
@@ -169,8 +229,9 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
 
         LoginPasswordRegionViewModel(IRegionManager regionManager, IDialogService dialogService)
         {
+
             dialogs = dialogService;
-            
+            InitString();
             DisplayPasswordCommand = new DelegateCommand<object>(DisplayPassword);
             LoginCommand = new DelegateCommand(Login);
             ChangeEmailCommand = new DelegateCommand(ChangeEmail);
@@ -226,14 +287,14 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
                 App.mainWindowViewModel.OphVis = Visibility.Collapsed;
                 Settings.Default.UserDate.Email = LoginEmail;
             }
-            else if(ServiceHelper.Login(LoginEmail, LoginPassword, uuid) == "网络不稳定请重试")
+            else if(ServiceHelper.Login(LoginEmail, LoginPassword, uuid) == "300")
             {
                 LoginDialogViewModel.RegionMan("NOInternetRegion");
             }
            
             else
             {
-                LoginPasswordmsglook = ServiceHelper.Login(LoginEmail, LoginPassword, uuid);
+                LoginPasswordmsglook = ErrorCodeHelper.Ercode(ServiceHelper.Login(LoginEmail, LoginPassword, uuid));
                 LoginPasswordlookVis = Visibility.Visible;
             }
         }

+ 100 - 30
PDF Office/ViewModels/Dialog/ServiceDialog/LoginRegionViewModel.cs

@@ -23,6 +23,7 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
     public class LoginRegionViewModel : BindableBase, INavigationAware
     {
         private LoginDialogViewModel LoginDialogViewModel;
+        private ErrorCodeHelper ErrorCodeHelper = new ErrorCodeHelper();
         public IDialogService dialogs;
 
         public bool IsNavigationTarget(NavigationContext navigationContext)
@@ -42,7 +43,97 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
         }
 
 
+        #region 文案
 
+        private string _Text_Login = "";
+
+        public string Text_Login
+        {
+            get { return _Text_Login; }
+            set
+            {
+                SetProperty(ref _Text_Login, value);
+            }
+        }
+
+        private string _Text_emailac = "";
+
+        public string Text_emailac
+        {
+            get { return _Text_emailac; }
+            set
+            {
+                SetProperty(ref _Text_emailac, value);
+            }
+        }
+
+        private string _Text_next = "";
+
+        public string Text_next
+        {
+            get { return _Text_next; }
+            set
+            {
+                SetProperty(ref _Text_next, value);
+            }
+        }
+
+        private string _Text_noacc = "";
+
+        public string Text_noacc
+        {
+            get { return _Text_noacc; }
+            set
+            {
+                SetProperty(ref _Text_noacc, value);
+            }
+        }
+
+        private string _Text_toregister = "";
+
+        public string Text_toregister
+        {
+            get { return _Text_toregister; }
+            set
+            {
+                SetProperty(ref _Text_toregister, value);
+            }
+        }
+
+        private string _LoginEmailMsg = "";
+
+        public string LoginEmailMsg
+        {
+            get { return _LoginEmailMsg; }
+            set
+            {
+                SetProperty(ref _LoginEmailMsg, value);
+            }
+        }
+       
+        private string _Mailerr = "";
+        public string Mailerr
+        {
+            get { return _Mailerr; }
+            set
+            {
+                SetProperty(ref _Mailerr, value);
+            }
+        }
+        private void InitString()
+        {
+
+            Text_Login = App.ServiceLoader.GetString("Text_Login");
+            Text_emailac = App.ServiceLoader.GetString("Text_emailac");
+            Text_next = App.ServiceLoader.GetString("RegisterNextStep");
+            Text_noacc = App.ServiceLoader.GetString("Text_noacc");
+            Text_toregister = App.ServiceLoader.GetString("Text_Signup");
+            Mailerr = App.ServiceLoader.GetString("Mailerr");
+            LoginEmailMsg = App.ServiceLoader.GetString("RegisterEmailMsg");
+        }
+
+
+        #endregion
 
 
 
@@ -61,17 +152,7 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
         }
 
 
-        private string _LoginNextStep = "Next Step";
-        public string LoginNextStep
-        {
-            get { return _LoginNextStep; }
-            set
-            {
-                SetProperty(ref _LoginNextStep, value);
-
-            }
-        }
-
+        
 
         private string _LoginEmail = "";
         public string LoginEmail
@@ -93,16 +174,7 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
             }
         }
 
-        private string _LoginEmailMsg = "Enter email address";
-        public string LoginEmailMsg
-        {
-            get { return _LoginEmailMsg; }
-            set
-            {
-                SetProperty(ref _LoginEmailMsg, value);
-            }
-        }
-
+      
 
 
        
@@ -116,6 +188,7 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
           
             LoginNextCommand = new DelegateCommand(LoginNext);
             GoLoginCommand = new DelegateCommand(GoLogin);
+            InitString();
         }
 
 
@@ -123,16 +196,16 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
         {
            
            
-            if (ServiceHelper.Ok_email(LoginEmail, "1") == "success")
+            if (ServiceHelper.Ok_email(LoginEmail, "1") == "200")
             {
                 LoginDialogViewModel.LoginEmail = LoginEmail;
                 LoginDialogViewModel.RegionMan("LoginPasswordRegion");
             }
-            else if (ServiceHelper.Ok_email(LoginEmail, "1") == "网络不稳定请重试")
+            else if (ServiceHelper.Ok_email(LoginEmail, "1") == "300")
             {
                 LoginDialogViewModel.RegionMan("NOInternetRegion");
             }
-            else if (ServiceHelper.Ok_email(LoginEmail, "1") == "注销中,无法登录,若有问题可联系客服")
+            else if (ServiceHelper.Ok_email(LoginEmail, "1") == "318")
             {
                 
                     dialogs.ShowDialog(DialogNames.UserOutingLogin, new DialogParameters(""), r =>
@@ -140,14 +213,11 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
                     });
                 
 
-            }
-            else if (ServiceHelper.Ok_email(LoginEmail, "1") == "当前账号未注册,点击下一步我们将为您注册账号")
-            {
-                LoginEmaillook = "当前账号未注册";
             }
             else
             {
-                LoginEmaillook = ServiceHelper.Ok_email(LoginEmail, "1");
+                LoginEmaillook = ErrorCodeHelper.Ercode(ServiceHelper.Ok_email(LoginEmail, "1"));
+
             }
         }
 
@@ -163,7 +233,7 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
             }
             else
             {
-                LoginEmaillook = "请输入正确的邮箱格式";
+                LoginEmaillook = Mailerr;
             }
         }
         private void GoLogin()

+ 50 - 1
PDF Office/ViewModels/Dialog/ServiceDialog/NoInternetRegionViewModel.cs

@@ -37,11 +37,60 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
             navigationContext.Parameters.TryGetValue<LoginDialogViewModel>("LoginDialogViewModel", out LoginDialogViewModel);
         }
 
-   
+
+
+        #region 文案
+
+        private string _Text_nonet = "";
+
+        public string Text_nonet
+        {
+            get { return _Text_nonet; }
+            set
+            {
+                SetProperty(ref _Text_nonet, value);
+            }
+        }
+
+
+        private string _Text_toconnect = "";
+        public string Text_toconnect
+        {
+            get { return _Text_toconnect; }
+            set
+            {
+                SetProperty(ref _Text_toconnect, value);
+            }
+        }
+
+
+        private string _Text_retry = "";
+        public string Text_retry
+
+        {
+            get { return _Text_retry; }
+            set
+            {
+                SetProperty(ref _Text_retry, value);
+            }
+        }
+        private void InitString()
+        {
+
+            Text_nonet = App.ServiceLoader.GetString("Text_nonet");
+            Text_toconnect = App.ServiceLoader.GetString("Text_toconnect");
+            Text_retry = App.ServiceLoader.GetString("Text_retry");
+
+        }
+
+
+        #endregion
+
         public DelegateCommand RetryCommand { get; set; }
 
         NOInternetRegionViewModel(IRegionManager regionManager, IDialogService dialogService)
         {
+            InitString();
             dialogs = dialogService;        
             RetryCommand = new DelegateCommand(Retry);
 

+ 61 - 21
PDF Office/ViewModels/Dialog/ServiceDialog/PasswordUpdataRegionVIewModel.cs

@@ -18,6 +18,7 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
     public class PasswordUpdataRegionViewModel : BindableBase, INavigationAware
     {
         private string uuid = ServiceHelper.GetDeviceSerialNumber();
+        private ErrorCodeHelper ErrorCodeHelper = new ErrorCodeHelper();
         private LoginDialogViewModel LoginDialogViewModel;
         public IDialogService dialogs;
 
@@ -40,7 +41,62 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
 
 
 
+        #region 文案
 
+        private string _Text_passuodata = "";
+
+        public string Text_passuodata
+        {
+            get { return _Text_passuodata; }
+            set
+            {
+                SetProperty(ref _Text_passuodata, value);
+            }
+        }
+
+        private string _LoginPasswordMsg = "";
+        public string LoginPasswordMsg
+        {
+            get { return _LoginPasswordMsg; }
+            set
+            {
+                SetProperty(ref _LoginPasswordMsg, value);
+            }
+        }
+        
+
+        private string _LoginPasswordMsg2 = "";
+        public string LoginPasswordMsg2
+        {
+            get { return _LoginPasswordMsg2; }
+            set
+            {
+                SetProperty(ref _LoginPasswordMsg2, value);
+            }
+        }
+
+        private string _Text_ok = "";
+        public string Text_ok
+        {
+            get { return _Text_ok; }
+            set
+            {
+                SetProperty(ref _Text_ok, value);
+            }
+        }
+        private void InitString()
+        {
+
+            Text_passuodata = App.ServiceLoader.GetString("Text_passuodata");
+            LoginPasswordMsg = App.ServiceLoader.GetString("LoginPasswordMsg");
+            LoginPasswordMsg2 = App.ServiceLoader.GetString("LoginPasswordMsg2");
+            Text_ok = App.ServiceLoader.GetString("Text_ok");
+
+
+        }
+
+
+        #endregion
 
 
         private bool enableNextStep = false;
@@ -98,15 +154,7 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
 
         }
 
-        private string _LoginPasswordMsg = "Enter the new password again";
-        public string LoginPasswordMsg
-        {
-            get { return _LoginPasswordMsg; }
-            set
-            {
-                SetProperty(ref _LoginPasswordMsg, value);
-            }
-        }
+        
 
         private Visibility _ChkVis = Visibility.Collapsed;
         public Visibility ChkVis
@@ -170,15 +218,7 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
 
         }
 
-        private string _LoginPasswordMsg2 = "Enter your password";
-        public string LoginPasswordMsg2
-        {
-            get { return _LoginPasswordMsg2; }
-            set
-            {
-                SetProperty(ref _LoginPasswordMsg2, value);
-            }
-        }
+       
 
 
         private Visibility _LoginPasswordVisibility2 = Visibility.Visible;
@@ -244,7 +284,7 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
         PasswordUpdataRegionViewModel(IRegionManager regionManager, IDialogService dialogService)
         {
             dialogs = dialogService;
-
+            InitString();
             DisplayPasswordCommand = new DelegateCommand<object>(DisplayPassword);
             DisplayPasswordCommand2 = new DelegateCommand<object>(DisplayPassword2);
             PasswordUpdataCommand = new DelegateCommand(PasswordUpdata);
@@ -294,13 +334,13 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
         {
             
            
-            if (ServiceHelper.Rebirth(LoginEmail, LoginPassword2, LoginPassword, LoginDialogViewModel.PasswordCode) == "success")
+            if (ServiceHelper.Rebirth(LoginEmail, LoginPassword2, LoginPassword, LoginDialogViewModel.PasswordCode) == "200")
             {
                 LoginDialogViewModel.RegionMan("LoginRegion");
             }
             else
             {
-                PasswordUpdatamsglook = ServiceHelper.Rebirth(LoginEmail, LoginPassword2, LoginPassword, LoginDialogViewModel.PasswordCode);
+                PasswordUpdatamsglook = ErrorCodeHelper.Ercode(ServiceHelper.Rebirth(LoginEmail, LoginPassword2, LoginPassword, LoginDialogViewModel.PasswordCode));
                 PasswordUpdatalookVis = Visibility.Visible;
             }
         }

+ 36 - 3
PDF Office/ViewModels/Dialog/ServiceDialog/RegisterOKRegionViewModel.cs

@@ -20,8 +20,41 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
         public IDialogService dialogs;
 
 
-      
-       
+        #region 文案
+
+        private string _Text_regisuccess = "";
+
+        public string Text_regisuccess
+        {
+            get { return _Text_regisuccess; }
+            set
+            {
+                SetProperty(ref _Text_regisuccess, value);
+            }
+        }
+
+        private string _Text_getstart = "";
+
+        public string Text_getstart
+        {
+            get { return _Text_getstart; }
+            set
+            {
+                SetProperty(ref _Text_getstart, value);
+            }
+        }
+
+        private void InitString()
+        {
+
+            Text_regisuccess = App.ServiceLoader.GetString("Text_regisuccess");
+            Text_getstart = App.ServiceLoader.GetString("Text_getstart");
+
+        }
+
+
+        #endregion
+
 
         public bool IsNavigationTarget(NavigationContext navigationContext)
         {
@@ -48,7 +81,7 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
         
             dialogs = dialogService;
             RegisterGetStartCommand = new DelegateCommand(RegisterGetStart);
-
+            InitString();
         }
 
         private void RegisterGetStart()

+ 167 - 49
PDF Office/ViewModels/Dialog/ServiceDialog/RegisterRegionViewModel.cs

@@ -19,6 +19,7 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
     public class RegisterRegionViewModel : BindableBase, INavigationAware
     {
         private RegisterDialogViewModel RegisterDialogViewModel;
+        private ErrorCodeHelper ErrorCodeHelper = new ErrorCodeHelper();
         public IDialogService dialogs;
        
         public bool IsNavigationTarget(NavigationContext navigationContext)
@@ -37,11 +38,166 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
             navigationContext.Parameters.TryGetValue<RegisterDialogViewModel>("RegisterDialogViewModel", out RegisterDialogViewModel);
         }
 
-        
 
 
+        #region 文案
+
       
 
+        private string _Text_Signup = "";
+        public string Text_Signup
+        {
+            get { return _Text_Signup; }
+            set { SetProperty(ref _Text_Signup, value); }
+        }
+
+        private string _registerText1 = "";
+        public string Registertext1
+        {
+            get { return _registerText1; }
+            set
+            {
+                SetProperty(ref _registerText1, value);
+
+            }
+        }
+
+
+
+        private string _registerNextStep = "";
+        public string RegisterNextStep
+        {
+            get { return _registerNextStep; }
+            set
+            {
+                SetProperty(ref _registerNextStep, value);
+
+            }
+        }
+
+        private string _registerEmailMsg = "";
+        public string RegisterEmailMsg
+        {
+            get { return _registerEmailMsg; }
+            set
+            {
+                SetProperty(ref _registerEmailMsg, value);
+            }
+        }
+
+        private string _registerPasswordMsg = "";
+        public string RegisterPasswordMsg
+        {
+            get { return _registerPasswordMsg; }
+            set
+            {
+                SetProperty(ref _registerPasswordMsg, value);
+            }
+        }
+
+        private string _Text_Login = "";
+        public string Text_Login
+        {
+            get { return _Text_Login; }
+            set { SetProperty(ref _Text_Login, value); }
+        }
+
+        private string _Text_remsg = "";
+        public string Text_remsg
+        {
+            get { return _Text_remsg; }
+            set
+            {
+                SetProperty(ref _Text_remsg, value);
+
+            }
+        }
+
+
+
+        private string _Text_privary = "";
+        public string Text_privary
+        {
+            get { return _Text_privary; }
+            set
+            {
+                SetProperty(ref _Text_privary, value);
+
+            }
+        }
+
+        private string _Text_and = "";
+        public string Text_and
+        {
+            get { return _Text_and; }
+            set
+            {
+                SetProperty(ref _Text_and, value);
+            }
+        }
+
+        private string _Text_licens = "";
+        public string Text_licens
+        {
+            get { return _Text_licens; }
+            set
+            {
+                SetProperty(ref _Text_licens, value);
+            }
+        }
+
+        private string _Codemax = "";
+        public string Codemax
+        {
+            get { return _Codemax; }
+            set
+            {
+                SetProperty(ref _Codemax, value);
+            }
+        }
+
+        private string _Codemin = "";
+        public string Codemin
+        {
+            get { return _Codemin; }
+            set
+            {
+                SetProperty(ref _Codemin, value);
+            }
+        }
+        private string _Mailerr = "";
+        public string Mailerr
+        {
+            get { return _Mailerr; }
+            set
+            {
+                SetProperty(ref _Mailerr, value);
+            }
+        }
+
+        
+        private void InitString()
+        {
+            ErrorCodeHelper.InitString();
+            Text_Signup = App.ServiceLoader.GetString("Text_Signup");
+            Registertext1 = App.ServiceLoader.GetString("Registertext1");
+            RegisterEmailMsg = App.ServiceLoader.GetString("RegisterEmailMsg");
+            RegisterPasswordMsg = App.ServiceLoader.GetString("RegisterPasswordMsg");
+            RegisterNextStep = App.ServiceLoader.GetString("RegisterNextStep");
+            Text_Login = App.ServiceLoader.GetString("Text_Login");
+            Text_remsg = App.ServiceLoader.GetString("Text_remsg");
+            Text_privary = App.ServiceLoader.GetString("Text_privary");
+            Text_and = App.ServiceLoader.GetString("Text_and");
+            Text_licens = App.ServiceLoader.GetString("Text_licens");
+            Codemax = App.ServiceLoader.GetString("Codemax");
+            Codemin = App.ServiceLoader.GetString("Codemin");
+            Mailerr = App.ServiceLoader.GetString("Mailerr");
+        }
+
+
+        #endregion
+
+
         private bool enableNextStep = false;
         public bool EnableNextStep
         {
@@ -49,6 +205,9 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
             set { SetProperty(ref enableNextStep, value); }
         }
 
+      
+
+
         private string _registerEmaillook;
         public string RegisterEmaillook
         {
@@ -95,29 +254,7 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
         }
 
 
-        private string _registerText1 = "Already have an account?";
-        public string Registertext1
-        {
-            get { return _registerText1; }
-            set
-            {
-                SetProperty(ref _registerText1, value);
-
-            }
-        }
-
-
-
-        private string _registerNextStep = "Next Step";
-        public string RegisterNextStep
-        {
-            get { return _registerNextStep; }
-            set
-            {
-                SetProperty(ref _registerNextStep, value);
-
-            }
-        }
+      
 
         private string _registerPassword = "";
         public string RegisterPassword
@@ -161,25 +298,6 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
             }
         }
 
-        private string _registerEmailMsg = "Enter email address";
-        public string RegisterEmailMsg
-        {
-            get { return _registerEmailMsg; }
-            set
-            {
-                SetProperty(ref _registerEmailMsg, value);
-            }
-        }
-
-        private string _registerPasswordMsg = "Enter your password";
-        public string RegisterPasswordMsg
-        {
-            get { return _registerPasswordMsg; }
-            set
-            {
-                SetProperty(ref _registerPasswordMsg, value);
-            }
-        }
         
         private Visibility _registerPasswordVisibility = Visibility.Visible;
         public Visibility RegisterPasswordVisibility
@@ -235,7 +353,7 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
             GoLoginCommand = new DelegateCommand(GoLogin);
             RegisterNextCommand = new DelegateCommand(RegisterNext);
             RegisterPasswordChangedCommand = new DelegateCommand(RegisterPasswordChanged);
-            
+            InitString();
         }
 
 
@@ -244,11 +362,11 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
 
            if(RegisterPassword.Length<6)
             {
-                RegisterePasswordlook = "At least 6 characters";
+                RegisterePasswordlook = Codemin;
             }
            else if(RegisterPassword.Length>24)
             {
-                RegisterePasswordlook = "Up to 24 characters";
+                RegisterePasswordlook = Codemax;
             }
            else
             {
@@ -270,7 +388,7 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
             }
             else
             {
-                RegisterEmaillook = "请输入正确的邮箱格式";
+                RegisterEmaillook =Mailerr;
             }
         }
 
@@ -278,7 +396,7 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
         {
 
 
-            if (ServiceHelper.Ok_email(RegisterEmail, "2") == "success")
+            if (ServiceHelper.Ok_email(RegisterEmail, "2") == "200")
             {
                 RegisterDialogViewModel.RegisterEmail = RegisterEmail;
                 RegisterDialogViewModel.RegisterPassword = RegisterPassword;
@@ -287,7 +405,7 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
             }
             else 
             {
-                RegisterEmaillook = ServiceHelper.Ok_email(RegisterEmail, "2");
+                RegisterEmaillook = ErrorCodeHelper.Ercode(ServiceHelper.Ok_email(RegisterEmail, "2"));
             }
         }
 

+ 118 - 18
PDF Office/ViewModels/Dialog/ServiceDialog/UserDialogViewModel.cs

@@ -19,46 +19,145 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
     {
         private string uuid = ServiceHelper.GetDeviceSerialNumber();
         public IRegionManager Region;
-        public string Title => "用户窗口";
+        public string Title => "";
 
         public event Action<IDialogResult> RequestClose;
 
+        public void Close()
+        {
 
-        private string _UserEmail = Settings.Default.UserDate.Email;
-        public string UserEmail
+            RequestClose?.Invoke(new Prism.Services.Dialogs.DialogResult(ButtonResult.Cancel));
+        }
+
+        public bool CanCloseDialog()
         {
-            get { return _UserEmail; }
-            set { _UserEmail = value; }
+            return true;
         }
 
+        public void OnDialogClosed()
+        {
 
-        private string _UserRegionName;
-        public string UserRegionName
+        }
+
+        public void OnDialogOpened(IDialogParameters parameters)
         {
-            get { return _UserRegionName; }
-            set { _UserRegionName = value; }
+
         }
-        public void Close()
+
+
+        #region 文案
+
+        private string _Text_useracc = "";
+
+        public string Text_useracc
         {
-           
-            RequestClose?.Invoke(new Prism.Services.Dialogs.DialogResult(ButtonResult.Cancel));
+            get { return _Text_useracc; }
+            set
+            {
+                SetProperty(ref _Text_useracc, value);
+            }
         }
 
-        public bool CanCloseDialog()
+
+        private string _Text_admail = "";
+
+        public string Text_admail
         {
-            return true;
+            get { return _Text_admail; }
+            set
+            {
+                SetProperty(ref _Text_admail, value);
+            }
         }
 
-        public void OnDialogClosed()
+        private string _Text_logout = "";
+
+        public string Text_logout
+        {
+            get { return _Text_logout; }
+            set
+            {
+                SetProperty(ref _Text_logout, value);
+            }
+        }
+
+        private string _Text_no = "";
+
+        public string Text_no
         {
+            get { return _Text_no; }
+            set
+            {
+                SetProperty(ref _Text_no, value);
+            }
+        }
+
+        private string _Text_yes = "";
 
+        public string Text_yes
+        {
+            get { return _Text_yes; }
+            set
+            {
+                SetProperty(ref _Text_yes, value);
+            }
         }
 
-        public void OnDialogOpened(IDialogParameters parameters)
+        private string _Text_useroutmsg = "";
+
+        public string Text_useroutmsg
         {
-           
+            get { return _Text_useroutmsg; }
+            set
+            {
+                SetProperty(ref _Text_useroutmsg, value);
+            }
         }
 
+        private string _Text_userouttol = "";
+
+        public string Text_userouttol
+        {
+            get { return _Text_userouttol; }
+            set
+            {
+                SetProperty(ref _Text_userouttol, value);
+            }
+        }
+
+        private void InitString()
+        {
+
+            Text_useracc = App.ServiceLoader.GetString("Text_useracc");
+            Text_admail = App.ServiceLoader.GetString("Text_admail");
+            Text_logout = App.ServiceLoader.GetString("Text_logout");
+
+            Text_userouttol = App.ServiceLoader.GetString("Text_userouttol");
+            Text_useroutmsg = App.ServiceLoader.GetString("Text_useroutmsg");
+            Text_yes = App.ServiceLoader.GetString("Text_yes");
+            Text_no = App.ServiceLoader.GetString("Text_no");
+
+        }
+
+
+        #endregion
+
+        private string _UserEmail = Settings.Default.UserDate.Email;
+        public string UserEmail
+        {
+            get { return _UserEmail; }
+            set { _UserEmail = value; }
+        }
+
+
+        private string _UserRegionName;
+        public string UserRegionName
+        {
+            get { return _UserRegionName; }
+            set { _UserRegionName = value; }
+        }
+
+
 
 
         public DelegateCommand UserOutCommand { get; set; }
@@ -67,6 +166,7 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
         UserDialogViewModel(IRegionManager regionManager, IDialogService dialogService)
         {
             this.Region = regionManager;
+            InitString();
             UserRegionName = Guid.NewGuid().ToString();
             UserOutCommand = new DelegateCommand(UserOut);
             LogOutCommand = new DelegateCommand(LogOut);
@@ -77,7 +177,7 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
         public void UserOut()
         {
             AlertsMessage alertsMessage = new AlertsMessage();
-            alertsMessage.ShowDialog("Are you sure you want to cancel?", "Cancellation cannot be withdrawn, it will be completed within 3 working days, until then your account will be frozen and cannot be logged in, are you sure you want to cancel your account?", "Cancel", "OK");
+            alertsMessage.ShowDialog(Text_userouttol, Text_useroutmsg, Text_no, Text_yes);
             if (alertsMessage.result == ContentResult.Ok)
             {
                 ServiceHelper.Get_code("user_log_off", UserEmail);

+ 6 - 5
PDF Office/ViewModels/Dialog/ServiceDialog/UserOutCodeRegionViewModel.cs

@@ -17,6 +17,7 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
     public class UserOutCodeRegionViewModel : BindableBase, INavigationAware
     {
         private string uuid = ServiceHelper.GetDeviceSerialNumber();
+        private ErrorCodeHelper ErrorCodeHelper = new ErrorCodeHelper();
         public IDialogService dialogs;
         private UserDialogViewModel UserDialogViewModel;
 
@@ -231,10 +232,10 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
             {
                 
                     
-                    if (ServiceHelper.Ok_code(UserDialogViewModel.UserEmail, Codesum, "user_log_off") == "success")
+                    if (ServiceHelper.Ok_code(UserDialogViewModel.UserEmail, Codesum, "user_log_off") == "200")
                     {
                         
-                        if (ServiceHelper.Usergout(Codesum) == "success")
+                        if (ServiceHelper.Usergout(Codesum) == "200")
                         {
                         Settings.Default.AppProperties.LoginToken = "";
                         App.IsLogin =false;
@@ -246,13 +247,13 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
                         }
                         else
                         {
-                             UserCodemsg = ServiceHelper.Usergout(Codesum);
+                             UserCodemsg = ErrorCodeHelper.Ercode(ServiceHelper.Usergout(Codesum));
                               UserCodemsgVis = Visibility.Visible;
                         }
                     }
                     else
                     {
-                           UserCodemsg = ServiceHelper.Ok_code(UserDialogViewModel.UserEmail, Codesum, "user_log_off");
+                           UserCodemsg = ErrorCodeHelper.Ercode(ServiceHelper.Ok_code(UserDialogViewModel.UserEmail, Codesum, "user_log_off"));
                           UserCodemsgVis = Visibility.Visible;
                     }
                 
@@ -261,7 +262,7 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
             }
             else
             {
-                UserCodemsg = "请输入六位数验证码";
+                UserCodemsg = "Please enter a six digit verification code";
             }
 
         }

+ 62 - 4
PDF Office/ViewModels/Dialog/ServiceDialog/UserOutingLoginViewModel.cs

@@ -45,13 +45,71 @@ namespace PDF_Master.ViewModels.Dialog.ServiceDialog
 
         }
 
+        #region 文案
 
+        private string _Text_useroutinglogin = "";
 
-        public DelegateCommand UserOutCommand { get; set; }
-        public DelegateCommand LogOutCommand { get; set; }
+        public string Text_useroutinglogin
+        {
+            get { return _Text_useroutinglogin; }
+            set
+            {
+                SetProperty(ref _Text_useroutinglogin, value);
+            }
+        }
 
+        private string _Text_useroutingloginmsg1 = "";
 
-       
+        public string Text_useroutingloginmsg1
+        {
+            get { return _Text_useroutingloginmsg1; }
+            set
+            {
+                SetProperty(ref _Text_useroutingloginmsg1, value);
+            }
+        }
+
+        private string _Text_useroutingloginmsg2 = "";
+
+        public string Text_useroutingloginmsg2
+        {
+            get { return _Text_useroutingloginmsg2; }
+            set
+            {
+                SetProperty(ref _Text_useroutingloginmsg2, value);
+            }
+        }
+
+
+        private string _Text_ok = "";
+
+        public string Text_ok
+        {
+            get { return _Text_ok; }
+            set
+            {
+                SetProperty(ref _Text_ok, value);
+            }
+        }
 
+        private void InitString()
+        {
+
+            Text_useroutinglogin = App.ServiceLoader.GetString("Text_useroutinglogin");
+            Text_useroutingloginmsg1 = App.ServiceLoader.GetString("Text_useroutingloginmsg1");
+            Text_useroutingloginmsg2 = App.ServiceLoader.GetString("Text_useroutingloginmsg2");
+            Text_ok = App.ServiceLoader.GetString("Text_ok");
+        }
+
+
+        #endregion
+
+        public UserOutingLoginViewModel(IRegionManager regionManager, IDialogService dialogService)
+        {
+            InitString();
+
+
+        }
+
+        }
     }
-}

+ 77 - 39
PDF Office/ViewModels/Dialog/ToolsDialogs/MergeDialogViewModel.cs

@@ -3,11 +3,13 @@ using ComPDFKit.PDFPage;
 using ComPDFKitViewer.PdfViewer;
 using Microsoft.Win32;
 using PDF_Master.CustomControl;
+using PDF_Master.EventAggregators;
 using PDF_Master.Helper;
 using PDF_Master.Model;
 using PDF_Master.Model.Dialog.ToolsDialogs;
 using PDF_Master.Views.Dialog;
 using Prism.Commands;
+using Prism.Events;
 using Prism.Mvvm;
 using Prism.Services.Dialogs;
 using System;
@@ -21,12 +23,19 @@ using System.Windows;
 using System.Windows.Controls;
 using System.Windows.Media;
 using System.Windows.Media.Imaging;
+using static Dropbox.Api.TeamLog.PaperDownloadFormat;
 using static PDF_Master.Model.Dialog.ToolsDialogs.SaftyDialogs.DeleteSafetySettintgsModel;
 
 namespace PDF_Master.ViewModels.Dialog.ToolsDialogs
 {
     class MergeDialogViewModel : BindableBase, IDialogAware
     {
+        // Fix:存储当前程序加载的文档的路径和tag,
+        //如果路径相同则用tag里的密码解锁,
+        //解锁失败再另行提权
+        private string CurrentFilePath = string.Empty;
+        private string currentLoadedPassword = string.Empty;
+        private IEventAggregator eventAggregator;
         enum PageSizeType
         {
             kDefault = 0,
@@ -36,7 +45,6 @@ namespace PDF_Master.ViewModels.Dialog.ToolsDialogs
             Legal = 4,
             Customized = 5,
         }
-        string CurrentFilePath = "";
 
         #region 框架内容
 
@@ -57,7 +65,27 @@ namespace PDF_Master.ViewModels.Dialog.ToolsDialogs
         public void OnDialogOpened(IDialogParameters parameters)
         {
             CPDFViewer pdfViewer = null;
-            parameters.TryGetValue<CPDFViewer>(ParameterNames.PDFViewer, out pdfViewer);
+            if (parameters.TryGetValue<CPDFViewer>(ParameterNames.PDFViewer, out pdfViewer))
+            {
+                VerifyPasswordResult condition = SecurityHelper.VerifyPasswordByPasswordKind(pdfViewer.Document, EnumPasswordKind.StatusPermissionsPassword, dialogs);
+                if (condition.IsDiscryptied)
+                {
+                    if (!string.IsNullOrEmpty(condition.Password))
+                    {
+                        if (pdfViewer.Document.UnlockWithPassword(condition.Password))
+                        {
+                            pdfViewer.Document.CheckOwnerPassword(condition.Password);
+                        }
+                    }
+                    string unicode;
+                    if (parameters.TryGetValue<string>(ParameterNames.Unicode, out unicode))
+                    {
+                        this.eventAggregator.GetEvent<ShowTipEvent>().Publish(new ShowTipEventArgs() { enumTipKind = EnumTipKind.StatusNone, Unicode = unicode });
+                    } 
+                }
+                currentLoadedPassword = pdfViewer.Document.Password;
+            }
+
             if (pdfViewer != null)
             {
                 CurrentFilePath = pdfViewer.Document.FilePath;
@@ -111,7 +139,7 @@ namespace PDF_Master.ViewModels.Dialog.ToolsDialogs
                 SetProperty(ref inputHeight, value);
             }
         }
-        private int comboBoxSelectedIndex=0;
+        private int comboBoxSelectedIndex = 0;
 
         public int ComboBoxSelectedIndex
         {
@@ -123,8 +151,9 @@ namespace PDF_Master.ViewModels.Dialog.ToolsDialogs
         }
 
 
-        public MergeDialogViewModel(IDialogService dialogService)
+        public MergeDialogViewModel(IDialogService dialogService, IEventAggregator eventAggregator)
         {
+            this.eventAggregator = eventAggregator;
             dialogs = dialogService;
             MergeObjectlist = new ObservableCollection<MergeObject>();
             CancelCommand = new DelegateCommand(Cancel);
@@ -202,7 +231,7 @@ namespace PDF_Master.ViewModels.Dialog.ToolsDialogs
         {
             OpenFileDialog openFile = new OpenFileDialog();
             openFile.Multiselect = true;
-            openFile.Filter = Properties.Resources.imageex.ToLower()+"|*";
+            openFile.Filter = Properties.Resources.imageex.ToLower() + "|*";
             if (openFile.ShowDialog() == false)
             {
                 return null;
@@ -261,9 +290,9 @@ namespace PDF_Master.ViewModels.Dialog.ToolsDialogs
                         //下拉框控件传出来的list是页面索引集合,
                         //此处传给SDK的合并接口的是页码集合,因此需要将集合项遍历+1,只有合并接口是接收页码集合,其余接口是接受页面索引集合
                         List<int> pageIndexs = new List<int>();
-                        for(int j=0;j< MergeObjectlist[i].SetPageRange.Count; j++)
+                        for (int j = 0; j < MergeObjectlist[i].SetPageRange.Count; j++)
                         {
-                            pageIndexs.Add(MergeObjectlist[i].SetPageRange[j]+1);
+                            pageIndexs.Add(MergeObjectlist[i].SetPageRange[j] + 1);
                         }
                         result = SaveDoc.ImportPages(tempDoc, CommonHelper.GetPageParmFromList(pageIndexs));
                     }
@@ -459,51 +488,60 @@ namespace PDF_Master.ViewModels.Dialog.ToolsDialogs
                         //PDF打开失败
                         continue;
                     }
-                    VerifyPasswordResult condition = SecurityHelper.VerifyPasswordByPasswordKind(doc, EnumPasswordKind.StatusPermissionsPassword, dialogs);
-                    if (condition.IsDiscryptied)
+
+                    ///Fix:当前情况下,即带着当前文档进入合并,此时可以先行鉴权
+                    ///鉴权完毕后如果有提权行为,还要给原文档提权
+                    if (!(CurrentFilePath == doc.FilePath && !string.IsNullOrEmpty(currentLoadedPassword) && doc.UnlockWithPassword(currentLoadedPassword)&&doc.CheckOwnerPassword(currentLoadedPassword)))
+                    
                     {
-                        if (condition.Password != null)
+                        VerifyPasswordResult condition = SecurityHelper.VerifyPasswordByPasswordKind(doc, EnumPasswordKind.StatusPermissionsPassword, dialogs);
+                        if (condition.IsDiscryptied)
                         {
-                            mergeObject.Password = condition.Password;
-                            doc.UnlockWithPassword(condition.Password);
+                            if (condition.Password != null)
+                            {
+                                mergeObject.Password = condition.Password;
+                                doc.UnlockWithPassword(condition.Password);
+                            }
+                        }
+                        else
+                        {
+                            doc.Release();
+                            continue;
                         }
                     }
-                    else
-                    {
-                        doc.Release();
-                        continue;
-                    }
-                    mergeObject.DocName = doc.FileName;
-                    mergeObject.DocPageCount = doc.PageCount.ToString() +" "+ App.MainPageLoader.GetString("Merge_ItemPages");
-                    mergeObject.SDKPageCount = doc.PageCount;
-                    mergeObject.DocSize = CommonHelper.GetFileSize(mergeObject.FilePath);
-
-                    //获取第一页缩略图
-                    CPDFPage page = doc.PageAtIndex(0);
-                    Size size = doc.GetPageSize(0);
-
-                    byte[] bmpData = new byte[(int)(size.Width * size.Height * 4)];
-                    WriteableBitmap WirteBitmap = new WriteableBitmap((int)size.Width, (int)size.Height, 96, 96, PixelFormats.Bgra32, null);
-                    page.RenderPageBitmap(0, 0, (int)size.Width, (int)size.Height, 0xFFFFFFFF, bmpData, 1);
-                    WirteBitmap.WritePixels(new Int32Rect(0, 0, (int)size.Width, (int)size.Height), bmpData, WirteBitmap.BackBufferStride, 0);
-                    WirteBitmap.Freeze();
-                    mergeObject.DocThumbnail = WirteBitmap;
-
-                    doc.Release();
-                }
-                MergeObjectlist.Add(mergeObject);
-                UpDataMergeObjectIndex();
+               
+              
+                mergeObject.DocName = doc.FileName;
+                mergeObject.DocPageCount = doc.PageCount.ToString() + " " + App.MainPageLoader.GetString("Merge_ItemPages");
+                mergeObject.SDKPageCount = doc.PageCount;
+                mergeObject.DocSize = CommonHelper.GetFileSize(mergeObject.FilePath);
+
+                //获取第一页缩略图
+                CPDFPage page = doc.PageAtIndex(0);
+                Size size = doc.GetPageSize(0);
+
+                byte[] bmpData = new byte[(int)(size.Width * size.Height * 4)];
+                WriteableBitmap WirteBitmap = new WriteableBitmap((int)size.Width, (int)size.Height, 96, 96, PixelFormats.Bgra32, null);
+                page.RenderPageBitmap(0, 0, (int)size.Width, (int)size.Height, 0xFFFFFFFF, bmpData, 1);
+                WirteBitmap.WritePixels(new Int32Rect(0, 0, (int)size.Width, (int)size.Height), bmpData, WirteBitmap.BackBufferStride, 0);
+                WirteBitmap.Freeze();
+                mergeObject.DocThumbnail = WirteBitmap;
+
+                doc.Release();
             }
+            MergeObjectlist.Add(mergeObject);
+            UpDataMergeObjectIndex();
+        }
 
             if (showDialog)
             {
                 AlertsMessage alertsMessage = new AlertsMessage();
-                alertsMessage.ShowDialog("", "The file was not added successfully, please select the file again.", "OK");
+        alertsMessage.ShowDialog("", "The file was not added successfully, please select the file again.", "OK");
                 if (alertsMessage.result == ContentResult.Ok)
                 {
                 }
             }
-        }
+}
         #endregion
     }
 }

+ 1 - 1
PDF Office/ViewModels/EditTools/Background/BackgroundDocumentContentViewModel.cs

@@ -287,7 +287,7 @@ namespace PDF_Master.ViewModels.EditTools.Background
                     PDFViewer.SetAnnotInteraction(!PDFViewer.GetAnnotInteraction());
                     PDFViewer.Load();
                     PDFViewer.ChangeViewMode(ViewMode.Single);
-                    PDFViewer.SetMouseMode(MouseModes.Default);
+                    PDFViewer.SetMouseMode(MouseModes.PanTool);
                     PageRangeNumber = PDFViewer.Document.PageCount;
                     PDFViewer.Zoom(0.5);
                 }

+ 1 - 1
PDF Office/ViewModels/EditTools/Bates/BatesDocumentContentViewModel.cs

@@ -256,7 +256,7 @@ namespace PDF_Master.ViewModels.EditTools.Bates
                 PDFViewer.SetAnnotInteraction(!PDFViewer.GetAnnotInteraction());
                 PDFViewer.Load();
                 PDFViewer.ChangeViewMode(ViewMode.Single);
-                PDFViewer.SetMouseMode(MouseModes.Default);
+                PDFViewer.SetMouseMode(MouseModes.PanTool);
                 PageRangeNumber = PDFViewer.Document.PageCount;
                 PDFViewer.Zoom(0.5);
             }

+ 1 - 1
PDF Office/ViewModels/EditTools/HeaderFooter/HeaderFooterDocumentContentViewModel.cs

@@ -271,7 +271,7 @@ namespace PDF_Master.ViewModels.EditTools.HeaderFooter
                     PDFViewer.SetAnnotInteraction(!PDFViewer.GetAnnotInteraction());
                     PDFViewer.Load();
                     PDFViewer.ChangeViewMode(ViewMode.Single);
-                    PDFViewer.SetMouseMode(MouseModes.Default);
+                    PDFViewer.SetMouseMode(MouseModes.PanTool);
                     PageRangeNumber = PDFViewer.Document.PageCount;
                     PDFViewer.Zoom(0.5);
                 }

+ 1 - 1
PDF Office/ViewModels/EditTools/Redaction/RedactionContentViewModel.cs

@@ -443,7 +443,7 @@ namespace PDF_Master.ViewModels.EditTools.Redaction
 
             if(isClose)
             {
-                PDFViewer.SetMouseMode(MouseModes.Default);
+                PDFViewer.SetMouseMode(MouseModes.PanTool);
                 redactionRegion.Regions[RegionNames.ViwerRegionName].Remove(PDFViewer);
                 redactionRegion.Regions[RedactionDocumentRegionName].Remove(PDFViewer);
                 this.eventAggregator.GetEvent<CloseEditToolEvent>().Publish(new EnumCloseModeUnicode { Unicode = this.Unicode, Status = EnumCloseMode.StatusCancel });

+ 1 - 1
PDF Office/ViewModels/EditTools/Watermark/WatermarkDocumentContentViewModel.cs

@@ -319,7 +319,7 @@ namespace PDF_Master.ViewModels.EditTools.Watermark
                     PDFViewer.SetAnnotInteraction(!PDFViewer.GetAnnotInteraction());
                     PDFViewer.Load();
                     PDFViewer.ChangeViewMode(ViewMode.Single);
-                    PDFViewer.SetMouseMode(MouseModes.Default);
+                    PDFViewer.SetMouseMode(MouseModes.PanTool);
                     eventAggregator.GetEvent<CurrentWatermarkPDFViewerEvent>().Publish(new CPDFViewerUnicode
                     {
                         Unicode = Unicode,

+ 1 - 0
PDF Office/ViewModels/FillAndSign/FillAndSignContentViewModel.cs

@@ -1674,6 +1674,7 @@ namespace PDF_Master.ViewModels.FillAndSign
             }
             else
             {
+                if(PDFViewer.MouseMode != MouseModes.AnnotCreate)
                 viewContentViewModel.SelectedPrpoertyPanel("PropertyPanelContent", null);
             }
         }

+ 8 - 5
PDF Office/ViewModels/HomePanel/PDFTools/QuickToolsContentViewModel.cs

@@ -386,7 +386,7 @@ namespace PDF_Master.ViewModels.HomePanel.PDFTools
                         break;
                     case PDFFnType.Merge:
                         viewer.InitDocument(dlg.FileName);
-                        if (!CheckPassword(viewer)) { return; }
+                       // if (!CheckPassword(viewer)) { return; }
                         DialogParameters merge = new DialogParameters();
                         merge.Add(ParameterNames.PDFViewer, viewer);
                         merge.Add(ParameterNames.FilePath, dlg.FileNames);
@@ -396,7 +396,6 @@ namespace PDF_Master.ViewModels.HomePanel.PDFTools
                         });
                         break;
                 }
-
             }
         }
         //
@@ -414,9 +413,13 @@ namespace PDF_Master.ViewModels.HomePanel.PDFTools
                 {
                     if (result.Password != null)
                     {
-                        string filePath = viewer.Document.FilePath;
-                        viewer.Document.UnlockWithPassword(result.Password);
-                        viewer.Tag = result.Password;
+                       if(viewer.Document.UnlockWithPassword(result.Password))
+                        {
+                            //if (viewer.Document.CheckOwnerPassword(result.Password))
+                            //{
+                               viewer.Tag = result.Password;
+                            //}
+                        }
                     }
                     ///TODO:
                     ///此处填入需要执行的代码

+ 42 - 1
PDF Office/ViewModels/MainWindowViewModel.cs

@@ -30,6 +30,40 @@ namespace PDF_Master.ViewModels
     {
         private MainContent selectedItem;
 
+
+        #region 文案
+
+        private string T_rename;
+
+        public string T_Rename
+        {
+            get { return T_rename; }
+            set
+            {
+                SetProperty(ref T_rename, value);
+            }
+        }
+        private string _Msgtologin = "";
+
+        public string Msgtologin
+        {
+            get { return _Msgtologin; }
+            set
+            {
+                SetProperty(ref _Msgtologin, value);
+            }
+        }
+
+
+        private void InitString()
+        {
+
+            Msgtologin = App.ServiceLoader.GetString("Msgtologin");
+          
+        }
+
+
+        #endregion
         public MainContent SelectedItem
         {
             get { return selectedItem; }
@@ -96,6 +130,13 @@ namespace PDF_Master.ViewModels
 
 
 
+       
+       
+
+
+
+
+
         /// <summary>
         ///提示登录高级功能
         /// </summary>
@@ -325,7 +366,7 @@ namespace PDF_Master.ViewModels
                     UserVis = Visibility.Visible;
                 }
             }
-            
+            InitString();
         }
 
         //显示新手引导弹窗

+ 35 - 2
PDF Office/ViewModels/PropertyPanel/AnnotPanel/LinkAnnotPropertyViewModel.cs

@@ -36,6 +36,7 @@ using PDF_Master.Views.BOTA;
 using ImTools;
 using PDF_Master.ViewModels.Tools.AnnotManager;
 using PDF_Master.EventAggregators;
+using DryIoc;
 
 namespace PDF_Master.ViewModels.PropertyPanel.AnnotPanel
 {
@@ -609,7 +610,7 @@ namespace PDF_Master.ViewModels.PropertyPanel.AnnotPanel
                 if (CheckPageNumVaild(out int pageNum, PageNumTextContent))
                 {
                     //isSelected = true;
-
+                    historyPageIndex = LinkAnnotArgs.PageIndex;
                     AnnotAttribEvent?.UpdateAttrib(AnnotAttrib.LinkType, LINK_TYPE.GOTO);
                     AnnotAttribEvent?.UpdateAttrib(AnnotAttrib.LinkDestIndx, pageNum - 1);
                     AnnotAttribEvent?.UpdateAnnot();
@@ -940,14 +941,17 @@ namespace PDF_Master.ViewModels.PropertyPanel.AnnotPanel
         {
             int pageIndex = Convert.ToInt32(PageNumTextContent) - 1;
 
+            Rect rect = LinkAnnotArgs.GetLinkCreateArea();
+
             if (btnGOorBack.Tag.ToString() == "GO")
             {
+                pdfViewer.GoToPage(pageIndex);
+
                 //AnnotAttribEvent?.UpdateAttrib(AnnotAttrib.LinkType, LINK_TYPE.GOTO);
                 //AnnotAttribEvent?.UpdateAttrib(AnnotAttrib.LinkDestIndx, pageIndex);
                 //AnnotAttribEvent?.UpdateAnnot();
 
                 historyPageIndex = LinkAnnotArgs != null ? LinkAnnotArgs.PageIndex : backPageIndex;
-                pdfViewer.GoToPage(pageIndex);
 
                 ChangeBtnGOorBack("BACK", btnGOorBack);
             }
@@ -957,6 +961,35 @@ namespace PDF_Master.ViewModels.PropertyPanel.AnnotPanel
                 {
                     SelectAnnotation();
                     pdfViewer.GoToPage(historyPageIndex);
+
+                    double vertical = pdfViewer.GetVerticalOffset();
+                    double height = 0;
+                    CPDFDocument doc = pdfViewer.Document;
+                    CPDFPage docPage = doc.PageAtIndex(historyPageIndex, false);
+                    double y = docPage.PageSize.Height - rect.Top;
+                    double zoom = pdfViewer.ZoomFactor;
+                    double y1 = (rect.Y / 2) * zoom;
+                    if (historyPageIndex < pageIndex)
+                    {
+                        if (docPage.PageSize.Height / 2 < rect.Top)
+                        {
+                            //double y1 = (rect.Y / 2) * zoom;
+                            height = vertical + y1 + y * zoom;
+                            height = vertical + (rect.Bottom * zoom);
+                            pdfViewer.ScrollToVerticalOffset(height);
+                        }
+                    }
+                    else
+                    {
+                        if (docPage.PageSize.Height / 2 < rect.Top)
+                        {
+                            height = vertical + (rect.Y / 2) - y * zoom;
+                            height = vertical + (rect.Top * zoom);
+                            pdfViewer.ScrollToVerticalOffset(height);
+                        }
+                    }
+
+                    //pdfViewer.SelectAnnotation(historyPageIndex, LinkAnnotArgs.AnnotIndex);
                     ChangeBtnGOorBack("GO", btnGOorBack);
                 }
             }

+ 7 - 4
PDF Office/ViewModels/PropertyPanel/AnnotPanel/SnapshotEditMenuViewModel.cs

@@ -38,12 +38,12 @@ namespace PDF_Master.ViewModels.PropertyPanel.AnnotPanel
 {
     public class SnapshotEditMenuViewModel : BindableBase
     {
-        public IDialogService dialogs;
-
         public CustomIconToggleBtn ToggleBtn { get; set; }
         public SnapshotEditToolArgs SnapToolArgs { get; set; }
         public CPDFViewer PDFViewer { get; set; }
 
+        public AreaCropPageUndoManager areaCropPageUndoManager;
+
         private CPDFViewer saveToPDFViewer = new CPDFViewer();
 
         public event EventHandler<KeyValuePair<string, object>> SnapToolEvent;
@@ -109,9 +109,12 @@ namespace PDF_Master.ViewModels.PropertyPanel.AnnotPanel
                 Rect rect = SnapToolArgs.GetSnapshotPDFRect(out int CurrentIndex);
                 List<int> cropPageList = new List<int>();
                 cropPageList.Add(CurrentIndex);
-                PDFViewer?.CropPage(0, rect, cropPageList);
+                areaCropPageUndoManager.ADDAreaCropPage(cropPageList, rect, PDFViewer.Document.GetPageSize(cropPageList[0]));
+                PDFViewer?.CropPage(CPDFDisplayBox.CropBox, rect, cropPageList);
                 PDFViewer.GoToPage(CurrentIndex);
-
+                //Rect rect1 = new Rect(-rect.Left, -rect.Top, PDFViewer.Document.GetPageSize(7).Width + rect.Left, PDFViewer.Document.GetPageSize(7).Height + rect.Top);
+                //PDFViewer?.CropPage(CPDFDisplayBox.CropBox, rect1, cropPageList);
+                PDFViewer.UndoManager.AddHistory(areaCropPageUndoManager);
                 PDFViewer.UndoManager.CanSave = true;
                 PDFViewer.SetMouseMode(MouseModes.PanTool);
                 if (SnapToolEvent != null)

+ 6 - 5
PDF Office/ViewModels/Tools/AnnotToolContentViewModel.Command.cs

@@ -11,6 +11,7 @@ using PDF_Master.Helper;
 using PDF_Master.Model.AnnotPanel;
 using PDF_Master.Properties;
 using PDF_Master.ViewModels.BOTA;
+using PDF_Master.ViewModels.PropertyPanel.AnnotPanel;
 using PDF_Master.ViewModels.Tools.AnnotManager;
 using PDF_Master.Views.BOTA;
 using PDFSettings;
@@ -503,11 +504,10 @@ namespace PDF_Master.ViewModels.Tools
                             viewContentViewModel.SelectedPrpoertyPanel("PropertyPanelContent", null);
                         }
                     }
-                    else
-                    {
-                        if (propertyPanel.IsMultiSelected)
-                            viewContentViewModel.SelectedPrpoertyPanel("PropertyPanelContent", null);
-                    }
+                }
+                if (string.IsNullOrWhiteSpace(StrAnnotToolChecked))
+                {
+                    viewContentViewModel.SelectedPrpoertyPanel("PropertyPanelContent", null);
                 }
             }
         }
@@ -754,6 +754,7 @@ namespace PDF_Master.ViewModels.Tools
 
             SnapshotEditMenuViewModel.SnapToolArgs = snapToolArgs;
             SnapshotEditMenuViewModel.PDFViewer = PDFViewer;
+            SnapshotEditMenuViewModel.areaCropPageUndoManager = new AreaCropPageUndoManager(PDFViewer);
             SnapshotEditMenuViewModel.SnapToolEvent -= SnapshotEditMenuViewModel_SnapToolEvent; ;
             SnapshotEditMenuViewModel.SnapToolEvent += SnapshotEditMenuViewModel_SnapToolEvent;
             var popMenu = App.Current.FindResource("SnapshotContextMenu") as ContextMenu;

+ 1 - 1
PDF Office/ViewModels/Tools/AnnotToolContentViewModel.Function.cs

@@ -593,7 +593,7 @@ namespace PDF_Master.ViewModels.Tools
                         defaultAnnot.AnnotToolType = freetextArgs.EventType;
                         defaultAnnot.ForgoundColor = freetextArgs.FontColor;
                         defaultAnnot.BorderColor = Colors.Transparent;
-                        defaultAnnot.BackgroundColor = Colors.Transparent;
+                        defaultAnnot.BackgroundColor = Colors.White;
                         defaultAnnot.Opacity = 1;
                         defaultAnnot.FontFamily = Settings.Default.AppProperties.Annotate.TextFontFamaily;
                         defaultAnnot.FontSize = 14;

+ 36 - 33
PDF Office/ViewModels/Tools/AnnotToolContentViewModel.Layout.cs

@@ -167,11 +167,8 @@ namespace PDF_Master.ViewModels.Tools
                             case "AddBookMark":
 
                                 menuItem1.Command = AddBookMarkCommand;
-                                SetMenuItemVisibility(menuItem1, "DelBookMark", "AddBookMark", isAddBookMark);
-                                if (viewContentViewModel.mainViewModel.IsBookMode)
-                                {
-                                    menuItem1.IsEnabled = false;
-                                }
+                                SetMenuItemVisibility(menuItem1, "DelBookMark", "AddBookMark", isAddBookMark);
+
                                 break;
 
                             case "DelBookMark":
@@ -190,13 +187,15 @@ namespace PDF_Master.ViewModels.Tools
                             case "ReadModel":
                                 SetMenuItemVisibility(menuItem1, "ReadModel", "UnReadModel", viewContentViewModel.mainViewModel.IsBookMode);
                                 menuItem1.Click -= ReadModel_Click;
-                                menuItem1.Click += ReadModel_Click;
+                                menuItem1.Click += ReadModel_Click;
+
                                 break;
 
                             case "UnReadModel":
                                 SetMenuItemVisibility(menuItem1, "ReadModel", "UnReadModel", viewContentViewModel.mainViewModel.IsBookMode);
                                 menuItem1.Click -= UnReadModel_Click;
                                 menuItem1.Click += UnReadModel_Click;
+
                                 break;
 
                             case "ViewZoom":
@@ -327,38 +326,41 @@ namespace PDF_Master.ViewModels.Tools
                 popMenu.Items.Add(menuItem);
 
                 SetSelectTextOrImageMenuItem(App.MainPageLoader.GetString("ViewRightMenu_Strikethrough"), "Strikeout", annotCommand, out menuItem);
-                popMenu.Items.Add(menuItem);
+                popMenu.Items.Add(menuItem);
+
+                separator = SetSeparator();
+                //popMenu.Items.Add(separator);
+
+                SetSelectTextOrImageMenuItem(App.MainPageLoader.GetString("ViewRightMenu_Text"), "Freetext", annotCommand, out menuItem);
+                //popMenu.Items.Add(menuItem);
+
+                SetSelectTextOrImageMenuItem(App.MainPageLoader.GetString("ViewRightMenu_Note"), "StickyNote", annotCommand, out menuItem);
+                //popMenu.Items.Add(menuItem);
+
+                separator = SetSeparator();
+                popMenu.Items.Add(separator);
+
+                SetSelectTextOrImageMenuItem(App.MainPageLoader.GetString("ViewRightMenu_Rectangle"), "Rect", annotCommand, out menuItem);
+                popMenu.Items.Add(menuItem);
+
+                SetSelectTextOrImageMenuItem(App.MainPageLoader.GetString("ViewRightMenu_Oval"), "Circle", annotCommand, out menuItem);
+                popMenu.Items.Add(menuItem);
+
+                SetSelectTextOrImageMenuItem(App.MainPageLoader.GetString("ViewRightMenu_StraightLine"), "Line", annotCommand, out menuItem);
+                //popMenu.Items.Add(menuItem);
             }
             separator = SetSeparator();
             popMenu.Items.Add(separator);
 
-            SetSelectTextOrImageMenuItem(App.MainPageLoader.GetString("ViewRightMenu_Text"), "Freetext", annotCommand, out menuItem);
-            popMenu.Items.Add(menuItem);
-
-            SetSelectTextOrImageMenuItem(App.MainPageLoader.GetString("ViewRightMenu_Note"), "StickyNote", annotCommand, out menuItem);
-            popMenu.Items.Add(menuItem);
-
-            separator = SetSeparator();
-            popMenu.Items.Add(separator);
-
-            SetSelectTextOrImageMenuItem(App.MainPageLoader.GetString("ViewRightMenu_Rectangle"), "Rect", annotCommand, out menuItem);
-            popMenu.Items.Add(menuItem);
-
-            SetSelectTextOrImageMenuItem(App.MainPageLoader.GetString("ViewRightMenu_Oval"), "Circle", annotCommand, out menuItem);
-            popMenu.Items.Add(menuItem);
-
-            SetSelectTextOrImageMenuItem(App.MainPageLoader.GetString("ViewRightMenu_StraightLine"), "Line", annotCommand, out menuItem);
-            popMenu.Items.Add(menuItem);
-
-            separator = SetSeparator();
-            popMenu.Items.Add(separator);
-
             SetSelectTextOrImageMenuItem(App.MainPageLoader.GetString("ViewRightMenu_AddLink"), "Link", annotCommand, out menuItem);
-            popMenu.Items.Add(menuItem);
-
-            SetSelectTextOrImageMenuItem(App.MainPageLoader.GetString("ViewRightMenu_AddOutline"), "OutLine", annotCommand, out menuItem);
-            popMenu.Items.Add(menuItem);
-
+            popMenu.Items.Add(menuItem);
+
+            if (annotCommand.CommandTarget == TargetType.Annot)
+            {
+                SetSelectTextOrImageMenuItem(App.MainPageLoader.GetString("ViewRightMenu_AddOutline"), "OutLine", annotCommand, out menuItem);
+                popMenu.Items.Add(menuItem);
+            }
+
             return popMenu;
         }
 
@@ -460,6 +462,7 @@ namespace PDF_Master.ViewModels.Tools
             separator.Height = 1;
             separator.BorderBrush = new SolidColorBrush(Color.FromArgb(0x33, 0x00, 0x00, 0x00));
             separator.BorderThickness = new Thickness(1);
+            separator.Margin = new Thickness(-30, 0, 0, 0);
             return separator;
         }
 

+ 15 - 5
PDF Office/ViewModels/Tools/AnnotToolContentViewModel.cs

@@ -206,6 +206,7 @@ namespace PDF_Master.ViewModels.Tools
                 propertyPanel.IsAddLink = false;
                 propertyPanel.IsLocationLink = false;
                 PDFViewer.ToolManager.EnableClickCreate = false;
+                PDFViewer.SetMouseMode(MouseModes.PanTool);
                 ShowPropertyPanel(false);
             }
 
@@ -590,15 +591,24 @@ namespace PDF_Master.ViewModels.Tools
                         if (outLineControlViewModel != null && outLineControl != null)
                         {
                             string str = null;
-                            if (string.IsNullOrEmpty(annotCommand.Text))
-                            {
-                                str = (annotCommand.PageIndex + 1).ToString();
-                            }
-                            else
+                            if (!string.IsNullOrEmpty(annotCommand.Text))
                             {
                                 str = annotCommand.Text;
                             }
 
+                            #region 选择图片
+
+                            //if (string.IsNullOrEmpty(annotCommand.Text))
+                            //{
+                            //    str = (annotCommand.PageIndex + 1).ToString();
+                            //}
+                            //else
+                            //{
+                            //    str = annotCommand.Text;
+                            //}
+
+                            #endregion 选择图片
+
                             outLineControl.AddOutlineNode(str);
                         }
 

+ 5 - 0
PDF Office/ViewModels/Tools/ToolsBarContentViewModel.cs

@@ -197,6 +197,8 @@ namespace PDF_Master.ViewModels.Tools
         {
             DialogParameters value = new DialogParameters();
             value.Add(ParameterNames.PDFViewer, PDFViewer);
+            value.Add(ParameterNames.FilePath, PDFViewer.Document.FilePath);
+            value.Add(ParameterNames.Unicode, unicode);
             dialogs.ShowDialog(DialogNames.MergeDialog, value, e => { });
         }
 
@@ -209,6 +211,7 @@ namespace PDF_Master.ViewModels.Tools
                 {
                     PDFViewer.Document.CheckOwnerPassword(result.Password);
                 }
+                this.eventAggregator.GetEvent<ShowTipEvent>().Publish(new ShowTipEventArgs() { enumTipKind = EnumTipKind.StatusNone, Unicode = unicode });
 
                 DialogParameters value = new DialogParameters();
                 value.Add(ParameterNames.PDFViewer, this.PDFViewer);
@@ -247,6 +250,8 @@ namespace PDF_Master.ViewModels.Tools
                     {
                         PDFViewer.Document.CheckOwnerPassword(result.Password);
                     }
+                    this.eventAggregator.GetEvent<ShowTipEvent>().Publish(new ShowTipEventArgs() { enumTipKind = EnumTipKind.StatusNone, Unicode = unicode });
+
                     DialogParameters value = new DialogParameters();
                     value.Add(ParameterNames.PDFDocument, PDFViewer.Document);
                     value.Add(ParameterNames.ViewContentViewModel, this.viewContentViewModel);

+ 11 - 5
PDF Office/ViewModels/ViewContentViewModel.cs

@@ -252,7 +252,9 @@ namespace PDF_Master.ViewModels
 
         //若point不赋值或从列表中找不到point,系统会提供默认值为(0,0)的新point,所以改用Tuple<int,int>
         public List<FillAndSignIsShape> FillAndSign = new List<FillAndSignIsShape>();
+
         public List<Tuple<int, int>> AnnotSignatures = new List<Tuple<int, int>>();
+
         /// <summary>
         /// 文档的密码
         /// </summary>
@@ -863,9 +865,9 @@ namespace PDF_Master.ViewModels
 
             if ((bool)dialog.ShowDialog())
             {
-                for(int i=0;i<dialog.FileNames.Length;i++)
+                for (int i = 0; i < dialog.FileNames.Length; i++)
                 {
-                    if(App.OpenedFileList.Contains(dialog.FileNames[i]))
+                    if (App.OpenedFileList.Contains(dialog.FileNames[i]))
                     {
                         App.mainWindowViewModel.SelectItem(dialog.FileNames[i]);
                     }
@@ -1104,7 +1106,7 @@ namespace PDF_Master.ViewModels
                         PDFViewer.Document.Release();
                         PDFViewer.InitDocument(filePath);
                         PDFViewer.Document.UnlockWithPassword(result.Password);
-                    }
+                    } 
                     DialogParameters value = new DialogParameters();
                     value.Add(ParameterNames.PDFDocument, PDFViewer.Document);
                     dialogs.ShowDialog(DialogNames.DeleteSafetySettingsDialog, value, e => { });
@@ -1329,6 +1331,7 @@ namespace PDF_Master.ViewModels
             printValue.Add(ParameterNames.PDFViewer, PDFViewer);
             printValue.Add(ParameterNames.FilePath, PDFViewer.Document.FileName);
             printValue.Add(ParameterNames.PrintCurrentPage, PDFViewer.CurrentIndex);
+            printValue.Add(ParameterNames.Unicode, unicode);
             dialogs.ShowDialog(DialogNames.HomePagePrinterDialog, printValue, e => { });
         }
 
@@ -1881,6 +1884,10 @@ namespace PDF_Master.ViewModels
         /// <param name="annotPropertyPanel"></param>
         public void SelectedPrpoertyPanel(string Content, AnnotTransfer annotPropertyPanel)
         {
+            if (Content == "PropertyPanelContent")
+            {
+                IsPropertyOpen = false;
+            }
             NavigationParameters parameters = new NavigationParameters();
             //传其他参数:文档类,空注释面板;
             parameters.Add(ParameterNames.PDFViewer, PDFViewer);
@@ -1899,7 +1906,7 @@ namespace PDF_Master.ViewModels
             CanSave = PDFViewer.UndoManager.CanSave;
             CanUndo = PDFViewer.UndoManager.CanUndo;
             CanRedo = PDFViewer.UndoManager.CanRedo;
-            if (passwordInfo != null&&(!string.IsNullOrEmpty(passwordInfo.OpenPassword)||!string.IsNullOrEmpty(passwordInfo.PermissionsPassword)))
+            if (passwordInfo != null && (!string.IsNullOrEmpty(passwordInfo.OpenPassword) || !string.IsNullOrEmpty(passwordInfo.PermissionsPassword)))
             {
                 if (!string.IsNullOrEmpty(passwordInfo.OpenPassword))
                 {
@@ -2264,7 +2271,6 @@ namespace PDF_Master.ViewModels
                         App.OpenedFileList.Remove(oldpath);
                         DoAfterSaveAs(dlg.FileName);
                     }
-
                     else
                     {
                         //提示文件被其他软件占用 无法保存

+ 12 - 7
PDF Office/Views/BOTA/BookmarkContent.xaml.cs

@@ -53,14 +53,19 @@ namespace PDF_Master.Views.BOTA
 
         private void CleanSelectAll(CleanSelectAllArgs obj)
         {
-            ListViewItem listItem = (ListViewItem)(BookMarkListView.ItemContainerGenerator.ContainerFromItem(BookMarkListView.SelectedItem));
-            TextBlock textBlock = CommonHelper.FindVisualChild<TextBlock>(listItem);
-            if (textBlock == null)
-                return;
-            TextBox text = CommonHelper.FindVisualChild<TextBox>(listItem);
-            if (textBlock.Visibility == Visibility.Collapsed)
+            
+            foreach (var item in BookMarkListView.SelectedItems)
             {
-                textBlock.Visibility = Visibility.Visible;
+                ListViewItem listItem = (ListViewItem)(BookMarkListView.ItemContainerGenerator.ContainerFromItem(item));
+                if(listItem != null)
+                {
+                    TextBlock textBlock = CommonHelper.FindVisualChild<TextBlock>(listItem);
+                    //TextBox text = CommonHelper.FindVisualChild<TextBox>(listItem);
+                    if (textBlock.Visibility == Visibility.Collapsed)
+                    {
+                        textBlock.Visibility = Visibility.Visible;
+                    }
+                }
             }
             BookMarkListView.SelectedItems.Clear();
         }

+ 8 - 4
PDF Office/Views/Dialog/ServiceDialog/CodeRegion.xaml

@@ -49,7 +49,7 @@
                     FontFamily="Segoe UI"
                     FontSize="14"
                     FontStyle="Normal"
-                    Text="Enter the verification code" />
+                    Text="{Binding Text_vcode}" />
                 <WrapPanel Margin="0,8,0,0" HorizontalAlignment="Left">
                     <TextBox
                         x:Name="text_Code1"
@@ -168,7 +168,7 @@
                         FontFamily="Segoe UI"
                         FontSize="12"
                         FontStyle="Normal"
-                        Text="Didn't receive the verification code?" />
+                        Text="{Binding Text_novcode}" />
                     <TextBlock
                         Width="Auto"
                         Height="20"
@@ -187,7 +187,9 @@
                         Foreground="#1770F4"
                         LineHeight="20"
                         Visibility="{Binding Codeagin, Mode=TwoWay}">
-                        <Hyperlink Command="{Binding CodetooCommand}">Click to resend</Hyperlink>
+                        <Hyperlink Command="{Binding CodetooCommand}">
+                            <TextBlock Text="{Binding Text_recode}"/>
+                            </Hyperlink>
                     </TextBlock>
                 </WrapPanel>
             </StackPanel>
@@ -221,7 +223,9 @@
                     FontStyle="Normal"
                     Foreground="#1770F4"
                     LineHeight="20">
-                    <Hyperlink Command="{Binding BackRegisterLastCommand}">Back to previous step</Hyperlink>
+                    <Hyperlink Command="{Binding BackRegisterLastCommand}">
+                        <TextBlock Text="{Binding Text_back}"/>
+                        </Hyperlink>
                 </TextBlock>
             </StackPanel>
 

+ 11 - 7
PDF Office/Views/Dialog/ServiceDialog/LoginPasswordRegion.xaml

@@ -306,7 +306,7 @@
                     FontSize="20"
                     FontStyle="Normal"
                     FontWeight="SemiBold"
-                    Text="Login" />
+                    Text="{Binding Text_login}" />
                 <WrapPanel Margin="0,34,0,0">
                     <TextBlock
                         Width="Auto"
@@ -327,7 +327,9 @@
                         FontWeight="Normal"
                         Foreground="#1770F4"
                         LineHeight="20">
-                        <Hyperlink Command="{Binding ChangeEmailCommand}">Change Email</Hyperlink>
+                        <Hyperlink Command="{Binding ChangeEmailCommand}">
+                            <TextBlock Text="{Binding Text_chmail}"/>
+                        </Hyperlink>
                     </TextBlock>
                 </WrapPanel>
                 <TextBlock
@@ -338,7 +340,7 @@
                     FontFamily="Segoe UI"
                     FontSize="14"
                     FontStyle="Normal"
-                    Text="Enter password" />
+                    Text="{Binding Text_enterpass}" />
                 <Grid
                     Width="262"
                     Height="32"
@@ -352,7 +354,7 @@
                     <PasswordBox
                         x:Name="Text_Password"
                         Grid.ColumnSpan="2"
-                        help:PasswordBoxHelper.DisplayText="{Binding LoginPasswordMsg, Mode=TwoWay}"
+                        help:PasswordBoxHelper.DisplayText="{Binding LoginPasswordMsg0, Mode=TwoWay}"
                         help:PasswordBoxHelper.Password="{Binding LoginPassword, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                         InputMethod.IsInputMethodEnabled="False"
                         PreviewTextInput="TextBox_PreviewTextInput"
@@ -362,7 +364,7 @@
                         Grid.ColumnSpan="2"
                         Width="262"
                         HorizontalAlignment="Left"
-                        help:PasswordBoxHelper.DisplayText="{Binding LoginPasswordMsg, Mode=TwoWay}"
+                        help:PasswordBoxHelper.DisplayText="{Binding LoginPasswordMsg0, Mode=TwoWay}"
                         InputMethod.IsInputMethodEnabled="False"
                         PreviewTextInput="TextBox_PreviewTextInput"
                         Style="{StaticResource LoginPasswordTextBoxStyle}"
@@ -400,7 +402,7 @@
                     HorizontalAlignment="Left"
                     VerticalAlignment="Top"
                     Command="{Binding LoginCommand}"
-                    Content="Login"
+                    Content="{Binding Text_Login}"
                     IsDefault="True"
                     IsEnabled="{Binding EnableNextStep, Mode=TwoWay}"
                     Style="{StaticResource Btn.cta}" />
@@ -413,7 +415,9 @@
                     FontWeight="Normal"
                     Foreground="#1770F4"
                     LineHeight="20">
-                    <Hyperlink Command="{Binding GoCodeUpdataCommand}">Forgot your password?</Hyperlink>
+                    <Hyperlink Command="{Binding GoCodeUpdataCommand}">
+                        <TextBlock Text="{Binding Text_forgetpass}"/>
+                    </Hyperlink>
                 </TextBlock>
             </StackPanel>
         </Grid>

+ 7 - 5
PDF Office/Views/Dialog/ServiceDialog/LoginRegion.xaml

@@ -304,7 +304,7 @@
                         FontSize="20"
                         FontStyle="Normal"
                         FontWeight="SemiBold"
-                        Text="Login" />
+                        Text="{Binding Text_Login}" />
                     <TextBlock
                         Width="122"
                         Height="22"
@@ -313,7 +313,7 @@
                         FontFamily="Segoe UI"
                         FontSize="14"
                         FontStyle="Normal"
-                        Text="Enter email account" />
+                        Text="{Binding Text_emailac}" />
                     <Grid
                         Width="262"
                         Height="32"
@@ -340,7 +340,7 @@
                         HorizontalAlignment="Center"
                         VerticalAlignment="Top"
                         Command="{Binding LoginNextCommand}"
-                        Content="Next Step"
+                        Content="{Binding Text_next}"
                         IsDefault="True"
                         IsEnabled="{Binding EnableNextStep, Mode=TwoWay}"
                         Style="{StaticResource Btn.cta}" />
@@ -355,7 +355,7 @@
                             FontSize="12"
                             FontWeight="Normal"
                             LineHeight="20"
-                            Text="Don't have an account yet?" />
+                            Text="{Binding Text_noacc}" />
                         <TextBlock
                             Width="43"
                             Height="20"
@@ -367,7 +367,9 @@
                             FontWeight="Normal"
                             Foreground="#1770F4"
                             LineHeight="20">
-                            <Hyperlink Command="{Binding GoLoginCommand}">Register</Hyperlink>
+                            <Hyperlink Command="{Binding GoLoginCommand}">
+                                <TextBlock Text="{Binding Text_toregister}"/>
+                            </Hyperlink>
                         </TextBlock>
 
                     </WrapPanel>

+ 3 - 3
PDF Office/Views/Dialog/ServiceDialog/NOInternetRegion.xaml

@@ -56,7 +56,7 @@
                 FontSize="14"
                 Foreground="#616469"
                 LineHeight="22"
-                Text="No network detected" />
+                Text="{Binding Text_nonet}" />
             <TextBlock
                 Width="262"
                 Height="40"
@@ -67,12 +67,12 @@
                 FontSize="14"
                 Foreground="#94989C"
                 LineHeight="22"
-                Text="To access your files, please connect to the Internet and try again."
+                Text="{Binding Text_toconnect}"
                 TextAlignment="Center"
                 TextWrapping="Wrap" />
             <Button
                 Background="#273C62"
-                Content="Retry"
+                Content="{Binding Text_retry}"
                 Command="{Binding RetryCommand}"
                 Foreground="White"
                 Width="65"

+ 2 - 2
PDF Office/Views/Dialog/ServiceDialog/PasswordUpdataRegion.xaml

@@ -417,7 +417,7 @@
                     FontSize="20"
                     FontStyle="Normal"
                     FontWeight="SemiBold"
-                    Text="Reset password" />
+                    Text="{Binding Text_passuodata}" />
                 <Grid
                     Width="262"
                     Height="32"
@@ -523,7 +523,7 @@
                     Height="32"
                     Margin="0,16,0,0"
                     Command="{Binding PasswordUpdataCommand}"
-                    Content="OK"
+                    Content="{Binding Text_ok}"
                     IsDefault="True"
                     IsEnabled="{Binding EnableNextStep, Mode=TwoWay}"
                     Style="{StaticResource Btn.cta}" />

+ 2 - 2
PDF Office/Views/Dialog/ServiceDialog/RegisterOKRegion.xaml

@@ -48,7 +48,7 @@
                     FontSize="20"
                     FontWeight="SemiBold"
                     LineHeight="28"
-                    Text="Register successfully" />
+                    Text="{Binding Text_regisuccess}" />
                 <Button
                     x:Name="Btn_RegisterNext"
                     Width="262"
@@ -58,7 +58,7 @@
                     VerticalAlignment="Top"
                     Background="#273C62"
                     Command="{Binding RegisterGetStartCommand}"
-                    Content="Getting Started"
+                    Content="{Binding Text_getstart}"
                     Style="{StaticResource Btn.cta}" IsDefault="True" />
             </StackPanel>
         </Grid>

+ 14 - 7
PDF Office/Views/Dialog/ServiceDialog/RegisterRegion.xaml

@@ -308,7 +308,7 @@
                     FontSize="20"
                     FontStyle="Normal"
                     FontWeight="SemiBold"
-                    Text="Sign Up" />
+                    Text="{Binding Text_Signup}" />
                 <Grid
                     Width="262"
                     Height="32"
@@ -411,11 +411,14 @@
                         Width="37"
                         Height="20"
                         FontFamily="Segoe UI"
+                        Margin="2,0,0,0"
                         FontSize="12"
                         FontWeight="Normal"
                         Foreground="#1770F4"
                         LineHeight="20">
-                        <Hyperlink Command="{Binding GoLoginCommand}">Sign in</Hyperlink>
+                        <Hyperlink Command="{Binding GoLoginCommand}">
+                             <TextBlock Text="{Binding Text_Login}"/>
+                           </Hyperlink>
                     </TextBlock>
                 </WrapPanel>
                 <TextBlock
@@ -430,19 +433,23 @@
                     Foreground="#616469"
                     LineHeight="18"
                     TextWrapping="Wrap">
-                    <Run Text="By registering, you agree to the" />
+                    <Run Text="{Binding Text_remsg}" />
                     <Hyperlink
                         Command="{Binding LinkPolicyCommand}"
                         NavigateUri="{Binding UriPolivy}"
-                        TextDecorations="Underline">
-                        privary policy
+                        TextDecorations="Underline"
+                        
+                        >
+                        <TextBlock Text="{Binding Text_privary}"/>
+                       
                     </Hyperlink>
-                    <Run Text="and" />
+                    <Run Text="{Binding Text_and}" />
                     <Hyperlink
                         Command="{Binding LinkLicenseCommand}"
                         NavigateUri="{Binding UriLicense}"
                         TextDecorations="Underline">
-                        License Agreement
+                       
+                        <TextBlock Text="{Binding Text_licens}"/>
                     </Hyperlink>
                 </TextBlock>
             </StackPanel>

+ 3 - 3
PDF Office/Views/Dialog/ServiceDialog/UserDialog.xaml

@@ -41,7 +41,7 @@
                     FontStyle="Normal"
                     FontWeight="SemiBold"
                     LineHeight="28"
-                    Text="Account Information" />
+                    Text="{Binding Text_useracc}" />
                 <Grid Margin="0,32,0,0" Background="#F7F8FA">
                     <StackPanel>
                         <Menu
@@ -77,7 +77,7 @@
                             FontWeight="SemiBold"
                             Foreground="#616469"
                             LineHeight="20"
-                            Text="E-mail address" />
+                            Text="{Binding Text_admail}" />
                         <TextBlock
                             Width="172"
                             Height="22"
@@ -100,7 +100,7 @@
                     HorizontalAlignment="Center"
                     Command="{Binding LogOutCommand}"
                     Style="{StaticResource btn.ghost}">
-                    <TextBlock Text="Log Out" />
+                    <TextBlock Text="{Binding Text_logout}" />
                 </Button>
             </StackPanel>
         </Grid>

+ 4 - 5
PDF Office/Views/Dialog/ServiceDialog/UserOutingLogin.xaml

@@ -31,7 +31,7 @@
                         FontSize="16"
                         FontWeight="SemiBold"
                         LineHeight="24"
-                        Text="Unable to log" />
+                        Text="{Binding Text_useroutinglogin}" />
                 </WrapPanel>
                 <TextBlock
                     Margin="16,16,0,0"
@@ -40,13 +40,12 @@
                     FontSize="14"
                     LineHeight="22"
                     TextWrapping="Wrap">
-                    <Run Text="Your account is currently being logged out and cannot be logged in.                                                                               " />
-                    <Run Text="If you have questions, you can " />
+                    <Run Text="{Binding Text_useroutingloginmsg1}" />
                     <Hyperlink
                         Click="Hyperlink_Click"
                         NavigateUri="https://www.pdfreaderpro.com/zh-cn/contact"
                         TextDecorations="Underline">
-                        contact customer service
+                        <TextBlock Text="{Binding Text_useroutingloginmsg2}"/>                        
                     </Hyperlink>
                 </TextBlock>
                 <Button
@@ -55,7 +54,7 @@
                     Margin="296,32,0,0"
                     HorizontalAlignment="Left"
                     Background="#1770F4"
-                    Content="OK"
+                    Content="{Binding Text_ok}"
                     Foreground="White"
                     IsCancel="True"
                     IsDefault="True" />

+ 14 - 6
PDF Office/Views/MainWindow.xaml

@@ -233,16 +233,24 @@
             HorizontalAlignment="Right"
             Orientation="Horizontal"
             WindowChrome.IsHitTestVisibleInChrome="True">
-
             <Grid x:Name="Grid_Openhight" Visibility="{Binding OphVis,Mode=OneWay}">
-                <Border VerticalAlignment="Center">
-                    <Path Data="M0 4C0 1.79086 1.79086 0 4 0H132C134.209 0 136 1.79086 136 4V10.323C136 10.7319 136.249 11.0996 136.629 11.2514L141.179 13.0715C142.017 13.4068 142.017 14.5932 141.179 14.9285L136.629 16.7486C136.249 16.9004 136 17.2681 136 17.677V24C136 26.2091 134.209 28 132 28H4C1.79086 28 0 26.2091 0 24V4Z" Fill="#FFCF52" />
-                </Border>
+                
+                <WrapPanel VerticalAlignment="Center">
+                    <Border VerticalAlignment="Center" Width="35" Height="28" Background=" #FFCF52" Margin="0,0,-4,0" CornerRadius="4" HorizontalAlignment="Left" />
+
+
+                    <Border VerticalAlignment="Center" >
+                        <Path Data="M0 4C0 1.79086 1.79086 0 4 0H132C134.209 0 136 1.79086 136 4V10.323C136 10.7319 136.249 11.0996 136.629 11.2514L141.179 13.0715C142.017 13.4068 142.017 14.5932 141.179 14.9285L136.629 16.7486C136.249 16.9004 136 17.2681 136 17.677V24C136 26.2091 134.209 28 132 28H4C1.79086 28 0 26.2091 0 24V4Z" Fill="#FFCF52" />
+                    </Border>
+                    
+                </WrapPanel>
                 <TextBlock
+                     FontFamily="PingFang SC"
                     HorizontalAlignment="Center"
                     VerticalAlignment="Center"
-                    FontSize="12"
-                    Text="登录解锁高级功能" />
+                    FontSize="14"
+                    LineHeight="19.6"
+                    Text="{Binding Msgtologin}" />
             </Grid>
 
             <Button