Explorar el Código

【2025】【综合】多语代码整理

niehaoyu hace 3 semanas
padre
commit
630b4e2abf
Se han modificado 100 ficheros con 1199 adiciones y 1194 borrados
  1. 7 2
      PDF Office/PDF Master/AppDelegate.swift
  2. 5 5
      PDF Office/PDF Master/Class/AIInfo/AIConfigWindowController/AINewConfigController.swift
  3. 8 8
      PDF Office/PDF Master/Class/AIInfo/AIConfigWindowController/AINewConfigWindowController.swift
  4. 2 2
      PDF Office/PDF Master/Class/AIInfo/AIConfigWindowController/Views/AIChatView/AIChatView.swift
  5. 5 5
      PDF Office/PDF Master/Class/AIInfo/AIConfigWindowController/Views/AIChatView/CollectionViewItems/AIChatDefaultTIpItem.swift
  6. 2 2
      PDF Office/PDF Master/Class/AIInfo/AIConfigWindowController/Views/AIChatView/CollectionViewItems/AIChatFileInfoItem.swift
  7. 14 14
      PDF Office/PDF Master/Class/AIInfo/AIConfigWindowController/Views/AIChatView/CollectionViewItems/AIChatStringResultItem.swift
  8. 20 20
      PDF Office/PDF Master/Class/AIInfo/AIConfigWindowController/Views/AIChatView/CollectionViewItems/AIChatTranslateResultItem.swift
  9. 2 2
      PDF Office/PDF Master/Class/AIInfo/AIConfigWindowController/Views/AIHeaderView/AIHeaderView.swift
  10. 27 27
      PDF Office/PDF Master/Class/AIInfo/AIConfigWindowController/Views/AIInfoInputView/AIInfoInputView.swift
  11. 2 2
      PDF Office/PDF Master/Class/AIInfo/AIConfigWindowController/Views/AIRedoConfirmView/AIRedoConfirmView.swift
  12. 6 6
      PDF Office/PDF Master/Class/AIInfo/AIConfigWindowController/Views/AITypeItemChooseView/AITypeItemChooseView.swift
  13. 8 8
      PDF Office/PDF Master/Class/AIInfo/AIPurchaseWindowController/AIPurchaseWindowController.swift
  14. 1 1
      PDF Office/PDF Master/Class/AIInfo/AITipIcon/AITipIconView.swift
  15. 7 7
      PDF Office/PDF Master/Class/AIInfo/AITranslateTipWindowController/AITranslateTipWindowController.swift
  16. 4 4
      PDF Office/PDF Master/Class/AIInfo/AITypeChooseView/AITypeChooseView.swift
  17. 16 16
      PDF Office/PDF Master/Class/AIInfo/AIUserInfoController/AIUserInfoController.swift
  18. 4 4
      PDF Office/PDF Master/Class/AIInfo/KMAIRequestServerManager.swift
  19. 1 1
      PDF Office/PDF Master/Class/Account/CancelSubscribe/View/KMCancelSubscribeSuccessCellView.swift
  20. 7 7
      PDF Office/PDF Master/Class/Account/CancelSubscribe/Window/KMCancelSubscribeCouponsWindowController.swift
  21. 10 10
      PDF Office/PDF Master/Class/Account/CancelSubscribe/Window/KMCancelSubscribeSuccessWindowController.swift
  22. 10 10
      PDF Office/PDF Master/Class/Account/CheckIn/Window/KMCheckInWindowController.swift
  23. 15 15
      PDF Office/PDF Master/Class/Account/NewUserGift/Window/KMNewUserGiftWindowController.swift
  24. 11 11
      PDF Office/PDF Master/Class/Account/WinBack/Window/KMWinBackWindowController.swift
  25. 8 8
      PDF Office/PDF Master/Class/ChromiumTabs/KMBrowser.swift
  26. 8 8
      PDF Office/PDF Master/Class/ChromiumTabs/KMBrowserWindowController+CreateFile.swift
  27. 2 2
      PDF Office/PDF Master/Class/ChromiumTabs/KMToolbarRightView.swift
  28. 4 4
      PDF Office/PDF Master/Class/ChromiumTabs/Screen/KMScreenShotEditViewController.swift
  29. 2 2
      PDF Office/PDF Master/Class/ChromiumTabs/Screen/KMScreenShotMaskWindowController.swift
  30. 3 3
      PDF Office/PDF Master/Class/DigtalSignature/DSignatureApperanceManager.swift
  31. 8 8
      PDF Office/PDF Master/Class/DigtalSignature/DSignatureConfig.swift
  32. 4 4
      PDF Office/PDF Master/Class/DigtalSignature/DSignatureConfigWindowController.swift
  33. 43 43
      PDF Office/PDF Master/Class/DigtalSignature/ViewControllers/CDSignatureCertificateCustomViewController.swift
  34. 15 15
      PDF Office/PDF Master/Class/DigtalSignature/ViewControllers/CDSignatureCertificateStateViewController.swift
  35. 3 3
      PDF Office/PDF Master/Class/DigtalSignature/ViewControllers/CDSignatureDrawViewController.swift
  36. 3 3
      PDF Office/PDF Master/Class/DigtalSignature/ViewControllers/CDSignatureTextViewController.swift
  37. 18 18
      PDF Office/PDF Master/Class/DigtalSignature/ViewControllers/DSignatureCertifyDetailViewController.swift
  38. 18 18
      PDF Office/PDF Master/Class/DigtalSignature/ViewControllers/DSignatureCreateInfoViewController.swift
  39. 9 9
      PDF Office/PDF Master/Class/DigtalSignature/ViewControllers/DSignatureCreateViewController.swift
  40. 79 79
      PDF Office/PDF Master/Class/DigtalSignature/ViewControllers/DSignatureDetailsViewController.swift
  41. 15 15
      PDF Office/PDF Master/Class/DigtalSignature/ViewControllers/DSignatureFileListViewController.swift
  42. 14 14
      PDF Office/PDF Master/Class/DigtalSignature/ViewControllers/DSignatureFromFileViewController.swift
  43. 12 12
      PDF Office/PDF Master/Class/DigtalSignature/ViewControllers/DSignatureSaveFolderViewController.swift
  44. 9 9
      PDF Office/PDF Master/Class/DigtalSignature/ViewControllers/DSignatureSaveTypeViewController.swift
  45. 5 5
      PDF Office/PDF Master/Class/DigtalSignature/ViewControllers/Views/DSignatureFileListCellView.swift
  46. 3 3
      PDF Office/PDF Master/Class/Document/KMDocumentController.swift
  47. 7 7
      PDF Office/PDF Master/Class/Document/KMMainDocument.swift
  48. 3 3
      PDF Office/PDF Master/Class/GuideInfo/Controllers/FunctionGuide/KMAIIconGuideView.swift
  49. 3 3
      PDF Office/PDF Master/Class/GuideInfo/Controllers/FunctionGuide/KMAIToolsForCheckInGuideView.swift
  50. 7 7
      PDF Office/PDF Master/Class/GuideInfo/Controllers/FunctionGuide/KMConvertGuideView.swift
  51. 3 3
      PDF Office/PDF Master/Class/GuideInfo/Controllers/FunctionGuide/KMCustomColorGuideView.swift
  52. 10 10
      PDF Office/PDF Master/Class/GuideInfo/Controllers/FunctionGuide/KMOpenFileFunctionView.swift
  53. 10 10
      PDF Office/PDF Master/Class/GuideInfo/Controllers/KMFunctionGuideMultiController.swift
  54. 1 1
      PDF Office/PDF Master/Class/GuideInfo/Controllers/KMFunctionGuideNameItemView.swift
  55. 5 5
      PDF Office/PDF Master/Class/GuideInfo/Controllers/OpenFileGuide/KMOpenFileGuidePanel.swift
  56. 6 6
      PDF Office/PDF Master/Class/GuideInfo/Controllers/OpenFileGuide/KMOpenFileGuideProperty.swift
  57. 6 6
      PDF Office/PDF Master/Class/GuideInfo/Controllers/OpenFileGuide/KMOpenFileGuideToolbar.swift
  58. 1 1
      PDF Office/PDF Master/Class/GuideInfo/KMGuideInfoWindowController.swift
  59. 17 17
      PDF Office/PDF Master/Class/GuideInfo/NewUserGuide/Window/KMNewUserGuideWindowController.swift
  60. 3 3
      PDF Office/PDF Master/Class/KMDeviceBrowserWindowController/KMDeviceBrowserWindowController.swift
  61. 4 4
      PDF Office/PDF Master/Class/KMResourceDownload/KMResourceDownloadManager.swift
  62. 1 1
      PDF Office/PDF Master/Class/MemberCenter/Model/KMMemberCenterManager.swift
  63. 12 12
      PDF Office/PDF Master/Class/MemberCenter/Model/KMMemberInfo.swift
  64. 8 8
      PDF Office/PDF Master/Class/MemberCenter/View/KMEnterNewPasswordView.swift
  65. 9 9
      PDF Office/PDF Master/Class/MemberCenter/View/KMEnterVerificationCodeView.swift
  66. 7 7
      PDF Office/PDF Master/Class/MemberCenter/View/KMForgotPasswordView.swift
  67. 2 2
      PDF Office/PDF Master/Class/MemberCenter/View/KMSignUpBuyView.swift
  68. 37 37
      PDF Office/PDF Master/Class/MemberCenter/View/KMSignUpView.swift
  69. 126 126
      PDF Office/PDF Master/Class/MemberCenter/ViewController/KMUserInfoViewController.swift
  70. 39 39
      PDF Office/PDF Master/Class/MemberCenter/ViewModel/KMProductModel.swift
  71. 35 35
      PDF Office/PDF Master/Class/MemberCenter/ViewModel/KMSignUpViewModel.swift
  72. 12 12
      PDF Office/PDF Master/Class/MemberCenter/ViewModel/KMUserInfoVCModel.swift
  73. 5 5
      PDF Office/PDF Master/Class/MemberCenter/WindowsController/DMG/KMOpenDMGPopupBootWC.swift
  74. 6 6
      PDF Office/PDF Master/Class/MemberCenter/WindowsController/KMCloseAccountWC.swift
  75. 4 4
      PDF Office/PDF Master/Class/MemberCenter/WindowsController/KMCloseApplyWC.swift
  76. 8 8
      PDF Office/PDF Master/Class/MemberCenter/WindowsController/KMCloseVerificationWC.swift
  77. 8 8
      PDF Office/PDF Master/Class/MemberCenter/WindowsController/KMFreeGetAIWC.swift
  78. 1 1
      PDF Office/PDF Master/Class/MemberCenter/WindowsController/KMLoginWindowsController.swift
  79. 14 14
      PDF Office/PDF Master/Class/MemberCenter/WindowsController/KMMemberCenterWindowController.swift
  80. 21 21
      PDF Office/PDF Master/Class/MemberCenter/WindowsController/KMMemberPromptWC.swift
  81. 113 113
      PDF Office/PDF Master/Class/MemberCenter/WindowsController/KMProductCompareWC.swift
  82. 1 1
      PDF Office/PDF Master/Class/PDFTools/AddPassword/View/KMSecurityView.swift
  83. 2 2
      PDF Office/PDF Master/Class/PDFTools/AutoFlow/KMAotuFlowExtension.swift
  84. 7 7
      PDF Office/PDF Master/Class/PDFTools/Compare/KMCompareWindowController.swift
  85. 34 34
      PDF Office/PDF Master/Class/PDFTools/Compare/View/KMCompareView.swift
  86. 7 7
      PDF Office/PDF Master/Class/PDFTools/Compare/ViewController/ContentComplete/View/KMCompareContentView.swift
  87. 3 3
      PDF Office/PDF Master/Class/PDFTools/Compare/ViewController/ContentComplete/View/Text/KMCompareTextHeaderView.swift
  88. 3 3
      PDF Office/PDF Master/Class/PDFTools/Compare/ViewController/ContentComplete/View/Text/KMCompareTextView.swift
  89. 7 7
      PDF Office/PDF Master/Class/PDFTools/Compare/ViewController/ContentComplete/View/Text/KMCompareTextViewItem.swift
  90. 1 1
      PDF Office/PDF Master/Class/PDFTools/Compare/ViewController/ContentComplete/View/Thumb/KMCompareThumbView.swift
  91. 1 1
      PDF Office/PDF Master/Class/PDFTools/Compare/ViewController/ContentSetting/KMCompareContentSettingWindowController.swift
  92. 3 3
      PDF Office/PDF Master/Class/PDFTools/Compare/ViewController/ContentSetting/View/KMCompareContentSettingView.swift
  93. 4 4
      PDF Office/PDF Master/Class/PDFTools/Compare/ViewController/CoveringComplete/View/KMCompareCoveringView.swift
  94. 1 1
      PDF Office/PDF Master/Class/PDFTools/Compare/ViewController/CoveringSetting/KMCompareCoveringSettingWindowController.swift
  95. 18 18
      PDF Office/PDF Master/Class/PDFTools/Compare/ViewController/CoveringSetting/View/KMCompareCoveringSettingView.swift
  96. 8 8
      PDF Office/PDF Master/Class/PDFTools/Compare/ViewController/Save/View/KMCompareSaveView.swift
  97. 1 1
      PDF Office/PDF Master/Class/PDFTools/Compress/View/SettingView/View/Tableview/Cell/KMCompressImagesPanelTableCellView.swift
  98. 10 10
      PDF Office/PDF Master/Class/PDFTools/Convert/ExtractImage/Controller/KMExtractImageWindowController.swift
  99. 55 55
      PDF Office/PDF Master/Class/PDFTools/Convert/NewController/Common/KMPDFConvertManager.swift
  100. 0 0
      PDF Office/PDF Master/Class/PDFTools/Convert/NewController/KMToolCompareWindowController.swift

+ 7 - 2
PDF Office/PDF Master/AppDelegate.swift

@@ -69,9 +69,14 @@ class AppDelegate: NSObject, NSApplicationDelegate {
         }
         
 #if VERSION_DMG
+        
+#if VERSION_BETA
+#else
         let updater = SUUpdater.shared()
         updater?.delegate = self
         updater?.automaticallyChecksForUpdates = true
+#endif
+        
 #else
 #endif
         
@@ -605,7 +610,7 @@ extension AppDelegate : SUUpdaterDelegate {
 #else
         hostURL = "https://www.pdfreaderpro.com/downloads/"
 #endif
-        return hostURL+NSLocalizedString("pdfreaderprocast.xml", comment: "")
+        return hostURL+KMLocalizedString("pdfreaderprocast.xml", comment: "")
     }
     
     func updaterShouldPromptForPermissionToCheck(forUpdates updater: SUUpdater) -> Bool {
@@ -619,7 +624,7 @@ extension AppDelegate : SUUpdaterDelegate {
     }
     
     func upgradeButtonString(for updater: SUUpdater) -> String {
-        return NSLocalizedString("PDF Reader Pro", comment: "")
+        return KMLocalizedString("PDF Reader Pro", comment: "")
     }
 }
 #endif

+ 5 - 5
PDF Office/PDF Master/Class/AIInfo/AIConfigWindowController/AINewConfigController.swift

@@ -251,10 +251,10 @@ class AINewConfigController: NSViewController, AIInfoInputViewDelegate {
             }
             let alert = NSAlert()
             alert.alertStyle = .critical
-            alert.informativeText = NSLocalizedString("All the AI content will be removed. Are you sure you want to clear the session?", comment: "")
-            alert.messageText = NSLocalizedString("Clear session", comment: "")
-            alert.addButton(withTitle: NSLocalizedString("Clear", comment: ""))
-            alert.addButton(withTitle: NSLocalizedString("Cancel", comment: ""))
+            alert.informativeText = KMLocalizedString("All the AI content will be removed. Are you sure you want to clear the session?", comment: "")
+            alert.messageText = KMLocalizedString("Clear session", comment: "")
+            alert.addButton(withTitle: KMLocalizedString("Clear", comment: ""))
+            alert.addButton(withTitle: KMLocalizedString("Cancel", comment: ""))
             let response = alert.runModal()
             if response.rawValue == 1000 {
                 DispatchQueue.main.async {
@@ -391,7 +391,7 @@ class AINewConfigController: NSViewController, AIInfoInputViewDelegate {
             DispatchQueue.main.async {
                 AIChatInfoManager.defaultManager.isAILoading = false
                 
-                let resultStr = NSLocalizedString("File Not Exist", comment: "")
+                let resultStr = KMLocalizedString("File Not Exist", comment: "")
                 chatModel.chatResult = resultStr
                 chatModel.chatInfoState = .stateFailed
                 

+ 8 - 8
PDF Office/PDF Master/Class/AIInfo/AIConfigWindowController/AINewConfigWindowController.swift

@@ -67,7 +67,7 @@ protocol AIConfigWindowDelegate: AnyObject {
 
         // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
         
-        self.window?.title = NSLocalizedString("AI Tools", comment: "")
+        self.window?.title = KMLocalizedString("AI Tools", comment: "")
         
         self.loadAIHeaderView()
         
@@ -292,10 +292,10 @@ protocol AIConfigWindowDelegate: AnyObject {
             }
             let alert = NSAlert()
             alert.alertStyle = .critical
-            alert.informativeText = NSLocalizedString("All the AI content will be removed. Are you sure you want to clear the session?", comment: "")
-            alert.messageText = NSLocalizedString("Clear session", comment: "")
-            alert.addButton(withTitle: NSLocalizedString("Clear", comment: ""))
-            alert.addButton(withTitle: NSLocalizedString("Cancel", comment: ""))
+            alert.informativeText = KMLocalizedString("All the AI content will be removed. Are you sure you want to clear the session?", comment: "")
+            alert.messageText = KMLocalizedString("Clear session", comment: "")
+            alert.addButton(withTitle: KMLocalizedString("Clear", comment: ""))
+            alert.addButton(withTitle: KMLocalizedString("Cancel", comment: ""))
             let response = alert.runModal()
             if response.rawValue == 1000 {
                 DispatchQueue.main.async {
@@ -316,8 +316,8 @@ protocol AIConfigWindowDelegate: AnyObject {
             
             let alert = NSAlert()
             alert.alertStyle = .critical
-            alert.informativeText = NSLocalizedString("No Value Present", comment: "")
-            alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
+            alert.informativeText = KMLocalizedString("No Value Present", comment: "")
+            alert.addButton(withTitle: KMLocalizedString("OK", comment: ""))
             alert.runModal()
             
             return
@@ -443,7 +443,7 @@ protocol AIConfigWindowDelegate: AnyObject {
             DispatchQueue.main.async {
                 AIChatInfoManager.defaultManager.isAILoading = false
                 
-                let resultStr = NSLocalizedString("File Not Exist", comment: "")
+                let resultStr = KMLocalizedString("File Not Exist", comment: "")
                 chatModel.chatResult = resultStr
                 chatModel.chatInfoState = .stateFailed
                 

+ 2 - 2
PDF Office/PDF Master/Class/AIInfo/AIConfigWindowController/Views/AIChatView/AIChatView.swift

@@ -160,7 +160,7 @@ extension AIChatView: NSCollectionViewDataSource {
                 pasteboard.clearContents()
                 pasteboard.setString(model.chatResult, forType: .string)
                 
-                let contextString = NSLocalizedString("Copy Successfully!", comment: "")
+                let contextString = KMLocalizedString("Copy Successfully!", comment: "")
                 _ = CustomAlertView.alertView(message: contextString, fromView: self, withStyle: .black)
             }
             view.reloadData()
@@ -197,7 +197,7 @@ extension AIChatView: NSCollectionViewDataSource {
                 pasteboard.clearContents()
                 pasteboard.setString(model.chatResult, forType: .string)
                 
-                let contextString = NSLocalizedString("Copy Successfully!", comment: "")
+                let contextString = KMLocalizedString("Copy Successfully!", comment: "")
                 _ = CustomAlertView.alertView(message: contextString, fromView: self, withStyle: .black)
             }
             view.setUI()

+ 5 - 5
PDF Office/PDF Master/Class/AIInfo/AIConfigWindowController/Views/AIChatView/CollectionViewItems/AIChatDefaultTIpItem.swift

@@ -41,11 +41,11 @@ class AIChatDefaultTIpItem: NSCollectionViewItem {
         self.contendBox.borderWidth = 0.5
   
         
-        self.aiSummaryLabel.stringValue = NSLocalizedString("AI Summarize", comment: "")
-        self.aiRewritingLabel.stringValue = NSLocalizedString("AI Rewrite", comment: "")
-        self.aiProofreadingLabel.stringValue = NSLocalizedString("AI Proofread", comment: "")
-        self.aiTranslateLabel.stringValue = NSLocalizedString("AI Translate", comment: "")
-        self.aiPonderLabel.stringValue = NSLocalizedString("AI DeepThink", comment: "")
+        self.aiSummaryLabel.stringValue = KMLocalizedString("AI Summarize", comment: "")
+        self.aiRewritingLabel.stringValue = KMLocalizedString("AI Rewrite", comment: "")
+        self.aiProofreadingLabel.stringValue = KMLocalizedString("AI Proofread", comment: "")
+        self.aiTranslateLabel.stringValue = KMLocalizedString("AI Translate", comment: "")
+        self.aiPonderLabel.stringValue = KMLocalizedString("AI DeepThink", comment: "")
 
         self.aiSummaryLabel.font = NSFont.SFProTextRegularFont(13)
         self.aiRewritingLabel.font = NSFont.SFProTextRegularFont(13)

+ 2 - 2
PDF Office/PDF Master/Class/AIInfo/AIConfigWindowController/Views/AIChatView/CollectionViewItems/AIChatFileInfoItem.swift

@@ -70,9 +70,9 @@ class AIChatFileInfoItem: NSCollectionViewItem {
         self.fileSizeLabel.stringValue = self.fileSizeString(Float(self.getFileSize(atPath: filePath)))
         
         if let document = PDFDocument(url: URL(fileURLWithPath: filePath)) {
-            self.filePageCountLabel.stringValue = String(format: "%d ", document.pageCount) + NSLocalizedString("Page", comment: "")
+            self.filePageCountLabel.stringValue = String(format: "%d ", document.pageCount) + KMLocalizedString("Page", comment: "")
             if document.pageCount > 1 {
-                self.filePageCountLabel.stringValue = String(format: "%d ", document.pageCount) + NSLocalizedString("Pages", comment: "")
+                self.filePageCountLabel.stringValue = String(format: "%d ", document.pageCount) + KMLocalizedString("Pages", comment: "")
             }
         } else {
             self.filePageCountLabel.stringValue = ""

+ 14 - 14
PDF Office/PDF Master/Class/AIInfo/AIConfigWindowController/Views/AIChatView/CollectionViewItems/AIChatStringResultItem.swift

@@ -41,13 +41,13 @@ class AIChatStringResultItem: NSCollectionViewItem {
         super.viewDidLoad()
         // Do view setup here.
         
-        self.reWriteBtn.title = NSLocalizedString("Redo", comment: "")
-        self.resultCopyBtn.title = NSLocalizedString("Copy", comment: "")
-        self.resultSaveBtn.title = NSLocalizedString("Save as", comment: "")
+        self.reWriteBtn.title = KMLocalizedString("Redo", comment: "")
+        self.resultCopyBtn.title = KMLocalizedString("Copy", comment: "")
+        self.resultSaveBtn.title = KMLocalizedString("Save as", comment: "")
         
-        self.reWriteBtn.toolTip = NSLocalizedString("Redo", comment: "")
-        self.resultCopyBtn.toolTip = NSLocalizedString("Copy", comment: "")
-        self.resultSaveBtn.toolTip = NSLocalizedString("Save as", comment: "")
+        self.reWriteBtn.toolTip = KMLocalizedString("Redo", comment: "")
+        self.resultCopyBtn.toolTip = KMLocalizedString("Copy", comment: "")
+        self.resultSaveBtn.toolTip = KMLocalizedString("Save as", comment: "")
         
         self.infoCornerView = LeftTopRoundedRectView.init(frame: self.resultBox.bounds)
         self.infoCornerView.autoresizingMask = [.width, .height]
@@ -163,35 +163,35 @@ class AIChatStringResultItem: NSCollectionViewItem {
         }
         
         if self.chatInfoModel.aiConfigType == .summarize {
-            self.resultTitleLabel.stringValue = "#" + NSLocalizedString("AI Summarize", comment: "")
+            self.resultTitleLabel.stringValue = "#" + KMLocalizedString("AI Summarize", comment: "")
             if KMAppearance.isDarkMode() {
                 self.resultTitleLabel.textColor = NSColor(red: 85/255, green: 245/255, blue: 1, alpha: 1)
             } else {
                 self.resultTitleLabel.textColor = NSColor(red: 0, green: 209/255, blue: 222/255, alpha: 1)
             }
         } else if self.chatInfoModel.aiConfigType == .reWriting {
-            self.resultTitleLabel.stringValue = "#" + NSLocalizedString("AI Rewrite", comment: "")
+            self.resultTitleLabel.stringValue = "#" + KMLocalizedString("AI Rewrite", comment: "")
             if KMAppearance.isDarkMode() {
                 self.resultTitleLabel.textColor = NSColor(red: 255/255, green: 105/255, blue: 195/255, alpha: 1)
             } else {
                 self.resultTitleLabel.textColor = NSColor(red: 240/255, green: 28/255, blue: 155/255, alpha: 1)
             }
         } else if self.chatInfoModel.aiConfigType == .proofreading {
-            self.resultTitleLabel.stringValue = "#" + NSLocalizedString("AI Proofread", comment: "")
+            self.resultTitleLabel.stringValue = "#" + KMLocalizedString("AI Proofread", comment: "")
             if KMAppearance.isDarkMode() {
                 self.resultTitleLabel.textColor = NSColor(red: 194/255, green: 157/255, blue: 1, alpha: 1)
             } else {
                 self.resultTitleLabel.textColor = NSColor(red: 108/255, green: 28/255, blue: 240/255, alpha: 1)
             }
         } else if self.chatInfoModel.aiConfigType == .translate {
-            self.resultTitleLabel.stringValue = "#" + NSLocalizedString("AI Translate", comment: "")
+            self.resultTitleLabel.stringValue = "#" + KMLocalizedString("AI Translate", comment: "")
             if KMAppearance.isDarkMode() {
                 self.resultTitleLabel.textColor = NSColor(red: 255/255, green: 152/255, blue: 77/255, alpha: 1)
             } else {
                 self.resultTitleLabel.textColor = NSColor(red: 240/255, green: 101/255, blue: 0, alpha: 1)
             }
         } else if self.chatInfoModel.aiConfigType == .ponder {
-            self.resultTitleLabel.stringValue = "#" + NSLocalizedString("AI DeepThink", comment: "")
+            self.resultTitleLabel.stringValue = "#" + KMLocalizedString("AI DeepThink", comment: "")
             if KMAppearance.isDarkMode() {
                 self.resultTitleLabel.textColor = NSColor(red: 42/255, green: 99/255, blue: 255/255, alpha: 1)
             } else {
@@ -250,7 +250,7 @@ class AIChatStringResultItem: NSCollectionViewItem {
             }
             callBack(self, self.chatInfoModel)
         }
-        let menuItem = NSMenuItem(title: NSLocalizedString("Save as TXT", comment: ""), action: #selector(saveAsTextItemClicked(_:)), keyEquivalent: "")
+        let menuItem = NSMenuItem(title: KMLocalizedString("Save as TXT", comment: ""), action: #selector(saveAsTextItemClicked(_:)), keyEquivalent: "")
         menuItem.target = self
         menuItem.view = confirmView
         menu.addItem(menuItem)
@@ -273,11 +273,11 @@ class AIChatStringResultItem: NSCollectionViewItem {
         
         let menu = NSMenu()
         
-        let menuItem = NSMenuItem(title: NSLocalizedString("Save as TXT", comment: ""), action: #selector(saveAsTextItemClicked(_:)), keyEquivalent: "")
+        let menuItem = NSMenuItem(title: KMLocalizedString("Save as TXT", comment: ""), action: #selector(saveAsTextItemClicked(_:)), keyEquivalent: "")
         menuItem.target = self
         menu.addItem(menuItem)
         
-        let pdfItem = NSMenuItem(title: NSLocalizedString("Save as PDF", comment: ""), action: #selector(saveAsPDFItemClicked(_:)), keyEquivalent: "")
+        let pdfItem = NSMenuItem(title: KMLocalizedString("Save as PDF", comment: ""), action: #selector(saveAsPDFItemClicked(_:)), keyEquivalent: "")
         pdfItem.target = self
         menu.addItem(pdfItem)
         

+ 20 - 20
PDF Office/PDF Master/Class/AIInfo/AIConfigWindowController/Views/AIChatView/CollectionViewItems/AIChatTranslateResultItem.swift

@@ -90,7 +90,7 @@ class AIChatTranslateResultItem: NSCollectionViewItem {
         self.infoCornerView.autoresizingMask = [.width, .height]
         self.infoContendView.addSubview(self.infoCornerView, positioned: .below, relativeTo: self.configTypeTitleLabel)
         
-        self.configTypeTitleLabel.stringValue = "#" + NSLocalizedString("AI Translate", comment: "")
+        self.configTypeTitleLabel.stringValue = "#" + KMLocalizedString("AI Translate", comment: "")
         self.configTypeTitleLabel.font = NSFont.SFProTextSemiboldFont(13)
         
         self.titleLabel1.font = NSFont.SFProTextRegularFont(13)
@@ -99,20 +99,20 @@ class AIChatTranslateResultItem: NSCollectionViewItem {
         self.creditTipLabel.font = NSFont.SFProTextRegularFont(12)
         self.errorTipLabel.font = NSFont.SFProTextRegularFont(12)
         
-        self.titleLabel1.stringValue = NSLocalizedString("You will cost:", comment: "")
-        self.creditTipLabel.stringValue = NSLocalizedString("Tip: 2 credits for each 10,000 characters", comment: "")
-        self.errorTipLabel.stringValue = NSLocalizedString("Insufficient credit", comment: "")
+        self.titleLabel1.stringValue = KMLocalizedString("You will cost:", comment: "")
+        self.creditTipLabel.stringValue = KMLocalizedString("Tip: 2 credits for each 10,000 characters", comment: "")
+        self.errorTipLabel.stringValue = KMLocalizedString("Insufficient credit", comment: "")
         
-        self.cancelBtn.title = NSLocalizedString("Cancel", comment: "")
-        self.confirmBtn.title = NSLocalizedString("Translate", comment: "")
+        self.cancelBtn.title = KMLocalizedString("Cancel", comment: "")
+        self.confirmBtn.title = KMLocalizedString("Translate", comment: "")
         
-        self.reWriteBtn.title = NSLocalizedString("Redo", comment: "")
-        self.resultCopyBtn.title = NSLocalizedString("Copy", comment: "")
-        self.resultSaveBtn.title = NSLocalizedString("Save as", comment: "")
+        self.reWriteBtn.title = KMLocalizedString("Redo", comment: "")
+        self.resultCopyBtn.title = KMLocalizedString("Copy", comment: "")
+        self.resultSaveBtn.title = KMLocalizedString("Save as", comment: "")
         
-        self.reWriteBtn.toolTip = NSLocalizedString("Redo", comment: "")
-        self.resultCopyBtn.toolTip = NSLocalizedString("Copy", comment: "")
-        self.resultSaveBtn.toolTip = NSLocalizedString("Save as", comment: "")
+        self.reWriteBtn.toolTip = KMLocalizedString("Redo", comment: "")
+        self.resultCopyBtn.toolTip = KMLocalizedString("Copy", comment: "")
+        self.resultSaveBtn.toolTip = KMLocalizedString("Save as", comment: "")
         
         self.fromLanguageView.wantsLayer = true
         self.toLanguageView.wantsLayer = true
@@ -239,7 +239,7 @@ class AIChatTranslateResultItem: NSCollectionViewItem {
         
         self.errorTipLabel.textColor = KMAppearance.KMColor_Status_Err()
         
-        self.resultFileDownloadBtn.title = NSLocalizedString("Downloads", comment: "")
+        self.resultFileDownloadBtn.title = KMLocalizedString("Downloads", comment: "")
     }
     
     func reloadData() {
@@ -289,11 +289,11 @@ class AIChatTranslateResultItem: NSCollectionViewItem {
                     self.confirmBtn.isEnabled = false
                 }
                 if self.chatInfoModel.costCredits > 1 {
-                    self.creditsLabel.stringValue = String(format: NSLocalizedString("%@ credits", comment: ""), String(format: "%d", self.chatInfoModel.costCredits))
+                    self.creditsLabel.stringValue = String(format: KMLocalizedString("%@ credits", comment: ""), String(format: "%d", self.chatInfoModel.costCredits))
                 } else {
-                    self.creditsLabel.stringValue = String(format: NSLocalizedString("%@ credit", comment: ""), String(format: "%d", self.chatInfoModel.costCredits))
+                    self.creditsLabel.stringValue = String(format: KMLocalizedString("%@ credit", comment: ""), String(format: "%d", self.chatInfoModel.costCredits))
                 }
-                self.charactersLabel.stringValue = String(format: NSLocalizedString("(Total %@ characters)", comment: ""), String(format: "%d", self.chatInfoModel.totalChart))
+                self.charactersLabel.stringValue = String(format: KMLocalizedString("(Total %@ characters)", comment: ""), String(format: "%d", self.chatInfoModel.totalChart))
 
                 
             } else {
@@ -337,7 +337,7 @@ class AIChatTranslateResultItem: NSCollectionViewItem {
                     self.resultContendView.isHidden = false
                     self.resultLabel.isHidden = false
                     self.resultLabelTopConst.constant = 0
-                    self.resultLabel.stringValue = NSLocalizedString("The translation is canceled.", comment: "")
+                    self.resultLabel.stringValue = KMLocalizedString("The translation is canceled.", comment: "")
                     
                 } else if self.chatInfoModel.chatInfoState == .stateFailed {
                     self.resultContendView.isHidden = false
@@ -513,7 +513,7 @@ class AIChatTranslateResultItem: NSCollectionViewItem {
             }
             callBack(self, self.chatInfoModel)
         }
-        let menuItem = NSMenuItem(title: NSLocalizedString("Save as TXT", comment: ""), action: #selector(saveAsTextItemClicked(_:)), keyEquivalent: "")
+        let menuItem = NSMenuItem(title: KMLocalizedString("Save as TXT", comment: ""), action: #selector(saveAsTextItemClicked(_:)), keyEquivalent: "")
         menuItem.target = self
         menuItem.view = confirmView
         menu.addItem(menuItem)
@@ -534,11 +534,11 @@ class AIChatTranslateResultItem: NSCollectionViewItem {
         
         let menu = NSMenu()
         
-        let menuItem = NSMenuItem(title: NSLocalizedString("Save as TXT", comment: ""), action: #selector(saveAsTextItemClicked(_:)), keyEquivalent: "")
+        let menuItem = NSMenuItem(title: KMLocalizedString("Save as TXT", comment: ""), action: #selector(saveAsTextItemClicked(_:)), keyEquivalent: "")
         menuItem.target = self
         menu.addItem(menuItem)
         
-        let pdfItem = NSMenuItem(title: NSLocalizedString("Save as PDF", comment: ""), action: #selector(saveAsPDFItemClicked(_:)), keyEquivalent: "")
+        let pdfItem = NSMenuItem(title: KMLocalizedString("Save as PDF", comment: ""), action: #selector(saveAsPDFItemClicked(_:)), keyEquivalent: "")
         pdfItem.target = self
         menu.addItem(pdfItem)
         

+ 2 - 2
PDF Office/PDF Master/Class/AIInfo/AIConfigWindowController/Views/AIHeaderView/AIHeaderView.swift

@@ -29,8 +29,8 @@ class AIHeaderView: NSView, NibLoadable {
         self.titleLabel.font = NSFont.SFProTextSemiboldFont(14)
         self.myCreditLabel.font = NSFont.SFProTextSemiboldFont(11)
         
-        self.titleLabel.stringValue = NSLocalizedString("AI Tools Title", comment: "")
-        self.myCreditLabel.stringValue = NSLocalizedString("My AI Credit", comment: "")
+        self.titleLabel.stringValue = KMLocalizedString("AI Tools Title", comment: "")
+        self.myCreditLabel.stringValue = KMLocalizedString("My AI Credit", comment: "")
         
         self.seplineView.wantsLayer = true
         

+ 27 - 27
PDF Office/PDF Master/Class/AIInfo/AIConfigWindowController/Views/AIInfoInputView/AIInfoInputView.swift

@@ -120,15 +120,15 @@ class AIInfoInputView: NSView, NibLoadable, NSTextFieldDelegate, NSTextViewDeleg
         
         self.titleTipBtn.mouseMoveCallback = {[unowned self] mouseEntered in
             if mouseEntered {
-                var tipString = NSLocalizedString("Recommended file size: 10M or less.", comment: "")
+                var tipString = KMLocalizedString("Recommended file size: 10M or less.", comment: "")
                 if self.aiConfigType == .reWriting {
-                    tipString = NSLocalizedString("No more than 2000 characters.", comment: "")
+                    tipString = KMLocalizedString("No more than 2000 characters.", comment: "")
                 } else if self.aiConfigType == .proofreading {
-                    tipString = NSLocalizedString("No more than 2000 characters.", comment: "")
+                    tipString = KMLocalizedString("No more than 2000 characters.", comment: "")
                 } else if self.aiConfigType == .translate {
-                    tipString = NSLocalizedString("2 credit for every 10,000 characters; No more than 10M of a document. ", comment: "")
+                    tipString = KMLocalizedString("2 credit for every 10,000 characters; No more than 10M of a document. ", comment: "")
                 } else if self.aiConfigType == .ponder {
-                    tipString = NSLocalizedString("No more than 2000 characters.", comment: "")
+                    tipString = KMLocalizedString("No more than 2000 characters.", comment: "")
                 }
                 let popViewController = KMToolbarItemPopViewController.init()
                 if self.popOver == nil {
@@ -178,7 +178,7 @@ class AIInfoInputView: NSView, NibLoadable, NSTextFieldDelegate, NSTextViewDeleg
         self.fileSizeTipView.wantsLayer = true
         self.fileSizeTipLabel.font = NSFont.SFProTextRegularFont(12)
         self.fileSizeTipLabel.textColor = KMAppearance.KMColor_Layout_H0()
-        self.fileSizeTipLabel.stringValue = NSLocalizedString("Please upload a file smaller than 10M.", comment: "")
+        self.fileSizeTipLabel.stringValue = KMLocalizedString("Please upload a file smaller than 10M.", comment: "")
         self.fileSizeTipView.layer?.cornerRadius = 2
         self.fileSizeTipView.layer?.masksToBounds = true
         
@@ -189,10 +189,10 @@ class AIInfoInputView: NSView, NibLoadable, NSTextFieldDelegate, NSTextViewDeleg
         self.translateConfigView.wantsLayer = true
         self.translateConfigView.layer?.backgroundColor = NSColor.clear.cgColor
         
-        self.typeEmptyTipLabel.stringValue = NSLocalizedString("Select the AI tool", comment: "")
+        self.typeEmptyTipLabel.stringValue = KMLocalizedString("Select the AI tool", comment: "")
         
-        self.chooseCurFileBtn.title = NSLocalizedString("Current File", comment: "")
-        self.chooseFileBtn.title = NSLocalizedString("Choose", comment: "")
+        self.chooseCurFileBtn.title = KMLocalizedString("Current File", comment: "")
+        self.chooseFileBtn.title = KMLocalizedString("Choose", comment: "")
         
         self.translateChangeBtn.mouseMoveCallback = {[weak self] mouseEntered in
             if mouseEntered {
@@ -278,7 +278,7 @@ class AIInfoInputView: NSView, NibLoadable, NSTextFieldDelegate, NSTextViewDeleg
             self.chooseFileBtn.isEnabled = true
         }
         
-        self.startButton.title = NSLocalizedString("Start (1 credit)", comment: "")
+        self.startButton.title = KMLocalizedString("Start (1 credit)", comment: "")
         if self.aiConfigType == .none {
             self.typeEmptyTipView.isHidden = false
             self.infoContendView.isHidden = true
@@ -309,7 +309,7 @@ class AIInfoInputView: NSView, NibLoadable, NSTextFieldDelegate, NSTextViewDeleg
                 self.inputTextCountLabel.isHidden = true
                 self.placeholdLabel.isHidden = false
                 self.chooseFileBtnView.isHidden = false
-                self.placeholdLabel.stringValue = NSLocalizedString("Summarize the current file or click choose other files.", comment: "")
+                self.placeholdLabel.stringValue = KMLocalizedString("Summarize the current file or click choose other files.", comment: "")
                 self.placeholdLabelTopConst.constant = NSHeight(self.chooseFileBtnView.frame) + 4
                 
                 if self.filePath.isEmpty == false {
@@ -320,9 +320,9 @@ class AIInfoInputView: NSView, NibLoadable, NSTextFieldDelegate, NSTextViewDeleg
                     self.fileNameLabel.stringValue = filePathURL.lastPathComponent
                     self.fileSizeLabel.stringValue = self.fileSizeString(Float(self.getFileSize(atPath: self.filePath)))
                     if let document = PDFDocument(url: URL(fileURLWithPath: filePath)) {
-                        self.filePageCountLabel.stringValue = String(format: "%d ", document.pageCount) + NSLocalizedString("Page", comment: "")
+                        self.filePageCountLabel.stringValue = String(format: "%d ", document.pageCount) + KMLocalizedString("Page", comment: "")
                         if document.pageCount > 1 {
-                            self.filePageCountLabel.stringValue = String(format: "%d ", document.pageCount) + NSLocalizedString("Pages", comment: "")
+                            self.filePageCountLabel.stringValue = String(format: "%d ", document.pageCount) + KMLocalizedString("Pages", comment: "")
                         }
                     } else {
                         self.filePageCountLabel.stringValue = ""
@@ -337,7 +337,7 @@ class AIInfoInputView: NSView, NibLoadable, NSTextFieldDelegate, NSTextViewDeleg
                     self.placeholdLabel.isHidden = true
                     self.startButton.isEnabled = true
                 }
-                self.placeholdLabel.stringValue = NSLocalizedString("Enter or paste content here...", comment: "")
+                self.placeholdLabel.stringValue = KMLocalizedString("Enter or paste content here...", comment: "")
                 
             } else if self.aiConfigType == .ponder {
                 self.textScrollView.isHidden = false
@@ -346,7 +346,7 @@ class AIInfoInputView: NSView, NibLoadable, NSTextFieldDelegate, NSTextViewDeleg
                     self.placeholdLabel.isHidden = true
                     self.startButton.isEnabled = true
                 }
-                self.placeholdLabel.stringValue = NSLocalizedString("Enter or paste content here...", comment: "")
+                self.placeholdLabel.stringValue = KMLocalizedString("Enter or paste content here...", comment: "")
                 
             }  else if self.aiConfigType == .proofreading {
                 self.textScrollView.isHidden = false
@@ -355,7 +355,7 @@ class AIInfoInputView: NSView, NibLoadable, NSTextFieldDelegate, NSTextViewDeleg
                     self.placeholdLabel.isHidden = true
                     self.startButton.isEnabled = true
                 }
-                self.placeholdLabel.stringValue = NSLocalizedString("Enter or paste content here...", comment: "")
+                self.placeholdLabel.stringValue = KMLocalizedString("Enter or paste content here...", comment: "")
                 
             } else if self.aiConfigType == .translate {
                 self.textScrollView.isHidden = false
@@ -366,10 +366,10 @@ class AIInfoInputView: NSView, NibLoadable, NSTextFieldDelegate, NSTextViewDeleg
                 self.placeholdLabelTopConst.constant = 58
                 self.textScrollViewTopConst.constant = 58
                 
-                self.placeholdLabel.stringValue = NSLocalizedString("Enter or paste content here...", comment: "")
+                self.placeholdLabel.stringValue = KMLocalizedString("Enter or paste content here...", comment: "")
                 
                 if self.filePath.isEmpty == false {
-                    self.startButton.title = NSLocalizedString("Start", comment: "")
+                    self.startButton.title = KMLocalizedString("Start", comment: "")
                     self.fileEmptyTextView.string = ""
                     self.fileInfoContendView.isHidden = false
                     self.placeholdLabel.isHidden = true
@@ -382,9 +382,9 @@ class AIInfoInputView: NSView, NibLoadable, NSTextFieldDelegate, NSTextViewDeleg
                     self.fileSizeLabel.stringValue = self.fileSizeString(Float(self.getFileSize(atPath: self.filePath)))
                     
                     if let document = PDFDocument(url: URL(fileURLWithPath: filePath)) {
-                        self.filePageCountLabel.stringValue = String(format: "%d ", document.pageCount) + NSLocalizedString("Page", comment: "")
+                        self.filePageCountLabel.stringValue = String(format: "%d ", document.pageCount) + KMLocalizedString("Page", comment: "")
                         if document.pageCount > 1 {
-                            self.filePageCountLabel.stringValue = String(format: "%d ", document.pageCount) + NSLocalizedString("Pages", comment: "")
+                            self.filePageCountLabel.stringValue = String(format: "%d ", document.pageCount) + KMLocalizedString("Pages", comment: "")
                         }
                     } else {
                         self.filePageCountLabel.stringValue = ""
@@ -392,7 +392,7 @@ class AIInfoInputView: NSView, NibLoadable, NSTextFieldDelegate, NSTextViewDeleg
                     self.startButton.isEnabled = true
                     
                 } else {
-                    self.startButton.title = NSLocalizedString("Start (1 credit)", comment: "")
+                    self.startButton.title = KMLocalizedString("Start (1 credit)", comment: "")
                     self.textScrollView.isHidden = false
                     if self.fileEmptyTextView.string.isEmpty {
                         self.placeholdLabel.isHidden = false
@@ -438,35 +438,35 @@ class AIInfoInputView: NSView, NibLoadable, NSTextFieldDelegate, NSTextViewDeleg
         
         
         if self.aiConfigType == .summarize {
-            self.titleLabel.stringValue = "#" + NSLocalizedString("AI Summarize", comment: "")
+            self.titleLabel.stringValue = "#" + KMLocalizedString("AI Summarize", comment: "")
             if KMAppearance.isDarkMode() {
                 self.titleLabel.textColor = NSColor(red: 85/255, green: 245/255, blue: 1, alpha: 1)
             } else {
                 self.titleLabel.textColor = NSColor(red: 0, green: 209/255, blue: 222/255, alpha: 1)
             }
         } else if self.aiConfigType == .reWriting {
-            self.titleLabel.stringValue = "#" + NSLocalizedString("AI Rewrite", comment: "")
+            self.titleLabel.stringValue = "#" + KMLocalizedString("AI Rewrite", comment: "")
             if KMAppearance.isDarkMode() {
                 self.titleLabel.textColor = NSColor(red: 255/255, green: 105/255, blue: 195/255, alpha: 1)
             } else {
                 self.titleLabel.textColor = NSColor(red: 240/255, green: 28/255, blue: 155/255, alpha: 1)
             }
         } else if self.aiConfigType == .proofreading {
-            self.titleLabel.stringValue = "#" + NSLocalizedString("AI Proofread", comment: "")
+            self.titleLabel.stringValue = "#" + KMLocalizedString("AI Proofread", comment: "")
             if KMAppearance.isDarkMode() {
                 self.titleLabel.textColor = NSColor(red: 194/255, green: 157/255, blue: 1, alpha: 1)
             } else {
                 self.titleLabel.textColor = NSColor(red: 108/255, green: 28/255, blue: 240/255, alpha: 1)
             }
         } else if self.aiConfigType == .translate {
-            self.titleLabel.stringValue = "#" + NSLocalizedString("AI Translate", comment: "")
+            self.titleLabel.stringValue = "#" + KMLocalizedString("AI Translate", comment: "")
             if KMAppearance.isDarkMode() {
                 self.titleLabel.textColor = NSColor(red: 255/255, green: 152/255, blue: 77/255, alpha: 1)
             } else {
                 self.titleLabel.textColor = NSColor(red: 240/255, green: 101/255, blue: 0, alpha: 1)
             }
         } else if self.aiConfigType == .ponder {
-            self.titleLabel.stringValue = "#" + NSLocalizedString("AI DeepThink", comment: "")
+            self.titleLabel.stringValue = "#" + KMLocalizedString("AI DeepThink", comment: "")
             if KMAppearance.isDarkMode() {
                 self.titleLabel.textColor = NSColor(red: 42/255, green: 99/255, blue: 255/255, alpha: 1)
             } else {
@@ -627,7 +627,7 @@ class AIInfoInputView: NSView, NibLoadable, NSTextFieldDelegate, NSTextViewDeleg
         if !newStatus {
             let alert = NSAlert()
             alert.alertStyle = .critical
-            alert.messageText = NSLocalizedString("Please make sure your internet connection is available.", comment: "")
+            alert.messageText = KMLocalizedString("Please make sure your internet connection is available.", comment: "")
             alert.runModal()
             return
         }

+ 2 - 2
PDF Office/PDF Master/Class/AIInfo/AIConfigWindowController/Views/AIRedoConfirmView/AIRedoConfirmView.swift

@@ -30,8 +30,8 @@ class AIRedoConfirmView: NSView, NibLoadable {
         self.layer?.backgroundColor = NSColor.clear.cgColor
         
         self.infoLabel.font = NSFont.SFProTextRegularFont(13)
-        self.infoLabel.stringValue = NSLocalizedString("Redoing will cost 1 credit. Do you want to redo it?", comment: "")
-        self.redoButton.title = NSLocalizedString("Redo (1 credit)", comment: "")
+        self.infoLabel.stringValue = KMLocalizedString("Redoing will cost 1 credit. Do you want to redo it?", comment: "")
+        self.redoButton.title = KMLocalizedString("Redo (1 credit)", comment: "")
         
     }
     

+ 6 - 6
PDF Office/PDF Master/Class/AIInfo/AIConfigWindowController/Views/AITypeItemChooseView/AITypeItemChooseView.swift

@@ -44,12 +44,12 @@ class AITypeItemChooseView: NSView, NibLoadable {
     override func awakeFromNib() {
         super.awakeFromNib()
          
-        self.summarizeBtn.title = NSLocalizedString("AI Summarize", comment: "")
-        self.reWriteBtn.title = NSLocalizedString("AI Rewrite", comment: "")
-        self.proofreadBtn.title = NSLocalizedString("AI Proofread", comment: "")
-        self.translateBtn.title = NSLocalizedString("AI Translate", comment: "")
+        self.summarizeBtn.title = KMLocalizedString("AI Summarize", comment: "")
+        self.reWriteBtn.title = KMLocalizedString("AI Rewrite", comment: "")
+        self.proofreadBtn.title = KMLocalizedString("AI Proofread", comment: "")
+        self.translateBtn.title = KMLocalizedString("AI Translate", comment: "")
         
-        self.deepseekBtn.title = NSLocalizedString("AI DeepThink", comment: "")
+        self.deepseekBtn.title = KMLocalizedString("AI DeepThink", comment: "")
 
         
         self.summarizeBtn.mouseMoveCallback = {[unowned self] mouseEntered in
@@ -120,7 +120,7 @@ class AITypeItemChooseView: NSView, NibLoadable {
             if mouseEntered && self.closeBtn.isEnabled == true {
                 self.closeBtn.image = NSImage(named: "AIChatInfoClearHover")
                 
-                let tipString = NSLocalizedString("Clear session", comment: "")
+                let tipString = KMLocalizedString("Clear session", comment: "")
                 
                 let popViewController = KMToolbarItemPopViewController.init()
                 if self.popOver == nil {

+ 8 - 8
PDF Office/PDF Master/Class/AIInfo/AIPurchaseWindowController/AIPurchaseWindowController.swift

@@ -61,12 +61,12 @@ class AIPurchaseWindowController: NSWindowController, NSWindowDelegate {
         self.privacyButton.font = NSFont.SFProTextRegularFont(14)
         self.termOfButton.font = NSFont.SFProTextRegularFont(14)
         
-        self.titleLabel.stringValue = NSLocalizedString("Purchase AI Tools", comment: "")
-        self.subTitleLabel.stringValue = NSLocalizedString("Level up your PDF workflow with AI assistant. Unlock advanced features like AI Summarize, AI Translate, AI Rewrite, AI Proofread. ", comment: "")
-        self.priceDesLabel.stringValue = NSLocalizedString("Auto-renewal | 50 credits/month | Cancel anytime", comment: "")
-        self.restoreButton.title = NSLocalizedString("Restore", comment: "")
-        self.privacyButton.title = NSLocalizedString("Privacy Policy", comment: "")
-        self.termOfButton.title = NSLocalizedString("Terms of Service", comment: "")
+        self.titleLabel.stringValue = KMLocalizedString("Purchase AI Tools", comment: "")
+        self.subTitleLabel.stringValue = KMLocalizedString("Level up your PDF workflow with AI assistant. Unlock advanced features like AI Summarize, AI Translate, AI Rewrite, AI Proofread. ", comment: "")
+        self.priceDesLabel.stringValue = KMLocalizedString("Auto-renewal | 50 credits/month | Cancel anytime", comment: "")
+        self.restoreButton.title = KMLocalizedString("Restore", comment: "")
+        self.privacyButton.title = KMLocalizedString("Privacy Policy", comment: "")
+        self.termOfButton.title = KMLocalizedString("Terms of Service", comment: "")
         
         self.purchaseBox.wantsLayer = true
         self.purchaseBox.layer?.cornerRadius = NSHeight(self.purchaseBox.frame)/2
@@ -176,8 +176,8 @@ class AIPurchaseWindowController: NSWindowController, NSWindowDelegate {
             AIInfoManager.default().restoreAI(withInfo: ["receipt_str":IAPProductsManager.default().temptransactioReceipt as Any]) { dict, error in
                 if AIInfoManager.default().aiInfo.infoDict.keys.count > 0 {
                     let alert = NSAlert.init()
-                    alert.messageText = NSLocalizedString("Restore successfully", comment: "")
-                    alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
+                    alert.messageText = KMLocalizedString("Restore successfully", comment: "")
+                    alert.addButton(withTitle: KMLocalizedString("OK", comment: ""))
                     alert.runModal()
                 }
                 self.removeWaitingView((self.window?.contentView)!)

+ 1 - 1
PDF Office/PDF Master/Class/AIInfo/AITipIcon/AITipIconView.swift

@@ -39,7 +39,7 @@ import Cocoa
         
         let menu = NSMenu.init()
         
-        let string = NSLocalizedString("Hide AI robot icon", comment: "")
+        let string = KMLocalizedString("Hide AI robot icon", comment: "")
         let menuItem = NSMenuItem.init(title: string, action: #selector(menuItemClick(_:)), keyEquivalent: "")
         menuItem.tag = 1000
         menu.addItem(menuItem)

+ 7 - 7
PDF Office/PDF Master/Class/AIInfo/AITranslateTipWindowController/AITranslateTipWindowController.swift

@@ -56,13 +56,13 @@ class AITranslateTipWindowController: NSWindowController {
         self.charactersLabel.font = NSFont.SFProTextRegularFont(13)
         self.creditTipLabel.font = NSFont.SFProTextRegularFont(13)
         
-        self.titleLabel1.stringValue = NSLocalizedString("You will cost:", comment: "")
+        self.titleLabel1.stringValue = KMLocalizedString("You will cost:", comment: "")
                 
-        self.creditTipLabel.stringValue = NSLocalizedString("1 credit for every 10,000 characters", comment: "")
-        self.errorTipLabel.stringValue = NSLocalizedString("Insufficient credit", comment: "")
+        self.creditTipLabel.stringValue = KMLocalizedString("1 credit for every 10,000 characters", comment: "")
+        self.errorTipLabel.stringValue = KMLocalizedString("Insufficient credit", comment: "")
         
-        self.cancelBtn.title = NSLocalizedString("Cancel", comment: "")
-        self.confirmBtn.title = NSLocalizedString("Translate", comment: "")
+        self.cancelBtn.title = KMLocalizedString("Cancel", comment: "")
+        self.confirmBtn.title = KMLocalizedString("Translate", comment: "")
         
         DistributedNotificationCenter.default().addObserver(self, selector: #selector(themeChange), name: NSNotification.Name(rawValue: "AppleInterfaceThemeChangedNotification"), object: nil)
         self.updateViewColor()
@@ -82,8 +82,8 @@ class AITranslateTipWindowController: NSWindowController {
             self.confirmBtn.isEnabled = false
         }
         
-        self.creditsLabel.stringValue = String(format: NSLocalizedString("%@ credits", comment: ""), String(format: "%d", self.spendCredits))
-        self.charactersLabel.stringValue = String(format: NSLocalizedString("(Total %@ characters)", comment: ""), String(format: "%d", self.totalChart))
+        self.creditsLabel.stringValue = String(format: KMLocalizedString("%@ credits", comment: ""), String(format: "%d", self.spendCredits))
+        self.charactersLabel.stringValue = String(format: KMLocalizedString("(Total %@ characters)", comment: ""), String(format: "%d", self.totalChart))
     }
     
     func updateViewColor() {

+ 4 - 4
PDF Office/PDF Master/Class/AIInfo/AITypeChooseView/AITypeChooseView.swift

@@ -50,10 +50,10 @@ import Cocoa
             self.contendBox.fillColor = NSColor.white
         }
         
-        self.aiSummaryLabel.stringValue = NSLocalizedString("AI Summarize", comment: "")
-        self.aiRewritingLabel.stringValue = NSLocalizedString("AI Rewrite", comment: "")
-        self.aiProofreadingLabel.stringValue = NSLocalizedString("AI Proofread", comment: "")
-        self.aiTranslateLabel.stringValue = NSLocalizedString("AI Translate", comment: "")
+        self.aiSummaryLabel.stringValue = KMLocalizedString("AI Summarize", comment: "")
+        self.aiRewritingLabel.stringValue = KMLocalizedString("AI Rewrite", comment: "")
+        self.aiProofreadingLabel.stringValue = KMLocalizedString("AI Proofread", comment: "")
+        self.aiTranslateLabel.stringValue = KMLocalizedString("AI Translate", comment: "")
 
         self.aiSummaryLabel.font = NSFont.SFProTextRegularFont(13)
         self.aiRewritingLabel.font = NSFont.SFProTextRegularFont(13)

+ 16 - 16
PDF Office/PDF Master/Class/AIInfo/AIUserInfoController/AIUserInfoController.swift

@@ -65,12 +65,12 @@ import Cocoa
         self.titleLabel.textColor = KMAppearance.KMColor_Layout_H0()
         self.whatNewlabel.textColor = KMAppearance.KMColor_Interactive_A0()
         
-        self.titleLabel.stringValue = NSLocalizedString("AI Tools Title", comment: "")
-        self.whatNewlabel.stringValue = NSLocalizedString("What‘s New", comment: "") + " →"
+        self.titleLabel.stringValue = KMLocalizedString("AI Tools Title", comment: "")
+        self.whatNewlabel.stringValue = KMLocalizedString("What‘s New", comment: "") + " →"
         
-        self.creditsTitleLabel.stringValue = NSLocalizedString("Available credits this month", comment: "")
-        self.alreadyCreditLabel.stringValue = NSLocalizedString("Credits to be unlocked: ", comment: "")
-        self.creditsBuyNowLabel.stringValue = NSLocalizedString("Buy Now", comment: "")
+        self.creditsTitleLabel.stringValue = KMLocalizedString("Available credits this month", comment: "")
+        self.alreadyCreditLabel.stringValue = KMLocalizedString("Credits to be unlocked: ", comment: "")
+        self.creditsBuyNowLabel.stringValue = KMLocalizedString("Buy Now", comment: "")
         
         self.emptyContendBox.isHidden = true
         self.creditsContendBox.isHidden = true
@@ -102,7 +102,7 @@ import Cocoa
         
         self.creditTipBtn.mouseMoveCallback = {[unowned self] mouseEntered in
             if mouseEntered {
-                let tipString = NSLocalizedString("Each use of the AI tools costs 1 or more credits.", comment: "")
+                let tipString = KMLocalizedString("Each use of the AI tools costs 1 or more credits.", comment: "")
           
                 let popViewController = KMToolbarItemPopViewController.init()
                 if self.popOver == nil {
@@ -121,7 +121,7 @@ import Cocoa
         
         self.emptyTipButton.mouseMoveCallback = {[unowned self] mouseEntered in
             if mouseEntered {
-                let tipString = NSLocalizedString("Each use of the AI tools costs 1 or more credits.", comment: "")
+                let tipString = KMLocalizedString("Each use of the AI tools costs 1 or more credits.", comment: "")
           
                 let popViewController = KMToolbarItemPopViewController.init()
                 if self.popOver == nil {
@@ -171,9 +171,9 @@ import Cocoa
         self.emptyBuyNowLabel.font = NSFont.UbuntuMediumFontWithSize(16)
         self.emptyRestoreBtn.font = NSFont.SFProTextRegularFont(14)
         
-        self.emptyTitleLabel.stringValue = NSLocalizedString("You have no credit", comment: "")
-        self.emptyBuyNowLabel.stringValue = NSLocalizedString("Buy Now", comment: "")
-        self.emptyRestoreBtn.title = NSLocalizedString("Enter AI License", comment: "")
+        self.emptyTitleLabel.stringValue = KMLocalizedString("You have no credit", comment: "")
+        self.emptyBuyNowLabel.stringValue = KMLocalizedString("Buy Now", comment: "")
+        self.emptyRestoreBtn.title = KMLocalizedString("Enter AI License", comment: "")
         
         self.emptyRestoreBtn.setTitleColor(KMAppearance.KMColor_Interactive_M0())
         self.emptyRestoreBtn.mouseMoveCallback = {[weak self] mouseEntered in
@@ -184,7 +184,7 @@ import Cocoa
             }
         }
         
-        self.emptyShowAIBtn.title = NSLocalizedString("Show AI robot icon", comment: "")
+        self.emptyShowAIBtn.title = KMLocalizedString("Show AI robot icon", comment: "")
         self.emptyShowAIBtn.setTitleColor(KMAppearance.KMColor_Layout_H0())
         self.emptyShowAIBtn.state = AIInfoManager.default().showAIIcon ? .on : .off
         self.emptyShowAIBtn.isHidden = true
@@ -198,7 +198,7 @@ import Cocoa
         self.creditsInfoBox.layer?.masksToBounds = true
         self.creditsContendBox.fillColor = NSColor.clear
         
-        self.showAIRobotBtn.title = NSLocalizedString("Show AI robot icon", comment: "")
+        self.showAIRobotBtn.title = KMLocalizedString("Show AI robot icon", comment: "")
         self.showAIRobotBtn.setTitleColor(KMAppearance.KMColor_Layout_H0())
         self.showAIRobotBtn.state = AIInfoManager.default().showAIIcon ? .on : .off
         self.showAIRobotBtn.isHidden = true
@@ -213,7 +213,7 @@ import Cocoa
             self.alreadCreditBox.fillColor = NSColor(red: 155/255, green: 83/255, blue: 1, alpha: 0.1)
         }
         
-        self.creditsRestoreBtn.title = NSLocalizedString("Enter AI License", comment: "")
+        self.creditsRestoreBtn.title = KMLocalizedString("Enter AI License", comment: "")
         self.creditsRestoreBtn.setTitleColor(KMAppearance.KMColor_Interactive_M0())
         
         self.creditBuyNowBtn.wantsLayer = true
@@ -279,10 +279,10 @@ import Cocoa
         self.validCreditLabel.stringValue = String(format: "%d", aiInfo.totalToken-aiInfo.usedTimes)
         self.totalCreditLabel.stringValue = "/" + String(format: "%d", aiInfo.totalToken)
         
-        self.alreadyCreditLabel.stringValue = NSLocalizedString("Credits to be unlocked: ", comment: "") + String(format: "%d", aiInfo.pre_creditToken)
+        self.alreadyCreditLabel.stringValue = KMLocalizedString("Credits to be unlocked: ", comment: "") + String(format: "%d", aiInfo.pre_creditToken)
         
         let leftDays = String(format: "%ld", aiInfo.remainingDays)
-        self.timeDescriptionInfoLabel.stringValue = String(format: NSLocalizedString("%@ days left on subscription", comment: ""), leftDays)
+        self.timeDescriptionInfoLabel.stringValue = String(format: KMLocalizedString("%@ days left on subscription", comment: ""), leftDays)
         
         let dateFormatter = DateFormatter.init()
         dateFormatter.dateFormat = "yyyy.MM.dd"
@@ -329,7 +329,7 @@ import Cocoa
         if !newStatus {
             let alert = NSAlert()
             alert.alertStyle = .critical
-            alert.messageText = NSLocalizedString("Please make sure your internet connection is available.", comment: "")
+            alert.messageText = KMLocalizedString("Please make sure your internet connection is available.", comment: "")
             alert.runModal()
             return
         }

+ 4 - 4
PDF Office/PDF Master/Class/AIInfo/KMAIRequestServerManager.swift

@@ -132,7 +132,7 @@ class ResultWrapper: NSObject {
         guard let fileURL = URL(string: filePath) else {
             let alert = NSAlert()
             alert.alertStyle = .critical
-            alert.messageText = NSLocalizedString("Invalid file link", comment: "")
+            alert.messageText = KMLocalizedString("Invalid file link", comment: "")
             alert.runModal()
 
             return
@@ -155,7 +155,7 @@ class ResultWrapper: NSObject {
             if let error = error {
                 let alert = NSAlert()
                 alert.alertStyle = .critical
-                alert.messageText = String(format: "%@:\(error)", NSLocalizedString("Download failed", comment: ""))
+                alert.messageText = String(format: "%@:\(error)", KMLocalizedString("Download failed", comment: ""))
                 alert.runModal()
                 
                 return
@@ -164,7 +164,7 @@ class ResultWrapper: NSObject {
             guard let tempLocalURL = tempLocalURL else {
                 let alert = NSAlert()
                 alert.alertStyle = .critical
-                alert.messageText = NSLocalizedString("Invalid temporary directory", comment: "")
+                alert.messageText = KMLocalizedString("Invalid temporary directory", comment: "")
                 alert.runModal()
 
                 return
@@ -180,7 +180,7 @@ class ResultWrapper: NSObject {
             } catch {
                 let alert = NSAlert()
                 alert.alertStyle = .critical
-                alert.messageText = String(format: "%@:\(error)", NSLocalizedString("Failed to save file", comment: ""))
+                alert.messageText = String(format: "%@:\(error)", KMLocalizedString("Failed to save file", comment: ""))
                 alert.runModal()
             }
         }

+ 1 - 1
PDF Office/PDF Master/Class/Account/CancelSubscribe/View/KMCancelSubscribeSuccessCellView.swift

@@ -24,7 +24,7 @@ class KMCancelSubscribeSuccessOtherCellView: KMCancelSubscribeSuccessCellView {
     
     private lazy var textView_: NSTextView = {
         let view = NSTextView()
-        view.km_placeholderString = NSLocalizedString("What is your problem?", comment: "")
+        view.km_placeholderString = KMLocalizedString("What is your problem?", comment: "")
         return view
     }()
     

+ 7 - 7
PDF Office/PDF Master/Class/Account/CancelSubscribe/Window/KMCancelSubscribeCouponsWindowController.swift

@@ -48,15 +48,15 @@ class KMCancelSubscribeCouponsWindowController: KMNBaseWindowController {
         backgroundIv.image = NSImage(named: "KMImageNameCancelSubscribeCouponsBg")
         backgroundIv.image?.size = window?.frame.size ?? NSMakeSize(400, 357)
         centerBox.borderWidth = 0
-        titleLabel.stringValue = NSLocalizedString("Discount Coupons for New Users!", comment: "")
+        titleLabel.stringValue = KMLocalizedString("Discount Coupons for New Users!", comment: "")
         titleLabel.font = .UbuntuMediumFontWithSize(20)
         titleLabel.isSelectable = false
         
         if KMIsDMGVersion() {
-            if NSLocalizedString("USD", comment: "") == "USD" {
-                couponsLabel.stringValue = String(format: NSLocalizedString("%@ Coupons for you", comment: ""), "$60")
+            if KMLocalizedString("USD", comment: "") == "USD" {
+                couponsLabel.stringValue = String(format: KMLocalizedString("%@ Coupons for you", comment: ""), "$60")
             } else {
-                couponsLabel.stringValue = String(format: NSLocalizedString("%@ Coupons for you", comment: ""), "360元")
+                couponsLabel.stringValue = String(format: KMLocalizedString("%@ Coupons for you", comment: ""), "360元")
             }
         } else {
             var showCNY = false
@@ -67,9 +67,9 @@ class KMCancelSubscribeCouponsWindowController: KMNBaseWindowController {
             }
 #endif
             if showCNY {
-                couponsLabel.stringValue = String(format: NSLocalizedString("%@ Coupons for you", comment: ""), "360元")
+                couponsLabel.stringValue = String(format: KMLocalizedString("%@ Coupons for you", comment: ""), "360元")
             } else {
-                couponsLabel.stringValue = String(format: NSLocalizedString("%@ Coupons for you", comment: ""), "USD 60")
+                couponsLabel.stringValue = String(format: KMLocalizedString("%@ Coupons for you", comment: ""), "USD 60")
             }
         }
         couponsLabel.font = .UbuntuMediumFontWithSize(27)
@@ -91,7 +91,7 @@ class KMCancelSubscribeCouponsWindowController: KMNBaseWindowController {
         buttonBox.contentView?.addSubview(submitButton_)
         submitButton_.frame = buttonBox.contentView?.frame ?? .zero
         submitButton_.autoresizingMask = [.width, .height]
-        submitButton_.title = NSLocalizedString("Get Coupons", comment: "")
+        submitButton_.title = KMLocalizedString("Get Coupons", comment: "")
         submitButton_.font = .UbuntuMediumFontWithSize(20)
         submitButton_.target = self
         submitButton_.action = #selector(submitAction)

+ 10 - 10
PDF Office/PDF Master/Class/Account/CancelSubscribe/Window/KMCancelSubscribeSuccessWindowController.swift

@@ -74,12 +74,12 @@ let kKMAdvancedYearSubscribedOfTrial            = "KMAdvancedYearSubscribedOfTri
         iconIv.image = NSImage(named: "KMImageNameCancelSubscribeSuccessIcon")
         backgroundIv.imageScaling = .scaleAxesIndependently
         
-        titleLabel.stringValue = NSLocalizedString("Cancel Subscription Successfully", comment: "")
+        titleLabel.stringValue = KMLocalizedString("Cancel Subscription Successfully", comment: "")
         titleLabel.font = .UbuntuMediumFontWithSize(24)
-        subTitleLabel.stringValue = NSLocalizedString("Your feedback is essential for improving our product.", comment: "")
+        subTitleLabel.stringValue = KMLocalizedString("Your feedback is essential for improving our product.", comment: "")
         subTitleLabel.font = .UbuntuMediumFontWithSize(14)
         
-        listTitleLabel.stringValue = NSLocalizedString("Why didn't you continue with PDF Reader Pro?", comment: "")
+        listTitleLabel.stringValue = KMLocalizedString("Why didn't you continue with PDF Reader Pro?", comment: "")
         listTitleLabel.font = .UbuntuMediumFontWithSize(16)
         
         tableView.delegate = self
@@ -101,7 +101,7 @@ let kKMAdvancedYearSubscribedOfTrial            = "KMAdvancedYearSubscribedOfTri
         buttonBox.contentView?.addSubview(submitButton_)
         submitButton_.frame = buttonBox.contentView?.frame ?? .zero
         submitButton_.autoresizingMask = [.width, .height]
-        submitButton_.title = NSLocalizedString("Submit", comment: "")
+        submitButton_.title = KMLocalizedString("Submit", comment: "")
         submitButton_.font = .UbuntuMediumFontWithSize(16)
         submitButton_.target = self
         submitButton_.action = #selector(submitAction)
@@ -313,7 +313,7 @@ let kKMAdvancedYearSubscribedOfTrial            = "KMAdvancedYearSubscribedOfTri
         }
         
         if KMMemberCenterManager.manager.isConnectionAvailable() == false {
-            showHud(msg: NSLocalizedString("Please make sure your internet connection is available.", comment: ""))
+            showHud(msg: KMLocalizedString("Please make sure your internet connection is available.", comment: ""))
             return
         }
         
@@ -368,15 +368,15 @@ let kKMAdvancedYearSubscribedOfTrial            = "KMAdvancedYearSubscribedOfTri
         let model = KMCancelSubscribeSuccessModel()
         model.type = type
         if type == .unsatisfiedFunctions {
-            model.titleText = NSLocalizedString("1. Unsatisfied functions", comment: "")
+            model.titleText = KMLocalizedString("1. Unsatisfied functions", comment: "")
         } else if type == .priceInappropriate {
-            model.titleText = NSLocalizedString("2. The price is inappropriate", comment: "")
+            model.titleText = KMLocalizedString("2. The price is inappropriate", comment: "")
         } else if type == .tooManyBugs {
-            model.titleText = NSLocalizedString("3. Too many bugs and unsatisfied experience", comment: "")
+            model.titleText = KMLocalizedString("3. Too many bugs and unsatisfied experience", comment: "")
         } else if type == .accidentallySubscribed {
-            model.titleText = NSLocalizedString("4. Accidentally subscribed", comment: "")
+            model.titleText = KMLocalizedString("4. Accidentally subscribed", comment: "")
         } else if type == .other {
-            model.titleText = NSLocalizedString("5. Others", comment: "")
+            model.titleText = KMLocalizedString("5. Others", comment: "")
         }
         return model
     }

+ 10 - 10
PDF Office/PDF Master/Class/Account/CheckIn/Window/KMCheckInWindowController.swift

@@ -71,7 +71,7 @@ class KMCheckInWindowController: KMNBaseWindowController {
         checkInBackgroundIv.image = NSImage(named: "KMImageNameCheckInListBg")
         checkInBackgroundIv2.image = NSImage(named: "KMImageNameCheckInListBg2")
         checkTopBox.borderWidth = 0
-        checkInLabel.stringValue = NSLocalizedString("Cumulatively Sign in to Get AI Credits", comment: "")
+        checkInLabel.stringValue = KMLocalizedString("Cumulatively Sign in to Get AI Credits", comment: "")
         checkInLabel.font = .SFProTextRegularFont(16)
         checkInTotalLabel.font = .SFProTextRegularFont(12)
         checkInTotalLabel.alignment = .center
@@ -135,8 +135,8 @@ class KMCheckInWindowController: KMNBaseWindowController {
     }
     
     private func _initDespAttriText() {
-        let string = NSLocalizedString("PDF Reader Pro AI Tools: With AI Summarize, Translate, Proofread, and Rewrite", comment: "")
-        let linkString = NSLocalizedString("Learn More", comment: "")
+        let string = KMLocalizedString("PDF Reader Pro AI Tools: With AI Summarize, Translate, Proofread, and Rewrite", comment: "")
+        let linkString = KMLocalizedString("Learn More", comment: "")
         let textString = String(format: "%@ %@", string, linkString)
         let style = NSMutableParagraphStyle()
         
@@ -211,7 +211,7 @@ class KMCheckInWindowController: KMNBaseWindowController {
             let itemView = itemView as? KMCheckInGiftItemView
             itemView?.numLabel.stringValue = "+\(model.creditNum)"
             itemView?.numLabel.font = .SFProTextRegularFont(14)
-            itemView?.creditsLabel.stringValue = NSLocalizedString("Credits", comment: "")
+            itemView?.creditsLabel.stringValue = KMLocalizedString("Credits", comment: "")
             itemView?.creditsLabel.font = .SFProTextRegularFont(14)
             itemView?.giftIv.image = NSImage(named: "KMImageNameCheckInGift")
 
@@ -253,7 +253,7 @@ class KMCheckInWindowController: KMNBaseWindowController {
                 itemView.backgroundView.layer?.backgroundColor = unSelectedBgColor.cgColor
             }
         }
-        itemView.nameLabel.stringValue = String(format: NSLocalizedString("Day %d", comment: ""), model.dayNum)
+        itemView.nameLabel.stringValue = String(format: KMLocalizedString("Day %d", comment: ""), model.dayNum)
         itemView.nameLabel.font = .SFProTextRegularFont(12)
         itemView.nameLabel.textColor = NSColor(hex: "#757780")
     }
@@ -329,9 +329,9 @@ class KMCheckInWindowController: KMNBaseWindowController {
         
         dayNum_ = num
         if dayNum_ == 1 {
-            titleLabel.stringValue = NSLocalizedString("Welcome to Becoming a Member of PDF Reader Pro", comment: "")
+            titleLabel.stringValue = KMLocalizedString("Welcome to Becoming a Member of PDF Reader Pro", comment: "")
         } else {
-            titleLabel.stringValue = String(format: NSLocalizedString("Cumulatively Online for %d Days!", comment: ""), dayNum_)
+            titleLabel.stringValue = String(format: KMLocalizedString("Cumulatively Online for %d Days!", comment: ""), dayNum_)
         }
         
         if datas_.isEmpty {
@@ -342,16 +342,16 @@ class KMCheckInWindowController: KMNBaseWindowController {
             model.isSelected = model.dayNum <= dayNum_
             if model.dayNum == dayNum_ {
                 if dayNum_ == 1 {
-                    subTitleLabel.stringValue = String(format: NSLocalizedString("First Meeting Gift - %d AI Credits", comment: ""), model.creditNum)
+                    subTitleLabel.stringValue = String(format: KMLocalizedString("First Meeting Gift - %d AI Credits", comment: ""), model.creditNum)
                 } else {
-                    subTitleLabel.stringValue = String(format: NSLocalizedString("%d AI Credits Giveaway", comment: ""), model.creditNum)
+                    subTitleLabel.stringValue = String(format: KMLocalizedString("%d AI Credits Giveaway", comment: ""), model.creditNum)
                 }
             }
             if model.dayNum <= dayNum_ {
                 creditNum += model.creditNum
             }
         }
-        checkInTotalLabel.stringValue = String(format: NSLocalizedString("Total AI Credits", comment: "")+": %d", creditNum)
+        checkInTotalLabel.stringValue = String(format: KMLocalizedString("Total AI Credits", comment: "")+": %d", creditNum)
         
         checkInCollectionView.reloadData()
         

+ 15 - 15
PDF Office/PDF Master/Class/Account/NewUserGift/Window/KMNewUserGiftWindowController.swift

@@ -64,8 +64,8 @@ import Cocoa
         backgroundIv.image = NSImage(named: "KMImageNewUserGiftBg")
         backgroundIv.image?.size = window?.frame.size ?? NSMakeSize(660, 490)
         
-        titleLabel.stringValue = NSLocalizedString("Welcome Gift For New Users!", comment: "")
-        subTitleLabel.stringValue = NSLocalizedString("Hi! We’re delighted to meet you. Dive in and enjoy your PDF journey with us!", comment: "")
+        titleLabel.stringValue = KMLocalizedString("Welcome Gift For New Users!", comment: "")
+        subTitleLabel.stringValue = KMLocalizedString("Hi! We’re delighted to meet you. Dive in and enjoy your PDF journey with us!", comment: "")
         titleLabel.font = .UbuntuMediumFontWithSize(30)
         titleLabel.alignment = .center
         subTitleLabel.font = .UbuntuMediumFontWithSize(16)
@@ -88,19 +88,19 @@ import Cocoa
         listBos2.borderWidth = 0
         listBox.contentView = giftItemView_
         listBos2.contentView = giftItemView2_
-        giftItemView_.titleLabel.stringValue = String(format: NSLocalizedString("%d-day VIP Free Trial", comment: ""), 7)
+        giftItemView_.titleLabel.stringValue = String(format: KMLocalizedString("%d-day VIP Free Trial", comment: ""), 7)
         giftItemView_.titleLabel.font = .SFProTextRegularFont(20)
-        giftItemView_.subTitleLabel.stringValue = NSLocalizedString("Enjoy the full functions of PDF Reader Pro.\nEdit, convert, annotate, and combine PDFs.", comment: "")
+        giftItemView_.subTitleLabel.stringValue = KMLocalizedString("Enjoy the full functions of PDF Reader Pro.\nEdit, convert, annotate, and combine PDFs.", comment: "")
         giftItemView_.subTitleLabel.font = .SFProTextRegularFont(14)
         giftItemView2_.titleLabel.font = .SFProTextRegularFont(20)
         
         if KMIsDMGVersion() {
-            if NSLocalizedString("USD", comment: "") == "USD" {
-                giftItemView2_.titleLabel.stringValue = String(format: NSLocalizedString("%@ Coupons in Total", comment: ""), "$60")
-                giftItemView2_.subTitleLabel.stringValue = String(format: NSLocalizedString("New users can get %@ Coupons to upgrade the plan.", comment: ""), "$60")
+            if KMLocalizedString("USD", comment: "") == "USD" {
+                giftItemView2_.titleLabel.stringValue = String(format: KMLocalizedString("%@ Coupons in Total", comment: ""), "$60")
+                giftItemView2_.subTitleLabel.stringValue = String(format: KMLocalizedString("New users can get %@ Coupons to upgrade the plan.", comment: ""), "$60")
             } else {
-                giftItemView2_.titleLabel.stringValue = String(format: NSLocalizedString("%@ Coupons in Total", comment: ""), "360元")
-                giftItemView2_.subTitleLabel.stringValue = String(format: NSLocalizedString("New users can get %@ Coupons to upgrade the plan.", comment: ""), "360元")
+                giftItemView2_.titleLabel.stringValue = String(format: KMLocalizedString("%@ Coupons in Total", comment: ""), "360元")
+                giftItemView2_.subTitleLabel.stringValue = String(format: KMLocalizedString("New users can get %@ Coupons to upgrade the plan.", comment: ""), "360元")
             }
         } else {
             var showCNY = false
@@ -111,12 +111,12 @@ import Cocoa
             }
 #endif
             if showCNY == false {
-//            if NSLocalizedString("USD", comment: "") == "USD" {
-                giftItemView2_.titleLabel.stringValue = String(format: NSLocalizedString("%@ Coupons in Total", comment: ""), "USD 30")
-                giftItemView2_.subTitleLabel.stringValue = String(format: NSLocalizedString("New users can get %@ Coupons to upgrade the plan.", comment: ""), "USD 30")
+//            if KMLocalizedString("USD", comment: "") == "USD" {
+                giftItemView2_.titleLabel.stringValue = String(format: KMLocalizedString("%@ Coupons in Total", comment: ""), "USD 30")
+                giftItemView2_.subTitleLabel.stringValue = String(format: KMLocalizedString("New users can get %@ Coupons to upgrade the plan.", comment: ""), "USD 30")
             } else {
-                giftItemView2_.titleLabel.stringValue = String(format: NSLocalizedString("%@ Coupons in Total", comment: ""), "180元")
-                giftItemView2_.subTitleLabel.stringValue = String(format: NSLocalizedString("New users can get %@ Coupons to upgrade the plan.", comment: ""), "180元")
+                giftItemView2_.titleLabel.stringValue = String(format: KMLocalizedString("%@ Coupons in Total", comment: ""), "180元")
+                giftItemView2_.subTitleLabel.stringValue = String(format: KMLocalizedString("New users can get %@ Coupons to upgrade the plan.", comment: ""), "180元")
             }
         }
         giftItemView2_.subTitleLabel.font = .SFProTextRegularFont(14)
@@ -132,7 +132,7 @@ import Cocoa
         buttonBox.contentView?.addSubview(submitButton_)
         submitButton_.frame = buttonBox.contentView?.frame ?? .zero
         submitButton_.autoresizingMask = [.width, .height]
-        submitButton_.title = NSLocalizedString("Sign in to Get Gift", comment: "")
+        submitButton_.title = KMLocalizedString("Sign in to Get Gift", comment: "")
         submitButton_.font = .UbuntuMediumFontWithSize(16)
         submitButton_.target = self
         submitButton_.action = #selector(submitAction)

+ 11 - 11
PDF Office/PDF Master/Class/Account/WinBack/Window/KMWinBackWindowController.swift

@@ -72,11 +72,11 @@ let KMWinBackIAPProductPurchasedNotificationName = "KMWinBackIAPProductPurchased
 //        backgroundIv.image?.size = window?.frame.size ?? NSMakeSize(520, 540)
 //        iconIv.image = NSImage(named: "KMImageNameWinBackIcon")
 //        
-//        titleLabel.stringValue = NSLocalizedString("PDF Reader Pro", comment: "")
+//        titleLabel.stringValue = KMLocalizedString("PDF Reader Pro", comment: "")
 //        titleLabel.font = .SFProTextRegularFont(20)
 //        
-//        despView_.titleLabel.stringValue = NSLocalizedString("PDF Reader Pro Advanced\n - 6 Months Plan", comment: "")
-//        despView_.tipLabel.stringValue = NSLocalizedString("Because you were previously subscribed to PDF Reader Pro, we are now delivering a special offer to you. ", comment: "")
+//        despView_.titleLabel.stringValue = KMLocalizedString("PDF Reader Pro Advanced\n - 6 Months Plan", comment: "")
+//        despView_.tipLabel.stringValue = KMLocalizedString("Because you were previously subscribed to PDF Reader Pro, we are now delivering a special offer to you. ", comment: "")
 //        despView_.iconIv.image = NSImage(named: "KMImageNameWinBackDespIcon")
 //        
 //        buttonView_.backgroundView.xRadius = 4
@@ -238,7 +238,7 @@ let KMWinBackIAPProductPurchasedNotificationName = "KMWinBackIAPProductPurchased
 //            if KMAppearance.isDarkMode() {
 //                self.titleLabel.textColor = .white
 //                
-//                let attri = NSMutableAttributedString(string: NSLocalizedString("Special Offer - ", comment: ""), attributes: [.font : NSFont.SFProTextRegularFont(32), .foregroundColor : NSColor.white])
+//                let attri = NSMutableAttributedString(string: KMLocalizedString("Special Offer - ", comment: ""), attributes: [.font : NSFont.SFProTextRegularFont(32), .foregroundColor : NSColor.white])
 //                attri.append(.init(string: self.displayPriceString_, attributes: [.font : NSFont.SFProTextRegularFont(32), .foregroundColor : NSColor(hex: "#FD7272")]))
 //                attri.append(.init(string: self.origialPrice_, attributes: [.font : NSFont.SFProTextRegularFont(24), .foregroundColor : NSColor(hex: "#7E7F85"), .strikethroughStyle : NSUnderlineStyle.single.rawValue]))
 //                let style = NSMutableParagraphStyle()
@@ -249,9 +249,9 @@ let KMWinBackIAPProductPurchasedNotificationName = "KMWinBackIAPProductPurchased
 //                self.despBox.fillColor = NSColor.white.withAlphaComponent(0.15)
 //                self.despView_.titleLabel.textColor = .white
 //
-//                let despAttri = NSMutableAttributedString(string: NSLocalizedString("First 6 months", comment: "")+" ", attributes: [.font : NSFont.SFProTextRegularFont(14), .foregroundColor : NSColor.white])
+//                let despAttri = NSMutableAttributedString(string: KMLocalizedString("First 6 months", comment: "")+" ", attributes: [.font : NSFont.SFProTextRegularFont(14), .foregroundColor : NSColor.white])
 //                despAttri.append(.init(string: self.displayPriceString_, attributes: [.font : NSFont.SFProTextRegularFont(14), .foregroundColor : NSColor(hex: "#227AFF")]))
-//                let string = ", " + String(format: NSLocalizedString("then %@ for 6 months.", comment: ""), self.origialPrice_)
+//                let string = ", " + String(format: KMLocalizedString("then %@ for 6 months.", comment: ""), self.origialPrice_)
 //                despAttri.append(.init(string: string, attributes: [.font : NSFont.SFProTextRegularFont(14), .foregroundColor : NSColor.white]))
 //                self.despView_.subTitleLabel.attributedStringValue = despAttri
 //                
@@ -261,7 +261,7 @@ let KMWinBackIAPProductPurchasedNotificationName = "KMWinBackIAPProductPurchased
 //            } else {
 //                self.titleLabel.textColor = NSColor(hex: "#0E1114")
 //                
-//                let attri = NSMutableAttributedString(string: NSLocalizedString("Special Offer - ", comment: ""), attributes: [.font : NSFont.SFProTextRegularFont(32), .foregroundColor : NSColor(hex: "#000150")])
+//                let attri = NSMutableAttributedString(string: KMLocalizedString("Special Offer - ", comment: ""), attributes: [.font : NSFont.SFProTextRegularFont(32), .foregroundColor : NSColor(hex: "#000150")])
 //                attri.append(.init(string: self.displayPriceString_, attributes: [.font : NSFont.SFProTextRegularFont(32), .foregroundColor : NSColor(hex: "#FD7272")]))
 //                attri.append(.init(string: self.origialPrice_, attributes: [.font : NSFont.SFProTextRegularFont(24), .foregroundColor : NSColor(hex: "#757780"), .strikethroughStyle : NSUnderlineStyle.single.rawValue]))
 //                let style = NSMutableParagraphStyle()
@@ -272,9 +272,9 @@ let KMWinBackIAPProductPurchasedNotificationName = "KMWinBackIAPProductPurchased
 //                self.despBox.fillColor = .white
 //                self.despView_.titleLabel.textColor = NSColor(hex: "#0E1114")
 //                
-//                let despAttri = NSMutableAttributedString(string: NSLocalizedString("First 6 months", comment: "")+" ", attributes: [.font : NSFont.SFProTextRegularFont(14), .foregroundColor : NSColor(hex: "#000150")])
+//                let despAttri = NSMutableAttributedString(string: KMLocalizedString("First 6 months", comment: "")+" ", attributes: [.font : NSFont.SFProTextRegularFont(14), .foregroundColor : NSColor(hex: "#000150")])
 //                despAttri.append(.init(string: self.displayPriceString_, attributes: [.font : NSFont.SFProTextRegularFont(14), .foregroundColor : NSColor(hex: "#4982E6")]))
-//                let string = ", " + String(format: NSLocalizedString("then %@ for 6 months.", comment: ""), self.origialPrice_)
+//                let string = ", " + String(format: KMLocalizedString("then %@ for 6 months.", comment: ""), self.origialPrice_)
 //                despAttri.append(.init(string: string, attributes: [.font : NSFont.SFProTextRegularFont(14), .foregroundColor : NSColor(hex: "#000150")]))
 //                self.despView_.subTitleLabel.attributedStringValue = despAttri
 //                
@@ -285,7 +285,7 @@ let KMWinBackIAPProductPurchasedNotificationName = "KMWinBackIAPProductPurchased
 //            
 //            self.buttonView_.backgroundView.colors = [NSColor(hex: "#F8965A"), NSColor(hex: "#FD7171")]
 //            
-//            self.buttonView_.button.title = NSLocalizedString("Get Special Offer - Advanced 6 Mos", comment: "")
+//            self.buttonView_.button.title = KMLocalizedString("Get Special Offer - Advanced 6 Mos", comment: "")
 //            self.buttonView_.button.setTitleColor(.white)
 //        }
 //    }
@@ -381,7 +381,7 @@ let KMWinBackIAPProductPurchasedNotificationName = "KMWinBackIAPProductPurchased
 //            let alert = NSAlert()
 //            alert.alertStyle = .critical
 //            alert.messageText = message
-//            alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
+//            alert.addButton(withTitle: KMLocalizedString("OK", comment: ""))
 //            alert.runModal()
 //        }
 //    }

+ 8 - 8
PDF Office/PDF Master/Class/ChromiumTabs/KMBrowser.swift

@@ -90,10 +90,10 @@ import Cocoa
                             let alert = NSAlert()
                             let message = "Do you want to save the changes made to the document “\(currentDocument.fileURL!.lastPathComponent)”?"
                             alert.messageText = message
-                            alert.informativeText = NSLocalizedString("Your changes will be lost if you don’t save them.", comment: "")
-                            alert.addButton(withTitle: NSLocalizedString("Save", comment: ""))
-                            alert.addButton(withTitle: NSLocalizedString("Don‘t Save", comment: ""))
-                            alert.addButton(withTitle: NSLocalizedString("Cancel", comment: ""))
+                            alert.informativeText = KMLocalizedString("Your changes will be lost if you don’t save them.", comment: "")
+                            alert.addButton(withTitle: KMLocalizedString("Save", comment: ""))
+                            alert.addButton(withTitle: KMLocalizedString("Don‘t Save", comment: ""))
+                            alert.addButton(withTitle: KMLocalizedString("Cancel", comment: ""))
                             let response = alert.runModal()
                             if (response == .alertFirstButtonReturn) { // 保存
                                 currentDocument.save(nil)
@@ -184,10 +184,10 @@ import Cocoa
                             let alert = NSAlert()
                             let message = "Do you want to save the changes made to the document “\(currentDocument.fileURL!.lastPathComponent)”?"
                             alert.messageText = message
-                            alert.informativeText = NSLocalizedString("Your changes will be lost if you don’t save them.", comment: "")
-                            alert.addButton(withTitle: NSLocalizedString("Save", comment: ""))
-                            alert.addButton(withTitle: NSLocalizedString("Don‘t Save", comment: ""))
-                            alert.addButton(withTitle: NSLocalizedString("Cancel", comment: ""))
+                            alert.informativeText = KMLocalizedString("Your changes will be lost if you don’t save them.", comment: "")
+                            alert.addButton(withTitle: KMLocalizedString("Save", comment: ""))
+                            alert.addButton(withTitle: KMLocalizedString("Don‘t Save", comment: ""))
+                            alert.addButton(withTitle: KMLocalizedString("Cancel", comment: ""))
                             let response = alert.runModal()
                             if (response == .alertFirstButtonReturn) { // 保存
                                 if let home = self.tabContents(at: 0) as? KMMainDocument, home.isHome { // 标记 home 最近列表需要强制刷新

+ 8 - 8
PDF Office/PDF Master/Class/ChromiumTabs/KMBrowserWindowController+CreateFile.swift

@@ -174,7 +174,7 @@ extension KMBrowserWindowController {
                   (type == "ppt") ||
                   (type == "pptx") ||
                   (type == "pptx") {
-            let fileName: NSString = String(format: "%@.pdf", NSLocalizedString("Untitled", comment: "")) as NSString
+            let fileName: NSString = String(format: "%@.pdf", KMLocalizedString("Untitled", comment: "")) as NSString
             let savePath = fetchUniquePath(fileName.kUrlToPDFFolderPath() as String)
             openOfficeFile(url: path)
         }
@@ -185,7 +185,7 @@ extension KMBrowserWindowController {
         if !url.path.isPDFValid() {
             let alert = NSAlert()
             alert.alertStyle = .critical
-            alert.messageText = NSLocalizedString("An error occurred while opening this document. The file is damaged and could not be repaired.", comment: "")
+            alert.messageText = KMLocalizedString("An error occurred while opening this document. The file is damaged and could not be repaired.", comment: "")
             alert.beginSheetModal(for: NSApp.mainWindow!) { [weak self] result in
                
                 
@@ -241,7 +241,7 @@ extension KMBrowserWindowController {
             } else {
                 let alert = NSAlert()
                 alert.alertStyle = .critical
-                alert.messageText = NSLocalizedString("An error occurred while opening this document. The file is damaged and could not be repaired.", comment: "")
+                alert.messageText = KMLocalizedString("An error occurred while opening this document. The file is damaged and could not be repaired.", comment: "")
                 alert.beginSheetModal(for: NSApp.mainWindow!) { [weak self] result in
                     
                 }
@@ -368,9 +368,9 @@ extension KMBrowserWindowController {
                         infoString = infoString.appendingFormat("%@\n", errorDic![key] as! CVarArg)
                     }
                 }
-                alert.informativeText = NSLocalizedString("Please install Microsoft Office to create PDFs from Office files", comment: "")
-                alert.messageText = NSLocalizedString("Failed to Create PDF", comment: "")
-                alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
+                alert.informativeText = KMLocalizedString("Please install Microsoft Office to create PDFs from Office files", comment: "")
+                alert.messageText = KMLocalizedString("Failed to Create PDF", comment: "")
+                alert.addButton(withTitle: KMLocalizedString("OK", comment: ""))
                 alert.runModal()
                 return
             }
@@ -413,7 +413,7 @@ extension KMBrowserWindowController {
 
             document = CPDFDocument(data: data)
             
-            let fileName: NSString = String(format: "%@.pdf", NSLocalizedString("Untitled", comment: "")) as NSString
+            let fileName: NSString = String(format: "%@.pdf", KMLocalizedString("Untitled", comment: "")) as NSString
             let savePath = fetchUniquePath(fileName.kUrlToPDFFolderPath() as String)
             let filePath = savePath.deletingLastPathComponent
             if FileManager.default.fileExists(atPath: filePath) == false {
@@ -432,7 +432,7 @@ extension KMBrowserWindowController {
                 }
             }
         } else if let outError = outError {
-            outError.pointee = NSError(domain: "SKDocumentErrorDomain", code: 3, userInfo: [NSLocalizedDescriptionKey: NSLocalizedString("Unable to load data from clipboard", comment: "Error description")])
+            outError.pointee = NSError(domain: "SKDocumentErrorDomain", code: 3, userInfo: [NSLocalizedDescriptionKey: KMLocalizedString("Unable to load data from clipboard", comment: "Error description")])
            
         }
     

+ 2 - 2
PDF Office/PDF Master/Class/ChromiumTabs/KMToolbarRightView.swift

@@ -60,7 +60,7 @@ import Cocoa
                 self.advancedLabel.font = NSFont.SFProTextRegularFont(12.0)
                 self.advancedLabel.textColor = NSColor.km_init(hex: "#FFFFFF")
                 
-                var advancedString = NSLocalizedString("Upgrade", comment: "")
+                var advancedString = KMLocalizedString("Upgrade", comment: "")
  
                 self.advancedLabel.stringValue = advancedString
             }
@@ -81,7 +81,7 @@ import Cocoa
     }
     
     func fetchAdvancedViewSize() -> CGSize {
-        var advancedString = NSLocalizedString("Upgrade", comment: "")
+        var advancedString = KMLocalizedString("Upgrade", comment: "")
 
         let paragraphStyle = NSMutableParagraphStyle()
         paragraphStyle.lineHeightMultiple = 1.32

+ 4 - 4
PDF Office/PDF Master/Class/ChromiumTabs/Screen/KMScreenShotEditViewController.swift

@@ -37,10 +37,10 @@ class KMScreenShotEditViewController: NSViewController{
         localizedLanguage()
     }
     func localizedLanguage() {
-        widthIdentifyLabel.stringValue = NSLocalizedString("Width", comment: "") + ":"
-        heightIdentifyLabel.stringValue = NSLocalizedString("Height", comment: "") + ":"
-        confirmButton.title = NSLocalizedString("OK", comment: "")
-        cancelButton.title = NSLocalizedString("Cancel", comment: "")
+        widthIdentifyLabel.stringValue = KMLocalizedString("Width", comment: "") + ":"
+        heightIdentifyLabel.stringValue = KMLocalizedString("Height", comment: "") + ":"
+        confirmButton.title = KMLocalizedString("OK", comment: "")
+        cancelButton.title = KMLocalizedString("Cancel", comment: "")
     }
     @IBAction func buttonClicked_ConfirmButton(_ sender: Any) {
         if let callback = buttonCallBack {

+ 2 - 2
PDF Office/PDF Master/Class/ChromiumTabs/Screen/KMScreenShotMaskWindowController.swift

@@ -124,10 +124,10 @@ class KMScreenShotMaskWindowController: NSWindowController{
         if isCaptureWindow {
             let cursor = NSCursor(image: NSImage(named: "cameraCursor") ?? NSImage(), hotSpot: NSPoint(x: 0, y: 0))
             cursor.set()
-            self.showScreenShotHint(NSLocalizedString("Move the camera over the window you want to capture.", comment: ""))
+            self.showScreenShotHint(KMLocalizedString("Move the camera over the window you want to capture.", comment: ""))
         } else {
             NSCursor.crosshair.set()
-            self.showScreenShotHint(NSLocalizedString("Drag the crosshair over the area you want to capture.", comment: ""))
+            self.showScreenShotHint(KMLocalizedString("Drag the crosshair over the area you want to capture.", comment: ""))
         }
     }
     

+ 3 - 3
PDF Office/PDF Master/Class/DigtalSignature/DSignatureApperanceManager.swift

@@ -129,7 +129,7 @@ class DSignatureApperanceManager: NSObject {
         if self.signatures.count < 1 {
             let data = self.standardDSignatureAppearanceData()
             data.tag = self.tagString()
-            data.appearanceName = NSLocalizedString("Standard Text", comment: "") as NSString
+            data.appearanceName = KMLocalizedString("Standard Text", comment: "") as NSString
             _ = self.addDSignatureAppearanceData(watermark: data)
             
         }
@@ -188,7 +188,7 @@ class DSignatureApperanceManager: NSObject {
         
         let nameItem = CPDFSignatureConfigItem.init()
         nameItem.key = NAME_KEY
-        nameItem.value = NSLocalizedString("<your common name here>", comment: "")
+        nameItem.value = KMLocalizedString("<your common name here>", comment: "")
         
         let dateItem = CPDFSignatureConfigItem.init()
         dateItem.key = DATE_KEY
@@ -237,7 +237,7 @@ class DSignatureApperanceManager: NSObject {
                 }
             } else {
                 let item = CPDFSignatureConfigItem.init()
-                item.key = NSLocalizedString(key as! String, comment: "")
+                item.key = KMLocalizedString(key as! String, comment: "")
                 item.value = dic[key] as? String
                 
                 contents.append(item)

+ 8 - 8
PDF Office/PDF Master/Class/DigtalSignature/DSignatureConfig.swift

@@ -7,22 +7,22 @@
 
 import Foundation
 
-let kNAME_KEY = NSLocalizedString("Signed by", comment: "")
-let DN_KEY = NSLocalizedString("DN", comment: "")
-let REASON_KEY = NSLocalizedString("Reason", comment: "")
-let LOCATION_KEY = NSLocalizedString("Location", comment: "")
-let DATE_KEY = NSLocalizedString("Date", comment: "")
+let kNAME_KEY = KMLocalizedString("Signed by", comment: "")
+let DN_KEY = KMLocalizedString("DN", comment: "")
+let REASON_KEY = KMLocalizedString("Reason", comment: "")
+let LOCATION_KEY = KMLocalizedString("Location", comment: "")
+let DATE_KEY = KMLocalizedString("Date", comment: "")
 
 #if VERSION_FREE
 
 #if VERSION_DMG
-let VERSION_KEY = NSLocalizedString("PDF Reader Pro Version", comment: "")
+let VERSION_KEY = KMLocalizedString("PDF Reader Pro Version", comment: "")
 #else
-let VERSION_KEY = NSLocalizedString("PDF Reader Pro Lite Version", comment: "")
+let VERSION_KEY = KMLocalizedString("PDF Reader Pro Lite Version", comment: "")
 #endif
 
 #else
-let VERSION_KEY = NSLocalizedString("PDF Reader Pro Version", comment: "")
+let VERSION_KEY = KMLocalizedString("PDF Reader Pro Version", comment: "")
 #endif
 
 let ISDRAW_KEY = "isDrawKey"

+ 4 - 4
PDF Office/PDF Master/Class/DigtalSignature/DSignatureConfigWindowController.swift

@@ -353,8 +353,8 @@ typealias configWActionInfoBlock = (_ controller: DSignatureConfigWindowControll
                         self.viewType = .fileList
                     } else {
                         let alert = NSAlert.init()
-                        alert.messageText = NSLocalizedString("Save failed!", comment: "")
-                        alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
+                        alert.messageText = KMLocalizedString("Save failed!", comment: "")
+                        alert.addButton(withTitle: KMLocalizedString("OK", comment: ""))
                         alert.runModal()
                     }
                 }
@@ -376,8 +376,8 @@ typealias configWActionInfoBlock = (_ controller: DSignatureConfigWindowControll
                     self.viewType = .fileList
                 } else {
                     let alert = NSAlert.init()
-                    alert.messageText = NSLocalizedString("Save failed!", comment: "")
-                    alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
+                    alert.messageText = KMLocalizedString("Save failed!", comment: "")
+                    alert.addButton(withTitle: KMLocalizedString("OK", comment: ""))
                     alert.runModal()
                 }
                 

+ 43 - 43
PDF Office/PDF Master/Class/DigtalSignature/ViewControllers/CDSignatureCertificateCustomViewController.swift

@@ -325,48 +325,48 @@ class CDSignatureCertificateCustomViewController: NSViewController, NSTextFieldD
     //MARK: Method
     func localizedLanguage() {
         
-        self.titleLabel.stringValue = NSLocalizedString("Customize the Signature Appearance", comment: "")
-        self.nameLabel.stringValue = NSLocalizedString("Preset Name", comment: "") + ":"
+        self.titleLabel.stringValue = KMLocalizedString("Customize the Signature Appearance", comment: "")
+        self.nameLabel.stringValue = KMLocalizedString("Preset Name", comment: "") + ":"
         
-        self.textButton.title = NSLocalizedString("Text", comment: "");
-        self.imageButton.title = NSLocalizedString("Image", comment: "");
-        self.drawButton.title = NSLocalizedString("Draw", comment: "");
-        self.noneButton.title = NSLocalizedString("None", comment: "");
+        self.textButton.title = KMLocalizedString("Text", comment: "");
+        self.imageButton.title = KMLocalizedString("Image", comment: "");
+        self.drawButton.title = KMLocalizedString("Draw", comment: "");
+        self.noneButton.title = KMLocalizedString("None", comment: "");
         
-        self.browseButton.title = NSLocalizedString("Browse", comment: "");
-        self.clearButton.title = NSLocalizedString("Clear", comment: "");
-        self.showDrawButton.title = NSLocalizedString("Click here to draw", comment: "");
+        self.browseButton.title = KMLocalizedString("Browse", comment: "");
+        self.clearButton.title = KMLocalizedString("Clear", comment: "");
+        self.showDrawButton.title = KMLocalizedString("Click here to draw", comment: "");
         
         let txtColor = KMAppearance.Interactive.a0Color()
         self.browseButton.setTitleColor(txtColor)
         self.clearButton.setTitleColor(txtColor)
         self.showDrawButton.setTitleColor(txtColor)
 
-        self.continueButton.title = NSLocalizedString("Continue", comment: "");
-        self.cancelButton.title = NSLocalizedString("Cancel", comment: "");
+        self.continueButton.title = KMLocalizedString("Continue", comment: "");
+        self.cancelButton.title = KMLocalizedString("Cancel", comment: "");
         
-        self.textLabel.stringValue = NSLocalizedString("Include Text", comment: "");
-        self.directionLabel.stringValue = String(format: "%@:",NSLocalizedString("Text Alignment", comment: ""));
+        self.textLabel.stringValue = KMLocalizedString("Include Text", comment: "");
+        self.directionLabel.stringValue = String(format: "%@:",KMLocalizedString("Text Alignment", comment: ""));
             
-        self.nameButton.title = NSLocalizedString("Name", comment: "");
-        self.dateButton.title = NSLocalizedString("Date", comment: "");
-        self.locationButton.title = NSLocalizedString("Location", comment: "");
-        self.reasonButton.title = NSLocalizedString("Reason", comment: "");
-        self.distinguishedButton.title = NSLocalizedString("Distinguished Name", comment: "");
+        self.nameButton.title = KMLocalizedString("Name", comment: "");
+        self.dateButton.title = KMLocalizedString("Date", comment: "");
+        self.locationButton.title = KMLocalizedString("Location", comment: "");
+        self.reasonButton.title = KMLocalizedString("Reason", comment: "");
+        self.distinguishedButton.title = KMLocalizedString("Distinguished Name", comment: "");
         self.versionButton.title = VERSION_KEY
-        self.logoButton.title = NSLocalizedString("Logo", comment: "");
-        self.labelsButton.title = NSLocalizedString("Include Text", comment: "");
-        
-        self.locationLabel.stringValue = String(format:"%@:",NSLocalizedString("Location", comment: ""));
-        self.reasonLabel.stringValue = String(format:"%@:",NSLocalizedString("Reason", comment: ""));
-        
-        let titles = [String(format:"  %@",NSLocalizedString("none", comment: "")),
-                      String(format:"  %@",NSLocalizedString("I am the author of this document", comment: "")),
-                      String(format:"  %@",NSLocalizedString("I have reviewed this document", comment: "")),
-                      String(format:"  %@",NSLocalizedString("I'm in the process of approving this document", comment: "")),
-                      String(format:"  %@",NSLocalizedString("I certify the accuracy and authenticity of this document", comment: "")),
-                      String(format:"  %@",NSLocalizedString("I have signed this document to indicate that I agree to the terms defined", comment: "")),
-                      String(format:"  %@",NSLocalizedString("I agree with the specified portions of this document", comment: ""))]
+        self.logoButton.title = KMLocalizedString("Logo", comment: "");
+        self.labelsButton.title = KMLocalizedString("Include Text", comment: "");
+        
+        self.locationLabel.stringValue = String(format:"%@:",KMLocalizedString("Location", comment: ""));
+        self.reasonLabel.stringValue = String(format:"%@:",KMLocalizedString("Reason", comment: ""));
+        
+        let titles = [String(format:"  %@",KMLocalizedString("none", comment: "")),
+                      String(format:"  %@",KMLocalizedString("I am the author of this document", comment: "")),
+                      String(format:"  %@",KMLocalizedString("I have reviewed this document", comment: "")),
+                      String(format:"  %@",KMLocalizedString("I'm in the process of approving this document", comment: "")),
+                      String(format:"  %@",KMLocalizedString("I certify the accuracy and authenticity of this document", comment: "")),
+                      String(format:"  %@",KMLocalizedString("I have signed this document to indicate that I agree to the terms defined", comment: "")),
+                      String(format:"  %@",KMLocalizedString("I agree with the specified portions of this document", comment: ""))]
         self.reasonPopUpButton.addItems(withTitles: titles)
         
     }
@@ -434,7 +434,7 @@ class CDSignatureCertificateCustomViewController: NSViewController, NSTextFieldD
                     if !document!.allowsCopying || !document!.allowsPrinting {
                         let alert = NSAlert()
                         alert.alertStyle = .critical
-                        alert.messageText = NSLocalizedString("This is a secured document. Editing is not permitted.", comment: "")
+                        alert.messageText = KMLocalizedString("This is a secured document. Editing is not permitted.", comment: "")
                         alert.runModal()
                         return
                     }
@@ -468,7 +468,7 @@ class CDSignatureCertificateCustomViewController: NSViewController, NSTextFieldD
             if self.nameButton.state == .on {
                 configItem = CPDFSignatureConfigItem.init()
                 configItem.key = kNAME_KEY
-                configItem.value = NSLocalizedString("<your common name here>", comment: "")
+                configItem.value = KMLocalizedString("<your common name here>", comment: "")
                 contents.add(configItem as Any)
             } else {
                 for item in contents {
@@ -516,8 +516,8 @@ class CDSignatureCertificateCustomViewController: NSViewController, NSTextFieldD
                 configItem.key = REASON_KEY
                 configItem.value = self.reasonPopUpButton.title
                 if configItem.value == "" ||
-                    configItem.value == String(format: "  %@", NSLocalizedString("none", comment: "")) {
-                    configItem.value = NSLocalizedString("<your signing reason here>", comment: "")
+                    configItem.value == String(format: "  %@", KMLocalizedString("none", comment: "")) {
+                    configItem.value = KMLocalizedString("<your signing reason here>", comment: "")
                 }
                 contents.add(configItem as Any)
             } else {
@@ -548,7 +548,7 @@ class CDSignatureCertificateCustomViewController: NSViewController, NSTextFieldD
                 configItem = CPDFSignatureConfigItem.init()
                 configItem.key = LOCATION_KEY
                 if self.locationTextField.stringValue.isEmpty {
-                    configItem.value = NSLocalizedString("<your signing location here>", comment: "")
+                    configItem.value = KMLocalizedString("<your signing location here>", comment: "")
                 } else {
                     configItem.value = self.locationTextField.stringValue
                 }
@@ -572,7 +572,7 @@ class CDSignatureCertificateCustomViewController: NSViewController, NSTextFieldD
             if self.distinguishedButton.state == .on {
                 configItem = CPDFSignatureConfigItem.init()
                 configItem.key = DN_KEY
-                configItem.value = NSLocalizedString("<your distinguished name here>", comment: "")
+                configItem.value = KMLocalizedString("<your distinguished name here>", comment: "")
                 contents.add(configItem as Any)
             } else {
                 for item in contents {
@@ -624,7 +624,7 @@ class CDSignatureCertificateCustomViewController: NSViewController, NSTextFieldD
         if self.customType == .none && contents.count == 0 {
             configItem = CPDFSignatureConfigItem.init()
             configItem.key = kNAME_KEY
-            configItem.value = NSLocalizedString("<your common name here>", comment: "")
+            configItem.value = KMLocalizedString("<your common name here>", comment: "")
             contents.add(configItem as Any)
             
             self.appearanceData.signatureConfig.isDrawKey = true
@@ -655,8 +655,8 @@ class CDSignatureCertificateCustomViewController: NSViewController, NSTextFieldD
             if object.key == REASON_KEY {
                 if self.reasonPopUpButton.title.count > 2 {
                     let fromStr = self.reasonPopUpButton.title.dropFirst(2)
-                    if self.reasonPopUpButton.title == String(format: "  %@", NSLocalizedString("none", comment: "")) {
-                        object.value = NSLocalizedString("<your signing reason here>", comment: "")
+                    if self.reasonPopUpButton.title == String(format: "  %@", KMLocalizedString("none", comment: "")) {
+                        object.value = KMLocalizedString("<your signing reason here>", comment: "")
                     } else {
                         object.value = String(fromStr)
                     }
@@ -684,8 +684,8 @@ class CDSignatureCertificateCustomViewController: NSViewController, NSTextFieldD
             }
             if names.contains(name) {
                 let alert = NSAlert.init()
-                alert.messageText = NSLocalizedString("The name already exists, please enter it again!", comment: "")
-                alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
+                alert.messageText = KMLocalizedString("The name already exists, please enter it again!", comment: "")
+                alert.addButton(withTitle: KMLocalizedString("OK", comment: ""))
                 alert.runModal()
                 return
             }
@@ -715,7 +715,7 @@ class CDSignatureCertificateCustomViewController: NSViewController, NSTextFieldD
             for object in contents {
                 if object.key == LOCATION_KEY {
                     if self.locationTextField.stringValue.isEmpty == true {
-                        object.value = NSLocalizedString("<your signing location here>", comment: "")
+                        object.value = KMLocalizedString("<your signing location here>", comment: "")
                     } else {
                         object.value = self.locationTextField.stringValue
                     }

+ 15 - 15
PDF Office/PDF Master/Class/DigtalSignature/ViewControllers/CDSignatureCertificateStateViewController.swift

@@ -32,7 +32,7 @@ class CDSignatureCertificateStateViewController: NSViewController {
         super.viewDidLoad()
         // Do view setup here.
         
-        self.titleLabel.stringValue = NSLocalizedString("Signature Validation Status", comment: "")
+        self.titleLabel.stringValue = KMLocalizedString("Signature Validation Status", comment: "")
         
         self.reloadData()
     }
@@ -46,33 +46,33 @@ class CDSignatureCertificateStateViewController: NSViewController {
             
             let cer = signer?.certificates.first
             let CNStr = cer?.subjectDict["CN"] as? String ?? ""
-            self.subTitleLabel.stringValue = String(format: NSLocalizedString("Signature is VALID, signed by %@.", comment: ""), CNStr)
-            self.subDes1Label.stringValue = String(format: "- %@",NSLocalizedString("The document has not been modified since this signature was applied.", comment: ""))
-            self.subDes2Label.stringValue = String(format: "- %@",NSLocalizedString("The signer's identity is valid.", comment: ""))
+            self.subTitleLabel.stringValue = String(format: KMLocalizedString("Signature is VALID, signed by %@.", comment: ""), CNStr)
+            self.subDes1Label.stringValue = String(format: "- %@",KMLocalizedString("The document has not been modified since this signature was applied.", comment: ""))
+            self.subDes2Label.stringValue = String(format: "- %@",KMLocalizedString("The signer's identity is valid.", comment: ""))
             
         } else if isSignVerified == true && isCertTrusted == false {
             self.imageView.image = NSImage(named: "ImageNameSigntureLargeTrustedFailure")
             
-            self.subTitleLabel.stringValue = NSLocalizedString("Signature is invalid", comment: "")
-            self.subDes1Label.stringValue = String(format: "- %@",NSLocalizedString("The document has not been modified since this signature was applied.", comment: ""))
-            self.subDes2Label.stringValue = String(format: "- %@",NSLocalizedString("The signer's identity is unknown because it has not been included in your list of trusted certificates and none of its parent certificates are trusted certificates.", comment: ""))
+            self.subTitleLabel.stringValue = KMLocalizedString("Signature is invalid", comment: "")
+            self.subDes1Label.stringValue = String(format: "- %@",KMLocalizedString("The document has not been modified since this signature was applied.", comment: ""))
+            self.subDes2Label.stringValue = String(format: "- %@",KMLocalizedString("The signer's identity is unknown because it has not been included in your list of trusted certificates and none of its parent certificates are trusted certificates.", comment: ""))
             
         } else if isSignVerified == false && isCertTrusted == false {
             self.imageView.image = NSImage(named: "ImageNameSigntureLargeVerifyFailure")
             
-            self.subTitleLabel.stringValue = NSLocalizedString("Signature is invalid", comment: "")
-            self.subDes1Label.stringValue = String(format: "- %@",NSLocalizedString("The document has not been modified since this signature was applied.", comment: ""))
-            self.subDes2Label.stringValue = String(format: "- %@",NSLocalizedString("The signer's identity is invalid.", comment: ""))
+            self.subTitleLabel.stringValue = KMLocalizedString("Signature is invalid", comment: "")
+            self.subDes1Label.stringValue = String(format: "- %@",KMLocalizedString("The document has not been modified since this signature was applied.", comment: ""))
+            self.subDes2Label.stringValue = String(format: "- %@",KMLocalizedString("The signer's identity is invalid.", comment: ""))
         } else {
             self.imageView.image = NSImage(named: "ImageNameSigntureLargeVerifyFailure")
             
-            self.subTitleLabel.stringValue = NSLocalizedString("Signature is invalid", comment: "")
-            self.subDes1Label.stringValue = String(format: "- %@",NSLocalizedString("The revision of the document that was covered by this signature has not been altered; however, there have been subsequent changes to the document.", comment: ""))
-            self.subDes2Label.stringValue = String(format: "- %@",NSLocalizedString("Click Signature Properties, then it will show what is covered by this signature.", comment: ""))
+            self.subTitleLabel.stringValue = KMLocalizedString("Signature is invalid", comment: "")
+            self.subDes1Label.stringValue = String(format: "- %@",KMLocalizedString("The revision of the document that was covered by this signature has not been altered; however, there have been subsequent changes to the document.", comment: ""))
+            self.subDes2Label.stringValue = String(format: "- %@",KMLocalizedString("Click Signature Properties, then it will show what is covered by this signature.", comment: ""))
         }
         
-        self.propertiesBtn.title = NSLocalizedString("Signature Properties...", comment: "")
-        self.closeBtn.title = NSLocalizedString("Close", comment: "")
+        self.propertiesBtn.title = KMLocalizedString("Signature Properties...", comment: "")
+        self.closeBtn.title = KMLocalizedString("Close", comment: "")
         
         self.subTitleLabel.textColor = NSColor.labelColor
         self.titleLabel.textColor = NSColor.labelColor

+ 3 - 3
PDF Office/PDF Master/Class/DigtalSignature/ViewControllers/CDSignatureDrawViewController.swift

@@ -38,9 +38,9 @@ class CDSignatureDrawViewController: NSViewController, CDSDrawViewDelegate {
         super.viewDidLoad()
         // Do view setup here.
         
-        self.cancelButton.title = NSLocalizedString("Cancel", comment: "")
-        self.applyButton.title = NSLocalizedString("Apply", comment: "")
-        self.clearButton.title = NSLocalizedString("Clear", comment: "")
+        self.cancelButton.title = KMLocalizedString("Cancel", comment: "")
+        self.applyButton.title = KMLocalizedString("Apply", comment: "")
+        self.clearButton.title = KMLocalizedString("Clear", comment: "")
         
         
         self.drawView?.wantsLayer = true

+ 3 - 3
PDF Office/PDF Master/Class/DigtalSignature/ViewControllers/CDSignatureTextViewController.swift

@@ -39,9 +39,9 @@ class CDSignatureTextViewController: NSViewController {
         super.viewDidLoad()
         // Do view setup here.
         
-        self.cancelButton.title = NSLocalizedString("Cancel", comment: "")
-        self.applyButton.title = NSLocalizedString("Save", comment: "")
-        self.clearButton.title = NSLocalizedString("Clear", comment: "")
+        self.cancelButton.title = KMLocalizedString("Cancel", comment: "")
+        self.applyButton.title = KMLocalizedString("Save", comment: "")
+        self.clearButton.title = KMLocalizedString("Clear", comment: "")
         
     }
     

+ 18 - 18
PDF Office/PDF Master/Class/DigtalSignature/ViewControllers/DSignatureCertifyDetailViewController.swift

@@ -70,7 +70,7 @@ class DSignatureCertifyDetailViewController: NSViewController, NSTextFieldDelega
     var appearanceData: DSignatureAppearanceData? {
         set {
             _appearanceData = newValue
-            if _appearanceData.appearanceName.length > 0 && _appearanceData.appearanceName as String == NSLocalizedString("Standard Text", comment: "") {
+            if _appearanceData.appearanceName.length > 0 && _appearanceData.appearanceName as String == KMLocalizedString("Standard Text", comment: "") {
                 self.deleteButton.isEnabled = false
                 self.editButton.isEnabled = false
             } else {
@@ -179,7 +179,7 @@ class DSignatureCertifyDetailViewController: NSViewController, NSTextFieldDelega
                 tConfigItem.key = configItem.key
                 tConfigItem.value = configItem.value
                 contens.add(tConfigItem)
-            } else if configItem.key == NSLocalizedString(DATE_KEY, comment: "") {
+            } else if configItem.key == KMLocalizedString(DATE_KEY, comment: "") {
                 let tConfigItem = CPDFSignatureConfigItem.init()
                 tConfigItem.key = configItem.key
                 
@@ -215,24 +215,24 @@ class DSignatureCertifyDetailViewController: NSViewController, NSTextFieldDelega
         self.contendView.layer?.backgroundColor = NSColor.clear.cgColor
         
         if self.cert?.name != nil {
-            self.titleLabel.stringValue = NSLocalizedString("Sign as", comment: "") + " " + (self.cert?.name)!
+            self.titleLabel.stringValue = KMLocalizedString("Sign as", comment: "") + " " + (self.cert?.name)!
         } else {
-            self.titleLabel.stringValue = NSLocalizedString("Sign as", comment: "") 
+            self.titleLabel.stringValue = KMLocalizedString("Sign as", comment: "") 
         }
     
-        self.appearanceLabel.stringValue = NSLocalizedString("Appearance", comment: "") + ":"
-        self.passwordTextField.placeholderString = NSLocalizedString("Enter the digital signature ID card PIN or password", comment: "")
+        self.appearanceLabel.stringValue = KMLocalizedString("Appearance", comment: "") + ":"
+        self.passwordTextField.placeholderString = KMLocalizedString("Enter the digital signature ID card PIN or password", comment: "")
         
-        self.passwordLabel.stringValue = NSLocalizedString("Password", comment: "") + ":"
+        self.passwordLabel.stringValue = KMLocalizedString("Password", comment: "") + ":"
 
-        self.editButton.toolTip = NSLocalizedString("Edit", comment: "")
-        self.createButton.toolTip = NSLocalizedString("Create", comment: "")
-        self.deleteButton.toolTip = NSLocalizedString("Delete", comment: "")
+        self.editButton.toolTip = KMLocalizedString("Edit", comment: "")
+        self.createButton.toolTip = KMLocalizedString("Create", comment: "")
+        self.deleteButton.toolTip = KMLocalizedString("Delete", comment: "")
         
-        self.continueButton.title = NSLocalizedString("Continue", comment: "");
-        self.cancelButton.title = NSLocalizedString("Previous Step",comment: "");
-        self.infoButton.title = NSLocalizedString("View Certificate Details",comment: "");
-        self.lockDocButton.title = NSLocalizedString("Lock document after signing", comment: "");
+        self.continueButton.title = KMLocalizedString("Continue", comment: "");
+        self.cancelButton.title = KMLocalizedString("Previous Step",comment: "");
+        self.infoButton.title = KMLocalizedString("View Certificate Details",comment: "");
+        self.lockDocButton.title = KMLocalizedString("Lock document after signing", comment: "");
         
         let txtColor = KMAppearance.Interactive.a0Color()
         self.infoButton.setTitleColor(txtColor)
@@ -277,10 +277,10 @@ class DSignatureCertifyDetailViewController: NSViewController, NSTextFieldDelega
         self.passwordTextField.wantsLayer = true
         self.passwordTextField.layer?.borderWidth = 1.0
         self.passwordTextField.layer?.cornerRadius = 5.0
-        self.passwordTextField.placeholderString = NSLocalizedString("Enter the Digital ID PIN or Password...", comment: "")
+        self.passwordTextField.placeholderString = KMLocalizedString("Enter the Digital ID PIN or Password...", comment: "")
         self.passwordTextField.updateState(false)
         
-        self.errorLabel.stringValue = NSLocalizedString("Password is incorrect. Please re-enter the password.", comment: "")
+        self.errorLabel.stringValue = KMLocalizedString("Password is incorrect. Please re-enter the password.", comment: "")
 
     }
     
@@ -365,8 +365,8 @@ class DSignatureCertifyDetailViewController: NSViewController, NSTextFieldDelega
             }
         }
         let alert = NSAlert.init()
-        alert.messageText = NSLocalizedString("Failed to get certificate details!", comment: "")
-        alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
+        alert.messageText = KMLocalizedString("Failed to get certificate details!", comment: "")
+        alert.addButton(withTitle: KMLocalizedString("OK", comment: ""))
         alert.runModal()
         
     }

+ 18 - 18
PDF Office/PDF Master/Class/DigtalSignature/ViewControllers/DSignatureCreateInfoViewController.swift

@@ -63,9 +63,9 @@ class DSignatureCreateInfoViewController: NSViewController, NSTextFieldDelegate
         self.organizationTextFiled.delegate = self
         self.organizationUnitTextFiled.delegate = self
         
-        self.purposeButton.addItems(withTitles: [NSLocalizedString("Digital Signature", comment: ""),
-                                                 NSLocalizedString("Data Encryption", comment: ""),
-                                                 NSLocalizedString("Digital Signatures and Data Encryption", comment: "")])
+        self.purposeButton.addItems(withTitles: [KMLocalizedString("Digital Signature", comment: ""),
+                                                 KMLocalizedString("Data Encryption", comment: ""),
+                                                 KMLocalizedString("Digital Signatures and Data Encryption", comment: "")])
         
         self.reloadData()
         
@@ -133,14 +133,14 @@ class DSignatureCreateInfoViewController: NSViewController, NSTextFieldDelegate
     }
     
     func localizedLanguage() {
-        self.titleLabel.stringValue = NSLocalizedString("Create a Self-signed Digital ID", comment: "")
+        self.titleLabel.stringValue = KMLocalizedString("Create a Self-signed Digital ID", comment: "")
         
-        self.nameLabel.stringValue = NSLocalizedString("Name", comment: "")
-        self.organizationLabel.stringValue = NSLocalizedString("Organization Name", comment: "")
-        self.organizationUnitLabel.stringValue = NSLocalizedString("Organization Unit", comment: "")
-        self.emailLabel.stringValue = NSLocalizedString("Email Address", comment: "")
-        self.countryLabel.stringValue = NSLocalizedString("Country/Region", comment: "")
-        self.purposeLabel.stringValue = NSLocalizedString("Purpose", comment: "")
+        self.nameLabel.stringValue = KMLocalizedString("Name", comment: "")
+        self.organizationLabel.stringValue = KMLocalizedString("Organization Name", comment: "")
+        self.organizationUnitLabel.stringValue = KMLocalizedString("Organization Unit", comment: "")
+        self.emailLabel.stringValue = KMLocalizedString("Email Address", comment: "")
+        self.countryLabel.stringValue = KMLocalizedString("Country/Region", comment: "")
+        self.purposeLabel.stringValue = KMLocalizedString("Purpose", comment: "")
         
         var maxLabelWidth = self.nameLabel.sizeThatFits(CGSize(width: 1000, height: self.nameLabel.frame.size.height)).width
         if self.organizationLabel.sizeThatFits(CGSize(width: 1000, height: self.organizationLabel.frame.size.height)).width > maxLabelWidth {
@@ -163,15 +163,15 @@ class DSignatureCreateInfoViewController: NSViewController, NSTextFieldDelegate
         }
         self.textFieldLeftConst.constant = maxLabelWidth + 10
 
-        self.promptTextView.string = String(format: "%@\n\n%@",NSLocalizedString("Enter the identity information to be used for creating the self-signed digital ID.",  comment: ""), NSLocalizedString("Digital IDs that are self-signed by individuals do not provide the assurance that the identity information is valid. For this reason they may not be accepted in some use cases.", comment: ""))
-        self.nameTextFiled.placeholderString = NSLocalizedString("Enter name...", comment: "");
-        self.errorLabel.stringValue = NSLocalizedString("Email address is not valid", comment: "");
-        self.organizationTextFiled.placeholderString = NSLocalizedString("Enter organization name...", comment: "");
-        self.organizationUnitTextFiled.placeholderString = NSLocalizedString("Enter organization unit...", comment: "");
-        self.emailTextFiled.placeholderString = NSLocalizedString("Enter Email", comment: "");
+        self.promptTextView.string = String(format: "%@\n\n%@",KMLocalizedString("Enter the identity information to be used for creating the self-signed digital ID.",  comment: ""), KMLocalizedString("Digital IDs that are self-signed by individuals do not provide the assurance that the identity information is valid. For this reason they may not be accepted in some use cases.", comment: ""))
+        self.nameTextFiled.placeholderString = KMLocalizedString("Enter name...", comment: "");
+        self.errorLabel.stringValue = KMLocalizedString("Email address is not valid", comment: "");
+        self.organizationTextFiled.placeholderString = KMLocalizedString("Enter organization name...", comment: "");
+        self.organizationUnitTextFiled.placeholderString = KMLocalizedString("Enter organization unit...", comment: "");
+        self.emailTextFiled.placeholderString = KMLocalizedString("Enter Email", comment: "");
 
-        self.previousStepButton.title = NSLocalizedString("Previous Step", comment: "");
-        self.continueButton.title = NSLocalizedString("Continue",  comment: "");
+        self.previousStepButton.title = KMLocalizedString("Previous Step", comment: "");
+        self.continueButton.title = KMLocalizedString("Continue",  comment: "");
     }
     
     func validateEmail(_ strEmail: String) -> Bool {

+ 9 - 9
PDF Office/PDF Master/Class/DigtalSignature/ViewControllers/DSignatureCreateViewController.swift

@@ -86,16 +86,16 @@ class DSignatureCreateViewController: NSViewController {
     
     func localizedLanguage() {
         
-        self.configureLabel.stringValue = NSLocalizedString("Configure a Digital ID for Signing", comment: "")
-        self.selectLabel.stringValue = NSLocalizedString("Select the type of Digital ID:", comment: "")
-        self.fileLabel.stringValue = NSLocalizedString("Use a Digital ID from a File", comment: "")
-        self.fileSubLabel.stringValue = NSLocalizedString("Import an existing digital ID that you have obtained as a file", comment: "")
-        self.creatLabel.stringValue = NSLocalizedString("Create a New Digital ID", comment: "")
-        self.creatSubLabel.stringValue = NSLocalizedString("Create your self-signed digital ID", comment: "")
+        self.configureLabel.stringValue = KMLocalizedString("Configure a Digital ID for Signing", comment: "")
+        self.selectLabel.stringValue = KMLocalizedString("Select the type of Digital ID:", comment: "")
+        self.fileLabel.stringValue = KMLocalizedString("Use a Digital ID from a File", comment: "")
+        self.fileSubLabel.stringValue = KMLocalizedString("Import an existing digital ID that you have obtained as a file", comment: "")
+        self.creatLabel.stringValue = KMLocalizedString("Create a New Digital ID", comment: "")
+        self.creatSubLabel.stringValue = KMLocalizedString("Create your self-signed digital ID", comment: "")
         
-        self.promptTextView.string = String(format:"%@\n\n%@",NSLocalizedString("A digital ID is required to create a digital signature.The most secure digital ID are issued by trusted Certificate authorities and are based on secure devices like smart card or token. Some are based on files.", comment: ""),NSLocalizedString("You can also create a new digital ID, but they provide a low level of identity assurance.", comment: ""))
-        self.previousStepButton.title = NSLocalizedString("Previous Step", comment: "")
-        self.continueButton.title = NSLocalizedString("Continue", comment: "")
+        self.promptTextView.string = String(format:"%@\n\n%@",KMLocalizedString("A digital ID is required to create a digital signature.The most secure digital ID are issued by trusted Certificate authorities and are based on secure devices like smart card or token. Some are based on files.", comment: ""),KMLocalizedString("You can also create a new digital ID, but they provide a low level of identity assurance.", comment: ""))
+        self.previousStepButton.title = KMLocalizedString("Previous Step", comment: "")
+        self.continueButton.title = KMLocalizedString("Continue", comment: "")
     }
     
     //MARK: IBAction

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 79 - 79
PDF Office/PDF Master/Class/DigtalSignature/ViewControllers/DSignatureDetailsViewController.swift


+ 15 - 15
PDF Office/PDF Master/Class/DigtalSignature/ViewControllers/DSignatureFileListViewController.swift

@@ -67,15 +67,15 @@ import Cocoa
         set {
             _isFileList = newValue;
             if(_isFileList) {
-                self.titleLabel.stringValue = NSLocalizedString("Add digital IDs from a file:", comment: "")
-                self.subTitleLabel.stringValue = NSLocalizedString("The following digital ID will be added to your list of digital ID that you can use for digitally signing:", comment: "")
-                self.cancelButton.title = NSLocalizedString("Previous Step", comment: "")
+                self.titleLabel.stringValue = KMLocalizedString("Add digital IDs from a file:", comment: "")
+                self.subTitleLabel.stringValue = KMLocalizedString("The following digital ID will be added to your list of digital ID that you can use for digitally signing:", comment: "")
+                self.cancelButton.title = KMLocalizedString("Previous Step", comment: "")
                 self.createButton.isHidden = true
                 self.updateButton.isHidden = true
             }else {
-                self.titleLabel.stringValue = NSLocalizedString("Sign with a Digital ID", comment: "")
-                self.subTitleLabel.stringValue = NSLocalizedString("Choose the digital ID that you want to use for signing:", comment: "")
-                self.cancelButton.title = NSLocalizedString("Cancel", comment: "")
+                self.titleLabel.stringValue = KMLocalizedString("Sign with a Digital ID", comment: "")
+                self.subTitleLabel.stringValue = KMLocalizedString("Choose the digital ID that you want to use for signing:", comment: "")
+                self.cancelButton.title = KMLocalizedString("Cancel", comment: "")
                 self.createButton.isHidden = false
                 self.updateButton.isHidden = false
             }
@@ -89,17 +89,17 @@ import Cocoa
     //MARK: Public Method
     func localizedLanguage() {
         
-        self.titleLabel.stringValue = NSLocalizedString("Sign with a Digital ID", comment: "")
-        self.subTitleLabel.stringValue = NSLocalizedString("Choose the digital ID that you want to use for signing:", comment: "")
-        self.createButton.title = NSLocalizedString("Configure New Digital ID", comment: "")
-        self.cancelButton.title = NSLocalizedString("Cancel", comment: "")
+        self.titleLabel.stringValue = KMLocalizedString("Sign with a Digital ID", comment: "")
+        self.subTitleLabel.stringValue = KMLocalizedString("Choose the digital ID that you want to use for signing:", comment: "")
+        self.createButton.title = KMLocalizedString("Configure New Digital ID", comment: "")
+        self.cancelButton.title = KMLocalizedString("Cancel", comment: "")
         self.updateButton.isHidden = false
         
         self.titleLabel.textColor = NSColor.labelColor
         self.subTitleLabel.textColor = NSColor.labelColor
         
-        self.continueButton.title = NSLocalizedString("Continue", comment: "")
-        self.updateButton.title = NSLocalizedString("Refresh", comment: "")
+        self.continueButton.title = KMLocalizedString("Continue", comment: "")
+        self.updateButton.title = KMLocalizedString("Refresh", comment: "")
     }
     
     func reloadData() {
@@ -261,8 +261,8 @@ import Cocoa
                 }
             } else {
                 let alert = NSAlert.init()
-                alert.messageText = NSLocalizedString("Failed to get certificate details!", comment: "")
-                alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
+                alert.messageText = KMLocalizedString("Failed to get certificate details!", comment: "")
+                alert.addButton(withTitle: KMLocalizedString("OK", comment: ""))
                 alert.runModal()
             }
         }
@@ -288,7 +288,7 @@ import Cocoa
             let model = self.signatureArrays?[row] as? KMDSignatureModel
             let isFormKeyChain = model?.isFormKeyChain ?? true
             if self.isFileList == false && isFormKeyChain == false {
-                menu.addItem(withTitle: NSLocalizedString("Delete", comment: ""), action: #selector(menuItemClick_Delete), keyEquivalent: "")
+                menu.addItem(withTitle: KMLocalizedString("Delete", comment: ""), action: #selector(menuItemClick_Delete), keyEquivalent: "")
             }
         }
     }

+ 14 - 14
PDF Office/PDF Master/Class/DigtalSignature/ViewControllers/DSignatureFromFileViewController.swift

@@ -70,18 +70,18 @@ class DSignatureFromFileViewController: NSViewController, NSTextFieldDelegate {
     }
     
     func localizedLanguage() {
-        self.titleLabel.stringValue = NSLocalizedString("Find a Digital ID File", comment: "")
-        self.subTitleLabel.stringValue = NSLocalizedString("Browse for a digital ID file. Digital ID files are password protected. You cannot access the digital ID if you don't know its password.", comment: "");
-        self.filesLabel.stringValue = NSLocalizedString("File",comment: "");
-        self.passwordLabel.stringValue = NSLocalizedString("Password",comment: "");
-        self.filesTextFiled.placeholderString  = NSLocalizedString("Select a file", comment: "");
-        self.promptTextView.string = String(format: "%@\n\n%@",NSLocalizedString("Digital ID files generally have a P12 extension and contain the public key file (Certificate) and the associated private key file.", comment: ""),NSLocalizedString("To sign with a digital ID available as a file, follow the prompts to browse and select the file and type the password protecting the private key.",comment: ""))
-        self.errorLabel.stringValue = NSLocalizedString("Password is incorrect. Please re-enter the password.", comment: "")
-        
-        self.browseButton.title = String(format:"%@",NSLocalizedString("Browse", comment: ""))
-        self.previousStepButton.title = NSLocalizedString("Previous Step",comment: "");
-        self.creatButton.title = NSLocalizedString("Configure New Digital ID", comment: "");
-        self.continueButton.title = NSLocalizedString("Continue", comment: "");
+        self.titleLabel.stringValue = KMLocalizedString("Find a Digital ID File", comment: "")
+        self.subTitleLabel.stringValue = KMLocalizedString("Browse for a digital ID file. Digital ID files are password protected. You cannot access the digital ID if you don't know its password.", comment: "");
+        self.filesLabel.stringValue = KMLocalizedString("File",comment: "");
+        self.passwordLabel.stringValue = KMLocalizedString("Password",comment: "");
+        self.filesTextFiled.placeholderString  = KMLocalizedString("Select a file", comment: "");
+        self.promptTextView.string = String(format: "%@\n\n%@",KMLocalizedString("Digital ID files generally have a P12 extension and contain the public key file (Certificate) and the associated private key file.", comment: ""),KMLocalizedString("To sign with a digital ID available as a file, follow the prompts to browse and select the file and type the password protecting the private key.",comment: ""))
+        self.errorLabel.stringValue = KMLocalizedString("Password is incorrect. Please re-enter the password.", comment: "")
+        
+        self.browseButton.title = String(format:"%@",KMLocalizedString("Browse", comment: ""))
+        self.previousStepButton.title = KMLocalizedString("Previous Step",comment: "");
+        self.creatButton.title = KMLocalizedString("Configure New Digital ID", comment: "");
+        self.continueButton.title = KMLocalizedString("Continue", comment: "");
     }
     
     func updateTextFiedState() {
@@ -150,8 +150,8 @@ class DSignatureFromFileViewController: NSViewController, NSTextFieldDelegate {
                     callBack(self, .confirm, dic)
                 } else {
                     let alert = NSAlert.init()
-                    alert.messageText = NSLocalizedString("Failed to import the P12 file!", comment: "")
-                    alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
+                    alert.messageText = KMLocalizedString("Failed to import the P12 file!", comment: "")
+                    alert.addButton(withTitle: KMLocalizedString("OK", comment: ""))
                     alert.runModal()
                 }
             } else {

+ 12 - 12
PDF Office/PDF Master/Class/DigtalSignature/ViewControllers/DSignatureSaveFolderViewController.swift

@@ -85,18 +85,18 @@ class DSignatureSaveFolderViewController: NSViewController, NSTextFieldDelegate
     }
 
     func localizedLanguage() {
-        self.titleLabel.stringValue = NSLocalizedString("Save the Self-signed Digital ID to a File", comment: "");
-        self.subTitleLabel.stringValue = NSLocalizedString("Your digital ID will be saved at the following location :", comment: "")
-        self.filesLabel.stringValue = NSLocalizedString("File", comment: "");
-        self.passwordLabel.stringValue = NSLocalizedString("Password", comment: "")
-        self.confirmPasswordLabel.stringValue = NSLocalizedString("Confirm the Password", comment: "")
+        self.titleLabel.stringValue = KMLocalizedString("Save the Self-signed Digital ID to a File", comment: "");
+        self.subTitleLabel.stringValue = KMLocalizedString("Your digital ID will be saved at the following location :", comment: "")
+        self.filesLabel.stringValue = KMLocalizedString("File", comment: "");
+        self.passwordLabel.stringValue = KMLocalizedString("Password", comment: "")
+        self.confirmPasswordLabel.stringValue = KMLocalizedString("Confirm the Password", comment: "")
 
-        self.promptTextView.string = String(format: "%@\n\n%@",NSLocalizedString("Add a password to protect the private key of the digital ID. You will need this password again to use the digital ID for signing.", comment: ""), NSLocalizedString("Save the digital ID file in a known location so that you can copy or backup it.", comment: ""))
+        self.promptTextView.string = String(format: "%@\n\n%@",KMLocalizedString("Add a password to protect the private key of the digital ID. You will need this password again to use the digital ID for signing.", comment: ""), KMLocalizedString("Save the digital ID file in a known location so that you can copy or backup it.", comment: ""))
         
-        self.cancelButton.title = NSLocalizedString("Previous Step", comment: "")
-        self.continueButton.title = NSLocalizedString("Continue", comment: "")
-        self.openFileButton.title = String(format: "%@",NSLocalizedString("Browse", comment: ""))
-        self.errorLabel.stringValue = NSLocalizedString("Passwords do not match", comment: "")
+        self.cancelButton.title = KMLocalizedString("Previous Step", comment: "")
+        self.continueButton.title = KMLocalizedString("Continue", comment: "")
+        self.openFileButton.title = String(format: "%@",KMLocalizedString("Browse", comment: ""))
+        self.errorLabel.stringValue = KMLocalizedString("Passwords do not match", comment: "")
     }
     
     func getUniqueFilePath(_ filePath: String) -> (String) {
@@ -189,8 +189,8 @@ class DSignatureSaveFolderViewController: NSViewController, NSTextFieldDelegate
             let isExists = FileManager.default.fileExists(atPath: parentDirectory, isDirectory: &isDir)
             if isDir.boolValue == false || isExists == false {
                 let alert = NSAlert.init()
-                alert.messageText = NSLocalizedString("Output Folder can not be empty.", comment: "")
-                alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
+                alert.messageText = KMLocalizedString("Output Folder can not be empty.", comment: "")
+                alert.addButton(withTitle: KMLocalizedString("OK", comment: ""))
                 alert.runModal()
                 return
             }

+ 9 - 9
PDF Office/PDF Master/Class/DigtalSignature/ViewControllers/DSignatureSaveTypeViewController.swift

@@ -75,16 +75,16 @@ class DSignatureSaveTypeViewController: NSViewController {
     }
     
     func localizedLanguage() {
-        self.titleLabel.stringValue = NSLocalizedString("Location to Save the Digital ID", comment: "")
-        self.subTitleLabel.stringValue = NSLocalizedString("Select the location to save the digital ID card:", comment: "")
-        self.fileLabel.stringValue = NSLocalizedString("Save to File", comment: "")
-        self.fileSubLabel.stringValue = NSLocalizedString("Save the digital ID to a file in your computer", comment: "")
-        self.kechainLabel.stringValue = NSLocalizedString("Save to Apple Keychain", comment: "")
-        self.kechainSubLabel.stringValue = NSLocalizedString("Save the digital ID to Apple Keychain to be shared", comment: "")
+        self.titleLabel.stringValue = KMLocalizedString("Location to Save the Digital ID", comment: "")
+        self.subTitleLabel.stringValue = KMLocalizedString("Select the location to save the digital ID card:", comment: "")
+        self.fileLabel.stringValue = KMLocalizedString("Save to File", comment: "")
+        self.fileSubLabel.stringValue = KMLocalizedString("Save the digital ID to a file in your computer", comment: "")
+        self.kechainLabel.stringValue = KMLocalizedString("Save to Apple Keychain", comment: "")
+        self.kechainSubLabel.stringValue = KMLocalizedString("Save the digital ID to Apple Keychain to be shared", comment: "")
         
-        self.promptTextView.string = String(format: "%@\n\n%@",NSLocalizedString("Digital IDs are typically issued by trusted providers that assure the validity of the identity. Self-signed digital ID may not provide the same level of assurance and may not be accepted in some use cases.", comment: ""),NSLocalizedString("Consult with your recipients if this is an acceptable form of authentication.", comment: ""))
-        self.continueButton.title = NSLocalizedString("Continue", comment: "")
-        self.previousStepButton.title = NSLocalizedString("Previous Step", comment: "")
+        self.promptTextView.string = String(format: "%@\n\n%@",KMLocalizedString("Digital IDs are typically issued by trusted providers that assure the validity of the identity. Self-signed digital ID may not provide the same level of assurance and may not be accepted in some use cases.", comment: ""),KMLocalizedString("Consult with your recipients if this is an acceptable form of authentication.", comment: ""))
+        self.continueButton.title = KMLocalizedString("Continue", comment: "")
+        self.previousStepButton.title = KMLocalizedString("Previous Step", comment: "")
     }
     
     

+ 5 - 5
PDF Office/PDF Master/Class/DigtalSignature/ViewControllers/Views/DSignatureFileListCellView.swift

@@ -62,7 +62,7 @@ class DSignatureFileListCellView: NSTableCellView {
         self.radioBtn.target = self
         self.radioBtn.action = #selector(radioBtnAction)
         
-        self.viewDetailBtn.title = NSLocalizedString("View Details", comment: "")
+        self.viewDetailBtn.title = KMLocalizedString("View Details", comment: "")
         
         if let cell = self.viewDetailBtn.cell as? NSButtonCell {
             let txtColor = KMAppearance.Interactive.a0Color()
@@ -86,18 +86,18 @@ class DSignatureFileListCellView: NSTableCellView {
             _signModel = newValue
             
             self.nameLabel.stringValue = _signModel?.name ?? ""
-            self.authorLabel.stringValue = NSLocalizedString("Issued by:", comment: "") + (_signModel?.issusName ?? "")
+            self.authorLabel.stringValue = KMLocalizedString("Issued by:", comment: "") + (_signModel?.issusName ?? "")
             if let data = _signModel?.isFormKeyChain, data {
-                self.sourceLabel.stringValue = NSLocalizedString("(Keychain Digital ID)", comment: "");
+                self.sourceLabel.stringValue = KMLocalizedString("(Keychain Digital ID)", comment: "");
                 self.signImgView.image = NSImage(named: "ImageNameDSignatSaveKechain")
             } else {
-                self.sourceLabel.stringValue = NSLocalizedString("(Digital ID file)", comment: "");
+                self.sourceLabel.stringValue = KMLocalizedString("(Digital ID file)", comment: "");
                 self.signImgView.image = NSImage(named: "ImageNameDSignatureFromFile")
             }
             
             let dateFormatter = DateFormatter()
             dateFormatter.dateFormat = "yyyy-MM-dd"
-            self.dateLabel.stringValue = NSLocalizedString("Expires", comment: "") + ":" + dateFormatter.string(from: (_signModel?.expiresDate ?? Date()))
+            self.dateLabel.stringValue = KMLocalizedString("Expires", comment: "") + ":" + dateFormatter.string(from: (_signModel?.expiresDate ?? Date()))
                                   
             self.nameLabel.toolTip = self.nameLabel.stringValue
             self.authorLabel.toolTip = self.authorLabel.stringValue

+ 3 - 3
PDF Office/PDF Master/Class/Document/KMDocumentController.swift

@@ -80,7 +80,7 @@ class KMDocumentController: NSDocumentController {
     }
     
     @IBAction func openBlankPage(_ sender: Any) {
-        let fileName = String(format: "%@.pdf", NSLocalizedString("Untitled", comment: ""))
+        let fileName = String(format: "%@.pdf", KMLocalizedString("Untitled", comment: ""))
         let savePath = fetchUniquePath(kNewDocumentTempSavePath(fileName))
         let pdfDocument = CPDFDocument()
         pdfDocument?.insertPage(CGSize(width: 595, height: 842), at: 0)
@@ -119,7 +119,7 @@ extension NSDocumentController {
     func openDocumentWithURLFromPasteboard(_ pboard: NSPasteboard, showNotes: Bool, outError: NSErrorPointer) -> Any? {
         guard let theURLs = NSURL.readURLs(from: pboard), let theURL = theURLs.first else {
             if showNotes == false {
-                outError?.pointee = NSError.readPasteboardError(withLocalizedDescription: NSLocalizedString("Unable to load data from clipboard", comment: "Error description"))
+                outError?.pointee = NSError.readPasteboardError(withLocalizedDescription: KMLocalizedString("Unable to load data from clipboard", comment: "Error description"))
             }
             return nil
         }
@@ -235,7 +235,7 @@ extension NSDocumentController {
                 }
             }
         } else if let outError = outError {
-            outError.pointee = NSError.readPasteboardError(withLocalizedDescription: NSLocalizedString("Unable to load data from clipboard", comment: "Error description"))
+            outError.pointee = NSError.readPasteboardError(withLocalizedDescription: KMLocalizedString("Unable to load data from clipboard", comment: "Error description"))
         }
         
         return document

+ 7 - 7
PDF Office/PDF Master/Class/Document/KMMainDocument.swift

@@ -148,7 +148,7 @@ typealias KMMainDocumentCloudUploadHanddler = (@escaping(Bool, String)->()) -> (
             if !self.fileURL!.path.isPDFValid() {
                 let alert = NSAlert()
                 alert.alertStyle = .critical
-                alert.messageText = NSLocalizedString("An error occurred while opening this document. The file is damaged and could not be repaired.", comment: "")
+                alert.messageText = KMLocalizedString("An error occurred while opening this document. The file is damaged and could not be repaired.", comment: "")
                 alert.runModal()
                 return
             }
@@ -343,7 +343,7 @@ typealias KMMainDocumentCloudUploadHanddler = (@escaping(Bool, String)->()) -> (
         }
         if pdfDoc.allowsPrinting == false || pdfDoc.allowsCopying == false {
             Task {
-                _ = await KMAlertTool.runModel(message: NSLocalizedString("This is a secured document. Editing is not permitted.", comment: ""))
+                _ = await KMAlertTool.runModel(message: KMLocalizedString("This is a secured document. Editing is not permitted.", comment: ""))
             }
             return
         }
@@ -546,9 +546,9 @@ typealias KMMainDocumentCloudUploadHanddler = (@escaping(Bool, String)->()) -> (
         get {
             if isHome {
                 if (self.isNewTab) {
-                    return NSLocalizedString("New Tab", comment: "")
+                    return KMLocalizedString("New Tab", comment: "")
                 } else {
-                    return NSLocalizedString("Home", comment: "")
+                    return KMLocalizedString("Home", comment: "")
                 }
             } else {
                 return fileURL?.lastPathComponent
@@ -995,10 +995,10 @@ typealias KMMainDocumentCloudUploadHanddler = (@escaping(Bool, String)->()) -> (
         if let item = formatPopup?.item(withTitle: "Notes as RTFD") {
             formatPopup?.removeItem(at: formatPopup!.index(of: item))
         }
-        if let item = formatPopup?.item(withTitle: NSLocalizedString("Text", comment: "")) {
+        if let item = formatPopup?.item(withTitle: KMLocalizedString("Text", comment: "")) {
             formatPopup?.removeItem(at: formatPopup!.index(of: item))
         }
-        if let item = formatPopup?.item(withTitle: NSLocalizedString("text", comment: "")) {
+        if let item = formatPopup?.item(withTitle: KMLocalizedString("text", comment: "")) {
             formatPopup?.removeItem(at: formatPopup!.index(of: item))
         }
         if let item = formatPopup?.item(withTitle: "PDF Reader Pro Edition Notes") {
@@ -1198,7 +1198,7 @@ extension NSDocument {
         }
         
         let alert = NSAlert()
-        alert.messageText = NSLocalizedString("An error occurred while opening this document. The file is damaged and could not be repaired.", comment: "")
+        alert.messageText = KMLocalizedString("An error occurred while opening this document. The file is damaged and could not be repaired.", comment: "")
         alert.runModal()
         return true
     }

+ 3 - 3
PDF Office/PDF Master/Class/GuideInfo/Controllers/FunctionGuide/KMAIIconGuideView.swift

@@ -41,9 +41,9 @@ class KMAIIconGuideView: NSView, NibLoadable {
         self.infoContendView.layer?.cornerRadius = 8
         self.infoContendView.layer?.masksToBounds = true
         
-        self.titleLabel.stringValue = NSLocalizedString("Show/Hide AI robot icon", comment: "")
-        self.subTitleLabel.stringValue = NSLocalizedString("Right-click to hide AI robot icon. Show the icon again from the top right corner “My AI Credit”. ", comment: "")
-        self.finishBoxLabel.stringValue = NSLocalizedString("Got it", comment: "")
+        self.titleLabel.stringValue = KMLocalizedString("Show/Hide AI robot icon", comment: "")
+        self.subTitleLabel.stringValue = KMLocalizedString("Right-click to hide AI robot icon. Show the icon again from the top right corner “My AI Credit”. ", comment: "")
+        self.finishBoxLabel.stringValue = KMLocalizedString("Got it", comment: "")
         
         
         self.finishBox.wantsLayer = true

+ 3 - 3
PDF Office/PDF Master/Class/GuideInfo/Controllers/FunctionGuide/KMAIToolsForCheckInGuideView.swift

@@ -27,14 +27,14 @@ class KMMessageDiscountGuideView: NSView {
         return view
     }()
     private lazy var titleLabel_: NSTextField = {
-        let view = NSTextField(labelWithString: NSLocalizedString("Welcome Gift For You", comment: ""))
+        let view = NSTextField(labelWithString: KMLocalizedString("Welcome Gift For You", comment: ""))
         view.font = .SFProTextBoldFont(14)
         view.textColor = NSColor(hex: "#273C62")
         return view
     }()
     
     private lazy var subTitleLabel_: NSTextField = {
-        let view = NSTextField(wrappingLabelWithString: NSLocalizedString("Get new user coupons or get a 7-day free trial of all features!", comment: ""))
+        let view = NSTextField(wrappingLabelWithString: KMLocalizedString("Get new user coupons or get a 7-day free trial of all features!", comment: ""))
         view.font = .SFProTextRegularFont(12)
         view.textColor = NSColor(hex: "#273C62")
         return view
@@ -204,7 +204,7 @@ class KMAIToolsForCheckInGuideView: NSView {
         return view
     }()
     private lazy var titleLabel: NSTextField = {
-        let view = NSTextField(labelWithString: NSLocalizedString("Try AI Tools Now", comment: ""))
+        let view = NSTextField(labelWithString: KMLocalizedString("Try AI Tools Now", comment: ""))
         view.font = .SFProTextBoldFont(14)
         view.textColor = NSColor(hex: "#273C62")
         return view

+ 7 - 7
PDF Office/PDF Master/Class/GuideInfo/Controllers/FunctionGuide/KMConvertGuideView.swift

@@ -79,13 +79,13 @@ class KMConvertGuideView: NSView, NibLoadable {
         self.closeLabel.font = NSFont.SFProTextSemiboldFont(13)
         self.convertLabel.font = NSFont.SFProTextSemiboldFont(14)
         
-        self.titleLabel.stringValue = NSLocalizedString("The Best PDF Converter", comment: "")
-        self.tipInfoLabel1.stringValue = NSLocalizedString("Free convert first 10 pages.", comment: "")
-        self.tipInfoLabel2.stringValue = NSLocalizedString("Convert PDFs to various file formats in high accuracy.", comment: "")
-        self.tipInfoLabel3.stringValue = NSLocalizedString("Create PDFs from images or Office files.", comment: "")
-        self.tipInfoLabel4.stringValue = NSLocalizedString("Batch convert PDFs to improve productivity.", comment: "")
-        self.closeLabel.stringValue = NSLocalizedString("Close", comment: "")
-        self.convertLabel.stringValue = NSLocalizedString("Convert All Pages", comment: "")
+        self.titleLabel.stringValue = KMLocalizedString("The Best PDF Converter", comment: "")
+        self.tipInfoLabel1.stringValue = KMLocalizedString("Free convert first 10 pages.", comment: "")
+        self.tipInfoLabel2.stringValue = KMLocalizedString("Convert PDFs to various file formats in high accuracy.", comment: "")
+        self.tipInfoLabel3.stringValue = KMLocalizedString("Create PDFs from images or Office files.", comment: "")
+        self.tipInfoLabel4.stringValue = KMLocalizedString("Batch convert PDFs to improve productivity.", comment: "")
+        self.closeLabel.stringValue = KMLocalizedString("Close", comment: "")
+        self.convertLabel.stringValue = KMLocalizedString("Convert All Pages", comment: "")
         
         self.closeButton.mouseMoveCallback = { [weak self] mouseEntered in
             if KMAppearance.isDarkMode() {

+ 3 - 3
PDF Office/PDF Master/Class/GuideInfo/Controllers/FunctionGuide/KMCustomColorGuideView.swift

@@ -58,9 +58,9 @@ class KMCustomColorGuideView: NSView, NibLoadable {
         self.tipInfoView.layer?.cornerRadius = 8
         self.tipInfoView.layer?.masksToBounds = true
         
-        self.tipTitleLabel.stringValue = NSLocalizedString("Customize Color", comment: "")
-        self.tipSubTitleLabel.stringValue = NSLocalizedString("Right click a color and select “Change Color...”", comment: "")
-        self.finishLabel.stringValue = NSLocalizedString("Got it", comment: "")
+        self.tipTitleLabel.stringValue = KMLocalizedString("Customize Color", comment: "")
+        self.tipSubTitleLabel.stringValue = KMLocalizedString("Right click a color and select “Change Color...”", comment: "")
+        self.finishLabel.stringValue = KMLocalizedString("Got it", comment: "")
         
         
         self.finishBox.wantsLayer = true

+ 10 - 10
PDF Office/PDF Master/Class/GuideInfo/Controllers/FunctionGuide/KMOpenFileFunctionView.swift

@@ -82,7 +82,7 @@ class KMOpenFileFunctionView: NSView, NibLoadable {
             }
         }
         
-        self.ntipLabel.stringValue = NSLocalizedString("New Feature", comment: "")
+        self.ntipLabel.stringValue = KMLocalizedString("New Feature", comment: "")
         
         self.shadowView.wantsLayer = true
         self.shadowView.layer?.borderWidth = 0
@@ -100,9 +100,9 @@ class KMOpenFileFunctionView: NSView, NibLoadable {
             self.circleTopConst.constant = 20
             self.circleLeftConst.constant = NSMinX(self.circleRect) - NSWidth(self.bigCircleView.frame)/2 + NSWidth(self.circleRect)/2
             self.tipImage.image = NSImage(named: "guideDigitalSign")
-            self.tipTitleLabel.stringValue = NSLocalizedString("Digital Signature", comment: "")
-            self.tipSubTitleLabel.stringValue = NSLocalizedString("Digital signature provides proof of the signer's identity and intent, ensuring a high level of security and authenticity, making you more productive to sign digital documents.", comment: "")
-            self.getItLabel.stringValue = NSLocalizedString("Got it", comment: "")
+            self.tipTitleLabel.stringValue = KMLocalizedString("Digital Signature", comment: "")
+            self.tipSubTitleLabel.stringValue = KMLocalizedString("Digital signature provides proof of the signer's identity and intent, ensuring a high level of security and authenticity, making you more productive to sign digital documents.", comment: "")
+            self.getItLabel.stringValue = KMLocalizedString("Got it", comment: "")
             
         } else if self.type == .pdfCompareGuide {
             if self.window != nil {
@@ -110,9 +110,9 @@ class KMOpenFileFunctionView: NSView, NibLoadable {
             }
             self.circleLeftConst.constant = NSMinX(KMGuideInfoWindowController.currentWC().compareItemRect) - NSWidth(self.bigCircleView.frame)/2 + NSWidth(KMGuideInfoWindowController.currentWC().compareItemRect)/2
             self.tipImage.image = NSImage(named: "guidePDFCompare")
-            self.tipTitleLabel.stringValue = NSLocalizedString("Compare PDFs", comment: "")
-            self.tipSubTitleLabel.stringValue = NSLocalizedString("The document compare feature lets you quickly spot differences between two versions of a PDF for a better review process.", comment: "")
-            self.getItLabel.stringValue = NSLocalizedString("Got it", comment: "")
+            self.tipTitleLabel.stringValue = KMLocalizedString("Compare PDFs", comment: "")
+            self.tipSubTitleLabel.stringValue = KMLocalizedString("The document compare feature lets you quickly spot differences between two versions of a PDF for a better review process.", comment: "")
+            self.getItLabel.stringValue = KMLocalizedString("Got it", comment: "")
             
         } else if self.type == .measureGuide {
             if self.window != nil {
@@ -120,9 +120,9 @@ class KMOpenFileFunctionView: NSView, NibLoadable {
             }
             self.circleLeftConst.constant = NSMinX(KMGuideInfoWindowController.currentWC().compareItemRect) - NSWidth(self.bigCircleView.frame)/2 + NSWidth(KMGuideInfoWindowController.currentWC().compareItemRect)/2
             self.tipImage.image = NSImage(named: "guideMeasure")
-            self.tipTitleLabel.stringValue = NSLocalizedString("Measure", comment: "")
-            self.tipSubTitleLabel.stringValue = NSLocalizedString("You can measure distance, perimeter, area and angle accurately with the measuring tools.", comment: "")
-            self.getItLabel.stringValue = NSLocalizedString("Got it", comment: "")
+            self.tipTitleLabel.stringValue = KMLocalizedString("Measure", comment: "")
+            self.tipSubTitleLabel.stringValue = KMLocalizedString("You can measure distance, perimeter, area and angle accurately with the measuring tools.", comment: "")
+            self.getItLabel.stringValue = KMLocalizedString("Got it", comment: "")
             
         }
         self.shadowView.layer?.shadowPath = nil

+ 10 - 10
PDF Office/PDF Master/Class/GuideInfo/Controllers/KMFunctionGuideMultiController.swift

@@ -48,17 +48,17 @@ class KMFunctionGuideMultiController: NSViewController {
                           "key":MeasureInfoKey,
                           "infoTitle":"Easily Annotate Dimensional Data on PDFs",
                           "imageName":"KMImageNameWhatNewMeasure",
-                          "description":NSLocalizedString("The measuring tool allows users to measure distance, perimeter, area and angle accurately, making it an ideal solution for the construction industry to annotate dimensional data on PDFs.", comment: "")],
+                          "description":KMLocalizedString("The measuring tool allows users to measure distance, perimeter, area and angle accurately, making it an ideal solution for the construction industry to annotate dimensional data on PDFs.", comment: "")],
                          ["name":"AI Tools",
                                            "key":AIInfoKey,
                                            "infoTitle":"Experience the Power of PDF AI Tools",
                                            "imageName":"whatNew_AIGuide",
-                                           "description":NSLocalizedString("• AI Summarize with a deep understanding of document", comment: "") + "\n" + NSLocalizedString("• AI Translate your document without leaving a PDF", comment: "") + "\n" + NSLocalizedString("• Check grammar, fix spelling errors to ensure a professional file", comment: "") + "\n" + NSLocalizedString("• Rewrite your PDF to enhance style and polish content", comment: "")]
+                                           "description":KMLocalizedString("• AI Summarize with a deep understanding of document", comment: "") + "\n" + KMLocalizedString("• AI Translate your document without leaving a PDF", comment: "") + "\n" + KMLocalizedString("• Check grammar, fix spelling errors to ensure a professional file", comment: "") + "\n" + KMLocalizedString("• Rewrite your PDF to enhance style and polish content", comment: "")]
 //                         ["name":"Compare PDFs",
 //                          "key":ComparePDFsKey,
 //                          "infoTitle":"Experience the Power of PDF AI Tools 2222",
 //                          "imageName":"guideMeasure",
-//                          "description":NSLocalizedString("The document compare feature lets you quickly spot differences between two versions of a PDF for a better review process.", comment: "")]
+//                          "description":KMLocalizedString("The document compare feature lets you quickly spot differences between two versions of a PDF for a better review process.", comment: "")]
         ]
         let dict = self.namesArr.first as! NSDictionary
         self.currentNameKEY = dict["key"] as! String
@@ -74,10 +74,10 @@ class KMFunctionGuideMultiController: NSViewController {
         self.getStartBox.layer?.cornerRadius = NSHeight(self.getStartBox.frame)/2
         self.getStartBox.layer?.masksToBounds = true
         
-        self.titleLabel.stringValue = NSLocalizedString("What‘s New", comment: "")
-        self.getStartLabel.stringValue = NSLocalizedString("Experience Now", comment: "")
-        self.learnButton.title = NSLocalizedString("Feedback", comment: "")
-        self.learnButton.toolTip = NSLocalizedString("Feedback", comment: "")
+        self.titleLabel.stringValue = KMLocalizedString("What‘s New", comment: "")
+        self.getStartLabel.stringValue = KMLocalizedString("Experience Now", comment: "")
+        self.learnButton.title = KMLocalizedString("Feedback", comment: "")
+        self.learnButton.toolTip = KMLocalizedString("Feedback", comment: "")
         
         self.titleLabel.font = NSFont.SFProTextHeavyFont(20)
         self.getStartLabel.font = NSFont.SFProTextSemiboldFont(14)
@@ -180,8 +180,8 @@ class KMFunctionGuideMultiController: NSViewController {
         for i in 0...self.namesArr.count - 1 {
             let dict = self.namesArr[i] as! NSDictionary
             if dict["key"] as! String == self.currentNameKEY {
-                self.desLabel.stringValue = NSLocalizedString(dict["infoTitle"] as! String, comment: "")
-                self.desSubLabel.stringValue = NSLocalizedString(dict["description"] as! String, comment: "")
+                self.desLabel.stringValue = KMLocalizedString(dict["infoTitle"] as! String, comment: "")
+                self.desSubLabel.stringValue = KMLocalizedString(dict["description"] as! String, comment: "")
                 self.iconImage.image = NSImage(named: dict["imageName"] as! String)
             }
             
@@ -233,7 +233,7 @@ class KMFunctionGuideMultiController: NSViewController {
     }
     
     @IBAction func learnMoreAction(_ sender: Any) {
-        let url = URL(string:NSLocalizedString("https://forms.gle/crjCAW4cnF7eq1vQ6", comment: ""))!
+        let url = URL(string:KMLocalizedString("https://forms.gle/crjCAW4cnF7eq1vQ6", comment: ""))!
         NSWorkspace.shared.open(url)
     }
     

+ 1 - 1
PDF Office/PDF Master/Class/GuideInfo/Controllers/KMFunctionGuideNameItemView.swift

@@ -57,7 +57,7 @@ class KMFunctionGuideNameItemView: NSView, NibLoadable {
         set {
             _infoDict = newValue
             
-            self.nameLabel.stringValue = NSLocalizedString(self.infoDict["name"] as! String, comment: "")
+            self.nameLabel.stringValue = KMLocalizedString(self.infoDict["name"] as! String, comment: "")
         }
         get {
             return _infoDict

+ 5 - 5
PDF Office/PDF Master/Class/GuideInfo/Controllers/OpenFileGuide/KMOpenFileGuidePanel.swift

@@ -55,11 +55,11 @@ class KMOpenFileGuidePanel: NSView, NibLoadable {
         self.infoContendView.layer?.cornerRadius = 8
         self.infoContendView.layer?.masksToBounds = true
         
-        self.tipTitleLabel.stringValue = NSLocalizedString("Show/Hide Panel", comment: "")
-        self.tipSubTitleLabel.stringValue = NSLocalizedString("Click “Panel” to expand and collapse the left navigation panel.", comment: "")
-        self.skipButton.title = NSLocalizedString("Skip", comment: "")
-        self.stepLabel.stringValue = NSLocalizedString("1/3", comment: "")
-        self.nextLabel.stringValue = NSLocalizedString("Next", comment: "")
+        self.tipTitleLabel.stringValue = KMLocalizedString("Show/Hide Panel", comment: "")
+        self.tipSubTitleLabel.stringValue = KMLocalizedString("Click “Panel” to expand and collapse the left navigation panel.", comment: "")
+        self.skipButton.title = KMLocalizedString("Skip", comment: "")
+        self.stepLabel.stringValue = KMLocalizedString("1/3", comment: "")
+        self.nextLabel.stringValue = KMLocalizedString("Next", comment: "")
         
         self.nextBox.borderWidth = 1
         self.nextBox.cornerRadius = 2

+ 6 - 6
PDF Office/PDF Master/Class/GuideInfo/Controllers/OpenFileGuide/KMOpenFileGuideProperty.swift

@@ -58,12 +58,12 @@ class KMOpenFileGuideProperty: NSView, NibLoadable {
         self.tipInfoView.layer?.cornerRadius = 8
         self.tipInfoView.layer?.masksToBounds = true
         
-        self.tipTitleLabel.stringValue = NSLocalizedString("Show/Hide Properties", comment: "")
-        self.tipSubTitleLabel.stringValue = NSLocalizedString("Click “Properties” to expand and collapse the right properties panel.", comment: "")
-        self.skipButton.title = NSLocalizedString("Skip", comment: "")
-        self.previouseLabel.stringValue = NSLocalizedString("Previous", comment: "")
-        self.stepLabel.stringValue = NSLocalizedString("2/3", comment: "")
-        self.nextLabel.stringValue = NSLocalizedString("Next", comment: "")
+        self.tipTitleLabel.stringValue = KMLocalizedString("Show/Hide Properties", comment: "")
+        self.tipSubTitleLabel.stringValue = KMLocalizedString("Click “Properties” to expand and collapse the right properties panel.", comment: "")
+        self.skipButton.title = KMLocalizedString("Skip", comment: "")
+        self.previouseLabel.stringValue = KMLocalizedString("Previous", comment: "")
+        self.stepLabel.stringValue = KMLocalizedString("2/3", comment: "")
+        self.nextLabel.stringValue = KMLocalizedString("Next", comment: "")
         
         self.previousBox.borderWidth = 1
         self.previousBox.cornerRadius = 2

+ 6 - 6
PDF Office/PDF Master/Class/GuideInfo/Controllers/OpenFileGuide/KMOpenFileGuideToolbar.swift

@@ -60,12 +60,12 @@ class KMOpenFileGuideToolbar: NSView, NibLoadable {
         self.tipInfoView.layer?.cornerRadius = 8
         self.tipInfoView.layer?.masksToBounds = true
         
-        self.tipTitleLabel.stringValue = NSLocalizedString("Customize Toolbar", comment: "")
-        self.tipSubTitleLabel.stringValue = NSLocalizedString("Right-click on the toolbar, select “Customize Toolbar“ in drop-down bar. Then reorder, add or remove tools displayed in the toolbar by simple drag and drop.", comment: "")
-        self.skipButton.title = NSLocalizedString("Skip", comment: "")
-        self.previousLabel.stringValue = NSLocalizedString("Previous", comment: "")
-        self.stepLabel.stringValue = NSLocalizedString("3/3", comment: "")
-        self.finishLabel.stringValue = NSLocalizedString("Finish", comment: "")
+        self.tipTitleLabel.stringValue = KMLocalizedString("Customize Toolbar", comment: "")
+        self.tipSubTitleLabel.stringValue = KMLocalizedString("Right-click on the toolbar, select “Customize Toolbar“ in drop-down bar. Then reorder, add or remove tools displayed in the toolbar by simple drag and drop.", comment: "")
+        self.skipButton.title = KMLocalizedString("Skip", comment: "")
+        self.previousLabel.stringValue = KMLocalizedString("Previous", comment: "")
+        self.stepLabel.stringValue = KMLocalizedString("3/3", comment: "")
+        self.finishLabel.stringValue = KMLocalizedString("Finish", comment: "")
         
         self.previousBox.borderWidth = 1
         self.previousBox.cornerRadius = 2

+ 1 - 1
PDF Office/PDF Master/Class/GuideInfo/KMGuideInfoWindowController.swift

@@ -205,7 +205,7 @@ class KMGuideInfoWindowController: NSWindowController {
     // 是否阿拉伯语言
     
     private static func _isArabicLanguage() -> Bool {
-        return NSLocalizedString("Right click a color and select “Change Color...“.", comment: "") == "انقر بزر الماوس الأيمن فوق اللون وحدد \"تغيير اللون...\"."
+        return KMLocalizedString("Right click a color and select “Change Color...“.", comment: "") == "انقر بزر الماوس الأيمن فوق اللون وحدد \"تغيير اللون...\"."
     }
     
     // MARK: - 定时保存

+ 17 - 17
PDF Office/PDF Master/Class/GuideInfo/NewUserGuide/Window/KMNewUserGuideWindowController.swift

@@ -58,7 +58,7 @@ import Cocoa
         backgroundIv.image = NSImage(named: "KMImageNameNewUserGuideBg")
         backgroundIv.image?.size = window?.frame.size ?? .zero
         titleLabel.font = .SFProTextSemiboldFont(20)
-        titleLabel.stringValue = NSLocalizedString("The Beginner's Guide", comment: "")
+        titleLabel.stringValue = KMLocalizedString("The Beginner's Guide", comment: "")
         
         tableView.delegate = self
         tableView.dataSource = self
@@ -97,14 +97,14 @@ import Cocoa
         
         if type == .ai {
 #if VERSION_FREE
-            model.name = NSLocalizedString("AI Credits Giveaway", comment: "")
-            let attri = NSAttributedString(string: NSLocalizedString("Free 40 AI Credits for 7-day VIP Free Trial Users", comment: ""), attributes: [
+            model.name = KMLocalizedString("AI Credits Giveaway", comment: "")
+            let attri = NSAttributedString(string: KMLocalizedString("Free 40 AI Credits for 7-day VIP Free Trial Users", comment: ""), attributes: [
                 .font : NSFont.SFProTextRegularFont(11),
                 .foregroundColor : listDespColor
             ])
 #else
-            model.name = NSLocalizedString("Edit with AI Robot", comment: "")
-            let attri = NSAttributedString(string: NSLocalizedString("AI Translate, Summarize, Proofread, Rewrite", comment: ""), attributes: [
+            model.name = KMLocalizedString("Edit with AI Robot", comment: "")
+            let attri = NSAttributedString(string: KMLocalizedString("AI Translate, Summarize, Proofread, Rewrite", comment: ""), attributes: [
                 .font : NSFont.SFProTextRegularFont(11),
                 .foregroundColor : listDespColor
             ])
@@ -113,54 +113,54 @@ import Cocoa
             model.despAttri = attri
             model.viewH = _calculateViewHeight(model: model, maxWidth: maxWidth)
         } else if type == .note {
-            model.name = NSLocalizedString("Annotate PDF", comment: "")
+            model.name = KMLocalizedString("Annotate PDF", comment: "")
             model.imageName = "newUserGuideAnnotation"
-            let attri = NSAttributedString(string: NSLocalizedString("Add Annotations, Images, and Stamps to PDFs", comment: ""), attributes: [
+            let attri = NSAttributedString(string: KMLocalizedString("Add Annotations, Images, and Stamps to PDFs", comment: ""), attributes: [
                 .font : NSFont.SFProTextRegularFont(11),
                 .foregroundColor : listDespColor
             ])
             model.despAttri = attri
             model.viewH = _calculateViewHeight(model: model, maxWidth: maxWidth)
         } else if type == .editPDF {
-            model.name = NSLocalizedString("Edit PDF", comment: "")
+            model.name = KMLocalizedString("Edit PDF", comment: "")
             model.imageName = "newUserGuideEdit"
-            let attri = NSAttributedString(string: NSLocalizedString("Edit PDF Text, Images, and Watermarks", comment: ""), attributes: [
+            let attri = NSAttributedString(string: KMLocalizedString("Edit PDF Text, Images, and Watermarks", comment: ""), attributes: [
                 .font : NSFont.SFProTextRegularFont(11),
                 .foregroundColor : listDespColor
             ])
             model.despAttri = attri
             model.viewH = _calculateViewHeight(model: model, maxWidth: maxWidth)
         } else if type == .pageEdit {
-            model.name = NSLocalizedString("Page Edit", comment: "")
+            model.name = KMLocalizedString("Page Edit", comment: "")
             model.imageName = "KMImageNameNewUserGuidePageEdit"
-            let attri = NSAttributedString(string: NSLocalizedString("Insert, Delete, Rotate, and Extract the Pages in PDFs", comment: ""), attributes: [
+            let attri = NSAttributedString(string: KMLocalizedString("Insert, Delete, Rotate, and Extract the Pages in PDFs", comment: ""), attributes: [
                 .font : NSFont.SFProTextRegularFont(11),
                 .foregroundColor : listDespColor
             ])
             model.despAttri = attri
             model.viewH = _calculateViewHeight(model: model, maxWidth: maxWidth)
         } else if type == .convert {
-            model.name = NSLocalizedString("PDF Converter", comment: "")
+            model.name = KMLocalizedString("PDF Converter", comment: "")
             model.imageName = "KMImageNameNewUserGuideConvert"
-            let attri = NSAttributedString(string: NSLocalizedString("Convert to/from MS Office, Images, and More", comment: ""), attributes: [
+            let attri = NSAttributedString(string: KMLocalizedString("Convert to/from MS Office, Images, and More", comment: ""), attributes: [
                 .font : NSFont.SFProTextRegularFont(11),
                 .foregroundColor : listDespColor
             ])
             model.despAttri = attri
             model.viewH = _calculateViewHeight(model: model, maxWidth: maxWidth)
         } else if type == .ocr {
-            model.name = NSLocalizedString("OCR", comment: "")
+            model.name = KMLocalizedString("OCR", comment: "")
             model.imageName = "KMImageNameNewUserGuideOCR"
-            let attri = NSAttributedString(string: NSLocalizedString("Scanned PDFs to Editable & Searchable PDFs in 90+ Languages", comment: ""), attributes: [
+            let attri = NSAttributedString(string: KMLocalizedString("Scanned PDFs to Editable & Searchable PDFs in 90+ Languages", comment: ""), attributes: [
                 .font : NSFont.SFProTextRegularFont(11),
                 .foregroundColor : listDespColor
             ])
             model.despAttri = attri
             model.viewH = _calculateViewHeight(model: model, maxWidth: maxWidth)
         } else if type == .fillForms {
-            model.name = NSLocalizedString("Create & Fill Forms", comment: "")
+            model.name = KMLocalizedString("Create & Fill Forms", comment: "")
             model.imageName = "KMImageNameNewUserGuideFillForms"
-            let attri = NSAttributedString(string: NSLocalizedString("Support to Create & Fill Interactive PDF Forms", comment: ""), attributes: [
+            let attri = NSAttributedString(string: KMLocalizedString("Support to Create & Fill Interactive PDF Forms", comment: ""), attributes: [
                 .font : NSFont.SFProTextRegularFont(11),
                 .foregroundColor : listDespColor
             ])

+ 3 - 3
PDF Office/PDF Master/Class/KMDeviceBrowserWindowController/KMDeviceBrowserWindowController.swift

@@ -43,9 +43,9 @@ class KMDeviceBrowserWindowController: NSWindowController {
             self.deviceBrowserView.displaysNetworkCameras = false;
         }
         
-        self.cameraDeviceView.downloadSelectedControlLabel = NSLocalizedString("Import", comment: "")
-        self.cameraDeviceView.downloadAllControlLabel = NSLocalizedString("Import All", comment: "")
-        self.window!.title = NSLocalizedString("Import", comment: "")
+        self.cameraDeviceView.downloadSelectedControlLabel = KMLocalizedString("Import", comment: "")
+        self.cameraDeviceView.downloadAllControlLabel = KMLocalizedString("Import All", comment: "")
+        self.window!.title = KMLocalizedString("Import", comment: "")
         
     }
     

+ 4 - 4
PDF Office/PDF Master/Class/KMResourceDownload/KMResourceDownloadManager.swift

@@ -62,10 +62,10 @@ class KMResourceDownloadManager: NSObject {
                 DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.2, execute: { [weak self] in
                     if self?.reachabilityAlert == nil {
                         self?.reachabilityAlert = NSAlert()
-                        self?.reachabilityAlert?.messageText = NSLocalizedString("Network Disconnected", comment: "")
-                        self?.reachabilityAlert?.informativeText = NSLocalizedString("Please connect to the internet and download again.", comment: "")
-                        self?.reachabilityAlert?.addButton(withTitle: NSLocalizedString("Retry", comment: ""))
-                        self?.reachabilityAlert?.addButton(withTitle: NSLocalizedString("Cancel", comment: ""))
+                        self?.reachabilityAlert?.messageText = KMLocalizedString("Network Disconnected", comment: "")
+                        self?.reachabilityAlert?.informativeText = KMLocalizedString("Please connect to the internet and download again.", comment: "")
+                        self?.reachabilityAlert?.addButton(withTitle: KMLocalizedString("Retry", comment: ""))
+                        self?.reachabilityAlert?.addButton(withTitle: KMLocalizedString("Cancel", comment: ""))
                         var window = NSWindow.currentWindow()
                         if window != nil {
                             self?.reachabilityAlert?.beginSheetModal(for: window) { result in

+ 1 - 1
PDF Office/PDF Master/Class/MemberCenter/Model/KMMemberCenterManager.swift

@@ -1700,7 +1700,7 @@ typealias KMMemberRequestInfoComplete = (_ success: Bool, _ info: NSDictionary?)
         let string = self.getCodeMessage(code: code, message: message)
         KMMainThreadExecute {
             let alert = NSAlert()
-            alert.messageText = NSLocalizedString(string, tableName: "MemberCenterLocalizable", comment: "")
+            alert.messageText = KMLocalizedString(string, tableName: "MemberCenterLocalizable", comment: "")
             let resp = alert.runModal()
             callback?(resp)
         }

+ 12 - 12
PDF Office/PDF Master/Class/MemberCenter/Model/KMMemberInfo.swift

@@ -1011,8 +1011,8 @@ import Cocoa
                 DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.3) {
                     let alert = NSAlert()
                     alert.alertStyle = .critical
-                    alert.informativeText = NSLocalizedString("Sorry, you do not have the rights to this paid feature and cannot use it. If you have any questions, please contact customer service at support@pdfreaderpro.com", comment: "")
-                    alert.addButton(withTitle: NSLocalizedString("Got it", comment: ""))
+                    alert.informativeText = KMLocalizedString("Sorry, you do not have the rights to this paid feature and cannot use it. If you have any questions, please contact customer service at support@pdfreaderpro.com", comment: "")
+                    alert.addButton(withTitle: KMLocalizedString("Got it", comment: ""))
                     alert.runModal()
                 }
             } else {
@@ -1071,8 +1071,8 @@ import Cocoa
             userScenarioType == .dmg_type17 {
             let alert = NSAlert()
             alert.alertStyle = .critical
-            alert.informativeText = NSLocalizedString("Sorry, you do not have the rights to this paid feature and cannot use it. If you have any questions, please contact customer service at support@pdfreaderpro.com", comment: "")
-            alert.addButton(withTitle: NSLocalizedString("Got it", comment: ""))
+            alert.informativeText = KMLocalizedString("Sorry, you do not have the rights to this paid feature and cannot use it. If you have any questions, please contact customer service at support@pdfreaderpro.com", comment: "")
+            alert.addButton(withTitle: KMLocalizedString("Got it", comment: ""))
             alert.runModal()
         } else {
             if userScenarioType == .dmg_type11 ||
@@ -1147,8 +1147,8 @@ import Cocoa
                 KMMemberInfo.shared.vip_levels != "3" {
                 let alert = NSAlert()
                 alert.alertStyle = .critical
-                alert.informativeText = NSLocalizedString("Sorry, you do not have the rights to this paid feature and cannot use it. If you have any questions, please contact customer service at support@pdfreaderpro.com", comment: "")
-                alert.addButton(withTitle: NSLocalizedString("Got it", comment: ""))
+                alert.informativeText = KMLocalizedString("Sorry, you do not have the rights to this paid feature and cannot use it. If you have any questions, please contact customer service at support@pdfreaderpro.com", comment: "")
+                alert.addButton(withTitle: KMLocalizedString("Got it", comment: ""))
                 alert.runModal()
             }
         }
@@ -1201,8 +1201,8 @@ import Cocoa
                 KMMemberInfo.shared.vip_levels != "3" {
                 let alert = NSAlert()
                 alert.alertStyle = .critical
-                alert.informativeText = NSLocalizedString("Sorry, you do not have the rights to this paid feature and cannot use it. If you have any questions, please contact customer service at support@pdfreaderpro.com", comment: "")
-                alert.addButton(withTitle: NSLocalizedString("Got it", comment: ""))
+                alert.informativeText = KMLocalizedString("Sorry, you do not have the rights to this paid feature and cannot use it. If you have any questions, please contact customer service at support@pdfreaderpro.com", comment: "")
+                alert.addButton(withTitle: KMLocalizedString("Got it", comment: ""))
                 alert.runModal()
             }
         }
@@ -1242,8 +1242,8 @@ import Cocoa
                         if KMMemberInfo.shared.aiPoint == 0 {
                             let alert = NSAlert()
                             alert.alertStyle = .critical
-                            alert.informativeText = NSLocalizedString("No Value Present", comment: "")
-                            alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
+                            alert.informativeText = KMLocalizedString("No Value Present", comment: "")
+                            alert.addButton(withTitle: KMLocalizedString("OK", comment: ""))
                             alert.runModal()
                             
                             return false
@@ -1294,8 +1294,8 @@ import Cocoa
                         if KMMemberInfo.shared.aiPoint == 0 {
                             let alert = NSAlert()
                             alert.alertStyle = .critical
-                            alert.informativeText = NSLocalizedString("No Value Present", comment: "")
-                            alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
+                            alert.informativeText = KMLocalizedString("No Value Present", comment: "")
+                            alert.addButton(withTitle: KMLocalizedString("OK", comment: ""))
                             alert.runModal()
                             
                             return false

+ 8 - 8
PDF Office/PDF Master/Class/MemberCenter/View/KMEnterNewPasswordView.swift

@@ -52,11 +52,11 @@ class KMEnterNewPasswordView: BaseXibView {
     // MARK: Private Method
     
     private func languageLocalized() -> Void {
-        resetPasswordsLabel.stringValue = NSLocalizedString("Reset Password", tableName: "MemberCenterLocalizable", comment: "")
-        finshButton.title = NSLocalizedString("Finish", tableName: "MemberCenterLocalizable", comment: "")
-        passwordErrorLabel.stringValue = String(format: "*%@", NSLocalizedString("Verification code error.", tableName: "MemberCenterLocalizable", comment: ""))
-        passwordTextField.placeholderString = NSLocalizedString("Please enter a new password", tableName: "MemberCenterLocalizable", comment: "")
-        passwordTextField1.placeholderString = NSLocalizedString("Please enter a new password", tableName: "MemberCenterLocalizable", comment: "")
+        resetPasswordsLabel.stringValue = KMLocalizedString("Reset Password", tableName: "MemberCenterLocalizable", comment: "")
+        finshButton.title = KMLocalizedString("Finish", tableName: "MemberCenterLocalizable", comment: "")
+        passwordErrorLabel.stringValue = String(format: "*%@", KMLocalizedString("Verification code error.", tableName: "MemberCenterLocalizable", comment: ""))
+        passwordTextField.placeholderString = KMLocalizedString("Please enter a new password", tableName: "MemberCenterLocalizable", comment: "")
+        passwordTextField1.placeholderString = KMLocalizedString("Please enter a new password", tableName: "MemberCenterLocalizable", comment: "")
     }
     
     private func initializeUI() -> Void {
@@ -155,7 +155,7 @@ class KMEnterNewPasswordView: BaseXibView {
                 if newValue.count <= 30 && newValue.count >= 0 {
                     self?.viewModel.passwordErrorMessage = ""
                 } else {
-                    self?.viewModel.passwordErrorMessage = NSLocalizedString("Password error.", tableName: "MemberCenterLocalizable", comment: "")
+                    self?.viewModel.passwordErrorMessage = KMLocalizedString("Password error.", tableName: "MemberCenterLocalizable", comment: "")
                 }
             }
             .store(in: &cancellables)
@@ -178,8 +178,8 @@ class KMEnterNewPasswordView: BaseXibView {
             } else {
                 DispatchQueue.main.async {
                     let alert = NSAlert()
-                    alert.messageText = NSLocalizedString(msg, comment: "")
-                    alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
+                    alert.messageText = KMLocalizedString(msg, comment: "")
+                    alert.addButton(withTitle: KMLocalizedString("OK", comment: ""))
                     let result = alert.runModal()
                     if (result == .alertFirstButtonReturn) {
                         self.skipSignUpView()

+ 9 - 9
PDF Office/PDF Master/Class/MemberCenter/View/KMEnterVerificationCodeView.swift

@@ -92,12 +92,12 @@ class KMEnterVerificationCodeView: BaseXibView {
     }
     
     private func languageLocalized() -> Void {
-        resetPasswordsLabel.stringValue = NSLocalizedString("Reset Password", tableName: "MemberCenterLocalizable", comment: "")
-        tipLabel.stringValue = String(format: "%@ %@", NSLocalizedString("We have sent you a code via email to", tableName: "MemberCenterLocalizable", comment: ""), viewModel.email)
-        verifficationTextField.placeholderString = NSLocalizedString("Please enter code", tableName: "MemberCenterLocalizable", comment: "")
+        resetPasswordsLabel.stringValue = KMLocalizedString("Reset Password", tableName: "MemberCenterLocalizable", comment: "")
+        tipLabel.stringValue = String(format: "%@ %@", KMLocalizedString("We have sent you a code via email to", tableName: "MemberCenterLocalizable", comment: ""), viewModel.email)
+        verifficationTextField.placeholderString = KMLocalizedString("Please enter code", tableName: "MemberCenterLocalizable", comment: "")
         verifficationErrorLabel.stringValue = viewModel.passwordErrorMessage
-        nextButton.title = NSLocalizedString("Next", tableName: "MemberCenterLocalizable", comment: "")
-        backButton.title = NSLocalizedString("Previous Step", tableName: "MemberCenterLocalizable", comment: "")
+        nextButton.title = KMLocalizedString("Next", tableName: "MemberCenterLocalizable", comment: "")
+        backButton.title = KMLocalizedString("Previous Step", tableName: "MemberCenterLocalizable", comment: "")
     }
     
     private func initializeUI() -> Void {
@@ -123,8 +123,8 @@ class KMEnterVerificationCodeView: BaseXibView {
 
     private func sendBoxRefresh() -> Void {
         sendLabel.stringValue = viewModel.sendContent
-        if viewModel.sendContent == NSLocalizedString("Send", tableName: "MemberCenterLocalizable", comment: "") ||
-            viewModel.sendContent == NSLocalizedString("Resend", tableName: "MemberCenterLocalizable", comment: "") {
+        if viewModel.sendContent == KMLocalizedString("Send", tableName: "MemberCenterLocalizable", comment: "") ||
+            viewModel.sendContent == KMLocalizedString("Resend", tableName: "MemberCenterLocalizable", comment: "") {
             if viewModel.email.count > 0 {
                 if viewModel.isValidEmail() {
                     sendBox.fillColor = NSColor(named: "273C62") ?? NSColor.blue
@@ -204,7 +204,7 @@ class KMEnterVerificationCodeView: BaseXibView {
                 if newValue.count <= 6 && newValue.count >= 0 {
                     self?.viewModel.passwordErrorMessage = ""
                 } else {
-                    self?.viewModel.passwordErrorMessage = NSLocalizedString("Verification code error.", tableName: "MemberCenterLocalizable", comment: "")
+                    self?.viewModel.passwordErrorMessage = KMLocalizedString("Verification code error.", tableName: "MemberCenterLocalizable", comment: "")
                 }
             }
             .store(in: &cancellables)
@@ -214,7 +214,7 @@ class KMEnterVerificationCodeView: BaseXibView {
     
     @IBAction func nextButtonAction(_ sender: NSButton) {
         if viewModel.verificationCode.count <= 0 || viewModel.verificationCode.count > 6 || !viewModel.isValidVerificationCode() {
-            viewModel.passwordErrorMessage = NSLocalizedString("Verification code error.", tableName: "MemberCenterLocalizable", comment: "")
+            viewModel.passwordErrorMessage = KMLocalizedString("Verification code error.", tableName: "MemberCenterLocalizable", comment: "")
             return
         }
         viewModel.passwordErrorMessage = ""

+ 7 - 7
PDF Office/PDF Master/Class/MemberCenter/View/KMForgotPasswordView.swift

@@ -50,11 +50,11 @@ class KMForgotPasswordView: BaseXibView {
     // MARK: Private Method
     
     private func languageLocalized() -> Void {
-        resetPasswordsLabel.stringValue = NSLocalizedString("Reset Password", tableName: "MemberCenterLocalizable", comment: "")
-        emailTextField.placeholderString = NSLocalizedString("Please enter email address", tableName: "MemberCenterLocalizable", comment: "")
-        emailErrorLabel.stringValue = String(format: "*%@", NSLocalizedString("Email format error. Please enter the correct email.", tableName: "MemberCenterLocalizable", comment: ""))
-        nextButton.title = NSLocalizedString("Next", tableName: "MemberCenterLocalizable", comment: "")
-        backButton.title = NSLocalizedString("Previous Step", tableName: "MemberCenterLocalizable", comment: "")
+        resetPasswordsLabel.stringValue = KMLocalizedString("Reset Password", tableName: "MemberCenterLocalizable", comment: "")
+        emailTextField.placeholderString = KMLocalizedString("Please enter email address", tableName: "MemberCenterLocalizable", comment: "")
+        emailErrorLabel.stringValue = String(format: "*%@", KMLocalizedString("Email format error. Please enter the correct email.", tableName: "MemberCenterLocalizable", comment: ""))
+        nextButton.title = KMLocalizedString("Next", tableName: "MemberCenterLocalizable", comment: "")
+        backButton.title = KMLocalizedString("Previous Step", tableName: "MemberCenterLocalizable", comment: "")
     }
     
     private func initializeUI() -> Void {
@@ -177,7 +177,7 @@ class KMForgotPasswordView: BaseXibView {
     
     @IBAction func nextButtonAction(_ sender: NSButton) {
         if viewModel.email.count <= 0 || viewModel.email.count > 100 || !viewModel.isValidEmail() {
-            viewModel.emailErrorMessage = NSLocalizedString("Email format error. Please enter the correct email.", tableName: "MemberCenterLocalizable", comment: "")
+            viewModel.emailErrorMessage = KMLocalizedString("Email format error. Please enter the correct email.", tableName: "MemberCenterLocalizable", comment: "")
             return
         }
         viewModel.emailErrorMessage = ""
@@ -191,7 +191,7 @@ class KMForgotPasswordView: BaseXibView {
             } else {
                 DispatchQueue.main.async {
                     let alert = NSAlert()
-                    alert.messageText = NSLocalizedString("This email has not been registered, please log in through the account verification code, we will automatically register an account for you.", tableName: "MemberCenterLocalizable", comment: "")
+                    alert.messageText = KMLocalizedString("This email has not been registered, please log in through the account verification code, we will automatically register an account for you.", tableName: "MemberCenterLocalizable", comment: "")
                     alert.addButton(withTitle: "OK")
                     let response = alert.runModal()
                     if response == .alertFirstButtonReturn {

+ 2 - 2
PDF Office/PDF Master/Class/MemberCenter/View/KMSignUpBuyView.swift

@@ -18,13 +18,13 @@ class KMSignUpBuyView: KMHoverView {
     }()
     
     private lazy var titleLabel_: NSTextField = {
-        let view = NSTextField(labelWithString: NSLocalizedString("Buy without Logging in", tableName: "MemberCenterLocalizable", comment: ""))
+        let view = NSTextField(labelWithString: KMLocalizedString("Buy without Logging in", tableName: "MemberCenterLocalizable", comment: ""))
         view.font = .SFProTextBoldFont(12)
         return view
     }()
     
     private lazy var subTitleLabel_: NSTextField = {
-        let view = NSTextField(wrappingLabelWithString: NSLocalizedString("Cross-platform not supported, 1-year free AI not available", tableName: "MemberCenterLocalizable", comment: ""))
+        let view = NSTextField(wrappingLabelWithString: KMLocalizedString("Cross-platform not supported, 1-year free AI not available", tableName: "MemberCenterLocalizable", comment: ""))
         view.font = .SFProTextRegularFont(11)
         return view
     }()

+ 37 - 37
PDF Office/PDF Master/Class/MemberCenter/View/KMSignUpView.swift

@@ -56,9 +56,9 @@ class KMSignUpView: BaseXibView {
     private var popOver_: NSPopover?
     
     private lazy var codePrivacyAttri_: NSAttributedString = {
-        let tipsString = NSLocalizedString("I have read and agreed to the %@ and %@. An account will be automatically created after signing in with an unregistered email address.", tableName: "MemberCenterLocalizable", comment: "")
-        let specialOffer = NSLocalizedString("Terms of Service", tableName: "MemberCenterLocalizable", comment: "")
-        let contactsUs = NSLocalizedString("Privacy Policy", tableName: "MemberCenterLocalizable", comment: "")
+        let tipsString = KMLocalizedString("I have read and agreed to the %@ and %@. An account will be automatically created after signing in with an unregistered email address.", tableName: "MemberCenterLocalizable", comment: "")
+        let specialOffer = KMLocalizedString("Terms of Service", tableName: "MemberCenterLocalizable", comment: "")
+        let contactsUs = KMLocalizedString("Privacy Policy", tableName: "MemberCenterLocalizable", comment: "")
         let fullString = String(format: tipsString, specialOffer, contactsUs)
         let attributedString = NSMutableAttributedString(string: fullString)
         // 定义链接的范围
@@ -72,21 +72,21 @@ class KMSignUpView: BaseXibView {
         ], range: (fullString as NSString).range(of: fullString))
         attributedString.addAttributes([
             .foregroundColor: linkColor,
-            .link: NSLocalizedString("https://www.pdfreaderpro.com/terms_of_service", comment: ""),
+            .link: KMLocalizedString("https://www.pdfreaderpro.com/terms_of_service", comment: ""),
             .font: font
         ], range: specialOfferRange)
         attributedString.addAttributes([
             .foregroundColor: linkColor,
-            .link: NSLocalizedString("https://www.pdfreaderpro.com/privacy-policy", comment: ""),
+            .link: KMLocalizedString("https://www.pdfreaderpro.com/privacy-policy", comment: ""),
             .font: font
         ], range: contactsUsRange)
         return attributedString
     }()
     
     private lazy var privacyAttri_: NSAttributedString = {
-        let tipsString = NSLocalizedString("I have read and agreed to the %@ and %@.", tableName: "MemberCenterLocalizable", comment: "")
-        let specialOffer = NSLocalizedString("Terms of Service", tableName: "MemberCenterLocalizable", comment: "")
-        let contactsUs = NSLocalizedString("Privacy Policy", tableName: "MemberCenterLocalizable", comment: "")
+        let tipsString = KMLocalizedString("I have read and agreed to the %@ and %@.", tableName: "MemberCenterLocalizable", comment: "")
+        let specialOffer = KMLocalizedString("Terms of Service", tableName: "MemberCenterLocalizable", comment: "")
+        let contactsUs = KMLocalizedString("Privacy Policy", tableName: "MemberCenterLocalizable", comment: "")
         let fullString = String(format: tipsString, specialOffer, contactsUs)
         let attributedString = NSMutableAttributedString(string: fullString)
         // 定义链接的范围
@@ -100,12 +100,12 @@ class KMSignUpView: BaseXibView {
         ], range: (fullString as NSString).range(of: fullString))
         attributedString.addAttributes([
             .foregroundColor: linkColor,
-            .link: NSLocalizedString("https://www.pdfreaderpro.com/terms_of_service", comment: ""),
+            .link: KMLocalizedString("https://www.pdfreaderpro.com/terms_of_service", comment: ""),
             .font: font
         ], range: specialOfferRange)
         attributedString.addAttributes([
             .foregroundColor: linkColor,
-            .link: NSLocalizedString("https://www.pdfreaderpro.com/privacy-policy", comment: ""),
+            .link: KMLocalizedString("https://www.pdfreaderpro.com/privacy-policy", comment: ""),
             .font: font
         ], range: contactsUsRange)
         return attributedString
@@ -149,8 +149,8 @@ class KMSignUpView: BaseXibView {
             verifficationTextField.stringValue = ""
             emailErrorLabel.isHidden = true
             passwordErrorLabel.isHidden = true
-            sendLabel.stringValue = NSLocalizedString("Send", tableName: "MemberCenterLocalizable", comment: "")
-            viewModel.sendContent = NSLocalizedString("Send", tableName: "MemberCenterLocalizable", comment: "")
+            sendLabel.stringValue = KMLocalizedString("Send", tableName: "MemberCenterLocalizable", comment: "")
+            viewModel.sendContent = KMLocalizedString("Send", tableName: "MemberCenterLocalizable", comment: "")
             viewModel.email = ""
             sendBoxRefresh()
         }
@@ -171,19 +171,19 @@ class KMSignUpView: BaseXibView {
     // MARK: Private Method
     
     private func languageLocalized() -> Void {
-        signUpLabel.stringValue = NSLocalizedString("Log In / Register", tableName: "MemberCenterLocalizable", comment: "")
-        verificationCodeButton.title = NSLocalizedString("Verification Code", tableName: "MemberCenterLocalizable", comment: "")
-        passwordButton.title = NSLocalizedString("Password", tableName: "MemberCenterLocalizable", comment: "")
-        stayLabel.stringValue = NSLocalizedString("Stay signed in", tableName: "MemberCenterLocalizable", comment: "")
-        forgetButton.title = NSLocalizedString("Forgot password?", tableName: "MemberCenterLocalizable", comment: "")
-        signUpButton.title = NSLocalizedString("Log In / Register", tableName: "MemberCenterLocalizable", comment: "")
-        emailErrorLabel.stringValue = String(format: "*%@", NSLocalizedString("Email format error. Please enter the correct email.", tableName: "MemberCenterLocalizable", comment: ""))
-        passwordErrorLabel.stringValue = String(format: "*%@", NSLocalizedString("Verification code error.", tableName: "MemberCenterLocalizable", comment: ""))
-        emailTextField.placeholderString = NSLocalizedString("Please enter email address", tableName: "MemberCenterLocalizable", comment: "")
-        verifficationTextField.placeholderString = NSLocalizedString("Please enter code", tableName: "MemberCenterLocalizable", comment: "")
-        passwordTextField.placeholderString = NSLocalizedString("Please enter password", tableName: "MemberCenterLocalizable", comment: "")
-        passwordTextField1.placeholderString = NSLocalizedString("Please enter password", tableName: "MemberCenterLocalizable", comment: "")
-        privacyCheckButton.toolTip = NSLocalizedString("Please agree and check the agreement first.", tableName: "MemberCenterLocalizable", comment: "")
+        signUpLabel.stringValue = KMLocalizedString("Log In / Register", tableName: "MemberCenterLocalizable", comment: "")
+        verificationCodeButton.title = KMLocalizedString("Verification Code", tableName: "MemberCenterLocalizable", comment: "")
+        passwordButton.title = KMLocalizedString("Password", tableName: "MemberCenterLocalizable", comment: "")
+        stayLabel.stringValue = KMLocalizedString("Stay signed in", tableName: "MemberCenterLocalizable", comment: "")
+        forgetButton.title = KMLocalizedString("Forgot password?", tableName: "MemberCenterLocalizable", comment: "")
+        signUpButton.title = KMLocalizedString("Log In / Register", tableName: "MemberCenterLocalizable", comment: "")
+        emailErrorLabel.stringValue = String(format: "*%@", KMLocalizedString("Email format error. Please enter the correct email.", tableName: "MemberCenterLocalizable", comment: ""))
+        passwordErrorLabel.stringValue = String(format: "*%@", KMLocalizedString("Verification code error.", tableName: "MemberCenterLocalizable", comment: ""))
+        emailTextField.placeholderString = KMLocalizedString("Please enter email address", tableName: "MemberCenterLocalizable", comment: "")
+        verifficationTextField.placeholderString = KMLocalizedString("Please enter code", tableName: "MemberCenterLocalizable", comment: "")
+        passwordTextField.placeholderString = KMLocalizedString("Please enter password", tableName: "MemberCenterLocalizable", comment: "")
+        passwordTextField1.placeholderString = KMLocalizedString("Please enter password", tableName: "MemberCenterLocalizable", comment: "")
+        privacyCheckButton.toolTip = KMLocalizedString("Please agree and check the agreement first.", tableName: "MemberCenterLocalizable", comment: "")
         let email = UserDefaults.standard.value(forKey: "MemberSystemAccount")
         if email is String {
             if (email as! String).count > 0 {
@@ -337,12 +337,12 @@ class KMSignUpView: BaseXibView {
             passwordButton.setTitleColor(color: NSColor(named: "42464D") ?? NSColor.black, font: NSFont.SFProTextRegularFont(14))
             verifficationView.isHidden = false
             passwordView.isHidden = true
-            verifficationTextField.placeholderString = NSLocalizedString("Please enter code", tableName: "MemberCenterLocalizable", comment: "")
+            verifficationTextField.placeholderString = KMLocalizedString("Please enter code", tableName: "MemberCenterLocalizable", comment: "")
             forgetButton.isHidden = true
             
             privacyLabel.attributedStringValue = codePrivacyAttri_
-            signUpLabel.stringValue = NSLocalizedString("Log In / Register", tableName: "MemberCenterLocalizable", comment: "")
-            signUpButton.title = NSLocalizedString("Log In / Register", tableName: "MemberCenterLocalizable", comment: "")
+            signUpLabel.stringValue = KMLocalizedString("Log In / Register", tableName: "MemberCenterLocalizable", comment: "")
+            signUpButton.title = KMLocalizedString("Log In / Register", tableName: "MemberCenterLocalizable", comment: "")
             signUpButton.setTitleColor(color: NSColor(named: "FFFFFF") ?? NSColor.white, font: NSFont.SFProTextRegularFont(16))
         } else if viewModel.signUpState == .password {
             selectBox1.isHidden = true
@@ -351,13 +351,13 @@ class KMSignUpView: BaseXibView {
             passwordButton.setTitleColor(color: NSColor(named: "4982E6") ?? NSColor.black, font: NSFont.SFProTextRegularFont(14))
             verifficationView.isHidden = true
             passwordView.isHidden = false
-            passwordTextField.placeholderString = NSLocalizedString("Please enter password", tableName: "MemberCenterLocalizable", comment: "")
-            passwordTextField1.placeholderString = NSLocalizedString("Please enter password", tableName: "MemberCenterLocalizable", comment: "")
+            passwordTextField.placeholderString = KMLocalizedString("Please enter password", tableName: "MemberCenterLocalizable", comment: "")
+            passwordTextField1.placeholderString = KMLocalizedString("Please enter password", tableName: "MemberCenterLocalizable", comment: "")
             forgetButton.isHidden = false
             
             privacyLabel.attributedStringValue = privacyAttri_
-            signUpLabel.stringValue = NSLocalizedString("Log In", tableName: "MemberCenterLocalizable", comment: "")
-            signUpButton.title = NSLocalizedString("Log In", tableName: "MemberCenterLocalizable", comment: "")
+            signUpLabel.stringValue = KMLocalizedString("Log In", tableName: "MemberCenterLocalizable", comment: "")
+            signUpButton.title = KMLocalizedString("Log In", tableName: "MemberCenterLocalizable", comment: "")
             signUpButton.setTitleColor(color: NSColor(named: "FFFFFF") ?? NSColor.white, font: NSFont.SFProTextRegularFont(16))
         }
     }
@@ -421,8 +421,8 @@ class KMSignUpView: BaseXibView {
     
     private func sendBoxRefresh() -> Void {
         sendLabel.stringValue = viewModel.sendContent
-        if viewModel.sendContent == NSLocalizedString("Send", tableName: "MemberCenterLocalizable", comment: "") ||
-            viewModel.sendContent == NSLocalizedString("Resend", tableName: "MemberCenterLocalizable", comment: "") {
+        if viewModel.sendContent == KMLocalizedString("Send", tableName: "MemberCenterLocalizable", comment: "") ||
+            viewModel.sendContent == KMLocalizedString("Resend", tableName: "MemberCenterLocalizable", comment: "") {
             if viewModel.email.count > 0 {
                 if viewModel.isValidEmail() {
                     sendBox.fillColor = NSColor(named: "273C62") ?? NSColor.blue
@@ -469,7 +469,7 @@ class KMSignUpView: BaseXibView {
         
         popViewController.contentInset  = .init(top: 12, left: 8, bottom: 12, right: 8)
         
-        popViewController.updateWithHelpTip(helpTip: NSLocalizedString("Please agree and check the agreement first.", tableName: "MemberCenterLocalizable", comment: ""))
+        popViewController.updateWithHelpTip(helpTip: KMLocalizedString("Please agree and check the agreement first.", tableName: "MemberCenterLocalizable", comment: ""))
         self.popOver_?.show(relativeTo: NSMakeRect(0, 0, 0, 12), of: privacyCheckButton, preferredEdge: .maxY)
     }
     
@@ -538,7 +538,7 @@ class KMSignUpView: BaseXibView {
                 if newValue.count <= 6 && newValue.count >= 0 {
                     self?.viewModel.passwordErrorMessage = ""
                 } else {
-                    self?.viewModel.passwordErrorMessage = NSLocalizedString("Verification code error.", tableName: "MemberCenterLocalizable", comment: "")
+                    self?.viewModel.passwordErrorMessage = KMLocalizedString("Verification code error.", tableName: "MemberCenterLocalizable", comment: "")
                 }
             }
             .store(in: &cancellables)
@@ -548,7 +548,7 @@ class KMSignUpView: BaseXibView {
                 if newValue.count <= 30 && newValue.count >= 0 {
                     self?.viewModel.passwordErrorMessage = ""
                 } else {
-                    self?.viewModel.passwordErrorMessage = NSLocalizedString("Password cannot exceed 30 characters.", tableName: "MemberCenterLocalizable", comment: "")
+                    self?.viewModel.passwordErrorMessage = KMLocalizedString("Password cannot exceed 30 characters.", tableName: "MemberCenterLocalizable", comment: "")
                 }
             }
             .store(in: &cancellables)

+ 126 - 126
PDF Office/PDF Master/Class/MemberCenter/ViewController/KMUserInfoViewController.swift

@@ -110,9 +110,9 @@ class KMUserInfoViewController: NSViewController {
         if KMMemberCenterManager.manager.isConnectionAvailable() == false {
             let alert = NSAlert()
             alert.alertStyle = .critical
-            alert.messageText = NSLocalizedString("Error Information", comment: "")
-            alert.informativeText = NSLocalizedString("Please make sure your internet connection is available.", comment: "")
-            alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
+            alert.messageText = KMLocalizedString("Error Information", comment: "")
+            alert.informativeText = KMLocalizedString("Please make sure your internet connection is available.", comment: "")
+            alert.addButton(withTitle: KMLocalizedString("OK", comment: ""))
             alert.runModal()
             let res = KMMemberCenterResult(code: 500, msg: "", result: false)
             callback?(false,res)
@@ -209,35 +209,35 @@ class KMUserInfoViewController: NSViewController {
     
     private func languageLocalized() -> Void {
         emailLabel.stringValue = KMMemberInfo.shared.userEmail
-        productLabel.stringValue = NSLocalizedString("Personal Account", tableName: "MemberCenterLocalizable", comment: "")
-        endDateLabel.stringValue = String(format: "%@ %@", KMMemberInfo.shared.vip_endDate,NSLocalizedString("expires", tableName: "MemberCenterLocalizable", comment: ""))
+        productLabel.stringValue = KMLocalizedString("Personal Account", tableName: "MemberCenterLocalizable", comment: "")
+        endDateLabel.stringValue = String(format: "%@ %@", KMMemberInfo.shared.vip_endDate,KMLocalizedString("expires", tableName: "MemberCenterLocalizable", comment: ""))
 
-        membershipLabel.stringValue = NSLocalizedString("Membership Benefits", tableName: "MemberCenterLocalizable", comment: "")
-        buyNow1Label.stringValue = NSLocalizedString("Upgrade Now", tableName: "MemberCenterLocalizable", comment: "")
-        accountLabel.stringValue = NSLocalizedString("Account Center", tableName: "MemberCenterLocalizable", comment: "")
-        signOutLabel.stringValue = NSLocalizedString("Sign out", tableName: "MemberCenterLocalizable", comment: "")
+        membershipLabel.stringValue = KMLocalizedString("Membership Benefits", tableName: "MemberCenterLocalizable", comment: "")
+        buyNow1Label.stringValue = KMLocalizedString("Upgrade Now", tableName: "MemberCenterLocalizable", comment: "")
+        accountLabel.stringValue = KMLocalizedString("Account Center", tableName: "MemberCenterLocalizable", comment: "")
+        signOutLabel.stringValue = KMLocalizedString("Sign out", tableName: "MemberCenterLocalizable", comment: "")
         if KMMemberInfo.shared.validFlag == "5" {
-            closeAccountLabel.stringValue = NSLocalizedString("Undo Remove Account", tableName: "MemberCenterLocalizable", comment: "")
+            closeAccountLabel.stringValue = KMLocalizedString("Undo Remove Account", tableName: "MemberCenterLocalizable", comment: "")
         } else {
-            closeAccountLabel.stringValue = NSLocalizedString("Remove Account", tableName: "MemberCenterLocalizable", comment: "")
+            closeAccountLabel.stringValue = KMLocalizedString("Remove Account", tableName: "MemberCenterLocalizable", comment: "")
         }
         if KMMemberInfo.shared.vip_maxDeviceNum == 1 {
-            number4Label.stringValue = NSLocalizedString("device", tableName: "MemberCenterLocalizable", comment: "")
+            number4Label.stringValue = KMLocalizedString("device", tableName: "MemberCenterLocalizable", comment: "")
         } else {
-            number4Label.stringValue = NSLocalizedString("devices", tableName: "MemberCenterLocalizable", comment: "")
+            number4Label.stringValue = KMLocalizedString("devices", tableName: "MemberCenterLocalizable", comment: "")
         }
         number4_1Label.stringValue = String(KMMemberInfo.shared.vip_maxDeviceNum)
         
-        number5Label.stringValue = NSLocalizedString("Devices Access", tableName: "MemberCenterLocalizable", comment: "")
+        number5Label.stringValue = KMLocalizedString("Devices Access", tableName: "MemberCenterLocalizable", comment: "")
         let platforms = viewModel.getPlatformsImages()
         if platforms.count == 4 {
-            number3Label.stringValue = NSLocalizedString("All-platform Available", tableName: "MemberCenterLocalizable", comment: "")
+            number3Label.stringValue = KMLocalizedString("All-platform Available", tableName: "MemberCenterLocalizable", comment: "")
         } else {
-            number3Label.stringValue = NSLocalizedString("Platform", tableName: "MemberCenterLocalizable", comment: "")
+            number3Label.stringValue = KMLocalizedString("Platform", tableName: "MemberCenterLocalizable", comment: "")
         }
         
         if KMMemberInfo.shared.userScenarioType == .lite_type1 {
-            buyNow1Label.stringValue = NSLocalizedString("Buy Now", tableName: "MemberCenterLocalizable", comment: "")
+            buyNow1Label.stringValue = KMLocalizedString("Buy Now", tableName: "MemberCenterLocalizable", comment: "")
             var isTrialPeriod = false
 #if !VERSION_DMG
                 if IAPProductsManager.default().fourDevicesAllAccessPackNew12months_lite.isTrialPeriod == true {
@@ -246,121 +246,121 @@ class KMUserInfoViewController: NSViewController {
 #else
 #endif
             if !isTrialPeriod {
-                buyNow2Label.stringValue = NSLocalizedString("7-Day Free Trial", tableName: "MemberCenterLocalizable", comment: "")
+                buyNow2Label.stringValue = KMLocalizedString("7-Day Free Trial", tableName: "MemberCenterLocalizable", comment: "")
             } else {
-                buyNow2Label.stringValue = NSLocalizedString("Upgrade Now", tableName: "MemberCenterLocalizable", comment: "")
+                buyNow2Label.stringValue = KMLocalizedString("Upgrade Now", tableName: "MemberCenterLocalizable", comment: "")
             }
         } else if KMMemberInfo.shared.userScenarioType == .lite_type9 {
             if(KMMemberInfo.shared.vip_status == 2) {
-                buyNow1Label.stringValue = NSLocalizedString("Renew now", tableName: "MemberCenterLocalizable", comment: "")
+                buyNow1Label.stringValue = KMLocalizedString("Renew now", tableName: "MemberCenterLocalizable", comment: "")
             } else if (KMMemberInfo.shared.vip_status == 4) {
-                buyNow1Label.stringValue = NSLocalizedString("Buy Now", tableName: "MemberCenterLocalizable", comment: "")
+                buyNow1Label.stringValue = KMLocalizedString("Buy Now", tableName: "MemberCenterLocalizable", comment: "")
             } else {
-                buyNow1Label.stringValue = NSLocalizedString("Upgrade Now", tableName: "MemberCenterLocalizable", comment: "")
+                buyNow1Label.stringValue = KMLocalizedString("Upgrade Now", tableName: "MemberCenterLocalizable", comment: "")
             }
         } else if KMMemberInfo.shared.userScenarioType == .lite_type3  {
-            buyNow1Label.stringValue = NSLocalizedString("Buy Now", tableName: "MemberCenterLocalizable", comment: "")
+            buyNow1Label.stringValue = KMLocalizedString("Buy Now", tableName: "MemberCenterLocalizable", comment: "")
         } else if KMMemberInfo.shared.userScenarioType == .lite_type11 {
-            buyNow1Label.stringValue = NSLocalizedString("Upgrade Now", tableName: "MemberCenterLocalizable", comment: "")
+            buyNow1Label.stringValue = KMLocalizedString("Upgrade Now", tableName: "MemberCenterLocalizable", comment: "")
         }  else if KMMemberInfo.shared.userScenarioType == .lite_type5 ||
                     KMMemberInfo.shared.userScenarioType == .pro_type1 ||
                     KMMemberInfo.shared.userScenarioType == .pro_type4 {
-            buyNow1Label.stringValue = NSLocalizedString("Upgrade Now", tableName: "MemberCenterLocalizable", comment: "")
+            buyNow1Label.stringValue = KMLocalizedString("Upgrade Now", tableName: "MemberCenterLocalizable", comment: "")
         }  else if KMMemberInfo.shared.userScenarioType == .pro_type3 {
             if(KMMemberInfo.shared.vip_status == 2) {
-                buyNow1Label.stringValue = NSLocalizedString("Renew now", tableName: "MemberCenterLocalizable", comment: "")
+                buyNow1Label.stringValue = KMLocalizedString("Renew now", tableName: "MemberCenterLocalizable", comment: "")
             } else {
-                buyNow1Label.stringValue = NSLocalizedString("Upgrade Now", tableName: "MemberCenterLocalizable", comment: "")
+                buyNow1Label.stringValue = KMLocalizedString("Upgrade Now", tableName: "MemberCenterLocalizable", comment: "")
             }
         }  else if KMMemberInfo.shared.userScenarioType == .lite_type7 ||
                     KMMemberInfo.shared.userScenarioType == .lite_type8 ||
                     KMMemberInfo.shared.userScenarioType == .lite_type13 {
-            buyNow1Label.stringValue = NSLocalizedString("Renew now", tableName: "MemberCenterLocalizable", comment: "")
+            buyNow1Label.stringValue = KMLocalizedString("Renew now", tableName: "MemberCenterLocalizable", comment: "")
         }
     }
     
     private func refreshEquity() -> Void {
         if KMMemberInfo.shared.userScenarioType == .lite_type1 {
-            lockedLabel.stringValue = NSLocalizedString("Locked", tableName: "MemberCenterLocalizable", comment: "")
+            lockedLabel.stringValue = KMLocalizedString("Locked", tableName: "MemberCenterLocalizable", comment: "")
             lockedImageView.image = NSImage(named: "LockedImage")
-            number1Label.stringValue = NSLocalizedString("150+", tableName: "MemberCenterLocalizable", comment: "")
-            number2Label.stringValue = NSLocalizedString("Benefits of Functions", tableName: "MemberCenterLocalizable", comment: "")
+            number1Label.stringValue = KMLocalizedString("150+", tableName: "MemberCenterLocalizable", comment: "")
+            number2Label.stringValue = KMLocalizedString("Benefits of Functions", tableName: "MemberCenterLocalizable", comment: "")
             number1ImageView.isHidden = true
             number1Label.isHidden = false
             centerBackgroud.image = NSImage(named: "ButtonBackgroundImage3")
             number1Label.textColor = NSColor(hex: "0E1114")
             membershipLabel.textColor = NSColor(hex: "42464D")
         } else if KMMemberInfo.shared.userScenarioType == .lite_type2 {
-            lockedLabel.stringValue = NSLocalizedString("Annual Plan", tableName: "MemberCenterLocalizable", comment: "")
+            lockedLabel.stringValue = KMLocalizedString("Annual Plan", tableName: "MemberCenterLocalizable", comment: "")
             lockedImageView.image = NSImage(named: "UpgradeImage2")
-            number1Label.stringValue = NSLocalizedString("", tableName: "MemberCenterLocalizable", comment: "")
-            number2Label.stringValue = NSLocalizedString("Advanced Version", tableName: "MemberCenterLocalizable", comment: "")
+            number1Label.stringValue = KMLocalizedString("", tableName: "MemberCenterLocalizable", comment: "")
+            number2Label.stringValue = KMLocalizedString("Advanced Version", tableName: "MemberCenterLocalizable", comment: "")
             number1ImageView.isHidden = false
             number1Label.isHidden = true
             centerBackgroud.image = NSImage(named: "ButtonBackgroundImage5")
         } else if KMMemberInfo.shared.userScenarioType == .lite_type3 {
-            lockedLabel.stringValue = NSLocalizedString("Locked", tableName: "MemberCenterLocalizable", comment: "")
+            lockedLabel.stringValue = KMLocalizedString("Locked", tableName: "MemberCenterLocalizable", comment: "")
             lockedImageView.image = NSImage(named: "LockedImage")
-            number1Label.stringValue = NSLocalizedString("150+", tableName: "MemberCenterLocalizable", comment: "")
-            number2Label.stringValue = NSLocalizedString("Benefits of Functions", tableName: "MemberCenterLocalizable", comment: "")
+            number1Label.stringValue = KMLocalizedString("150+", tableName: "MemberCenterLocalizable", comment: "")
+            number2Label.stringValue = KMLocalizedString("Benefits of Functions", tableName: "MemberCenterLocalizable", comment: "")
             number1ImageView.isHidden = true
             number1Label.isHidden = false
             centerBackgroud.image = NSImage(named: "ButtonBackgroundImage3")
             number1Label.textColor = NSColor(hex: "0E1114")
         } else if KMMemberInfo.shared.userScenarioType == .lite_type4 {
-            lockedLabel.stringValue = NSLocalizedString("Subscription", tableName: "MemberCenterLocalizable", comment: "")
+            lockedLabel.stringValue = KMLocalizedString("Subscription", tableName: "MemberCenterLocalizable", comment: "")
             lockedImageView.image = NSImage(named: "UpgradeImage2")
-            number1Label.stringValue = NSLocalizedString("", tableName: "MemberCenterLocalizable", comment: "")
+            number1Label.stringValue = KMLocalizedString("", tableName: "MemberCenterLocalizable", comment: "")
             if KMMemberInfo.shared.vip_levels == "2" {
-                number2Label.stringValue = NSLocalizedString("Standard Version", tableName: "MemberCenterLocalizable", comment: "")
+                number2Label.stringValue = KMLocalizedString("Standard Version", tableName: "MemberCenterLocalizable", comment: "")
             } else {
-                number2Label.stringValue = NSLocalizedString("Advanced Version", tableName: "MemberCenterLocalizable", comment: "")
+                number2Label.stringValue = KMLocalizedString("Advanced Version", tableName: "MemberCenterLocalizable", comment: "")
             }
             number1ImageView.isHidden = false
             number1Label.isHidden = true
             centerBackgroud.image = NSImage(named: "ButtonBackgroundImage5")
         } else if KMMemberInfo.shared.userScenarioType == .lite_type5 {
-            lockedLabel.stringValue = NSLocalizedString("Permanent", tableName: "MemberCenterLocalizable", comment: "")
+            lockedLabel.stringValue = KMLocalizedString("Permanent", tableName: "MemberCenterLocalizable", comment: "")
             lockedImageView.image = NSImage(named: "UpgradeImage2")
-            number1Label.stringValue = NSLocalizedString("", tableName: "MemberCenterLocalizable", comment: "")
+            number1Label.stringValue = KMLocalizedString("", tableName: "MemberCenterLocalizable", comment: "")
             if KMMemberInfo.shared.vip_levels == "2" {
-                number2Label.stringValue = NSLocalizedString("Standard Version", tableName: "MemberCenterLocalizable", comment: "")
+                number2Label.stringValue = KMLocalizedString("Standard Version", tableName: "MemberCenterLocalizable", comment: "")
             } else {
-                number2Label.stringValue = NSLocalizedString("Advanced Version", tableName: "MemberCenterLocalizable", comment: "")
+                number2Label.stringValue = KMLocalizedString("Advanced Version", tableName: "MemberCenterLocalizable", comment: "")
             }
             number1ImageView.isHidden = false
             number1Label.isHidden = true
             centerBackgroud.image = NSImage(named: "ButtonBackgroundImage4")
         } else if KMMemberInfo.shared.userScenarioType == .lite_type6 {
-            lockedLabel.stringValue = NSLocalizedString("Subscription", tableName: "MemberCenterLocalizable", comment: "")
+            lockedLabel.stringValue = KMLocalizedString("Subscription", tableName: "MemberCenterLocalizable", comment: "")
             lockedImageView.image = NSImage(named: "UpgradeImage2")
-            number1Label.stringValue = NSLocalizedString("", tableName: "MemberCenterLocalizable", comment: "")
+            number1Label.stringValue = KMLocalizedString("", tableName: "MemberCenterLocalizable", comment: "")
             if KMMemberInfo.shared.vip_levels == "2" {
-                number2Label.stringValue = NSLocalizedString("Standard Version", tableName: "MemberCenterLocalizable", comment: "")
+                number2Label.stringValue = KMLocalizedString("Standard Version", tableName: "MemberCenterLocalizable", comment: "")
             } else {
-                number2Label.stringValue = NSLocalizedString("Advanced Version", tableName: "MemberCenterLocalizable", comment: "")
+                number2Label.stringValue = KMLocalizedString("Advanced Version", tableName: "MemberCenterLocalizable", comment: "")
             }
                 
             number1ImageView.isHidden = false
             number1Label.isHidden = true
             centerBackgroud.image = NSImage(named: "ButtonBackgroundImage5")
         } else if KMMemberInfo.shared.userScenarioType == .lite_type7 {
-            lockedLabel.stringValue = NSLocalizedString("Locked", tableName: "MemberCenterLocalizable", comment: "")
+            lockedLabel.stringValue = KMLocalizedString("Locked", tableName: "MemberCenterLocalizable", comment: "")
             lockedImageView.image = NSImage(named: "LockedImage")
-            number1Label.stringValue = NSLocalizedString("150+", tableName: "MemberCenterLocalizable", comment: "")
-            number2Label.stringValue = NSLocalizedString("Benefits of Functions", tableName: "MemberCenterLocalizable", comment: "")
+            number1Label.stringValue = KMLocalizedString("150+", tableName: "MemberCenterLocalizable", comment: "")
+            number2Label.stringValue = KMLocalizedString("Benefits of Functions", tableName: "MemberCenterLocalizable", comment: "")
             number1ImageView.isHidden = true
             number1Label.isHidden = false
             centerBackgroud.image = NSImage(named: "ButtonBackgroundImage3")
             number1Label.textColor = NSColor(hex: "0E1114")
         } else if KMMemberInfo.shared.userScenarioType == .lite_type8 {
-            lockedLabel.stringValue = NSLocalizedString("Subscription", tableName: "MemberCenterLocalizable", comment: "")
+            lockedLabel.stringValue = KMLocalizedString("Subscription", tableName: "MemberCenterLocalizable", comment: "")
             lockedImageView.image = NSImage(named: "UpgradeImage2")
-            number1Label.stringValue = NSLocalizedString("", tableName: "MemberCenterLocalizable", comment: "")
+            number1Label.stringValue = KMLocalizedString("", tableName: "MemberCenterLocalizable", comment: "")
             if KMMemberInfo.shared.vip_levels == "2" {
-                number2Label.stringValue = NSLocalizedString("Standard Version", tableName: "MemberCenterLocalizable", comment: "")
+                number2Label.stringValue = KMLocalizedString("Standard Version", tableName: "MemberCenterLocalizable", comment: "")
             } else {
-                number2Label.stringValue = NSLocalizedString("Advanced Version", tableName: "MemberCenterLocalizable", comment: "")
+                number2Label.stringValue = KMLocalizedString("Advanced Version", tableName: "MemberCenterLocalizable", comment: "")
             }
             number1ImageView.isHidden = false
             number1Label.isHidden = true
@@ -368,132 +368,132 @@ class KMUserInfoViewController: NSViewController {
         } else if KMMemberInfo.shared.userScenarioType == .lite_type9 ||
                   KMMemberInfo.shared.userScenarioType == .pro_type1 {
             if(KMMemberInfo.shared.vip_paymentModel == "2" && KMMemberInfo.shared.vip_levels != "1") { //永久
-                lockedLabel.stringValue = NSLocalizedString("Permanent", tableName: "MemberCenterLocalizable", comment: "")
+                lockedLabel.stringValue = KMLocalizedString("Permanent", tableName: "MemberCenterLocalizable", comment: "")
                 lockedImageView.image = NSImage(named: "UpgradeImage2")
-                number1Label.stringValue = NSLocalizedString("", tableName: "MemberCenterLocalizable", comment: "")
+                number1Label.stringValue = KMLocalizedString("", tableName: "MemberCenterLocalizable", comment: "")
                 if KMMemberInfo.shared.vip_levels == "2" {
-                    number2Label.stringValue = NSLocalizedString("Standard Version", tableName: "MemberCenterLocalizable", comment: "")
+                    number2Label.stringValue = KMLocalizedString("Standard Version", tableName: "MemberCenterLocalizable", comment: "")
                 } else {
-                    number2Label.stringValue = NSLocalizedString("Advanced Version", tableName: "MemberCenterLocalizable", comment: "")
+                    number2Label.stringValue = KMLocalizedString("Advanced Version", tableName: "MemberCenterLocalizable", comment: "")
                 }
                 number1ImageView.isHidden = false
                 number1Label.isHidden = true
                 centerBackgroud.image = NSImage(named: "ButtonBackgroundImage4")
             } else { //免费+订阅过期+试用过期
-                lockedLabel.stringValue = NSLocalizedString("Locked", tableName: "MemberCenterLocalizable", comment: "")
+                lockedLabel.stringValue = KMLocalizedString("Locked", tableName: "MemberCenterLocalizable", comment: "")
                 lockedImageView.image = NSImage(named: "LockedImage")
-                number1Label.stringValue = NSLocalizedString("150+", tableName: "MemberCenterLocalizable", comment: "")
-                number2Label.stringValue = NSLocalizedString("Benefits of Functions", tableName: "MemberCenterLocalizable", comment: "")
+                number1Label.stringValue = KMLocalizedString("150+", tableName: "MemberCenterLocalizable", comment: "")
+                number2Label.stringValue = KMLocalizedString("Benefits of Functions", tableName: "MemberCenterLocalizable", comment: "")
                 number1ImageView.isHidden = true
                 number1Label.isHidden = false
                 centerBackgroud.image = NSImage(named: "ButtonBackgroundImage3")
                 number1Label.textColor = NSColor(hex: "0E1114")
             }
         } else if KMMemberInfo.shared.userScenarioType == .lite_type10 {
-            lockedLabel.stringValue = NSLocalizedString("Subscription", tableName: "MemberCenterLocalizable", comment: "")
+            lockedLabel.stringValue = KMLocalizedString("Subscription", tableName: "MemberCenterLocalizable", comment: "")
             lockedImageView.image = NSImage(named: "UpgradeImage2")
-            number1Label.stringValue = NSLocalizedString("", tableName: "MemberCenterLocalizable", comment: "")
-            number2Label.stringValue = NSLocalizedString("Advanced Version", tableName: "MemberCenterLocalizable", comment: "")
+            number1Label.stringValue = KMLocalizedString("", tableName: "MemberCenterLocalizable", comment: "")
+            number2Label.stringValue = KMLocalizedString("Advanced Version", tableName: "MemberCenterLocalizable", comment: "")
             number1ImageView.isHidden = false
             number1Label.isHidden = true
             centerBackgroud.image = NSImage(named: "ButtonBackgroundImage5")
         } else if KMMemberInfo.shared.userScenarioType == .lite_type11 {
-            lockedLabel.stringValue = NSLocalizedString("Locked", tableName: "MemberCenterLocalizable", comment: "")
+            lockedLabel.stringValue = KMLocalizedString("Locked", tableName: "MemberCenterLocalizable", comment: "")
             lockedImageView.image = NSImage(named: "LockedImage")
-            number1Label.stringValue = NSLocalizedString("150+", tableName: "MemberCenterLocalizable", comment: "")
-            number2Label.stringValue = NSLocalizedString("Benefits of Functions", tableName: "MemberCenterLocalizable", comment: "")
+            number1Label.stringValue = KMLocalizedString("150+", tableName: "MemberCenterLocalizable", comment: "")
+            number2Label.stringValue = KMLocalizedString("Benefits of Functions", tableName: "MemberCenterLocalizable", comment: "")
             number1ImageView.isHidden = true
             number1Label.isHidden = false
             centerBackgroud.image = NSImage(named: "ButtonBackgroundImage3")
             number1Label.textColor = NSColor(hex: "0E1114")
         } else if KMMemberInfo.shared.userScenarioType == .lite_type12 {
-            lockedLabel.stringValue = NSLocalizedString("Subscription", tableName: "MemberCenterLocalizable", comment: "")
+            lockedLabel.stringValue = KMLocalizedString("Subscription", tableName: "MemberCenterLocalizable", comment: "")
             lockedImageView.image = NSImage(named: "UpgradeImage2")
-            number1Label.stringValue = NSLocalizedString("", tableName: "MemberCenterLocalizable", comment: "")
+            number1Label.stringValue = KMLocalizedString("", tableName: "MemberCenterLocalizable", comment: "")
             if(KMMemberInfo.shared.vip_levels == "2") {
-                number2Label.stringValue = NSLocalizedString("Standard Version", tableName: "MemberCenterLocalizable", comment: "")
+                number2Label.stringValue = KMLocalizedString("Standard Version", tableName: "MemberCenterLocalizable", comment: "")
             } else if((KMMemberInfo.shared.vip_levels == "3")) {
-                number2Label.stringValue = NSLocalizedString("Advanced Version", tableName: "MemberCenterLocalizable", comment: "")
+                number2Label.stringValue = KMLocalizedString("Advanced Version", tableName: "MemberCenterLocalizable", comment: "")
             }
             number1ImageView.isHidden = false
             number1Label.isHidden = true
             centerBackgroud.image = NSImage(named: "ButtonBackgroundImage5")
         } else if KMMemberInfo.shared.userScenarioType == .lite_type13 {
-            lockedLabel.stringValue = NSLocalizedString("Subscription", tableName: "MemberCenterLocalizable", comment: "")
+            lockedLabel.stringValue = KMLocalizedString("Subscription", tableName: "MemberCenterLocalizable", comment: "")
             lockedImageView.image = NSImage(named: "UpgradeImage2")
-            number1Label.stringValue = NSLocalizedString("", tableName: "MemberCenterLocalizable", comment: "")
+            number1Label.stringValue = KMLocalizedString("", tableName: "MemberCenterLocalizable", comment: "")
             if KMMemberInfo.shared.vip_levels == "2" {
-                number2Label.stringValue = NSLocalizedString("Standard Version", tableName: "MemberCenterLocalizable", comment: "")
+                number2Label.stringValue = KMLocalizedString("Standard Version", tableName: "MemberCenterLocalizable", comment: "")
             } else {
-                number2Label.stringValue = NSLocalizedString("Advanced Version", tableName: "MemberCenterLocalizable", comment: "")
+                number2Label.stringValue = KMLocalizedString("Advanced Version", tableName: "MemberCenterLocalizable", comment: "")
             }
             number1ImageView.isHidden = false
             number1Label.isHidden = true
             centerBackgroud.image = NSImage(named: "ButtonBackgroundImage5")
         } else if KMMemberInfo.shared.userScenarioType == .pro_type2 {
-            lockedLabel.stringValue = NSLocalizedString("Subscription", tableName: "MemberCenterLocalizable", comment: "")
+            lockedLabel.stringValue = KMLocalizedString("Subscription", tableName: "MemberCenterLocalizable", comment: "")
             lockedImageView.image = NSImage(named: "UpgradeImage2")
-            number1Label.stringValue = NSLocalizedString("", tableName: "MemberCenterLocalizable", comment: "")
+            number1Label.stringValue = KMLocalizedString("", tableName: "MemberCenterLocalizable", comment: "")
             if KMMemberInfo.shared.vip_levels == "2" {
-                number2Label.stringValue = NSLocalizedString("Standard Version", tableName: "MemberCenterLocalizable", comment: "")
+                number2Label.stringValue = KMLocalizedString("Standard Version", tableName: "MemberCenterLocalizable", comment: "")
             } else {
-                number2Label.stringValue = NSLocalizedString("Advanced Version", tableName: "MemberCenterLocalizable", comment: "")
+                number2Label.stringValue = KMLocalizedString("Advanced Version", tableName: "MemberCenterLocalizable", comment: "")
             }
             number1ImageView.isHidden = false
             number1Label.isHidden = true
             centerBackgroud.image = NSImage(named: "ButtonBackgroundImage5")
             number1Label.textColor = NSColor(named: "FFFFFF")
         } else if KMMemberInfo.shared.userScenarioType == .pro_type3 {
-            lockedLabel.stringValue = NSLocalizedString("Locked", tableName: "MemberCenterLocalizable", comment: "")
+            lockedLabel.stringValue = KMLocalizedString("Locked", tableName: "MemberCenterLocalizable", comment: "")
             lockedImageView.image = NSImage(named: "LockedImage")
-            number1Label.stringValue = NSLocalizedString("150+", tableName: "MemberCenterLocalizable", comment: "")
-            number2Label.stringValue = NSLocalizedString("Benefits of Functions", tableName: "MemberCenterLocalizable", comment: "")
+            number1Label.stringValue = KMLocalizedString("150+", tableName: "MemberCenterLocalizable", comment: "")
+            number2Label.stringValue = KMLocalizedString("Benefits of Functions", tableName: "MemberCenterLocalizable", comment: "")
             number1ImageView.isHidden = true
             number1Label.isHidden = false
             centerBackgroud.image = NSImage(named: "ButtonBackgroundImage3")
             number1Label.textColor = NSColor(hex: "0E1114")
         } else if KMMemberInfo.shared.userScenarioType == .pro_type4 {
-            lockedLabel.stringValue = NSLocalizedString("Permanent", tableName: "MemberCenterLocalizable", comment: "")
+            lockedLabel.stringValue = KMLocalizedString("Permanent", tableName: "MemberCenterLocalizable", comment: "")
             lockedImageView.image = NSImage(named: "UpgradeImage2")
-            number1Label.stringValue = NSLocalizedString("", tableName: "MemberCenterLocalizable", comment: "")
+            number1Label.stringValue = KMLocalizedString("", tableName: "MemberCenterLocalizable", comment: "")
             if KMMemberInfo.shared.vip_levels == "2" {
-                number2Label.stringValue = NSLocalizedString("Standard Version", tableName: "MemberCenterLocalizable", comment: "")
+                number2Label.stringValue = KMLocalizedString("Standard Version", tableName: "MemberCenterLocalizable", comment: "")
             } else {
-                number2Label.stringValue = NSLocalizedString("Advanced Version", tableName: "MemberCenterLocalizable", comment: "")
+                number2Label.stringValue = KMLocalizedString("Advanced Version", tableName: "MemberCenterLocalizable", comment: "")
             }
             number1ImageView.isHidden = false
             number1Label.isHidden = true
             centerBackgroud.image = NSImage(named: "ButtonBackgroundImage4")
         } else if KMMemberInfo.shared.userScenarioType == .pro_type5 {
-            lockedLabel.stringValue = NSLocalizedString("Subscription", tableName: "MemberCenterLocalizable", comment: "")
+            lockedLabel.stringValue = KMLocalizedString("Subscription", tableName: "MemberCenterLocalizable", comment: "")
             lockedImageView.image = NSImage(named: "UpgradeImage2")
-            number1Label.stringValue = NSLocalizedString("", tableName: "MemberCenterLocalizable", comment: "")
+            number1Label.stringValue = KMLocalizedString("", tableName: "MemberCenterLocalizable", comment: "")
             if KMMemberInfo.shared.vip_levels == "2" {
-                number2Label.stringValue = NSLocalizedString("Standard Version", tableName: "MemberCenterLocalizable", comment: "")
+                number2Label.stringValue = KMLocalizedString("Standard Version", tableName: "MemberCenterLocalizable", comment: "")
             } else {
-                number2Label.stringValue = NSLocalizedString("Advanced Version", tableName: "MemberCenterLocalizable", comment: "")
+                number2Label.stringValue = KMLocalizedString("Advanced Version", tableName: "MemberCenterLocalizable", comment: "")
             }
             number1ImageView.isHidden = false
             number1Label.isHidden = true
             centerBackgroud.image = NSImage(named: "ButtonBackgroundImage5")
         } else {
-            lockedLabel.stringValue = NSLocalizedString("Locked", tableName: "MemberCenterLocalizable", comment: "")
+            lockedLabel.stringValue = KMLocalizedString("Locked", tableName: "MemberCenterLocalizable", comment: "")
             lockedImageView.image = NSImage(named: "LockedImage")
-            number1Label.stringValue = NSLocalizedString("150+", tableName: "MemberCenterLocalizable", comment: "")
-            number2Label.stringValue = NSLocalizedString("Benefits of Functions", tableName: "MemberCenterLocalizable", comment: "")
+            number1Label.stringValue = KMLocalizedString("150+", tableName: "MemberCenterLocalizable", comment: "")
+            number2Label.stringValue = KMLocalizedString("Benefits of Functions", tableName: "MemberCenterLocalizable", comment: "")
             number1ImageView.isHidden = true
             number1Label.isHidden = false
             centerBackgroud.image = NSImage(named: "ButtonBackgroundImage3")
             number1Label.textColor = NSColor(hex: "0E1114")
         }
         
-        if lockedLabel.stringValue == NSLocalizedString("Locked", tableName: "MemberCenterLocalizable", comment: "") {
+        if lockedLabel.stringValue == KMLocalizedString("Locked", tableName: "MemberCenterLocalizable", comment: "") {
             lockedLabel.textColor = NSColor(hex: "#42464D")
-        } else if lockedLabel.stringValue == NSLocalizedString("Subscription", tableName: "MemberCenterLocalizable", comment: "") {
+        } else if lockedLabel.stringValue == KMLocalizedString("Subscription", tableName: "MemberCenterLocalizable", comment: "") {
             lockedLabel.textColor = NSColor(hex: "#42464D")
-        } else if lockedLabel.stringValue == NSLocalizedString("Permanent", tableName: "MemberCenterLocalizable", comment: "") {
+        } else if lockedLabel.stringValue == KMLocalizedString("Permanent", tableName: "MemberCenterLocalizable", comment: "") {
             lockedLabel.textColor = NSColor(hex: "#273C62")
-        } else if lockedLabel.stringValue == NSLocalizedString("Annual Plan", tableName: "MemberCenterLocalizable", comment: "") {
+        } else if lockedLabel.stringValue == KMLocalizedString("Annual Plan", tableName: "MemberCenterLocalizable", comment: "") {
             lockedLabel.textColor = NSColor(hex: "#42464D")
         }
     }
@@ -877,30 +877,30 @@ class KMUserInfoViewController: NSViewController {
     
     private func languageLocalized_DMG() -> Void {
         emailLabel.stringValue = KMMemberInfo.shared.userEmail
-        productLabel.stringValue = NSLocalizedString("Personal Account", tableName: "MemberCenterLocalizable", comment: "")
-        endDateLabel.stringValue = String(format: "%@ %@", KMMemberInfo.shared.vip_endDate,NSLocalizedString("expires", tableName: "MemberCenterLocalizable", comment: ""))
-        membershipLabel.stringValue = NSLocalizedString("Membership Benefits", tableName: "MemberCenterLocalizable", comment: "")
-        buyNow1Label.stringValue = NSLocalizedString("Upgrade Now", tableName: "MemberCenterLocalizable", comment: "")
-        accountLabel.stringValue = NSLocalizedString("Account Center", tableName: "MemberCenterLocalizable", comment: "")
-        signOutLabel.stringValue = NSLocalizedString("Sign out", tableName: "MemberCenterLocalizable", comment: "")
+        productLabel.stringValue = KMLocalizedString("Personal Account", tableName: "MemberCenterLocalizable", comment: "")
+        endDateLabel.stringValue = String(format: "%@ %@", KMMemberInfo.shared.vip_endDate,KMLocalizedString("expires", tableName: "MemberCenterLocalizable", comment: ""))
+        membershipLabel.stringValue = KMLocalizedString("Membership Benefits", tableName: "MemberCenterLocalizable", comment: "")
+        buyNow1Label.stringValue = KMLocalizedString("Upgrade Now", tableName: "MemberCenterLocalizable", comment: "")
+        accountLabel.stringValue = KMLocalizedString("Account Center", tableName: "MemberCenterLocalizable", comment: "")
+        signOutLabel.stringValue = KMLocalizedString("Sign out", tableName: "MemberCenterLocalizable", comment: "")
         if KMMemberInfo.shared.validFlag == "5" {
-            closeAccountLabel.stringValue = NSLocalizedString("Undo Remove Account", tableName: "MemberCenterLocalizable", comment: "")
+            closeAccountLabel.stringValue = KMLocalizedString("Undo Remove Account", tableName: "MemberCenterLocalizable", comment: "")
         } else {
-            closeAccountLabel.stringValue = NSLocalizedString("Remove Account", tableName: "MemberCenterLocalizable", comment: "")
+            closeAccountLabel.stringValue = KMLocalizedString("Remove Account", tableName: "MemberCenterLocalizable", comment: "")
         }
         if KMMemberInfo.shared.vip_maxDeviceNum == 1 {
-            number4Label.stringValue = NSLocalizedString("device", tableName: "MemberCenterLocalizable", comment: "")
+            number4Label.stringValue = KMLocalizedString("device", tableName: "MemberCenterLocalizable", comment: "")
         } else {
-            number4Label.stringValue = NSLocalizedString("devices", tableName: "MemberCenterLocalizable", comment: "")
+            number4Label.stringValue = KMLocalizedString("devices", tableName: "MemberCenterLocalizable", comment: "")
         }
         number4_1Label.stringValue = String(KMMemberInfo.shared.vip_maxDeviceNum)
         
-        number5Label.stringValue = NSLocalizedString("Devices Access", tableName: "MemberCenterLocalizable", comment: "")
+        number5Label.stringValue = KMLocalizedString("Devices Access", tableName: "MemberCenterLocalizable", comment: "")
         let platforms = viewModel.getPlatformsImages()
         if platforms.count == 4 {
-            number3Label.stringValue = NSLocalizedString("All-platform Available", tableName: "MemberCenterLocalizable", comment: "")
+            number3Label.stringValue = KMLocalizedString("All-platform Available", tableName: "MemberCenterLocalizable", comment: "")
         } else {
-            number3Label.stringValue = NSLocalizedString("Platform", tableName: "MemberCenterLocalizable", comment: "")
+            number3Label.stringValue = KMLocalizedString("Platform", tableName: "MemberCenterLocalizable", comment: "")
         }
         if KMMemberInfo.shared.userScenarioType == .dmg_type5 ||
             KMMemberInfo.shared.userScenarioType == .dmg_type6 ||
@@ -911,9 +911,9 @@ class KMUserInfoViewController: NSViewController {
             KMMemberInfo.shared.userScenarioType == .dmg_type43 ||
             KMMemberInfo.shared.userScenarioType == .dmg_type44 ||
             KMMemberInfo.shared.userScenarioType == .dmg_type45 { // 买断
-            lockedLabel.stringValue = NSLocalizedString("Permanent", tableName: "MemberCenterLocalizable", comment: "")
-            number2Label.stringValue = NSLocalizedString("Advanced Version", tableName: "MemberCenterLocalizable", comment: "")
-            buyNow1Label.stringValue = NSLocalizedString("Upgrade Now", tableName: "MemberCenterLocalizable", comment: "")
+            lockedLabel.stringValue = KMLocalizedString("Permanent", tableName: "MemberCenterLocalizable", comment: "")
+            number2Label.stringValue = KMLocalizedString("Advanced Version", tableName: "MemberCenterLocalizable", comment: "")
+            buyNow1Label.stringValue = KMLocalizedString("Upgrade Now", tableName: "MemberCenterLocalizable", comment: "")
         } else if KMMemberInfo.shared.userScenarioType == .dmg_type8 ||
                     KMMemberInfo.shared.userScenarioType == .dmg_type9 ||
                     KMMemberInfo.shared.userScenarioType == .dmg_type10 ||
@@ -941,16 +941,16 @@ class KMUserInfoViewController: NSViewController {
                     KMMemberInfo.shared.userScenarioType == .dmg_type42 ||
                     KMMemberInfo.shared.userScenarioType == .dmg_type46 ||
                     KMMemberInfo.shared.userScenarioType == .dmg_type47 { // 订阅
-            lockedLabel.stringValue = NSLocalizedString("Subscription", tableName: "MemberCenterLocalizable", comment: "")
+            lockedLabel.stringValue = KMLocalizedString("Subscription", tableName: "MemberCenterLocalizable", comment: "")
             if KMMemberInfo.shared.userScenarioType == .dmg_type8 ||
                 KMMemberInfo.shared.userScenarioType == .dmg_type9 ||
                 KMMemberInfo.shared.userScenarioType == .dmg_type20 ||
                 KMMemberInfo.shared.userScenarioType == .dmg_type21 ||
                 KMMemberInfo.shared.userScenarioType == .dmg_type35 ||
                 KMMemberInfo.shared.userScenarioType == .dmg_type36 {
-                number2Label.stringValue = NSLocalizedString("Standard Version", tableName: "MemberCenterLocalizable", comment: "")
+                number2Label.stringValue = KMLocalizedString("Standard Version", tableName: "MemberCenterLocalizable", comment: "")
             } else {
-                number2Label.stringValue = NSLocalizedString("Advanced Version", tableName: "MemberCenterLocalizable", comment: "")
+                number2Label.stringValue = KMLocalizedString("Advanced Version", tableName: "MemberCenterLocalizable", comment: "")
             }
 
         } else { // 免费 & 到期
@@ -963,32 +963,32 @@ class KMUserInfoViewController: NSViewController {
                 KMMemberInfo.shared.userScenarioType == .dmg_type34 ||
                 KMMemberInfo.shared.userScenarioType == .dmg_type37 ||
                 KMMemberInfo.shared.userScenarioType == .dmg_type48 {
-                lockedLabel.stringValue = NSLocalizedString("Locked", tableName: "MemberCenterLocalizable", comment: "")
-                number1Label.stringValue = NSLocalizedString("150+", tableName: "MemberCenterLocalizable", comment: "")
-                number2Label.stringValue = NSLocalizedString("Benefits of Functions", tableName: "MemberCenterLocalizable", comment: "")
+                lockedLabel.stringValue = KMLocalizedString("Locked", tableName: "MemberCenterLocalizable", comment: "")
+                number1Label.stringValue = KMLocalizedString("150+", tableName: "MemberCenterLocalizable", comment: "")
+                number2Label.stringValue = KMLocalizedString("Benefits of Functions", tableName: "MemberCenterLocalizable", comment: "")
                 if KMMemberInfo.shared.userScenarioType == .dmg_type11 ||
                     KMMemberInfo.shared.userScenarioType == .dmg_type18 ||
                     KMMemberInfo.shared.userScenarioType == .dmg_type22 ||
                     KMMemberInfo.shared.userScenarioType == .dmg_type33 ||
                     KMMemberInfo.shared.userScenarioType == .dmg_type37 ||
                     KMMemberInfo.shared.userScenarioType == .dmg_type48 { // 到期
-                    buyNow1Label.stringValue = NSLocalizedString("Buy Now", tableName: "MemberCenterLocalizable", comment: "")
+                    buyNow1Label.stringValue = KMLocalizedString("Buy Now", tableName: "MemberCenterLocalizable", comment: "")
                 } else { // 免费
                     
                 }
                 if KMMemberInfo.shared.userScenarioType == .dmg_type4 ||
                    KMMemberInfo.shared.userScenarioType == .dmg_type19 ||
                    KMMemberInfo.shared.userScenarioType == .dmg_type34 {
-                    buyNow1Label.stringValue = NSLocalizedString("Buy Now", tableName: "MemberCenterLocalizable", comment: "")
-                    buyNow2Label.stringValue = NSLocalizedString("7-Day Free Trial", tableName: "MemberCenterLocalizable", comment: "")
+                    buyNow1Label.stringValue = KMLocalizedString("Buy Now", tableName: "MemberCenterLocalizable", comment: "")
+                    buyNow2Label.stringValue = KMLocalizedString("7-Day Free Trial", tableName: "MemberCenterLocalizable", comment: "")
                 } else if KMMemberInfo.shared.userScenarioType == .dmg_type11 ||
                           KMMemberInfo.shared.userScenarioType == .dmg_type22 ||
                             KMMemberInfo.shared.userScenarioType == .dmg_type37 {
-                    buyNow1Label.stringValue = NSLocalizedString("Buy Now", tableName: "MemberCenterLocalizable", comment: "")
+                    buyNow1Label.stringValue = KMLocalizedString("Buy Now", tableName: "MemberCenterLocalizable", comment: "")
                 } else if  KMMemberInfo.shared.userScenarioType == .dmg_type18 ||
                             KMMemberInfo.shared.userScenarioType == .dmg_type33 ||
                             KMMemberInfo.shared.userScenarioType == .dmg_type48 {
-                    buyNow1Label.stringValue = NSLocalizedString("Renew now", tableName: "MemberCenterLocalizable", comment: "")
+                    buyNow1Label.stringValue = KMLocalizedString("Renew now", tableName: "MemberCenterLocalizable", comment: "")
                 }
             }
         }

+ 39 - 39
PDF Office/PDF Master/Class/MemberCenter/ViewModel/KMProductModel.swift

@@ -120,9 +120,9 @@ class KMProductModel: ObservableObject {
         if KMMemberCenterManager.manager.isConnectionAvailable() == false {
             let alert = NSAlert()
             alert.alertStyle = .critical
-            alert.messageText = NSLocalizedString("Error Information", comment: "")
-            alert.informativeText = NSLocalizedString("Please make sure your internet connection is available.", comment: "")
-            alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
+            alert.messageText = KMLocalizedString("Error Information", comment: "")
+            alert.informativeText = KMLocalizedString("Please make sure your internet connection is available.", comment: "")
+            alert.addButton(withTitle: KMLocalizedString("OK", comment: ""))
             alert.runModal()
             return
         }
@@ -571,7 +571,7 @@ class KMProductModel: ObservableObject {
 #if VERSION_DMG
     // DMG
             if type == .pdfReaderProStandard_dmg {
-                if NSLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
+                if KMLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
                     return String(format: "USD $%@", getDMGPrice(productCode: KMStandardAnnualSubscriptionCodeKey_DMG))
                 } else {
                     return String(format: "CNY ¥%@", getDMGCNYPrice(productCode: KMStandardAnnualSubscriptionCodeKey_DMG))
@@ -579,13 +579,13 @@ class KMProductModel: ObservableObject {
             } else if type == .pdfReaderProAdvanced_dmg {
                 if state == .dmg_Base {
                     if isBlackFive {
-                        if NSLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
+                        if KMLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
                             return String(format: "USD $%@", getDMGPrice(productCode: KMAdvancedAnnualSubscriptionBlackFiveCodeKey_DMG))
                         } else {
                             return String(format: "CNY ¥%@", getDMGCNYPrice(productCode: KMAdvancedAnnualSubscriptionBlackFiveCodeKey_DMG))
                         }
                     } else {
-                        if NSLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
+                        if KMLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
                             return String(format: "USD $%@", getDMGPrice(productCode: KMAdvancedAnnualSubscriptionCodeKey_DMG))
                         } else {
                             return String(format: "CNY ¥%@", getDMGCNYPrice(productCode: KMAdvancedAnnualSubscriptionCodeKey_DMG))
@@ -593,13 +593,13 @@ class KMProductModel: ObservableObject {
                     }
                 } else {
                     if KMMemberInfo.shared.canTrail && state == .trial {
-                        if NSLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
+                        if KMLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
                             return String(format: "USD $%@", getDMGPrice(productCode: KMAdvancedAnnualSubscriptionTrailCodeKey_DMG))
                         } else {
                             return String(format: "CNY ¥%@", getDMGCNYPrice(productCode: KMAdvancedAnnualSubscriptionTrailCodeKey_DMG))
                         }
                     } else {
-                        if NSLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
+                        if KMLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
                             return String(format: "USD $%@", getDMGPrice(productCode: KMAdvancedAnnualSubscriptionCodeKey_DMG))
                         } else {
                             return String(format: "CNY ¥%@", getDMGCNYPrice(productCode: KMAdvancedAnnualSubscriptionCodeKey_DMG))
@@ -609,13 +609,13 @@ class KMProductModel: ObservableObject {
             } else if type == .pdfReaderProPermanent_dmg {
                 if state == .dmg_Base {
                     if isBlackFive {
-                        if NSLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
+                        if KMLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
                             return String(format: "USD $%@", getDMGPrice(productCode: KMAdvancedPermanentBlackFiveCodeKey_DMG))
                         } else {
                             return String(format: "CNY ¥%@", getDMGCNYPrice(productCode: KMAdvancedPermanentBlackFiveCodeKey_DMG))
                         }
                     } else {
-                        if NSLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
+                        if KMLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
                             return String(format: "USD $%@", getDMGPrice(productCode: KMAdvancedPermanentCodeKey_DMG))
                         } else {
                             return String(format: "CNY ¥%@", getDMGCNYPrice(productCode: KMAdvancedPermanentCodeKey_DMG))
@@ -625,13 +625,13 @@ class KMProductModel: ObservableObject {
                     
                 }
             } else if type == .pdfReaderProAIAnnual_dmg {
-                if NSLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
+                if KMLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
                     return String(format: "USD $%@", getDMGPrice(productCode: KMAISubscriptionYearTrailCodeKey_DMG))
                 } else {
                     return String(format: "CNY ¥%@", getDMGCNYPrice(productCode: KMAISubscriptionYearTrailCodeKey_DMG))
                 }
             } else if type == .pdfReaderProAIMonthly_dmg {
-                if NSLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
+                if KMLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
                     return String(format: "USD $%@", getDMGPrice(productCode: KMAISubscriptionMonthCodeKey_DMG))
                 } else {
                     return String(format: "CNY ¥%@", getDMGCNYPrice(productCode: KMAISubscriptionMonthCodeKey_DMG))
@@ -744,7 +744,7 @@ class KMProductModel: ObservableObject {
 #if VERSION_DMG
     // DMG
             if type == .pdfReaderProStandard_dmg {
-                if NSLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
+                if KMLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
                     return String(format: "USD $%@", getDMGDisplayPrice(productCode: KMStandardAnnualSubscriptionCodeKey_DMG))
                 } else {
                     return String(format: "CNY ¥%@", getDMGDisplayCNYPrice(productCode: KMStandardAnnualSubscriptionCodeKey_DMG))
@@ -752,13 +752,13 @@ class KMProductModel: ObservableObject {
             } else if type == .pdfReaderProAdvanced_dmg {
                 if state == .dmg_Base {
                     if isBlackFive {
-                        if NSLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
+                        if KMLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
                             return String(format: "USD $%@", getDMGDisplayPrice(productCode: KMAdvancedAnnualSubscriptionBlackFiveCodeKey_DMG))
                         } else {
                             return String(format: "CNY ¥%@", getDMGDisplayCNYPrice(productCode: KMAdvancedAnnualSubscriptionBlackFiveCodeKey_DMG))
                         }
                     } else {
-                        if NSLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
+                        if KMLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
                             return String(format: "USD $%@", getDMGDisplayPrice(productCode: KMAdvancedAnnualSubscriptionCodeKey_DMG))
                         } else {
                             return String(format: "CNY ¥%@", getDMGDisplayCNYPrice(productCode: KMAdvancedAnnualSubscriptionCodeKey_DMG))
@@ -766,13 +766,13 @@ class KMProductModel: ObservableObject {
                     }
                 } else {
                     if KMMemberInfo.shared.canTrail && state == .trial {
-                        if NSLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
+                        if KMLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
                             return String(format: "USD $%@", getDMGDisplayPrice(productCode: KMAdvancedAnnualSubscriptionTrailCodeKey_DMG))
                         } else {
                             return String(format: "CNY ¥%@", getDMGDisplayCNYPrice(productCode: KMAdvancedAnnualSubscriptionTrailCodeKey_DMG))
                         }
                     } else {
-                        if NSLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
+                        if KMLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
                             return String(format: "USD $%@", getDMGDisplayPrice(productCode: KMAdvancedAnnualSubscriptionCodeKey_DMG))
                         } else {
                             return String(format: "CNY ¥%@", getDMGDisplayCNYPrice(productCode: KMAdvancedAnnualSubscriptionCodeKey_DMG))
@@ -782,13 +782,13 @@ class KMProductModel: ObservableObject {
             } else if type == .pdfReaderProPermanent_dmg {
                 if state == .dmg_Base {
                     if isBlackFive {
-                        if NSLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
+                        if KMLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
                             return String(format: "USD $%@", getDMGDisplayPrice(productCode: KMAdvancedPermanentBlackFiveCodeKey_DMG))
                         } else {
                             return String(format: "CNY ¥%@", getDMGDisplayCNYPrice(productCode: KMAdvancedPermanentBlackFiveCodeKey_DMG))
                         }
                     } else {
-                        if NSLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
+                        if KMLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
                             return String(format: "USD $%@", getDMGDisplayPrice(productCode: KMAdvancedPermanentCodeKey_DMG))
                         } else {
                             return String(format: "CNY ¥%@", getDMGDisplayCNYPrice(productCode: KMAdvancedPermanentCodeKey_DMG))
@@ -798,13 +798,13 @@ class KMProductModel: ObservableObject {
                     
                 }
             } else if type == .pdfReaderProAIAnnual_dmg {
-                if NSLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
+                if KMLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
                     return String(format: "USD $%@", getDMGDisplayPrice(productCode: KMAISubscriptionYearTrailCodeKey_DMG))
                 } else {
                     return String(format: "CNY ¥%@", getDMGDisplayCNYPrice(productCode: KMAISubscriptionYearTrailCodeKey_DMG))
                 }
             } else if type == .pdfReaderProAIMonthly_dmg {
-                if NSLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
+                if KMLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
                     return String(format: "USD $%@", getDMGDisplayPrice(productCode: KMAISubscriptionMonthCodeKey_DMG))
                 } else {
                     return String(format: "CNY ¥%@", getDMGDisplayCNYPrice(productCode: KMAISubscriptionMonthCodeKey_DMG))
@@ -914,7 +914,7 @@ class KMProductModel: ObservableObject {
 #if VERSION_FREE
 #if VERSION_DMG
             if type == .pdfReaderProStandard_dmg {
-                if NSLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
+                if KMLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
                     return String(format: "USD $%@", getDMGOriginalPrice(productCode: KMStandardAnnualSubscriptionCodeKey_DMG))
                 } else {
                     return String(format: "CNY ¥%@", getDMGOriginalCNYPrice(productCode: KMStandardAnnualSubscriptionCodeKey_DMG))
@@ -922,13 +922,13 @@ class KMProductModel: ObservableObject {
             } else if type == .pdfReaderProAdvanced_dmg {
                 if state == .dmg_Base {
                     if isBlackFive {
-                        if NSLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
+                        if KMLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
                             return String(format: "USD $%@", getDMGOriginalPrice(productCode: KMAdvancedAnnualSubscriptionBlackFiveCodeKey_DMG))
                         } else {
                             return String(format: "CNY ¥%@", getDMGOriginalCNYPrice(productCode: KMAdvancedAnnualSubscriptionBlackFiveCodeKey_DMG))
                         }
                     } else {
-                        if NSLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
+                        if KMLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
                             return String(format: "USD $%@", getDMGOriginalPrice(productCode: KMAdvancedAnnualSubscriptionCodeKey_DMG))
                         } else {
                             return String(format: "CNY ¥%@", getDMGOriginalCNYPrice(productCode: KMAdvancedAnnualSubscriptionCodeKey_DMG))
@@ -936,13 +936,13 @@ class KMProductModel: ObservableObject {
                     }
                 } else {
                     if KMMemberInfo.shared.canTrail && state == .trial {
-                        if NSLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
+                        if KMLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
                             return String(format: "USD $%@", getDMGOriginalPrice(productCode: KMAdvancedAnnualSubscriptionTrailCodeKey_DMG))
                         } else {
                             return String(format: "CNY ¥%@", getDMGOriginalCNYPrice(productCode: KMAdvancedAnnualSubscriptionTrailCodeKey_DMG))
                         }
                     } else {
-                        if NSLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
+                        if KMLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
                             return String(format: "USD $%@", getDMGOriginalPrice(productCode: KMAdvancedAnnualSubscriptionCodeKey_DMG))
                         } else {
                             return String(format: "CNY ¥%@", getDMGOriginalCNYPrice(productCode: KMAdvancedAnnualSubscriptionCodeKey_DMG))
@@ -952,13 +952,13 @@ class KMProductModel: ObservableObject {
             } else if type == .pdfReaderProPermanent_dmg {
                 if state == .dmg_Base {
                     if isBlackFive {
-                        if NSLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
+                        if KMLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
                             return String(format: "USD $%@", getDMGOriginalPrice(productCode: KMAdvancedPermanentBlackFiveCodeKey_DMG))
                         } else {
                             return String(format: "CNY ¥%@", getDMGOriginalCNYPrice(productCode: KMAdvancedPermanentBlackFiveCodeKey_DMG))
                         }
                     } else {
-                        if NSLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
+                        if KMLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
                             return String(format: "USD $%@", getDMGOriginalPrice(productCode: KMAdvancedPermanentCodeKey_DMG))
                         } else {
                             return String(format: "CNY ¥%@", getDMGOriginalCNYPrice(productCode: KMAdvancedPermanentCodeKey_DMG))
@@ -968,13 +968,13 @@ class KMProductModel: ObservableObject {
                     
                 }
             } else if type == .pdfReaderProAIAnnual_dmg {
-                if NSLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
+                if KMLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
                     return String(format: "USD $%@", getDMGOriginalPrice(productCode: KMAISubscriptionYearTrailCodeKey_DMG))
                 } else {
                     return String(format: "CNY ¥%@", getDMGOriginalCNYPrice(productCode: KMAISubscriptionYearTrailCodeKey_DMG))
                 }
             } else if type == .pdfReaderProAIMonthly_dmg {
-                if NSLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
+                if KMLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
                     return String(format: "USD $%@", getDMGOriginalPrice(productCode: KMAISubscriptionMonthCodeKey_DMG))
                 } else {
                     return String(format: "CNY ¥%@", getDMGOriginalCNYPrice(productCode: KMAISubscriptionMonthCodeKey_DMG))
@@ -1425,7 +1425,7 @@ class KMProductModel: ObservableObject {
                 }
             }
         } else {
-            print(NSLocalizedString("Order does not exist.", tableName: "MemberCenterLocalizable", comment: ""))
+            print(KMLocalizedString("Order does not exist.", tableName: "MemberCenterLocalizable", comment: ""))
         }
 #endif
 #else
@@ -1485,7 +1485,7 @@ class KMProductModel: ObservableObject {
                 }
             }
         } else {
-            print(NSLocalizedString("Order does not exist.", tableName: "MemberCenterLocalizable", comment: ""))
+            print(KMLocalizedString("Order does not exist.", tableName: "MemberCenterLocalizable", comment: ""))
         }
 #endif
     }
@@ -1602,7 +1602,7 @@ class KMProductModel: ObservableObject {
     }
     
     private func _isUSD() -> Bool {
-        return NSLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD"
+        return KMLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD"
     }
 
     // MARK: Action Method
@@ -1656,24 +1656,24 @@ class KMProductModel: ObservableObject {
             // 试用   全平台标准版年订阅   全平台高级版6/12个月订阅  Mac&Windows双平台高级版永久 MAC单平台高级版永久 
             //MAC单平台标准版永久
             if KMMemberInfo.shared.vip_levels == "1" && KMMemberInfo.shared.vip_status != 2 {
-                var aiYear = NSLocalizedString("Free for the 1st year, then auto-renew at $125.99/year", tableName: "MemberCenterLocalizable", comment: "")
+                var aiYear = KMLocalizedString("Free for the 1st year, then auto-renew at $125.99/year", tableName: "MemberCenterLocalizable", comment: "")
 #if VERSION_FREE
 #if VERSION_DMG
     // DMG
-                if NSLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
+                if KMLocalizedString("USD", tableName: "MemberCenterLocalizable", comment: "") == "USD" {
                     let priceStr = "USD $\(getDMGPrice(productCode: KMAISubscriptionYearTrailCodeKey_DMG))"
-                    aiYear = String(format: NSLocalizedString("Free for the 1st year, then auto-renew at %@/year", tableName: "MemberCenterLocalizable", comment: ""), priceStr)
+                    aiYear = String(format: KMLocalizedString("Free for the 1st year, then auto-renew at %@/year", tableName: "MemberCenterLocalizable", comment: ""), priceStr)
                 } else {
                     let priceStr = "CNY ¥\(getDMGCNYPrice(productCode: KMAISubscriptionYearTrailCodeKey_DMG))"
-                    aiYear = String(format: NSLocalizedString("Free for the 1st year, then auto-renew at %@/year", tableName: "MemberCenterLocalizable", comment: ""), priceStr)
+                    aiYear = String(format: KMLocalizedString("Free for the 1st year, then auto-renew at %@/year", tableName: "MemberCenterLocalizable", comment: ""), priceStr)
                 }
 #else
     // AppStore 免费版本
-                aiYear = String(format: NSLocalizedString("Free for the 1st year, then auto-renew at %@/year", tableName: "MemberCenterLocalizable", comment: ""), IAPProductsManager.default().aiAllAccessPack12month_lite.price())
+                aiYear = String(format: KMLocalizedString("Free for the 1st year, then auto-renew at %@/year", tableName: "MemberCenterLocalizable", comment: ""), IAPProductsManager.default().aiAllAccessPack12month_lite.price())
 #endif
 #else
     // AppStore 付费版
-                aiYear = String(format: NSLocalizedString("Free for the 1st year, then auto-renew at %@/year", tableName: "MemberCenterLocalizable", comment: ""), IAPProductsManager.default().aiAllAccessPack12month_pro.price())
+                aiYear = String(format: KMLocalizedString("Free for the 1st year, then auto-renew at %@/year", tableName: "MemberCenterLocalizable", comment: ""), IAPProductsManager.default().aiAllAccessPack12month_pro.price())
 #endif
                 return [
                     "Membership Benefits",

+ 35 - 35
PDF Office/PDF Master/Class/MemberCenter/ViewModel/KMSignUpViewModel.swift

@@ -73,7 +73,7 @@ class KMSignUpViewModel: ObservableObject {
     /**
      序列码按钮 文案
      */
-    @Published var sendContent: String = NSLocalizedString("Send", tableName: "MemberCenterLocalizable", comment: "")
+    @Published var sendContent: String = KMLocalizedString("Send", tableName: "MemberCenterLocalizable", comment: "")
     /**
      当前视图类型
      */
@@ -120,7 +120,7 @@ class KMSignUpViewModel: ObservableObject {
                 } else {
                     // 倒计时结束,停止定时器
                     self.timer?.cancel()
-                    self.sendContent = NSLocalizedString("Resend", tableName: "MemberCenterLocalizable", comment: "")
+                    self.sendContent = KMLocalizedString("Resend", tableName: "MemberCenterLocalizable", comment: "")
                     self.sendBoxSelect = false
                 }
             }
@@ -180,9 +180,9 @@ class KMSignUpViewModel: ObservableObject {
         if KMMemberCenterManager.manager.isConnectionAvailable() == false {
             let alert = NSAlert()
             alert.alertStyle = .critical
-            alert.messageText = NSLocalizedString("Error Information", comment: "")
-            alert.informativeText = NSLocalizedString("Please make sure your internet connection is available.", comment: "")
-            alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
+            alert.messageText = KMLocalizedString("Error Information", comment: "")
+            alert.informativeText = KMLocalizedString("Please make sure your internet connection is available.", comment: "")
+            alert.addButton(withTitle: KMLocalizedString("OK", comment: ""))
             alert.runModal()
             
             callback?(nil)
@@ -210,23 +210,23 @@ class KMSignUpViewModel: ObservableObject {
         if KMMemberCenterManager.manager.isConnectionAvailable() == false {
             let alert = NSAlert()
             alert.alertStyle = .critical
-            alert.messageText = NSLocalizedString("Error Information", comment: "")
-            alert.informativeText = NSLocalizedString("Please make sure your internet connection is available.", comment: "")
-            alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
+            alert.messageText = KMLocalizedString("Error Information", comment: "")
+            alert.informativeText = KMLocalizedString("Please make sure your internet connection is available.", comment: "")
+            alert.addButton(withTitle: KMLocalizedString("OK", comment: ""))
             alert.runModal()
             
             callback?(nil)
             return
         }
         if email.isEmpty {
-            emailErrorMessage = NSLocalizedString("Please enter email address", tableName: "MemberCenterLocalizable", comment: "")
+            emailErrorMessage = KMLocalizedString("Please enter email address", tableName: "MemberCenterLocalizable", comment: "")
             
             callback?(nil)
             return
         }
         
         if email.count <= 0 || email.count > 100 || !isValidEmail() {
-            emailErrorMessage = NSLocalizedString("Email format error. Please enter the correct email.", tableName: "MemberCenterLocalizable", comment: "")
+            emailErrorMessage = KMLocalizedString("Email format error. Please enter the correct email.", tableName: "MemberCenterLocalizable", comment: "")
             
             callback?(nil)
             return
@@ -235,14 +235,14 @@ class KMSignUpViewModel: ObservableObject {
         var code: String = ""
         if signUpState == .verificationCode {
             if verificationCode.isEmpty {
-                passwordErrorMessage = NSLocalizedString("Please enter code", tableName: "MemberCenterLocalizable", comment: "")
+                passwordErrorMessage = KMLocalizedString("Please enter code", tableName: "MemberCenterLocalizable", comment: "")
                 
                 callback?(nil)
                 return
             }
             
             if verificationCode.count <= 0 || verificationCode.count > 6 || !isValidVerificationCode() {
-                passwordErrorMessage = NSLocalizedString("Verification code error.", tableName: "MemberCenterLocalizable", comment: "")
+                passwordErrorMessage = KMLocalizedString("Verification code error.", tableName: "MemberCenterLocalizable", comment: "")
                 
                 callback?(nil)
                 return
@@ -250,7 +250,7 @@ class KMSignUpViewModel: ObservableObject {
             code = verificationCode
         } else if signUpState == .password {
             if password.count <= 0 || password.count > 30 {
-                passwordErrorMessage = NSLocalizedString("Password cannot exceed 30 characters.", tableName: "MemberCenterLocalizable", comment: "")
+                passwordErrorMessage = KMLocalizedString("Password cannot exceed 30 characters.", tableName: "MemberCenterLocalizable", comment: "")
                 
                 callback?(nil)
                 return
@@ -289,7 +289,7 @@ class KMSignUpViewModel: ObservableObject {
                 self.refreshUserInfo(callback: callback)
                 
                 self.timer?.cancel()
-                self.sendContent = NSLocalizedString("Resend", tableName: "MemberCenterLocalizable", comment: "")
+                self.sendContent = KMLocalizedString("Resend", tableName: "MemberCenterLocalizable", comment: "")
                 
                 KMMemberInfo.shared.avatarImage = nil
             } else {
@@ -298,9 +298,9 @@ class KMSignUpViewModel: ObservableObject {
                         DispatchQueue.main.async {
                             let alert = NSAlert()
                             alert.alertStyle = .critical
-                            alert.messageText = NSLocalizedString("Error Information", comment: "")
-                            alert.informativeText = NSLocalizedString("Please make sure your internet connection is available.", comment: "")
-                            alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
+                            alert.messageText = KMLocalizedString("Error Information", comment: "")
+                            alert.informativeText = KMLocalizedString("Please make sure your internet connection is available.", comment: "")
+                            alert.addButton(withTitle: KMLocalizedString("OK", comment: ""))
                             alert.runModal()
                             
                             callback?(false)
@@ -343,14 +343,14 @@ class KMSignUpViewModel: ObservableObject {
         if KMMemberCenterManager.manager.isConnectionAvailable() == false {
             let alert = NSAlert()
             alert.alertStyle = .critical
-            alert.messageText = NSLocalizedString("Error Information", comment: "")
-            alert.informativeText = NSLocalizedString("Please make sure your internet connection is available.", comment: "")
-            alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
+            alert.messageText = KMLocalizedString("Error Information", comment: "")
+            alert.informativeText = KMLocalizedString("Please make sure your internet connection is available.", comment: "")
+            alert.addButton(withTitle: KMLocalizedString("OK", comment: ""))
             alert.runModal()
             return
         }
         if email.count <= 0 || email.count > 100 || !isValidEmail() {
-            emailErrorMessage = NSLocalizedString("Please enter the correct email format", tableName: "MemberCenterLocalizable", comment: "")
+            emailErrorMessage = KMLocalizedString("Please enter the correct email format", tableName: "MemberCenterLocalizable", comment: "")
             return
         }
         if emailErrorMessage.count > 0 {
@@ -377,14 +377,14 @@ class KMSignUpViewModel: ObservableObject {
         if KMMemberCenterManager.manager.isConnectionAvailable() == false {
             let alert = NSAlert()
             alert.alertStyle = .critical
-            alert.messageText = NSLocalizedString("Error Information", comment: "")
-            alert.informativeText = NSLocalizedString("Please make sure your internet connection is available.", comment: "")
-            alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
+            alert.messageText = KMLocalizedString("Error Information", comment: "")
+            alert.informativeText = KMLocalizedString("Please make sure your internet connection is available.", comment: "")
+            alert.addButton(withTitle: KMLocalizedString("OK", comment: ""))
             alert.runModal()
             return
         }
         if verificationCode.count <= 0 || verificationCode.count > 6 || !isValidVerificationCode() {
-            passwordErrorMessage = NSLocalizedString("Verification code error.", tableName: "MemberCenterLocalizable", comment: "")
+            passwordErrorMessage = KMLocalizedString("Verification code error.", tableName: "MemberCenterLocalizable", comment: "")
             complete(false, "")
             return
         }
@@ -396,7 +396,7 @@ class KMSignUpViewModel: ObservableObject {
             if success {
                 complete(true, "")
             } else {
-                self.passwordErrorMessage = NSLocalizedString("Verification code error.", tableName: "MemberCenterLocalizable", comment: "")
+                self.passwordErrorMessage = KMLocalizedString("Verification code error.", tableName: "MemberCenterLocalizable", comment: "")
                 complete(false, "")
             }
         }
@@ -410,9 +410,9 @@ class KMSignUpViewModel: ObservableObject {
         if KMMemberCenterManager.manager.isConnectionAvailable() == false {
             let alert = NSAlert()
             alert.alertStyle = .critical
-            alert.messageText = NSLocalizedString("Error Information", comment: "")
-            alert.informativeText = NSLocalizedString("Please make sure your internet connection is available.", comment: "")
-            alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
+            alert.messageText = KMLocalizedString("Error Information", comment: "")
+            alert.informativeText = KMLocalizedString("Please make sure your internet connection is available.", comment: "")
+            alert.addButton(withTitle: KMLocalizedString("OK", comment: ""))
             alert.runModal()
             
             callback?(nil)
@@ -420,7 +420,7 @@ class KMSignUpViewModel: ObservableObject {
         }
         
         if !isValidEmail() {
-            emailErrorMessage = NSLocalizedString("Please enter the correct email format", tableName: "MemberCenterLocalizable", comment: "")
+            emailErrorMessage = KMLocalizedString("Please enter the correct email format", tableName: "MemberCenterLocalizable", comment: "")
             
             callback?(nil)
             return
@@ -435,7 +435,7 @@ class KMSignUpViewModel: ObservableObject {
             if success {
                 print("验证邮箱成功")
             } else {
-//                self.emailErrorMessage = NSLocalizedString("Please enter the correct email format", tableName: "MemberCenterLocalizable", comment: "")
+//                self.emailErrorMessage = KMLocalizedString("Please enter the correct email format", tableName: "MemberCenterLocalizable", comment: "")
                 KMMemberCenterManager.showAlert(code: .init(rawValue: wrapper?.code ?? 0), message: wrapper?.msg, callback: nil)
             }
         }
@@ -449,15 +449,15 @@ class KMSignUpViewModel: ObservableObject {
         if KMMemberCenterManager.manager.isConnectionAvailable() == false {
             let alert = NSAlert()
             alert.alertStyle = .critical
-            alert.messageText = NSLocalizedString("Error Information", comment: "")
-            alert.informativeText = NSLocalizedString("Please make sure your internet connection is available.", comment: "")
-            alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
+            alert.messageText = KMLocalizedString("Error Information", comment: "")
+            alert.informativeText = KMLocalizedString("Please make sure your internet connection is available.", comment: "")
+            alert.addButton(withTitle: KMLocalizedString("OK", comment: ""))
             alert.runModal()
             return
         }
         
         if password.count <= 0 || verificationCode.count > 30 {
-            passwordErrorMessage = NSLocalizedString("Password error.", tableName: "MemberCenterLocalizable", comment: "")
+            passwordErrorMessage = KMLocalizedString("Password error.", tableName: "MemberCenterLocalizable", comment: "")
             return
         }
         KMMemberCenterManager.manager.resetPassword(email: email, verifyCode: verificationCode, password: password) { [weak self] success, wrapper  in

+ 12 - 12
PDF Office/PDF Master/Class/MemberCenter/ViewModel/KMUserInfoVCModel.swift

@@ -26,9 +26,9 @@ class KMUserInfoVCModel: ObservableObject {
         if KMMemberCenterManager.manager.isConnectionAvailable() == false && networkAlert {
             let alert = NSAlert()
             alert.alertStyle = .critical
-            alert.messageText = NSLocalizedString("Error Information", comment: "")
-            alert.informativeText = NSLocalizedString("Please make sure your internet connection is available.", comment: "")
-            alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
+            alert.messageText = KMLocalizedString("Error Information", comment: "")
+            alert.informativeText = KMLocalizedString("Please make sure your internet connection is available.", comment: "")
+            alert.addButton(withTitle: KMLocalizedString("OK", comment: ""))
             alert.runModal()
             return
         }
@@ -169,9 +169,9 @@ class KMUserInfoVCModel: ObservableObject {
         if KMMemberCenterManager.manager.isConnectionAvailable() == false {
             let alert = NSAlert()
             alert.alertStyle = .critical
-            alert.messageText = NSLocalizedString("Error Information", comment: "")
-            alert.informativeText = NSLocalizedString("Please make sure your internet connection is available.", comment: "")
-            alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
+            alert.messageText = KMLocalizedString("Error Information", comment: "")
+            alert.informativeText = KMLocalizedString("Please make sure your internet connection is available.", comment: "")
+            alert.addButton(withTitle: KMLocalizedString("OK", comment: ""))
             alert.runModal()
             return
         }
@@ -230,9 +230,9 @@ class KMUserInfoVCModel: ObservableObject {
         if KMMemberCenterManager.manager.isConnectionAvailable() == false {
             let alert = NSAlert()
             alert.alertStyle = .critical
-            alert.messageText = NSLocalizedString("Error Information", comment: "")
-            alert.informativeText = NSLocalizedString("Please make sure your internet connection is available.", comment: "")
-            alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
+            alert.messageText = KMLocalizedString("Error Information", comment: "")
+            alert.informativeText = KMLocalizedString("Please make sure your internet connection is available.", comment: "")
+            alert.addButton(withTitle: KMLocalizedString("OK", comment: ""))
             alert.runModal()
             return
         }
@@ -277,9 +277,9 @@ class KMUserInfoVCModel: ObservableObject {
         if KMMemberCenterManager.manager.isConnectionAvailable() == false {
             let alert = NSAlert()
             alert.alertStyle = .critical
-            alert.messageText = NSLocalizedString("Error Information", comment: "")
-            alert.informativeText = NSLocalizedString("Please make sure your internet connection is available.", comment: "")
-            alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
+            alert.messageText = KMLocalizedString("Error Information", comment: "")
+            alert.informativeText = KMLocalizedString("Please make sure your internet connection is available.", comment: "")
+            alert.addButton(withTitle: KMLocalizedString("OK", comment: ""))
             alert.runModal()
             
             callback?(false,nil)

+ 5 - 5
PDF Office/PDF Master/Class/MemberCenter/WindowsController/DMG/KMOpenDMGPopupBootWC.swift

@@ -43,9 +43,9 @@ class KMOpenDMGPopupBootWC: NSWindowController {
     // MARK: Private Method
     
     private func languageLocalized() -> Void {
-        titleLabel.stringValue = NSLocalizedString("Free to Get 7-Day VIP Now", tableName: "MemberCenterLocalizable", comment: "")
-        subTitleLabel.stringValue = String(format: " · %@", NSLocalizedString("Use all functions without restrictions", tableName: "MemberCenterLocalizable", comment: ""))
-        freeLabel.stringValue = NSLocalizedString("Get 7-Day VIP Free", tableName: "MemberCenterLocalizable", comment: "")
+        titleLabel.stringValue = KMLocalizedString("Free to Get 7-Day VIP Now", tableName: "MemberCenterLocalizable", comment: "")
+        subTitleLabel.stringValue = String(format: " · %@", KMLocalizedString("Use all functions without restrictions", tableName: "MemberCenterLocalizable", comment: ""))
+        freeLabel.stringValue = KMLocalizedString("Get 7-Day VIP Free", tableName: "MemberCenterLocalizable", comment: "")
     }
     
     private func initializeUI() -> Void {
@@ -74,8 +74,8 @@ class KMOpenDMGPopupBootWC: NSWindowController {
             signInTextView.km_add_trailing_constraint()
             signInTextView.km_add_height_constraint(constant: 30)
         }
-        let tipsString = NSLocalizedString("Already have an account? %@", tableName: "MemberCenterLocalizable", comment: "")
-        let specialOffer = NSLocalizedString("Sign in", tableName: "MemberCenterLocalizable", comment: "")
+        let tipsString = KMLocalizedString("Already have an account? %@", tableName: "MemberCenterLocalizable", comment: "")
+        let specialOffer = KMLocalizedString("Sign in", tableName: "MemberCenterLocalizable", comment: "")
         let fullString = String(format: tipsString, specialOffer)
         let paragraphStyle = NSMutableParagraphStyle()
         paragraphStyle.alignment = .center

+ 6 - 6
PDF Office/PDF Master/Class/MemberCenter/WindowsController/KMCloseAccountWC.swift

@@ -52,15 +52,15 @@ class KMCloseAccountWC: NSWindowController {
     // MARK: Private Method
     
     private func languageLocalized() -> Void {
-        self.window?.title = NSLocalizedString("Remove Account", tableName: "MemberCenterLocalizable", comment: "")
+        self.window?.title = KMLocalizedString("Remove Account", tableName: "MemberCenterLocalizable", comment: "")
         
-        titleLabel.stringValue = NSLocalizedString("Delete your account and related authorizations", tableName: "MemberCenterLocalizable", comment: "")
-        subTitleLabel.stringValue = NSLocalizedString("Removing your account will permanently delete all account data, including the membership benefits of PDF Reader Pro across all platforms you purchased under this account. Are you sure you want to continue?", tableName: "MemberCenterLocalizable", comment: "")
-        productLabel.stringValue = NSLocalizedString("Your products and services:", tableName: "MemberCenterLocalizable", comment: "")
+        titleLabel.stringValue = KMLocalizedString("Delete your account and related authorizations", tableName: "MemberCenterLocalizable", comment: "")
+        subTitleLabel.stringValue = KMLocalizedString("Removing your account will permanently delete all account data, including the membership benefits of PDF Reader Pro across all platforms you purchased under this account. Are you sure you want to continue?", tableName: "MemberCenterLocalizable", comment: "")
+        productLabel.stringValue = KMLocalizedString("Your products and services:", tableName: "MemberCenterLocalizable", comment: "")
         proLabel.stringValue = KMMemberInfo.shared.vip_productName
         aiLabel.stringValue = KMMemberInfo.shared.ai_productName
-        cancelButton.title = NSLocalizedString("Cancel", tableName: "MemberCenterLocalizable", comment: "")
-        yesButton.title = NSLocalizedString("Remove Account", tableName: "MemberCenterLocalizable", comment: "")
+        cancelButton.title = KMLocalizedString("Cancel", tableName: "MemberCenterLocalizable", comment: "")
+        yesButton.title = KMLocalizedString("Remove Account", tableName: "MemberCenterLocalizable", comment: "")
     }
     
     private func initializeUI() -> Void {

+ 4 - 4
PDF Office/PDF Master/Class/MemberCenter/WindowsController/KMCloseApplyWC.swift

@@ -42,12 +42,12 @@ class KMCloseApplyWC: NSWindowController {
     // MARK: Private Method
     
     private func languageLocalized() -> Void {
-        self.window?.title = NSLocalizedString("Remove Account", tableName: "MemberCenterLocalizable", comment: "")
+        self.window?.title = KMLocalizedString("Remove Account", tableName: "MemberCenterLocalizable", comment: "")
 
-        titleLabel.stringValue = NSLocalizedString("Account cancellation application has been submitted", tableName: "MemberCenterLocalizable", comment: "")
-        subTitleLabel.stringValue = String(format: NSLocalizedString("Your account will be automatically deleted in %@ days. Welcome to use PDF Reader Pro again!\nYou can log in with this account and choose to Undo Remove Account within %@ days, and continue to use. The benefits and product services you enjoy will be retained.", tableName: "MemberCenterLocalizable", comment: ""), logOffTime, logOffTime)
+        titleLabel.stringValue = KMLocalizedString("Account cancellation application has been submitted", tableName: "MemberCenterLocalizable", comment: "")
+        subTitleLabel.stringValue = String(format: KMLocalizedString("Your account will be automatically deleted in %@ days. Welcome to use PDF Reader Pro again!\nYou can log in with this account and choose to Undo Remove Account within %@ days, and continue to use. The benefits and product services you enjoy will be retained.", tableName: "MemberCenterLocalizable", comment: ""), logOffTime, logOffTime)
         
-        yesButton.title = NSLocalizedString("Got it", tableName: "MemberCenterLocalizable", comment: "")
+        yesButton.title = KMLocalizedString("Got it", tableName: "MemberCenterLocalizable", comment: "")
     }
     
     private func initializeUI() -> Void {

+ 8 - 8
PDF Office/PDF Master/Class/MemberCenter/WindowsController/KMCloseVerificationWC.swift

@@ -58,14 +58,14 @@ class KMCloseVerificationWC: NSWindowController {
     // MARK: Private Method
     
     private func languageLocalized() -> Void {
-        self.window?.title = NSLocalizedString("Remove Account", tableName: "MemberCenterLocalizable", comment: "")
+        self.window?.title = KMLocalizedString("Remove Account", tableName: "MemberCenterLocalizable", comment: "")
 
-        titleLabel.stringValue = NSLocalizedString("Verify your identity", tableName: "MemberCenterLocalizable", comment: "")
-        subTitleLabel1.stringValue = NSLocalizedString("We have sent you a code via email to", tableName: "MemberCenterLocalizable", comment: "")
+        titleLabel.stringValue = KMLocalizedString("Verify your identity", tableName: "MemberCenterLocalizable", comment: "")
+        subTitleLabel1.stringValue = KMLocalizedString("We have sent you a code via email to", tableName: "MemberCenterLocalizable", comment: "")
         subTitleLabel2.stringValue = KMMemberInfo.shared.userEmail
-        nextButton.title = NSLocalizedString("Next", tableName: "MemberCenterLocalizable", comment: "")
-        verifficationErrorLabel.stringValue = String(format: "%@", NSLocalizedString("Verification code error.", tableName: "MemberCenterLocalizable", comment: ""))
-        verifficationTextField.placeholderString = NSLocalizedString("Please enter code", tableName: "MemberCenterLocalizable", comment: "")
+        nextButton.title = KMLocalizedString("Next", tableName: "MemberCenterLocalizable", comment: "")
+        verifficationErrorLabel.stringValue = String(format: "%@", KMLocalizedString("Verification code error.", tableName: "MemberCenterLocalizable", comment: ""))
+        verifficationTextField.placeholderString = KMLocalizedString("Please enter code", tableName: "MemberCenterLocalizable", comment: "")
     }
     
     private func initializeUI() -> Void {
@@ -139,10 +139,10 @@ class KMCloseVerificationWC: NSWindowController {
     
     private func sendBoxRefresh() -> Void {
         sendLabel.stringValue = signUpModel.sendContent
-        if signUpModel.sendContent == NSLocalizedString("Send", tableName: "MemberCenterLocalizable", comment: "") {
+        if signUpModel.sendContent == KMLocalizedString("Send", tableName: "MemberCenterLocalizable", comment: "") {
             sendBox.fillColor = NSColor(named: "273C62") ?? NSColor.blue
         } else {
-            if signUpModel.sendContent == NSLocalizedString("Resend", tableName: "MemberCenterLocalizable", comment: "") {
+            if signUpModel.sendContent == KMLocalizedString("Resend", tableName: "MemberCenterLocalizable", comment: "") {
                 sendBox.fillColor = NSColor(named: "273C62") ?? NSColor.blue
             } else {
                 sendBox.fillColor = NSColor(named: "DADBDE") ?? NSColor.gray

+ 8 - 8
PDF Office/PDF Master/Class/MemberCenter/WindowsController/KMFreeGetAIWC.swift

@@ -59,15 +59,15 @@ class KMFreeGetAIWC: NSWindowController {
 #else
         productPrice = IAPProductsManager.default().aiAllAccessPack12month_pro.price()
 #endif
-        let firmString = NSLocalizedString("Free for the first year, then automatically renew at %@ annually. You can cancel your subscription anytime.", tableName: "MemberCenterLocalizable", comment: "")
+        let firmString = KMLocalizedString("Free for the first year, then automatically renew at %@ annually. You can cancel your subscription anytime.", tableName: "MemberCenterLocalizable", comment: "")
         let fireFullString = String(format: firmString, productPrice)
 
-        titleLabel1.stringValue = NSLocalizedString("1-Year AI Tools Giveaway", tableName: "MemberCenterLocalizable", comment: "")
+        titleLabel1.stringValue = KMLocalizedString("1-Year AI Tools Giveaway", tableName: "MemberCenterLocalizable", comment: "")
         subTitle1.stringValue = String(format: " · %@", fireFullString)
-        subTitle2.stringValue = String(format: " · %@", NSLocalizedString("Free for the first year, then auto-renewal at $125.99 per year. You can cancel your subscription anytime.", tableName: "MemberCenterLocalizable", comment: ""))
-        subTitle3.stringValue = String(format: " · %@", NSLocalizedString("Pick up free AI Tools before 23:59:00, or it will be invalid", tableName: "MemberCenterLocalizable", comment: ""))
-        aitoolsLabel.stringValue = NSLocalizedString("Get 1-Year AI Tools with $0", tableName: "MemberCenterLocalizable", comment: "")
-        laterButton.title = NSLocalizedString("Later", tableName: "MemberCenterLocalizable", comment: "")
+        subTitle2.stringValue = String(format: " · %@", KMLocalizedString("Free for the first year, then auto-renewal at $125.99 per year. You can cancel your subscription anytime.", tableName: "MemberCenterLocalizable", comment: ""))
+        subTitle3.stringValue = String(format: " · %@", KMLocalizedString("Pick up free AI Tools before 23:59:00, or it will be invalid", tableName: "MemberCenterLocalizable", comment: ""))
+        aitoolsLabel.stringValue = KMLocalizedString("Get 1-Year AI Tools with $0", tableName: "MemberCenterLocalizable", comment: "")
+        laterButton.title = KMLocalizedString("Later", tableName: "MemberCenterLocalizable", comment: "")
         
         privacyPolicyLabel.isEditable = false
         privacyPolicyLabel.isSelectable = true
@@ -91,8 +91,8 @@ class KMFreeGetAIWC: NSWindowController {
             object: nil
         )
 
-        let privacyPolicy = NSLocalizedString("Privacy Policy", tableName: "MemberCenterLocalizable", comment: "")
-        let termsService = NSLocalizedString("Service Agreement", tableName: "MemberCenterLocalizable", comment: "")
+        let privacyPolicy = KMLocalizedString("Privacy Policy", tableName: "MemberCenterLocalizable", comment: "")
+        let termsService = KMLocalizedString("Service Agreement", tableName: "MemberCenterLocalizable", comment: "")
         let attributedString1 = NSMutableAttributedString(string: privacyPolicy)
         let attributedString2 = NSMutableAttributedString(string: termsService)
         let privacyPolicyRange = (privacyPolicy as NSString).range(of: privacyPolicy)

+ 1 - 1
PDF Office/PDF Master/Class/MemberCenter/WindowsController/KMLoginWindowsController.swift

@@ -51,7 +51,7 @@ class KMLoginWindowsController: NSWindowController {
 //        window?.styleMask.insert([.titled, .closable, .miniaturizable, .fullSizeContentView])
 //        window?.titleVisibility = .visible
         
-        leftsubLabel.stringValue = NSLocalizedString("Welcome to PDF Reader Pro", tableName: "MemberCenterLocalizable", comment: "")
+        leftsubLabel.stringValue = KMLocalizedString("Welcome to PDF Reader Pro", tableName: "MemberCenterLocalizable", comment: "")
         
         initializeUI()
         

+ 14 - 14
PDF Office/PDF Master/Class/MemberCenter/WindowsController/KMMemberCenterWindowController.swift

@@ -53,17 +53,17 @@ class KMMemberCenterWindowController: NSWindowController {
     override func windowDidLoad() {
         super.windowDidLoad()
         
-        self.window?.title = NSLocalizedString("Device Management", tableName: "MemberCenterLocalizable", comment: "")
-        productLabel.stringValue = NSLocalizedString("Device name", tableName: "MemberCenterLocalizable", comment: "")
-        typeLabel.stringValue = NSLocalizedString("Action", tableName: "MemberCenterLocalizable", comment: "")
+        self.window?.title = KMLocalizedString("Device Management", tableName: "MemberCenterLocalizable", comment: "")
+        productLabel.stringValue = KMLocalizedString("Device name", tableName: "MemberCenterLocalizable", comment: "")
+        typeLabel.stringValue = KMLocalizedString("Action", tableName: "MemberCenterLocalizable", comment: "")
 
-        device1Button.title = NSLocalizedString("Unbind", tableName: "MemberCenterLocalizable", comment: "")
-        device2Button.title = NSLocalizedString("Unbind", tableName: "MemberCenterLocalizable", comment: "")
-        device3Button.title = NSLocalizedString("Unbind", tableName: "MemberCenterLocalizable", comment: "")
-        device4Button.title = NSLocalizedString("Unbind", tableName: "MemberCenterLocalizable", comment: "")
+        device1Button.title = KMLocalizedString("Unbind", tableName: "MemberCenterLocalizable", comment: "")
+        device2Button.title = KMLocalizedString("Unbind", tableName: "MemberCenterLocalizable", comment: "")
+        device3Button.title = KMLocalizedString("Unbind", tableName: "MemberCenterLocalizable", comment: "")
+        device4Button.title = KMLocalizedString("Unbind", tableName: "MemberCenterLocalizable", comment: "")
         
-        cancelButton.title = NSLocalizedString("Do not log in to the current device", tableName: "MemberCenterLocalizable", comment: "")
-        loginButton.title = NSLocalizedString("Log in to the current device", tableName: "MemberCenterLocalizable", comment: "")
+        cancelButton.title = KMLocalizedString("Do not log in to the current device", tableName: "MemberCenterLocalizable", comment: "")
+        loginButton.title = KMLocalizedString("Log in to the current device", tableName: "MemberCenterLocalizable", comment: "")
 
         productView.wantsLayer = true
         device1View.wantsLayer = true
@@ -163,9 +163,9 @@ class KMMemberCenterWindowController: NSWindowController {
         }
         let maxDeviceNum = memberCenterdeviceResult.maxDeviceNum ?? 1
         if (maxDeviceNum <= 1) {
-            tipLabel.stringValue = String(format: NSLocalizedString("Can keep %d device online at the same time", tableName: "MemberCenterLocalizable", comment: ""), maxDeviceNum)
+            tipLabel.stringValue = String(format: KMLocalizedString("Can keep %d device online at the same time", tableName: "MemberCenterLocalizable", comment: ""), maxDeviceNum)
         } else {
-            tipLabel.stringValue = String(format: NSLocalizedString("Can keep %d devices online at the same time", tableName: "MemberCenterLocalizable", comment: ""), maxDeviceNum)
+            tipLabel.stringValue = String(format: KMLocalizedString("Can keep %d devices online at the same time", tableName: "MemberCenterLocalizable", comment: ""), maxDeviceNum)
         }
         
         if deviceList_Result.count == maxDeviceNum {
@@ -188,9 +188,9 @@ class KMMemberCenterWindowController: NSWindowController {
             if KMMemberCenterManager.manager.isConnectionAvailable() == false {
                 let alert = NSAlert()
                 alert.alertStyle = .critical
-                alert.messageText = NSLocalizedString("Error Information", comment: "")
-                alert.informativeText = NSLocalizedString("Please make sure your internet connection is available.", comment: "")
-                alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
+                alert.messageText = KMLocalizedString("Error Information", comment: "")
+                alert.informativeText = KMLocalizedString("Please make sure your internet connection is available.", comment: "")
+                alert.addButton(withTitle: KMLocalizedString("OK", comment: ""))
                 alert.runModal()
                 return
             }

+ 21 - 21
PDF Office/PDF Master/Class/MemberCenter/WindowsController/KMMemberPromptWC.swift

@@ -61,37 +61,37 @@ class KMMemberPromptWC: NSWindowController {
         var cance = ""
         var yes = ""
         if tipType == .logout {
-            title = NSLocalizedString("Sign out", tableName: "MemberCenterLocalizable", comment: "")
-            subTitle = NSLocalizedString("Are you sure to sign out of your account?", tableName: "MemberCenterLocalizable", comment: "")
-            cance = NSLocalizedString("Cancel", tableName: "MemberCenterLocalizable", comment: "")
-            yes = NSLocalizedString("OK", tableName: "MemberCenterLocalizable", comment: "")
+            title = KMLocalizedString("Sign out", tableName: "MemberCenterLocalizable", comment: "")
+            subTitle = KMLocalizedString("Are you sure to sign out of your account?", tableName: "MemberCenterLocalizable", comment: "")
+            cance = KMLocalizedString("Cancel", tableName: "MemberCenterLocalizable", comment: "")
+            yes = KMLocalizedString("OK", tableName: "MemberCenterLocalizable", comment: "")
         } else if tipType == .unsubscribe {
-            title = NSLocalizedString("Hint", tableName: "MemberCenterLocalizable", comment: "")
-            subTitle = NSLocalizedString("You are currently in a membership subscription. To prevent further deductions in the next cycle, please cancel your subscription on the payment platform before removing your account.", tableName: "MemberCenterLocalizable", comment: "")
-            yes = NSLocalizedString("Got it", tableName: "MemberCenterLocalizable", comment: "")
+            title = KMLocalizedString("Hint", tableName: "MemberCenterLocalizable", comment: "")
+            subTitle = KMLocalizedString("You are currently in a membership subscription. To prevent further deductions in the next cycle, please cancel your subscription on the payment platform before removing your account.", tableName: "MemberCenterLocalizable", comment: "")
+            yes = KMLocalizedString("Got it", tableName: "MemberCenterLocalizable", comment: "")
         } else if tipType == .signout {
-            title = NSLocalizedString("Warning", tableName: "MemberCenterLocalizable", comment: "")
-            subTitle = NSLocalizedString("Removing your account will permanently delete all account data, including the membership benefits of PDF Reader Pro across all platforms you purchased under this account. Are you sure you want to continue?", tableName: "MemberCenterLocalizable", comment: "")
-            cance = NSLocalizedString("Cancel", tableName: "MemberCenterLocalizable", comment: "")
-            yes = NSLocalizedString("Continue", tableName: "MemberCenterLocalizable", comment: "")
+            title = KMLocalizedString("Warning", tableName: "MemberCenterLocalizable", comment: "")
+            subTitle = KMLocalizedString("Removing your account will permanently delete all account data, including the membership benefits of PDF Reader Pro across all platforms you purchased under this account. Are you sure you want to continue?", tableName: "MemberCenterLocalizable", comment: "")
+            cance = KMLocalizedString("Cancel", tableName: "MemberCenterLocalizable", comment: "")
+            yes = KMLocalizedString("Continue", tableName: "MemberCenterLocalizable", comment: "")
         } else if tipType == .cancelSignout {
-            title = NSLocalizedString("Undo Remove Account", tableName: "MemberCenterLocalizable", comment: "")
-            subTitle = NSLocalizedString("Restore your account successfully! Enjoy PDF Reader Pro now.", tableName: "MemberCenterLocalizable", comment: "")
-            yes = NSLocalizedString("Got it", tableName: "MemberCenterLocalizable", comment: "")
+            title = KMLocalizedString("Undo Remove Account", tableName: "MemberCenterLocalizable", comment: "")
+            subTitle = KMLocalizedString("Restore your account successfully! Enjoy PDF Reader Pro now.", tableName: "MemberCenterLocalizable", comment: "")
+            yes = KMLocalizedString("Got it", tableName: "MemberCenterLocalizable", comment: "")
         } else if tipType == .signouting {
-            title = NSLocalizedString("Hint", tableName: "MemberCenterLocalizable", comment: "")
-            subTitle = NSLocalizedString("You have already submitted an account removal request. Please Undo Remove Account before making a purchase.", tableName: "MemberCenterLocalizable", comment: "")
-            yes = NSLocalizedString("Undo Remove Account", tableName: "MemberCenterLocalizable", comment: "")
+            title = KMLocalizedString("Hint", tableName: "MemberCenterLocalizable", comment: "")
+            subTitle = KMLocalizedString("You have already submitted an account removal request. Please Undo Remove Account before making a purchase.", tableName: "MemberCenterLocalizable", comment: "")
+            yes = KMLocalizedString("Undo Remove Account", tableName: "MemberCenterLocalizable", comment: "")
         }
-        titleLabel.stringValue = NSLocalizedString(title, tableName: "MemberCenterLocalizable", comment: "")
-        subTitleLabel.stringValue = NSLocalizedString(subTitle, tableName: "MemberCenterLocalizable", comment: "")
+        titleLabel.stringValue = KMLocalizedString(title, tableName: "MemberCenterLocalizable", comment: "")
+        subTitleLabel.stringValue = KMLocalizedString(subTitle, tableName: "MemberCenterLocalizable", comment: "")
         if cance.isEmpty != true {
-            cancelButton.title = NSLocalizedString(cance, tableName: "MemberCenterLocalizable", comment: "")
+            cancelButton.title = KMLocalizedString(cance, tableName: "MemberCenterLocalizable", comment: "")
             cancelButton.isHidden = false
         } else {
             cancelButton.isHidden = true
         }
-        yesButton.title = NSLocalizedString(yes, tableName: "MemberCenterLocalizable", comment: "")
+        yesButton.title = KMLocalizedString(yes, tableName: "MemberCenterLocalizable", comment: "")
     }
     
     private func initializeUI() -> Void {

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 113 - 113
PDF Office/PDF Master/Class/MemberCenter/WindowsController/KMProductCompareWC.swift


+ 1 - 1
PDF Office/PDF Master/Class/PDFTools/AddPassword/View/KMSecurityView.swift

@@ -152,7 +152,7 @@ extension KMSecurityView {
         if model.ownerPassword == model.openPassword {
             let alert = NSAlert()
             alert.alertStyle = .critical
-            alert.messageText = NSLocalizedString("The Open and Owner passwords cannot be the same. Please change either the Open or the Owner Password.", comment: "")
+            alert.messageText = KMLocalizedString("The Open and Owner passwords cannot be the same. Please change either the Open or the Owner Password.", comment: "")
             alert.runModal()
             return
         }

+ 2 - 2
PDF Office/PDF Master/Class/PDFTools/AutoFlow/KMAotuFlowExtension.swift

@@ -34,7 +34,7 @@ extension CPDFView {
         let timer = Timer.scheduledTimer(timeInterval: TimeInterval(timeInterval), target: self, selector: #selector(updateAutoFlow), userInfo: nil, repeats: true)
         autoFlowTimer = timer
 
-        let _ = CustomAlertView.alertView(message: NSLocalizedString("AutoScroll On", comment: ""), fromView: self, withStyle: .black)
+        let _ = CustomAlertView.alertView(message: KMLocalizedString("AutoScroll On", comment: ""), fromView: self, withStyle: .black)
     }
 
     @objc func updateAutoFlow() {
@@ -65,7 +65,7 @@ extension CPDFView {
         autoFlowTimer?.invalidate()
         autoFlowTimer = nil
         
-        let _ = CustomAlertView.alertView(message: NSLocalizedString("AutoScroll Off", comment: ""), fromView: self, withStyle: .black)
+        let _ = CustomAlertView.alertView(message: KMLocalizedString("AutoScroll Off", comment: ""), fromView: self, withStyle: .black)
     }
     
     func isAutoFlow() -> Bool {

+ 7 - 7
PDF Office/PDF Master/Class/PDFTools/Compare/KMCompareWindowController.swift

@@ -67,7 +67,7 @@ class KMCompareWindowController: KMNBaseWindowController {
         guard let pdfOldDocument = config.fileOldAttribute.pdfDocument, let pdfNewDocument = config.fileNewAttribute.pdfDocument else {
             let alert = NSAlert()
             alert.alertStyle = .critical
-            alert.messageText = NSLocalizedString("Please select two files to compare", comment: "")
+            alert.messageText = KMLocalizedString("Please select two files to compare", comment: "")
             alert.runModal()
             self.hideWaitting()
             return
@@ -80,7 +80,7 @@ class KMCompareWindowController: KMNBaseWindowController {
         if !fileManager.fileExists(atPath: fileOldPath!) || !fileManager.fileExists(atPath: fileNewPath!){
             let alert = NSAlert()
             alert.alertStyle = .critical
-            alert.messageText = NSLocalizedString("The file has been deleted, please reselect a file.", comment: "")
+            alert.messageText = KMLocalizedString("The file has been deleted, please reselect a file.", comment: "")
             alert.runModal()
             self.hideWaitting()
             return
@@ -90,7 +90,7 @@ class KMCompareWindowController: KMNBaseWindowController {
             (!config.fileNewAttribute.bAllPage && config.fileNewAttribute.pagesString.count < 1) {
             let alert = NSAlert()
             alert.alertStyle = .critical
-            alert.messageText = String(format: "%@ %@", (config.fileNewAttribute.pdfDocument?.documentURL.path.lastPathComponent.lastPathComponent)!, NSLocalizedString("Invalid page range. Please reselect the page range.", comment: ""))
+            alert.messageText = String(format: "%@ %@", (config.fileNewAttribute.pdfDocument?.documentURL.path.lastPathComponent.lastPathComponent)!, KMLocalizedString("Invalid page range. Please reselect the page range.", comment: ""))
             alert.runModal()
             
             config.fileNewAttribute.bAllPage = true
@@ -105,7 +105,7 @@ class KMCompareWindowController: KMNBaseWindowController {
         if (config.fileOldAttribute.fetchSelectPages().count == 0) || (!config.fileOldAttribute.bAllPage && config.fileOldAttribute.pagesString.count < 1) {
             let alert = NSAlert()
             alert.alertStyle = .critical
-            alert.messageText = String(format: "%@ %@", (config.fileOldAttribute.pdfDocument?.documentURL.path.lastPathComponent.lastPathComponent)!, NSLocalizedString("Invalid page range. Please reselect the page range.", comment: ""))
+            alert.messageText = String(format: "%@ %@", (config.fileOldAttribute.pdfDocument?.documentURL.path.lastPathComponent.lastPathComponent)!, KMLocalizedString("Invalid page range. Please reselect the page range.", comment: ""))
             alert.runModal()
             
             config.fileOldAttribute.bAllPage = true
@@ -153,7 +153,7 @@ class KMCompareWindowController: KMNBaseWindowController {
                         DispatchQueue.main.async {
                             let alert = NSAlert()
                             alert.alertStyle = .critical
-                            alert.messageText = NSLocalizedString("Failure", comment: "")
+                            alert.messageText = KMLocalizedString("Failure", comment: "")
                             alert.runModal()
                             
                             self.hideWaitting()
@@ -223,7 +223,7 @@ class KMCompareWindowController: KMNBaseWindowController {
                     } else {
                         let alert = NSAlert()
                         alert.alertStyle = .critical
-                        alert.messageText = NSLocalizedString("There is no difference between the two documents.", comment: "")
+                        alert.messageText = KMLocalizedString("There is no difference between the two documents.", comment: "")
                         alert.runModal()
                     }
                 }
@@ -246,7 +246,7 @@ extension KMCompareWindowController {
         progress.window?.contentView?.wantsLayer = true
         progress.window?.contentView?.layer?.backgroundColor = NSColor.km_init(hex: "#36383B").cgColor
         progress.progressField.textColor = NSColor.white
-        progress.message = NSLocalizedString("Comparing documents...", comment: "")
+        progress.message = KMLocalizedString("Comparing documents...", comment: "")
         
         progress.closeBlock = { [weak self] in
             

+ 34 - 34
PDF Office/PDF Master/Class/PDFTools/Compare/View/KMCompareView.swift

@@ -207,52 +207,52 @@ class KMCompareView: BaseXibView {
     }
     
     func updateLanguage() {
-        compareTypeSegment.setLabel(NSLocalizedString("Side-by-Side View", comment: ""), forSegment: 0)
-        compareTypeSegment.setLabel(NSLocalizedString("Compare by File Overlay", comment: ""), forSegment: 1)
+        compareTypeSegment.setLabel(KMLocalizedString("Side-by-Side View", comment: ""), forSegment: 0)
+        compareTypeSegment.setLabel(KMLocalizedString("Compare by File Overlay", comment: ""), forSegment: 1)
         
-        compareTypeSegment.setToolTip(NSLocalizedString("Side-by-Side View", comment: ""), forSegment: 0)
-        compareTypeSegment.setToolTip(NSLocalizedString("Compare by File Overlay", comment: ""), forSegment: 1)
+        compareTypeSegment.setToolTip(KMLocalizedString("Side-by-Side View", comment: ""), forSegment: 0)
+        compareTypeSegment.setToolTip(KMLocalizedString("Compare by File Overlay", comment: ""), forSegment: 1)
 
-        oldDocumentsTitle.stringValue = NSLocalizedString("Old File", comment: "")
-        documentsNewTitle.stringValue = NSLocalizedString("New File", comment: "")
+        oldDocumentsTitle.stringValue = KMLocalizedString("Old File", comment: "")
+        documentsNewTitle.stringValue = KMLocalizedString("New File", comment: "")
         
-        oldFileSelectBtn.title = NSLocalizedString("Choose...", comment: "")
-        fileSelectNewBtn.title = NSLocalizedString("Choose...", comment: "")
+        oldFileSelectBtn.title = KMLocalizedString("Choose...", comment: "")
+        fileSelectNewBtn.title = KMLocalizedString("Choose...", comment: "")
         
-        oldFileSelectBtn.toolTip = NSLocalizedString("Choose...", comment: "")
-        fileSelectNewBtn.toolTip = NSLocalizedString("Choose...", comment: "")
+        oldFileSelectBtn.toolTip = KMLocalizedString("Choose...", comment: "")
+        fileSelectNewBtn.toolTip = KMLocalizedString("Choose...", comment: "")
             
-        addFileTitle.stringValue = NSLocalizedString("Select File", comment: "")
-        addFileMag.stringValue = NSLocalizedString("Click to add", comment: "")
+        addFileTitle.stringValue = KMLocalizedString("Select File", comment: "")
+        addFileMag.stringValue = KMLocalizedString("Click to add", comment: "")
         
-        oldFileRangeField.stringValue = NSLocalizedString("Old File:", comment: "")
-        fileNewRangeField.stringValue = NSLocalizedString("New File:", comment: "")
+        oldFileRangeField.stringValue = KMLocalizedString("Old File:", comment: "")
+        fileNewRangeField.stringValue = KMLocalizedString("New File:", comment: "")
         
-        pageRangeField.stringValue = NSLocalizedString("Page Range", comment: "")
+        pageRangeField.stringValue = KMLocalizedString("Page Range", comment: "")
         
         pageRangeOldComboBox.removeAllItems()
-        pageRangeOldComboBox.addItems(withObjectValues: [NSLocalizedString("All Pages", comment: ""),
-                                                              NSLocalizedString("Odd Pages Only", comment: ""),
-                                                              NSLocalizedString("Even Pages Only",comment: ""),
-                                                              NSLocalizedString("e.g. 1,3-5,10",comment: "")])
-        pageRangeOldComboBox.placeholderString = NSLocalizedString("e.g. 1,3-5,10", comment: "")
-        
-        pageRangeNewComboBox.addItems(withObjectValues: [NSLocalizedString("All Pages", comment: ""),
-                                                              NSLocalizedString("Odd Pages Only", comment: ""),
-                                                              NSLocalizedString("Even Pages Only",comment: ""),
-                                                              NSLocalizedString("e.g. 1,3-5,10",comment: "")])
-        self.pageRangeNewComboBox.placeholderString = NSLocalizedString("e.g. 1,3-5,10", comment: "")
-        
-        self.compareTextTypeBtn.title = NSLocalizedString("Compare text", comment: "")
-        self.compareImageTypeBtn.title = NSLocalizedString("Compare image", comment: "")
-        
-        let settingsString = "  " + NSLocalizedString("Settings", comment: "")
+        pageRangeOldComboBox.addItems(withObjectValues: [KMLocalizedString("All Pages", comment: ""),
+                                                              KMLocalizedString("Odd Pages Only", comment: ""),
+                                                              KMLocalizedString("Even Pages Only",comment: ""),
+                                                              KMLocalizedString("e.g. 1,3-5,10",comment: "")])
+        pageRangeOldComboBox.placeholderString = KMLocalizedString("e.g. 1,3-5,10", comment: "")
+        
+        pageRangeNewComboBox.addItems(withObjectValues: [KMLocalizedString("All Pages", comment: ""),
+                                                              KMLocalizedString("Odd Pages Only", comment: ""),
+                                                              KMLocalizedString("Even Pages Only",comment: ""),
+                                                              KMLocalizedString("e.g. 1,3-5,10",comment: "")])
+        self.pageRangeNewComboBox.placeholderString = KMLocalizedString("e.g. 1,3-5,10", comment: "")
+        
+        self.compareTextTypeBtn.title = KMLocalizedString("Compare text", comment: "")
+        self.compareImageTypeBtn.title = KMLocalizedString("Compare image", comment: "")
+        
+        let settingsString = "  " + KMLocalizedString("Settings", comment: "")
         compareSettingsBtn.title = settingsString
         compareSettingsBtn.state = .off
         compareSettingsBtn.setTitleColor(KMAppearance.Layout.h1Color())
         
-        cancelButton.title = NSLocalizedString("Cancel", comment: "")
-        doneButton.title = NSLocalizedString("Compare", comment: "")
+        cancelButton.title = KMLocalizedString("Cancel", comment: "")
+        doneButton.title = KMLocalizedString("Compare", comment: "")
     }
     
     func updateUI() {
@@ -481,7 +481,7 @@ extension KMCompareView {
             if (pdfDocument?.documentURL.path == filePath) {
                 let alert = NSAlert()
                 alert.alertStyle = NSAlert.Style.critical
-                alert.messageText = NSLocalizedString("There is no difference between the two documents.", comment: "")
+                alert.messageText = KMLocalizedString("There is no difference between the two documents.", comment: "")
                 alert.runModal()
                 completion(nil)
                 return

+ 7 - 7
PDF Office/PDF Master/Class/PDFTools/Compare/ViewController/ContentComplete/View/KMCompareContentView.swift

@@ -181,16 +181,16 @@ class KMCompareContentView: BaseXibView, CPDFViewDelegate, KMCompareToolbarDeleg
     
 
     func updateLanguage() {
-        deleteLbl.stringValue = NSLocalizedString("Delete", comment: "")
-        replaceLbl.stringValue = NSLocalizedString("Replace", comment: "")
-        insertLbl.stringValue = NSLocalizedString("Insert", comment: "")
+        deleteLbl.stringValue = KMLocalizedString("Delete", comment: "")
+        replaceLbl.stringValue = KMLocalizedString("Replace", comment: "")
+        insertLbl.stringValue = KMLocalizedString("Insert", comment: "")
         
-        toolbarShowBtn.title = NSLocalizedString("Bottom Toolbar", comment: "")
-        syncScrollBtn.title = NSLocalizedString("Scroll Sync", comment: "")
+        toolbarShowBtn.title = KMLocalizedString("Bottom Toolbar", comment: "")
+        syncScrollBtn.title = KMLocalizedString("Scroll Sync", comment: "")
         
-        saveBtn.title = NSLocalizedString("Save", comment: "")
+        saveBtn.title = KMLocalizedString("Save", comment: "")
         
-        closeBtn.title = NSLocalizedString("Close", comment: "")
+        closeBtn.title = KMLocalizedString("Close", comment: "")
     }
     
     func reloadData() {

+ 3 - 3
PDF Office/PDF Master/Class/PDFTools/Compare/ViewController/ContentComplete/View/Text/KMCompareTextHeaderView.swift

@@ -105,11 +105,11 @@ class KMCompareTextHeaderView: BaseXibView {
         
         guard let compareResult = compareResult else { return }
         if compareResult.oldPageIndex() == -1 {
-            pageLbl.stringValue = "- VS \(NSLocalizedString("Page", comment: "")) \(compareResult.newPageIndex() + 1)"
+            pageLbl.stringValue = "- VS \(KMLocalizedString("Page", comment: "")) \(compareResult.newPageIndex() + 1)"
         } else if compareResult.newPageIndex() == -1 {
-            pageLbl.stringValue = "\(NSLocalizedString("Page", comment: "")) \(compareResult.oldPageIndex() + 1) VS -"
+            pageLbl.stringValue = "\(KMLocalizedString("Page", comment: "")) \(compareResult.oldPageIndex() + 1) VS -"
         } else {
-            pageLbl.stringValue = "\(NSLocalizedString("Page", comment: "")) \(compareResult.oldPageIndex() + 1) VS \(NSLocalizedString("Page", comment: "")) \(compareResult.newPageIndex() + 1)"
+            pageLbl.stringValue = "\(KMLocalizedString("Page", comment: "")) \(compareResult.oldPageIndex() + 1) VS \(KMLocalizedString("Page", comment: "")) \(compareResult.newPageIndex() + 1)"
         }
     }
 

+ 3 - 3
PDF Office/PDF Master/Class/PDFTools/Compare/ViewController/ContentComplete/View/Text/KMCompareTextView.swift

@@ -51,9 +51,9 @@ class KMCompareTextView: BaseXibView, NSCollectionViewDelegateFlowLayout, NSColl
     }
     
     func updateLanguage() {
-        infoLbl.stringValue = NSLocalizedString("Compare", comment: "")
-        totalTitleLbl.stringValue = NSLocalizedString("Total Changes: ", comment: "")
-        emptyTipLbl.stringValue = NSLocalizedString("There is no difference between two documents.", comment: "")
+        infoLbl.stringValue = KMLocalizedString("Compare", comment: "")
+        totalTitleLbl.stringValue = KMLocalizedString("Total Changes: ", comment: "")
+        emptyTipLbl.stringValue = KMLocalizedString("There is no difference between two documents.", comment: "")
     }
 
 

+ 7 - 7
PDF Office/PDF Master/Class/PDFTools/Compare/ViewController/ContentComplete/View/Text/KMCompareTextViewItem.swift

@@ -82,21 +82,21 @@ class KMCompareTextViewItem: NSCollectionViewItem {
 
     func typeStringFromResult(_ compareResult: CPDFCompareResult) -> String {
         if compareResult.oldBounds().equalTo(CGRect.zero) {
-            return NSLocalizedString("Insert Page", comment: "")
+            return KMLocalizedString("Insert Page", comment: "")
         } else if compareResult.newBounds().equalTo(CGRect.zero) {
-            return NSLocalizedString("Delete Page", comment: "")
+            return KMLocalizedString("Delete Page", comment: "")
         } else {
             switch compareResult.type() {
             case .delete:
-                return compareResult.isTextResult ? NSLocalizedString("Delete Text", comment: "") : NSLocalizedString("Delete Image", comment: "")
+                return compareResult.isTextResult ? KMLocalizedString("Delete Text", comment: "") : KMLocalizedString("Delete Image", comment: "")
             case .insert:
-                return compareResult.isTextResult ? NSLocalizedString("Insert Text", comment: "") : NSLocalizedString("Insert Image", comment: "")
+                return compareResult.isTextResult ? KMLocalizedString("Insert Text", comment: "") : KMLocalizedString("Insert Image", comment: "")
             case .replace:
-                return compareResult.isTextResult ? NSLocalizedString("Replace Text", comment: "") : NSLocalizedString("Replace Image", comment: "")
+                return compareResult.isTextResult ? KMLocalizedString("Replace Text", comment: "") : KMLocalizedString("Replace Image", comment: "")
             case .change:
-                return compareResult.isTextResult ? NSLocalizedString("Modify Text", comment: "") : NSLocalizedString("Modify Image", comment: "")
+                return compareResult.isTextResult ? KMLocalizedString("Modify Text", comment: "") : KMLocalizedString("Modify Image", comment: "")
             default:
-                return NSLocalizedString("None", comment: "")
+                return KMLocalizedString("None", comment: "")
             }
         }
     }

+ 1 - 1
PDF Office/PDF Master/Class/PDFTools/Compare/ViewController/ContentComplete/View/Thumb/KMCompareThumbView.swift

@@ -60,7 +60,7 @@ class KMCompareThumbView: BaseXibView, NSCollectionViewDelegate, NSCollectionVie
     }
     
     func updateLanguage() {
-        infoLbl.stringValue = NSLocalizedString("Thumbnails", comment: "")
+        infoLbl.stringValue = KMLocalizedString("Thumbnails", comment: "")
     }
 
     // MARK: - Public Methods

+ 1 - 1
PDF Office/PDF Master/Class/PDFTools/Compare/ViewController/ContentSetting/KMCompareContentSettingWindowController.swift

@@ -14,7 +14,7 @@ class KMCompareContentSettingWindowController: NSWindowController {
         super.windowDidLoad()
 
         // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
-        window?.title = NSLocalizedString("Settings", comment: "")
+        window?.title = KMLocalizedString("Settings", comment: "")
         
         settingView.loadUI()
     }

+ 3 - 3
PDF Office/PDF Master/Class/PDFTools/Compare/ViewController/ContentSetting/View/KMCompareContentSettingView.swift

@@ -28,9 +28,9 @@ class KMCompareContentSettingView: BaseXibView {
     }
     
     func updateLanguage() {
-        replaceLabel.stringValue = NSLocalizedString("Replace Color", comment: "")
-        insertLabel.stringValue = NSLocalizedString("Insert Color", comment: "")
-        deleteLabel.stringValue = NSLocalizedString("Delete Color", comment: "")
+        replaceLabel.stringValue = KMLocalizedString("Replace Color", comment: "")
+        insertLabel.stringValue = KMLocalizedString("Insert Color", comment: "")
+        deleteLabel.stringValue = KMLocalizedString("Delete Color", comment: "")
     }
     
     func reloadData() {

+ 4 - 4
PDF Office/PDF Master/Class/PDFTools/Compare/ViewController/CoveringComplete/View/KMCompareCoveringView.swift

@@ -66,11 +66,11 @@ class KMCompareCoveringView: BaseXibView {
     }
     
     func updateLanguage() {
-        oldPLbl.stringValue = NSLocalizedString("Old Document", comment: "")
-        nPDFLbl.stringValue = NSLocalizedString("New Document", comment: "")
+        oldPLbl.stringValue = KMLocalizedString("Old Document", comment: "")
+        nPDFLbl.stringValue = KMLocalizedString("New Document", comment: "")
         
-        saveBtn.title = NSLocalizedString("Save", comment: "")
-        closeBtn.title = NSLocalizedString("Close", comment: "")
+        saveBtn.title = KMLocalizedString("Save", comment: "")
+        closeBtn.title = KMLocalizedString("Close", comment: "")
         
     }
     // MARK: - IBAction

+ 1 - 1
PDF Office/PDF Master/Class/PDFTools/Compare/ViewController/CoveringSetting/KMCompareCoveringSettingWindowController.swift

@@ -13,7 +13,7 @@ class KMCompareCoveringSettingWindowController: NSWindowController {
     override func windowDidLoad() {
         super.windowDidLoad()
 
-        window?.title = NSLocalizedString("Settings", comment: "")
+        window?.title = KMLocalizedString("Settings", comment: "")
     }
     
 }

+ 18 - 18
PDF Office/PDF Master/Class/PDFTools/Compare/ViewController/CoveringSetting/View/KMCompareCoveringSettingView.swift

@@ -70,24 +70,24 @@ class KMCompareCoveringSettingView: BaseXibView, NSTextFieldDelegate {
     }
     
     func updateLanguage() {
-        opacityLabel.stringValue = NSLocalizedString("Document Opacity", comment: "")
-        opacityNewLabel.stringValue = NSLocalizedString("New File:", comment: "")
-        opacityOldLabel.stringValue = NSLocalizedString("Old File:", comment: "")
-        strokeColorLabel.stringValue = NSLocalizedString("Stroke Color:", comment: "")
-        strokeNewColorLabel.stringValue = NSLocalizedString("New File:", comment: "")
-        strokeOldColorLabel.stringValue = NSLocalizedString("Old File:", comment: "")
-        modelLabel.stringValue = NSLocalizedString("Blend Mode:", comment: "")
-        filledButton.title = NSLocalizedString("Fill the white box (some content will be covered)", comment: "")
-        filledButton.toolTip = NSLocalizedString("Fill the white box (some content will be covered)", comment: "")
-
-        modelComboBox.addItems(withObjectValues: [NSLocalizedString("Normal", comment: ""),
-                                                  NSLocalizedString("Multiply", comment: ""),
-                                                  NSLocalizedString("Darken", comment: ""),
-                                                  NSLocalizedString("ColorBurn", comment: ""),
-                                                  NSLocalizedString("Hard Light", comment: ""),
-                                                  NSLocalizedString("Difference", comment: ""),
-                                                  NSLocalizedString("Exclusion", comment: ""),
-                                                  NSLocalizedString("Luminosity", comment: "")])
+        opacityLabel.stringValue = KMLocalizedString("Document Opacity", comment: "")
+        opacityNewLabel.stringValue = KMLocalizedString("New File:", comment: "")
+        opacityOldLabel.stringValue = KMLocalizedString("Old File:", comment: "")
+        strokeColorLabel.stringValue = KMLocalizedString("Stroke Color:", comment: "")
+        strokeNewColorLabel.stringValue = KMLocalizedString("New File:", comment: "")
+        strokeOldColorLabel.stringValue = KMLocalizedString("Old File:", comment: "")
+        modelLabel.stringValue = KMLocalizedString("Blend Mode:", comment: "")
+        filledButton.title = KMLocalizedString("Fill the white box (some content will be covered)", comment: "")
+        filledButton.toolTip = KMLocalizedString("Fill the white box (some content will be covered)", comment: "")
+
+        modelComboBox.addItems(withObjectValues: [KMLocalizedString("Normal", comment: ""),
+                                                  KMLocalizedString("Multiply", comment: ""),
+                                                  KMLocalizedString("Darken", comment: ""),
+                                                  KMLocalizedString("ColorBurn", comment: ""),
+                                                  KMLocalizedString("Hard Light", comment: ""),
+                                                  KMLocalizedString("Difference", comment: ""),
+                                                  KMLocalizedString("Exclusion", comment: ""),
+                                                  KMLocalizedString("Luminosity", comment: "")])
     }
     
     @objc func updateUI() {

+ 8 - 8
PDF Office/PDF Master/Class/PDFTools/Compare/ViewController/Save/View/KMCompareSaveView.swift

@@ -49,14 +49,14 @@ class KMCompareSaveView: BaseXibView {
     }
     
     func updateLanguage() {
-        saveAsLbl.stringValue = NSLocalizedString("Save as", comment: "")
-        oldDocTypeBtn.title = NSLocalizedString("Old File", comment: "")
-        nDocTypeBtn.title = NSLocalizedString("New File", comment: "")
-        mergeDocTypeBtn.title = NSLocalizedString("Merge into a New File", comment: "")
-        fileLocationTipLbl.stringValue = NSLocalizedString("File Location:", comment: "")
-        outputButton.title = NSLocalizedString("Choose", comment: "")
-        cancelBtn.title = NSLocalizedString("Cancel", comment: "")
-        saveAsBtn.title = NSLocalizedString("Save", comment: "")
+        saveAsLbl.stringValue = KMLocalizedString("Save as", comment: "")
+        oldDocTypeBtn.title = KMLocalizedString("Old File", comment: "")
+        nDocTypeBtn.title = KMLocalizedString("New File", comment: "")
+        mergeDocTypeBtn.title = KMLocalizedString("Merge into a New File", comment: "")
+        fileLocationTipLbl.stringValue = KMLocalizedString("File Location:", comment: "")
+        outputButton.title = KMLocalizedString("Choose", comment: "")
+        cancelBtn.title = KMLocalizedString("Cancel", comment: "")
+        saveAsBtn.title = KMLocalizedString("Save", comment: "")
     }
 
     func updateUI() {

+ 1 - 1
PDF Office/PDF Master/Class/PDFTools/Compress/View/SettingView/View/Tableview/Cell/KMCompressImagesPanelTableCellView.swift

@@ -125,7 +125,7 @@ extension KMCompressImagesPanelTableCellView {
     
     func showAbovePPIAlert() {
         let tempValue = Int(imageTextField.properties.text) ?? 10
-        self.imageAbovePPIAlertLabel.stringValue = NSLocalizedString("Limit \(tempValue)-\(tempValue * 10)", comment: "")
+        self.imageAbovePPIAlertLabel.stringValue = KMLocalizedString("Limit \(tempValue)-\(tempValue * 10)", comment: "")
         self.imageAbovePPIAlertLabel.isHidden = false
     }
     

+ 10 - 10
PDF Office/PDF Master/Class/PDFTools/Convert/ExtractImage/Controller/KMExtractImageWindowController.swift

@@ -73,14 +73,14 @@ class KMExtractImageWindowController: KMNBaseWindowController, PDFConvertObjectD
             self.fileAttri_ = KMFileAttribute()
             self.fileAttri_?.filePath = url.path
         }
-        self.allPageButton.title = NSLocalizedString("All Pages", comment: "")
-        self.singlePageButton.title = NSLocalizedString("Odd Pages Only", comment: "")
-        self.doublePageButton.title = NSLocalizedString("Even Pages Only", comment: "")
-        self.currentPageButton.title = NSLocalizedString("Current Page", comment: "")
-        self.extractImageButton.title = NSLocalizedString("Extract", comment: "")
-        self.cancelButton.title = NSLocalizedString("Cancel", comment: "")
-        self.rangeTextField.placeholderString = NSLocalizedString("e.g. 1,3-5,10", comment: "")
-        self.rangeTipLabel.stringValue = NSLocalizedString("Page Range", comment: "")
+        self.allPageButton.title = KMLocalizedString("All Pages", comment: "")
+        self.singlePageButton.title = KMLocalizedString("Odd Pages Only", comment: "")
+        self.doublePageButton.title = KMLocalizedString("Even Pages Only", comment: "")
+        self.currentPageButton.title = KMLocalizedString("Current Page", comment: "")
+        self.extractImageButton.title = KMLocalizedString("Extract", comment: "")
+        self.cancelButton.title = KMLocalizedString("Cancel", comment: "")
+        self.rangeTextField.placeholderString = KMLocalizedString("e.g. 1,3-5,10", comment: "")
+        self.rangeTipLabel.stringValue = KMLocalizedString("Page Range", comment: "")
         
         self.currentPageTextField.stringValue = "\(self.currentPage + 1)"
         self.pageCountTextField.stringValue = "/ \(self.pdfDocument?.pageCount ?? 0)"
@@ -171,7 +171,7 @@ class KMExtractImageWindowController: KMNBaseWindowController, PDFConvertObjectD
             tFileName = fileUrl.lastPathComponent
         }
         
-        outputSavePanel.title = NSLocalizedString("Save as PDF", comment: "")
+        outputSavePanel.title = KMLocalizedString("Save as PDF", comment: "")
         outputSavePanel.allowsOtherFileTypes = true
         outputSavePanel.isExtensionHidden = true
         outputSavePanel.canCreateDirectories = true
@@ -266,7 +266,7 @@ class KMExtractImageWindowController: KMNBaseWindowController, PDFConvertObjectD
             if let data = fileAttribute?.fetchSelectPages().isEmpty, data {
                 let alert = NSAlert()
                 alert.alertStyle = .critical
-                alert.messageText = "\(fileAttribute?.filePath.lastPathComponent ?? "") \(NSLocalizedString("Invalid page range or the page number is out of range. Please try again.", comment: ""))"
+                alert.messageText = "\(fileAttribute?.filePath.lastPathComponent ?? "") \(KMLocalizedString("Invalid page range or the page number is out of range. Please try again.", comment: ""))"
                 alert.runModal()
                 return indeSet
             }

+ 55 - 55
PDF Office/PDF Master/Class/PDFTools/Convert/NewController/Common/KMPDFConvertManager.swift

@@ -108,123 +108,123 @@ class KMPDFConvertManager: NSObject {
 //    public func ocrLanguageString(ocrLanguage: COCRLanguage) -> String {
 //        switch ocrLanguage {
 //        case .chinese:
-//            return NSLocalizedString("Chinese", comment: "")
+//            return KMLocalizedString("Chinese", comment: "")
 //        case .chineseTraditional:
-//            return NSLocalizedString("Chinese Traditional", comment: "")
+//            return KMLocalizedString("Chinese Traditional", comment: "")
 //        case .english:
-//            return NSLocalizedString("English", comment: "")
+//            return KMLocalizedString("English", comment: "")
 //        case .japanese:
-//            return NSLocalizedString("Japanese", comment: "")
+//            return KMLocalizedString("Japanese", comment: "")
 //        case .korean:
-//            return NSLocalizedString("Kroean", comment: "")
+//            return KMLocalizedString("Kroean", comment: "")
 //            
 //        /// Latin
 //        case .serbian:
-//            return NSLocalizedString("Serbian", comment: "")
+//            return KMLocalizedString("Serbian", comment: "")
 //        case .occitan:
-//            return NSLocalizedString("Occitan", comment: "")
+//            return KMLocalizedString("Occitan", comment: "")
 //        case .danish:
-//            return NSLocalizedString("Danish", comment: "")
+//            return KMLocalizedString("Danish", comment: "")
 //        case .german:
-//            return NSLocalizedString("German", comment: "")
+//            return KMLocalizedString("German", comment: "")
 //        case .french:
-//            return NSLocalizedString("French", comment: "")
+//            return KMLocalizedString("French", comment: "")
 //        case .italian:
-//            return NSLocalizedString("Italian", comment: "")
+//            return KMLocalizedString("Italian", comment: "")
 //        case .spanish:
-//            return NSLocalizedString("Spanish", comment: "")
+//            return KMLocalizedString("Spanish", comment: "")
 //        case .portuguese:
-//            return NSLocalizedString("Portuguese", comment: "")
+//            return KMLocalizedString("Portuguese", comment: "")
 //        case .maori:
-//            return NSLocalizedString("Maori", comment: "")
+//            return KMLocalizedString("Maori", comment: "")
 //        case .malay:
-//            return NSLocalizedString("Malay", comment: "")
+//            return KMLocalizedString("Malay", comment: "")
 //            
 //        case .maltese:
-//            return NSLocalizedString("Maltese", comment: "")
+//            return KMLocalizedString("Maltese", comment: "")
 //        case .dutch:
-//            return NSLocalizedString("Dutch", comment: "")
+//            return KMLocalizedString("Dutch", comment: "")
 //        case .norwegian:
-//            return NSLocalizedString("Norwegian", comment: "")
+//            return KMLocalizedString("Norwegian", comment: "")
 //        case .polish:
-//            return NSLocalizedString("Polish", comment: "")
+//            return KMLocalizedString("Polish", comment: "")
 //        case .romanian:
-//            return NSLocalizedString("Romanian", comment: "")
+//            return KMLocalizedString("Romanian", comment: "")
 //        case .slovak:
-//            return NSLocalizedString("Slovak", comment: "")
+//            return KMLocalizedString("Slovak", comment: "")
 //        case .slovenian:
-//            return NSLocalizedString("Slovenian", comment: "")
+//            return KMLocalizedString("Slovenian", comment: "")
 //        case .albanian:
-//            return NSLocalizedString("Albanian", comment: "")
+//            return KMLocalizedString("Albanian", comment: "")
 //        case .swedish:
-//            return NSLocalizedString("Swedish", comment: "")
+//            return KMLocalizedString("Swedish", comment: "")
 //        case .swahili:
-//            return NSLocalizedString("Swahili", comment: "")
+//            return KMLocalizedString("Swahili", comment: "")
 //            
 //        case .tagalog:
-//            return NSLocalizedString("Tagalog", comment: "")
+//            return KMLocalizedString("Tagalog", comment: "")
 //        case .turish:
-//            return NSLocalizedString("Turish", comment: "")
+//            return KMLocalizedString("Turish", comment: "")
 //        case .uzbek:
-//            return NSLocalizedString("Uzbek", comment: "")
+//            return KMLocalizedString("Uzbek", comment: "")
 //        case .vietnamese:
-//            return NSLocalizedString("Vietnamese", comment: "")
+//            return KMLocalizedString("Vietnamese", comment: "")
 //        case .afrikaans:
-//            return NSLocalizedString("Afrikaans", comment: "")
+//            return KMLocalizedString("Afrikaans", comment: "")
 //        case .azerbaijani:
-//            return NSLocalizedString("Azerbaijani", comment: "")
+//            return KMLocalizedString("Azerbaijani", comment: "")
 //        case .bosnian:
-//            return NSLocalizedString("Bosnian", comment: "")
+//            return KMLocalizedString("Bosnian", comment: "")
 //        case .czech:
-//            return NSLocalizedString("Czech", comment: "")
+//            return KMLocalizedString("Czech", comment: "")
 //        case .welsh:
-//            return NSLocalizedString("Welsh", comment: "")
+//            return KMLocalizedString("Welsh", comment: "")
 //        case .estonian:
-//            return NSLocalizedString("Estonian", comment: "")
+//            return KMLocalizedString("Estonian", comment: "")
 //            
 //        case .irish:
-//            return NSLocalizedString("Irish", comment: "")
+//            return KMLocalizedString("Irish", comment: "")
 //        case .croatian:
-//            return NSLocalizedString("Croatian", comment: "")
+//            return KMLocalizedString("Croatian", comment: "")
 //        case .hungarian:
-//            return NSLocalizedString("Hungarian", comment: "")
+//            return KMLocalizedString("Hungarian", comment: "")
 //        case .indonesian:
-//            return NSLocalizedString("Indonesian", comment: "")
+//            return KMLocalizedString("Indonesian", comment: "")
 //        case .icelandic:
-//            return NSLocalizedString("Icelandic", comment: "")
+//            return KMLocalizedString("Icelandic", comment: "")
 //        case .kurdish:
-//            return NSLocalizedString("Kurdish", comment: "")
+//            return KMLocalizedString("Kurdish", comment: "")
 //        case .lithuanian:
-//            return NSLocalizedString("Lithuanian", comment: "")
+//            return KMLocalizedString("Lithuanian", comment: "")
 //        case .latvian:
-//            return NSLocalizedString("Latvian", comment: "")
+//            return KMLocalizedString("Latvian", comment: "")
 //            
 //        /// Devanagari
 //        case .marathi:
-//            return NSLocalizedString("Marathi", comment: "")
+//            return KMLocalizedString("Marathi", comment: "")
 //        case .nepali:
-//            return NSLocalizedString("Nepali", comment: "")
+//            return KMLocalizedString("Nepali", comment: "")
 //        case .hindi:
-//            return NSLocalizedString("Hindi", comment: "")
+//            return KMLocalizedString("Hindi", comment: "")
 //        case .bihari:
-//            return NSLocalizedString("Bihari", comment: "")
+//            return KMLocalizedString("Bihari", comment: "")
 //        case .maithili:
-//            return NSLocalizedString("Maithili", comment: "")
+//            return KMLocalizedString("Maithili", comment: "")
 //        case .angika:
-//            return NSLocalizedString("Angika", comment: "")
+//            return KMLocalizedString("Angika", comment: "")
 //        case .bhojpuri:
-//            return NSLocalizedString("Bhojpuri", comment: "")
+//            return KMLocalizedString("Bhojpuri", comment: "")
 //        case .magahi:
-//            return NSLocalizedString("Magahi", comment: "")
+//            return KMLocalizedString("Magahi", comment: "")
 //        case .nagpur:
-//            return NSLocalizedString("Nagpur", comment: "")
+//            return KMLocalizedString("Nagpur", comment: "")
 //        case .newari:
-//            return NSLocalizedString("Newari", comment: "")
+//            return KMLocalizedString("Newari", comment: "")
 //            
 //        case .goanKonkani:
-//            return NSLocalizedString("GoanKonkani", comment: "")
+//            return KMLocalizedString("GoanKonkani", comment: "")
 //        case .saudiArabia:
-//            return NSLocalizedString("SaudiArabia", comment: "")
+//            return KMLocalizedString("SaudiArabia", comment: "")
 //        @unknown default:
 //            return ""
 //        }

+ 0 - 0
PDF Office/PDF Master/Class/PDFTools/Convert/NewController/KMToolCompareWindowController.swift


Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio