diff --git a/Source/Modules/WindowControllers/CtlPrefWindow.swift b/Source/Modules/WindowControllers/CtlPrefWindow.swift deleted file mode 100644 index ecc16aa9..00000000 --- a/Source/Modules/WindowControllers/CtlPrefWindow.swift +++ /dev/null @@ -1,604 +0,0 @@ -// (c) 2011 and onwards The OpenVanilla Project (MIT License). -// All possible vChewing-specific modifications are of: -// (c) 2021 and onwards The vChewing Project (MIT-NTL License). -// ==================== -// This code is released under the MIT license (SPDX-License-Identifier: MIT) -// ... with NTL restriction stating that: -// No trademark license is granted to use the trade names, trademarks, service -// marks, or product names of Contributor, except as required to fulfill notice -// requirements defined in MIT License. - -import AppKit -import BookmarkManager -import IMKUtils -import MainAssembly -import Shared - -private let kWindowTitleHeight: Double = 78 - -// InputMethodServerPreferencesWindowControllerClass 非必需。 - -class CtlPrefWindow: NSWindowController, NSWindowDelegate { - @IBOutlet var uiLanguageButton: NSPopUpButton! - @IBOutlet var parserButton: NSPopUpButton! - @IBOutlet var basicKeyboardLayoutButton: NSPopUpButton! - @IBOutlet var selectionKeyComboBox: NSComboBox! - @IBOutlet var chkTrad2KangXi: NSButton! - @IBOutlet var chkTrad2JISShinjitai: NSButton! - @IBOutlet var cmbCandidateFontSize: NSPopUpButton! - @IBOutlet var chkFartSuppressor: NSButton! - @IBOutlet var chkCapsLockNotification: NSButton! - - @IBOutlet var chkRevLookupInCandidateWindow: NSButton! - @IBOutlet var btnBrowseFolderForUserPhrases: NSButton! - @IBOutlet var lblUserPhraseFolderChangeDescription: NSTextField! - - @IBOutlet var cmbPEInputModeMenu: NSPopUpButton! - @IBOutlet var cmbPEDataTypeMenu: NSPopUpButton! - @IBOutlet var btnPEReload: NSButton! - @IBOutlet var btnPEConsolidate: NSButton! - @IBOutlet var btnPESave: NSButton! - @IBOutlet var btnPEAdd: NSButton! - @IBOutlet var btnPEOpenExternally: NSButton! - @IBOutlet var tfdPETextEditor: NSTextView! - @IBOutlet var txtPECommentField: NSTextField! - @IBOutlet var txtPEField1: NSTextField! - @IBOutlet var txtPEField2: NSTextField! - @IBOutlet var txtPEField3: NSTextField! - @IBOutlet var pctUserDictionaryFolder: NSPathControl! - @IBOutlet var pctCassetteFilePath: NSPathControl! - @IBOutlet var stkShiftKeyASCIITogglesPane: NSStackView! - - var isLoading = false { - didSet { setPEUIControlAvailability() } - } - - @IBOutlet var vwrGeneral: NSView! - @IBOutlet var vwrCandidates: NSView! - @IBOutlet var vwrBehavior: NSView! - @IBOutlet var vwrDictionary: NSView! - @IBOutlet var vwrPhrases: NSView! - @IBOutlet var vwrCassette: NSView! - @IBOutlet var vwrKeyboard: NSView! - @IBOutlet var vwrDevZone: NSView! - - var previousView: NSView? - - public static var shared: CtlPrefWindow? - - @objc var observation: NSKeyValueObservation? - - static func show() { - let resetPhraseEditor: Bool = shared?.window == nil || !(shared?.window?.isVisible ?? false) || shared == nil - if shared == nil { shared = CtlPrefWindow(windowNibName: "frmPrefWindow") } - guard let shared = shared, let sharedWindow = shared.window else { return } - sharedWindow.delegate = shared - if !sharedWindow.isVisible { - shared.windowDidLoad() - } - sharedWindow.setPosition(vertical: .top, horizontal: .right, padding: 20) - sharedWindow.orderFrontRegardless() // 逼著視窗往最前方顯示 - sharedWindow.level = .statusBar - shared.showWindow(shared) - if resetPhraseEditor { shared.initPhraseEditor() } - NSApp.popup() - } - - private var currentLanguageSelectItem: NSMenuItem? - - override func windowDidLoad() { - super.windowDidLoad() - window?.setPosition(vertical: .top, horizontal: .right, padding: 20) - - observation = Broadcaster.shared.observe(\.eventForReloadingPhraseEditor, options: [.new]) { _, _ in - self.updatePhraseEditor() - } - - if #unavailable(macOS 10.15) { - stkShiftKeyASCIITogglesPane.isHidden = true - } - - if #unavailable(macOS 12) { - chkCapsLockNotification.isEnabled = false - } - chkCapsLockNotification.toolTip = String( - format: "This feature requires macOS %@ and above.".localized, arguments: ["12.0"] - ) - - chkFartSuppressor.isHidden = !Date.isTodayTheDate(from: 0401) - chkFartSuppressor.isEnabled = !chkFartSuppressor.isHidden - - pctCassetteFilePath.delegate = self - pctCassetteFilePath.url = URL(fileURLWithPath: LMMgr.cassettePath()) - pctCassetteFilePath.toolTip = "Please drag the desired target from Finder to this place.".localized - - pctUserDictionaryFolder.delegate = self - pctUserDictionaryFolder.url = URL(fileURLWithPath: LMMgr.dataFolderPath(isDefaultFolder: false)) - pctUserDictionaryFolder.toolTip = "Please drag the desired target from Finder to this place.".localized - - cmbCandidateFontSize.isEnabled = true - - var preferencesTitleName = NSLocalizedString("vChewing Preferences…", comment: "") - preferencesTitleName.removeLast() - - let toolbar = NSToolbar(identifier: "preference toolbar") - toolbar.allowsUserCustomization = false - toolbar.autosavesConfiguration = false - toolbar.sizeMode = .default - toolbar.delegate = self - toolbar.selectedItemIdentifier = PrefUITabs.tabGeneral.toolbarIdentifier - toolbar.showsBaselineSeparator = true - if #available(macOS 11.0, *) { - window?.toolbarStyle = .preference - } - window?.toolbar = toolbar - window?.title = "\(preferencesTitleName) (\(IMEApp.appVersionLabel))" - window?.titlebarAppearsTransparent = false - use(view: vwrGeneral, animate: false) - - // Credit: Hiraku Wang (for the implementation of the UI language select support in Cocoa PrefWindow. - // Note: The SwiftUI PrefWindow has the same feature implemented by Shiki Suen. - do { - let languages = ["auto", "en", "zh-Hans", "zh-Hant", "ja"] - var autoMUISelectItem: NSMenuItem? - var chosenLanguageItem: NSMenuItem? - uiLanguageButton.menu?.removeAllItems() - - let appleLanguages = PrefMgr.shared.appleLanguages - for language in languages { - let menuItem = NSMenuItem() - menuItem.title = NSLocalizedString(language, comment: language) - menuItem.representedObject = language - - if language == "auto" { - autoMUISelectItem = menuItem - } - - if !appleLanguages.isEmpty { - if appleLanguages[0] == language { - chosenLanguageItem = menuItem - } - } - uiLanguageButton.menu?.addItem(menuItem) - } - - currentLanguageSelectItem = chosenLanguageItem ?? autoMUISelectItem - uiLanguageButton.select(currentLanguageSelectItem) - } - - refreshBasicKeyboardLayoutMenu() - refreshParserMenu() - - selectionKeyComboBox.usesDataSource = false - selectionKeyComboBox.removeAllItems() - selectionKeyComboBox.addItems(withObjectValues: CandidateKey.suggestions) - - var candidateSelectionKeys = PrefMgr.shared.candidateKeys - if candidateSelectionKeys.isEmpty { - candidateSelectionKeys = CandidateKey.defaultKeys - } - - selectionKeyComboBox.stringValue = candidateSelectionKeys - - initPhraseEditor() - } - - func windowWillClose(_: Notification) { - tfdPETextEditor.string = "" - } - - func refreshBasicKeyboardLayoutMenu() { - var usKeyboardLayoutItem: NSMenuItem? - var chosenBaseKeyboardLayoutItem: NSMenuItem? - basicKeyboardLayoutButton.menu?.removeAllItems() - let basicKeyboardLayoutID = PrefMgr.shared.basicKeyboardLayout - for source in IMKHelper.allowedBasicLayoutsAsTISInputSources { - guard let source = source else { - basicKeyboardLayoutButton.menu?.addItem(NSMenuItem.separator()) - continue - } - let menuItem = NSMenuItem() - menuItem.title = source.vChewingLocalizedName - menuItem.representedObject = source.identifier - if source.identifier == "com.apple.keylayout.US" { usKeyboardLayoutItem = menuItem } - if basicKeyboardLayoutID == source.identifier { chosenBaseKeyboardLayoutItem = menuItem } - basicKeyboardLayoutButton.menu?.addItem(menuItem) - } - basicKeyboardLayoutButton.select(chosenBaseKeyboardLayoutItem ?? usKeyboardLayoutItem) - } - - func refreshParserMenu() { - var defaultParserItem: NSMenuItem? - var chosenParserItem: NSMenuItem? - parserButton.menu?.removeAllItems() - let basicParserID = PrefMgr.shared.keyboardParser - KeyboardParser.allCases.forEach { item in - if [7, 100].contains(item.rawValue) { - parserButton.menu?.addItem(NSMenuItem.separator()) - } - let menuItem = NSMenuItem() - menuItem.title = item.localizedMenuName - menuItem.tag = item.rawValue - if item.rawValue == 0 { defaultParserItem = menuItem } - if basicParserID == item.rawValue { chosenParserItem = menuItem } - parserButton.menu?.addItem(menuItem) - } - parserButton.select(chosenParserItem ?? defaultParserItem) - } - - func warnAboutComDlg32Inavailability() { - let title = "Please drag the desired target from Finder to this place.".localized - let message = "[Technical Reason] macOS releases earlier than 10.13 have an issue: If calling NSOpenPanel directly from an input method, both the input method and its current client app hang in a dead-loop. Furthermore, it makes other apps hang in the same way when you switch into another app. If you don't want to hard-reboot your computer, your last resort is to use SSH to connect to your current computer from another computer and kill the input method process by Terminal commands. That's why vChewing cannot offer access to NSOpenPanel for macOS 10.12 and earlier.".localized - window?.callAlert(title: title, text: message) - } - - // 這裡有必要加上這段處理,用來確保藉由偏好設定介面動過的 CNS 開關能夠立刻生效。 - // 所有涉及到語言模型開關的內容均需要這樣處理。 - @IBAction func toggleCNSSupport(_: Any) { - LMMgr.syncLMPrefs() - } - - @IBAction func toggleSymbolInputEnabled(_: Any) { - LMMgr.syncLMPrefs() - } - - @IBAction func toggleTrad2KangXiAction(_: Any) { - if chkTrad2KangXi.state == .on, chkTrad2JISShinjitai.state == .on { - PrefMgr.shared.shiftJISShinjitaiOutputEnabled.toggle() - } - } - - @IBAction func toggleTrad2JISShinjitaiAction(_: Any) { - if chkTrad2KangXi.state == .on, chkTrad2JISShinjitai.state == .on { - PrefMgr.shared.chineseConversionEnabled.toggle() - } - } - - @IBAction func updateParserAction(_: Any) { - if let sourceID = parserButton.selectedItem?.tag as? Int { - PrefMgr.shared.keyboardParser = sourceID - } - } - - @IBAction func updateBasicKeyboardLayoutAction(_: Any) { - if let sourceID = basicKeyboardLayoutButton.selectedItem?.representedObject as? String { - PrefMgr.shared.basicKeyboardLayout = sourceID - } - } - - @IBAction func updateUiLanguageAction(_: Any) { - if let selectItem = uiLanguageButton.selectedItem { - if currentLanguageSelectItem == selectItem { - return - } - } - if let language = uiLanguageButton.selectedItem?.representedObject as? String { - if language != "auto" { - PrefMgr.shared.appleLanguages = [language] - } else { - UserDefaults.standard.removeObject(forKey: "AppleLanguages") - } - - NSLog("vChewing App self-terminated due to UI language change.") - NSApp.terminate(nil) - } - } - - @IBAction func clickedWhetherIMEShouldNotFartToggleAction(_: Any) { - let content = String( - format: NSLocalizedString( - "You are about to uncheck this fart suppressor. You are responsible for all consequences lead by letting people nearby hear the fart sound come from your computer. We strongly advise against unchecking this in any public circumstance that prohibits NSFW netas.", - comment: "" - )) - let alert = NSAlert(error: NSLocalizedString("Warning", comment: "")) - alert.informativeText = content - alert.addButton(withTitle: NSLocalizedString("Uncheck", comment: "")) - if #available(macOS 11, *) { - alert.buttons.forEach { button in - button.hasDestructiveAction = true - } - } - alert.addButton(withTitle: NSLocalizedString("Leave it checked", comment: "")) - if let window = window, !PrefMgr.shared.shouldNotFartInLieuOfBeep { - PrefMgr.shared.shouldNotFartInLieuOfBeep = true - alert.beginSheetModal(for: window) { result in - switch result { - case .alertFirstButtonReturn: - PrefMgr.shared.shouldNotFartInLieuOfBeep = false - case .alertSecondButtonReturn: - PrefMgr.shared.shouldNotFartInLieuOfBeep = true - default: break - } - IMEApp.buzz() - } - return - } - IMEApp.buzz() - } - - @IBAction func changeSelectionKeyAction(_: Any) { - let keys = selectionKeyComboBox.stringValue.trimmingCharacters( - in: .whitespacesAndNewlines - ).lowercased().deduplicated - // Start Error Handling. - guard let errorResult = CandidateKey.validate(keys: keys) else { - PrefMgr.shared.candidateKeys = keys - return - } - if let window = window { - let alert = NSAlert(error: NSLocalizedString("Invalid Selection Keys.", comment: "")) - alert.informativeText = errorResult - alert.beginSheetModal(for: window) { _ in - self.selectionKeyComboBox.stringValue = PrefMgr.shared.candidateKeys - } - IMEApp.buzz() - } - } - - @IBAction func toggledExternalFactoryPlistDataOnOff(_: NSButton) { - LMMgr.connectCoreDB() - } - - @IBAction func resetSpecifiedUserDataFolder(_: Any) { - LMMgr.resetSpecifiedUserDataFolder() - pctUserDictionaryFolder.url = URL(fileURLWithPath: LMMgr.dataFolderPath(isDefaultFolder: true)) - } - - @IBAction func chooseUserDataFolderToSpecify(_: Any) { - if NSEvent.keyModifierFlags == .option, let url = pctUserDictionaryFolder.url { - NSWorkspace.shared.activateFileViewerSelecting([url]) - return - } - guard let window = window else { return } - guard #available(macOS 10.13, *) else { - warnAboutComDlg32Inavailability() - return - } - let dlgOpenPath = NSOpenPanel() - dlgOpenPath.title = NSLocalizedString( - "Choose your desired user data folder.", comment: "" - ) - dlgOpenPath.showsResizeIndicator = true - dlgOpenPath.showsHiddenFiles = true - dlgOpenPath.canChooseFiles = false - dlgOpenPath.canChooseDirectories = true - dlgOpenPath.allowsMultipleSelection = false - - let bolPreviousFolderValidity = LMMgr.checkIfSpecifiedUserDataFolderValid( - PrefMgr.shared.userDataFolderSpecified.expandingTildeInPath) - - dlgOpenPath.beginSheetModal(for: window) { result in - if result == NSApplication.ModalResponse.OK { - guard let url = dlgOpenPath.url else { return } - // CommonDialog 讀入的路徑沒有結尾斜槓,這會導致檔案目錄合規性判定失準。 - // 所以要手動補回來。 - var newPath = url.path - newPath.ensureTrailingSlash() - if LMMgr.checkIfSpecifiedUserDataFolderValid(newPath) { - PrefMgr.shared.userDataFolderSpecified = newPath - BookmarkManager.shared.saveBookmark(for: url) - AppDelegate.shared.updateDirectoryMonitorPath() - self.pctUserDictionaryFolder.url = url - } else { - IMEApp.buzz() - if !bolPreviousFolderValidity { - LMMgr.resetSpecifiedUserDataFolder() - self.pctUserDictionaryFolder.url = URL(fileURLWithPath: LMMgr.dataFolderPath(isDefaultFolder: true)) - } - return - } - } else { - if !bolPreviousFolderValidity { - LMMgr.resetSpecifiedUserDataFolder() - self.pctUserDictionaryFolder.url = URL(fileURLWithPath: LMMgr.dataFolderPath(isDefaultFolder: true)) - } - return - } - } - } - - @IBAction func onToggleCassetteMode(_: Any) { - if PrefMgr.shared.cassetteEnabled, !LMMgr.checkCassettePathValidity(PrefMgr.shared.cassettePath) { - if let window = window { - IMEApp.buzz() - let alert = NSAlert(error: NSLocalizedString("Path invalid or file access error.", comment: "")) - alert.informativeText = NSLocalizedString( - "Please reconfigure the cassette path to a valid one before enabling this mode.", comment: "" - ) - alert.beginSheetModal(for: window) { _ in - LMMgr.resetCassettePath() - PrefMgr.shared.cassetteEnabled = false - } - } - } else { - LMMgr.loadCassetteData() - } - } - - @IBAction func resetSpecifiedCassettePath(_: Any) { - LMMgr.resetCassettePath() - } - - @IBAction func chooseCassettePath(_: Any) { - if NSEvent.keyModifierFlags == .option, let url = pctCassetteFilePath.url { - NSWorkspace.shared.activateFileViewerSelecting([url]) - return - } - guard let window = window else { return } - guard #available(macOS 10.13, *) else { - warnAboutComDlg32Inavailability() - return - } - let dlgOpenFile = NSOpenPanel() - dlgOpenFile.showsResizeIndicator = true - dlgOpenFile.showsHiddenFiles = true - dlgOpenFile.canChooseFiles = true - dlgOpenFile.canChooseDirectories = false - dlgOpenFile.allowsMultipleSelection = false - dlgOpenFile.allowedContentTypes = ["cin2", "vcin", "cin"].compactMap { .init(filenameExtension: $0) } - dlgOpenFile.allowsOtherFileTypes = true - - let bolPreviousPathValidity = LMMgr.checkCassettePathValidity( - PrefMgr.shared.cassettePath.expandingTildeInPath) - - dlgOpenFile.beginSheetModal(for: window) { result in - if result == NSApplication.ModalResponse.OK { - guard let url = dlgOpenFile.url else { return } - if LMMgr.checkCassettePathValidity(url.path) { - PrefMgr.shared.cassettePath = url.path - LMMgr.loadCassetteData() - BookmarkManager.shared.saveBookmark(for: url) - self.pctCassetteFilePath.url = url - } else { - IMEApp.buzz() - if !bolPreviousPathValidity { - LMMgr.resetCassettePath() - } - return - } - } else { - if !bolPreviousPathValidity { - LMMgr.resetCassettePath() - } - return - } - } - } - - @IBAction func importYahooKeyKeyUserDictionaryData(_: NSButton) { - let dlgOpenFile = NSOpenPanel() - dlgOpenFile.title = NSLocalizedString( - "i18n:settings.importFromKimoTxt.buttonText", comment: "" - ) + ":" - dlgOpenFile.showsResizeIndicator = true - dlgOpenFile.showsHiddenFiles = true - dlgOpenFile.canChooseFiles = true - dlgOpenFile.allowsMultipleSelection = false - dlgOpenFile.canChooseDirectories = false - dlgOpenFile.allowedContentTypes = [.init(filenameExtension: "txt")].compactMap { $0 } - - if let window = window { - dlgOpenFile.beginSheetModal(for: window) { result in - if result == NSApplication.ModalResponse.OK { - guard let url = dlgOpenFile.url else { return } - guard var rawString = try? String(contentsOf: url) else { return } - let count = LMMgr.importYahooKeyKeyUserDictionary(text: &rawString) - window.callAlert(title: String(format: "i18n:settings.importFromKimoTxt.finishedCount:%@".localized, count.description)) - } - } - } - } -} - -// MARK: - NSToolbarDelegate Methods - -extension CtlPrefWindow: NSToolbarDelegate { - func use(view newView: NSView, animate: Bool = true) { - guard let window = window, let existingContentView = window.contentView else { return } - guard previousView != newView else { return } - previousView = newView - let temporaryViewOld = NSView(frame: existingContentView.frame) - window.contentView = temporaryViewOld - var newWindowRect = NSRect(origin: window.frame.origin, size: newView.bounds.size) - newWindowRect.size.height += kWindowTitleHeight - newWindowRect.origin.y = window.frame.maxY - newWindowRect.height - window.setFrame(newWindowRect, display: true, animate: animate) - window.contentView = newView - } - - var toolbarIdentifiers: [NSToolbarItem.Identifier] { - PrefUITabs.allCases.filter { - $0 != .tabOutput - }.map(\.toolbarIdentifier) - } - - func toolbarDefaultItemIdentifiers(_: NSToolbar) -> [NSToolbarItem.Identifier] { - toolbarIdentifiers - } - - func toolbarAllowedItemIdentifiers(_: NSToolbar) -> [NSToolbarItem.Identifier] { - toolbarIdentifiers - } - - func toolbarSelectableItemIdentifiers(_: NSToolbar) -> [NSToolbarItem.Identifier] { - toolbarIdentifiers - } - - @objc func updateTab(_ target: NSToolbarItem) { - guard let tab = PrefUITabs.fromInt(target.tag) else { return } - switch tab { - case .tabGeneral: use(view: vwrGeneral) - case .tabCandidates: use(view: vwrCandidates) - case .tabBehavior: use(view: vwrBehavior) - case .tabOutput: return - case .tabDictionary: use(view: vwrDictionary) - case .tabPhrases: use(view: vwrPhrases) - case .tabCassette: use(view: vwrCassette) - case .tabKeyboard: use(view: vwrKeyboard) - case .tabDevZone: use(view: vwrDevZone) - } - window?.toolbar?.selectedItemIdentifier = tab.toolbarIdentifier - } - - func toolbar( - _: NSToolbar, itemForItemIdentifier itemIdentifier: NSToolbarItem.Identifier, - willBeInsertedIntoToolbar _: Bool - ) -> NSToolbarItem? { - guard let tab = PrefUITabs(rawValue: itemIdentifier.rawValue) else { return nil } - let item = NSToolbarItem(itemIdentifier: itemIdentifier) - item.target = self - item.image = tab.icon - item.label = tab.i18nTitle - item.toolTip = tab.i18nTitle - item.tag = tab.cocoaTag - item.action = #selector(updateTab(_:)) - return item - } -} - -// MARK: - Path Control Delegate Methods - -extension CtlPrefWindow: NSPathControlDelegate { - func pathControl(_ pathControl: NSPathControl, acceptDrop info: NSDraggingInfo) -> Bool { - let urls = info.draggingPasteboard.readObjects(forClasses: [NSURL.self]) - guard let url = urls?.first as? URL else { return false } - switch pathControl { - case pctCassetteFilePath: - let bolPreviousPathValidity = LMMgr.checkCassettePathValidity( - PrefMgr.shared.cassettePath.expandingTildeInPath) - if LMMgr.checkCassettePathValidity(url.path) { - PrefMgr.shared.cassettePath = url.path - LMMgr.loadCassetteData() - BookmarkManager.shared.saveBookmark(for: url) - pathControl.url = url - return true - } - // On Error: - IMEApp.buzz() - if !bolPreviousPathValidity { - LMMgr.resetCassettePath() - } - return false - case pctUserDictionaryFolder: - let bolPreviousFolderValidity = LMMgr.checkIfSpecifiedUserDataFolderValid( - PrefMgr.shared.userDataFolderSpecified.expandingTildeInPath) - var newPath = url.path - newPath.ensureTrailingSlash() - if LMMgr.checkIfSpecifiedUserDataFolderValid(newPath) { - PrefMgr.shared.userDataFolderSpecified = newPath - BookmarkManager.shared.saveBookmark(for: url) - AppDelegate.shared.updateDirectoryMonitorPath() - pathControl.url = url - return true - } - // On Error: - IMEApp.buzz() - if !bolPreviousFolderValidity { - LMMgr.resetSpecifiedUserDataFolder() - pathControl.url = URL(fileURLWithPath: LMMgr.dataFolderPath(isDefaultFolder: true)) - } - return false - default: return false - } - } -} diff --git a/Source/Modules/WindowControllers/CtlPrefWindow_PhraseEditor.swift b/Source/Modules/WindowControllers/CtlPrefWindow_PhraseEditor.swift deleted file mode 100644 index 1d6f54c9..00000000 --- a/Source/Modules/WindowControllers/CtlPrefWindow_PhraseEditor.swift +++ /dev/null @@ -1,239 +0,0 @@ -// (c) 2021 and onwards The vChewing Project (MIT-NTL License). -// ==================== -// This code is released under the MIT license (SPDX-License-Identifier: MIT) -// ... with NTL restriction stating that: -// No trademark license is granted to use the trade names, trademarks, service -// marks, or product names of Contributor, except as required to fulfill notice -// requirements defined in MIT License. - -import AppKit -import Foundation -import LangModelAssembly -import MainAssembly -import PhraseEditorUI -import Shared - -extension CtlPrefWindow: NSTextViewDelegate, NSTextFieldDelegate { - var selInputMode: Shared.InputMode { - switch cmbPEInputModeMenu.selectedTag() { - case 0: return .imeModeCHS - case 1: return .imeModeCHT - default: return .imeModeNULL - } - } - - var selUserDataType: vChewingLM.ReplacableUserDataType { - switch cmbPEDataTypeMenu.selectedTag() { - case 0: return .thePhrases - case 1: return .theFilter - case 2: return .theReplacements - case 3: return .theAssociates - case 4: return .theSymbols - default: return .thePhrases - } - } - - func updatePhraseEditor() { - updateLabels() - clearAllFields() - isLoading = true - tfdPETextEditor.string = NSLocalizedString("Loading…", comment: "") - DispatchQueue.main.async { [weak self] in - guard let self = self else { return } - self.tfdPETextEditor.string = LMMgr.retrieveData(mode: self.selInputMode, type: self.selUserDataType) - self.tfdPETextEditor.toolTip = PETerms.TooltipTexts.sampleDictionaryContent(for: self.selUserDataType) - self.isLoading = false - } - } - - func setPEUIControlAvailability() { - btnPEReload.isEnabled = selInputMode != .imeModeNULL && !isLoading - btnPEConsolidate.isEnabled = selInputMode != .imeModeNULL && !isLoading - btnPESave.isEnabled = true // 暫時沒辦法捕捉到 TextView 的內容變更事件,故作罷。 - btnPEAdd.isEnabled = - !txtPEField1.isEmpty && !txtPEField2.isEmpty && selInputMode != .imeModeNULL && !isLoading - tfdPETextEditor.isEditable = selInputMode != .imeModeNULL && !isLoading - txtPEField1.isEnabled = selInputMode != .imeModeNULL && !isLoading - txtPEField2.isEnabled = selInputMode != .imeModeNULL && !isLoading - txtPEField3.isEnabled = selInputMode != .imeModeNULL && !isLoading - txtPEField3.isHidden = selUserDataType != .thePhrases || isLoading - txtPECommentField.isEnabled = selUserDataType != .theAssociates && !isLoading - } - - func updateLabels() { - clearAllFields() - switch selUserDataType { - case .thePhrases: - txtPEField1.placeholderString = PETerms.AddPhrases.locPhrase.localized.0 - txtPEField2.placeholderString = PETerms.AddPhrases.locReadingOrStroke.localized.0 - txtPEField3.placeholderString = PETerms.AddPhrases.locWeight.localized.0 - txtPECommentField.placeholderString = PETerms.AddPhrases.locComment.localized.0 - case .theFilter: - txtPEField1.placeholderString = PETerms.AddPhrases.locPhrase.localized.0 - txtPEField2.placeholderString = PETerms.AddPhrases.locReadingOrStroke.localized.0 - txtPEField3.placeholderString = "" - txtPECommentField.placeholderString = PETerms.AddPhrases.locComment.localized.0 - case .theReplacements: - txtPEField1.placeholderString = PETerms.AddPhrases.locReplaceTo.localized.0 - txtPEField2.placeholderString = PETerms.AddPhrases.locReplaceTo.localized.1 - txtPEField3.placeholderString = "" - txtPECommentField.placeholderString = PETerms.AddPhrases.locComment.localized.0 - case .theAssociates: - txtPEField1.placeholderString = PETerms.AddPhrases.locInitial.localized.0 - txtPEField2.placeholderString = { - let result = PETerms.AddPhrases.locPhrase.localized.0 - return (result == "Phrase") ? "Phrases" : result - }() - txtPEField3.placeholderString = "" - txtPECommentField.placeholderString = NSLocalizedString( - "Inline comments are not supported in associated phrases.", comment: "" - ) - case .theSymbols: - txtPEField1.placeholderString = PETerms.AddPhrases.locPhrase.localized.0 - txtPEField2.placeholderString = PETerms.AddPhrases.locReadingOrStroke.localized.0 - txtPEField3.placeholderString = "" - txtPECommentField.placeholderString = PETerms.AddPhrases.locComment.localized.0 - } - } - - func clearAllFields() { - txtPEField1.stringValue = "" - txtPEField2.stringValue = "" - txtPEField3.stringValue = "" - txtPECommentField.stringValue = "" - } - - func initPhraseEditor() { - // InputMode combobox. - cmbPEInputModeMenu.menu?.removeAllItems() - let menuItemCHS = NSMenuItem() - menuItemCHS.title = NSLocalizedString("Simplified Chinese", comment: "") - menuItemCHS.tag = 0 - let menuItemCHT = NSMenuItem() - menuItemCHT.title = NSLocalizedString("Traditional Chinese", comment: "") - menuItemCHT.tag = 1 - cmbPEInputModeMenu.menu?.addItem(menuItemCHS) - cmbPEInputModeMenu.menu?.addItem(menuItemCHT) - switch IMEApp.currentInputMode { - case .imeModeCHS: cmbPEInputModeMenu.select(menuItemCHS) - case .imeModeCHT: cmbPEInputModeMenu.select(menuItemCHT) - case .imeModeNULL: cmbPEInputModeMenu.select(menuItemCHT) - } - - // DataType combobox. - cmbPEDataTypeMenu.menu?.removeAllItems() - var defaultDataTypeMenuItem: NSMenuItem? - for (i, neta) in vChewingLM.ReplacableUserDataType.allCases.enumerated() { - let newMenuItem = NSMenuItem() - newMenuItem.title = neta.localizedDescription - newMenuItem.tag = i - cmbPEDataTypeMenu.menu?.addItem(newMenuItem) - if i == 0 { defaultDataTypeMenuItem = newMenuItem } - } - guard let defaultDataTypeMenuItem = defaultDataTypeMenuItem else { return } - cmbPEDataTypeMenu.select(defaultDataTypeMenuItem) - - // Buttons. - btnPEReload.title = NSLocalizedString("Reload", comment: "") - btnPEConsolidate.title = NSLocalizedString("Consolidate", comment: "") - btnPESave.title = NSLocalizedString("Save", comment: "") - btnPEAdd.title = PETerms.AddPhrases.locAdd.localized.0 - btnPEOpenExternally.title = NSLocalizedString("...", comment: "") - - // Text Editor View - tfdPETextEditor.font = NSFont.systemFont(ofSize: 13, weight: .regular) - - // Tab key targets. - tfdPETextEditor.delegate = self - txtPECommentField.nextKeyView = txtPEField1 - txtPEField1.nextKeyView = txtPEField2 - txtPEField2.nextKeyView = txtPEField3 - txtPEField3.nextKeyView = btnPEAdd - - // Delegates. - tfdPETextEditor.delegate = self - txtPECommentField.delegate = self - txtPEField1.delegate = self - txtPEField2.delegate = self - txtPEField3.delegate = self - - // Tooltip. - txtPEField3.toolTip = PETerms.TooltipTexts.weightInputBox.localized - tfdPETextEditor.toolTip = PETerms.TooltipTexts.sampleDictionaryContent(for: selUserDataType) - - // Finally, update the entire editor UI. - updatePhraseEditor() - } - - func controlTextDidChange(_: Notification) { setPEUIControlAvailability() } - - @IBAction func inputModePEMenuDidChange(_: NSPopUpButton) { updatePhraseEditor() } - - @IBAction func dataTypePEMenuDidChange(_: NSPopUpButton) { updatePhraseEditor() } - - @IBAction func reloadPEButtonClicked(_: NSButton) { updatePhraseEditor() } - - @IBAction func consolidatePEButtonClicked(_: NSButton) { - DispatchQueue.main.async { [weak self] in - guard let self = self else { return } - self.isLoading = true - vChewingLM.LMConsolidator.consolidate(text: &self.tfdPETextEditor.string, pragma: false) - if self.selUserDataType == .thePhrases { - LMMgr.shared.tagOverrides(in: &self.tfdPETextEditor.string, mode: self.selInputMode) - } - self.isLoading = false - } - } - - @IBAction func savePEButtonClicked(_: NSButton) { - let toSave = tfdPETextEditor.string - isLoading = true - tfdPETextEditor.string = NSLocalizedString("Loading…", comment: "") - let newResult = LMMgr.saveData(mode: selInputMode, type: selUserDataType, data: toSave) - tfdPETextEditor.string = newResult - isLoading = false - } - - @IBAction func openExternallyPEButtonClicked(_: NSButton) { - DispatchQueue.main.async { [weak self] in - guard let self = self else { return } - let app: FileOpenMethod = NSEvent.keyModifierFlags.contains(.option) ? .textEdit : .finder - LMMgr.shared.openPhraseFile(mode: self.selInputMode, type: self.selUserDataType, using: app) - } - } - - @IBAction func addPEButtonClicked(_: NSButton) { - DispatchQueue.main.async { [weak self] in - guard let self = self else { return } - self.txtPEField1.stringValue.removeAll { "  \t\n\r".contains($0) } - if self.selUserDataType != .theAssociates { - self.txtPEField2.stringValue.regReplace(pattern: #"( +| +| +|\t+)+"#, replaceWith: "-") - } - self.txtPEField2.stringValue.removeAll { - self.selUserDataType == .theAssociates ? "\n\r".contains($0) : "  \t\n\r".contains($0) - } - self.txtPEField3.stringValue.removeAll { !"0123456789.-".contains($0) } - self.txtPECommentField.stringValue.removeAll { "\n\r".contains($0) } - guard !self.txtPEField1.stringValue.isEmpty, !self.txtPEField2.stringValue.isEmpty else { return } - var arrResult: [String] = [self.txtPEField1.stringValue, self.txtPEField2.stringValue] - if let weightVal = Double(self.txtPEField3.stringValue), weightVal < 0 { - arrResult.append(weightVal.description) - } - if !self.txtPECommentField.stringValue.isEmpty { arrResult.append("#" + self.txtPECommentField.stringValue) } - if LMMgr.shared.checkIfPhrasePairExists( - userPhrase: self.txtPEField1.stringValue, mode: self.selInputMode, key: self.txtPEField2.stringValue - ) { - arrResult.append(" #𝙾𝚟𝚎𝚛𝚛𝚒𝚍𝚎") - } - if let lastChar = self.tfdPETextEditor.string.last, !"\n".contains(lastChar) { - arrResult.insert("\n", at: 0) - } - self.tfdPETextEditor.string.append(arrResult.joined(separator: " ") + "\n") - self.clearAllFields() - } - } -} - -private extension NSTextField { - var isEmpty: Bool { stringValue.isEmpty } -} diff --git a/Source/WindowNIBs/Base.lproj/frmPrefWindow.xib b/Source/WindowNIBs/Base.lproj/frmPrefWindow.xib deleted file mode 100644 index 80bf0760..00000000 --- a/Source/WindowNIBs/Base.lproj/frmPrefWindow.xib +++ /dev/null @@ -1,2889 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Item 1 - Item 2 - Item 3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - This does: 1) On macOS 12 and later, if the Caps Lock gets turned off, then the internal switch for Shift-key / JIS-Eisu-key Alphanumerical Mode Toggle will also be switched off. 2) If you have turned off the same switch by JIS-Eisu key, then the Caps Lock gets turned off together. Note: vChewing has no way to recognize single hits of Shift key when Caps Lock is on. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - This feature only needs to parse consecutive NSEvents passed by macOS built-in InputMethodKit framework, hence no necessity of asking end-users for extra privileges of monitoring global keyboard inputs. You are free to investigate our codebase or reverse-engineer this input method to see whether the above statement is trustable. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - public.folder - public.directory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - cin2 - cin - vcin - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Cassette mode is similar to the CIN support of the Yahoo Kimo IME, allowing users to use their own CIN tables to implement their stroked-based input schema (e.g. Wubi, Cangjie, Boshiamy, etc.) as a plan-B in vChewing IME. However, since vChewing won't compromise its phonabet input mode experience for this cassette mode, users might not feel comfortable enough comparing to their experiences with RIME (recommended) or OpenVanilla (deprecated). - - - - - - - - - - - - - - All strokes in the composition buffer will be shown as ASCII keyboard characters unless this option is enabled. Stroke is definable in the “%keyname” section of the CIN file. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - This conversion only affects the cassette module, converting typed contents to either Simplified Chinese or Traditional Chinese in accordance with this setting and your current input mode. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Choose the macOS-level basic keyboard layout. Non-QWERTY alphanumerical keyboard layouts are for Pinyin parser only. This option will only affect the appearance of the on-screen-keyboard if the current Mandarin parser is neither (any) pinyin nor dynamically reparsable with different western keyboard layouts (like Eten 26, Hsu, etc.). - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Warning: This page is for testing future features. -Features listed here may not work as expected. - - - - - - - - - - - - - - - - - - - - This hinders all client apps from unwelcomely accessing your uncommitted contents in the composition buffer. A popup composition buffer will be shown instead. - - - - - - - - - - - - - Some clients with web-based front UI may have issues rendering segmented thick underlines drawn by their implemented “setMarkedText()”. This option stops the input method from delivering segmented thick underlines to “client().setMarkedText()”. Note that segmented thick underlines are only used in marking mode, unless the client itself misimplements the IMKTextInput method “setMarkedText()”. This option only affects the inline composition buffer. - - - - - - - - - - - - - Such abuse of SecureEventInput API in the background can hinder all 3rd-party input methods from being able to switch to. It is fine to use SecureEventInput for sensitive input fields. However, an app calling EnableSecureEventInput() is responsible to call DisableSecureEventInput() immediately right after the input field loses focus. This situation may also happen if an app is hanging in the background (or working as a helper application in the background) with its SecureEventInput left enabled. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Source/WindowNIBs/en.lproj/frmPrefWindow.strings b/Source/WindowNIBs/en.lproj/frmPrefWindow.strings deleted file mode 100644 index f8dc9f42..00000000 --- a/Source/WindowNIBs/en.lproj/frmPrefWindow.strings +++ /dev/null @@ -1,174 +0,0 @@ -"0yk-Xi-GaC.title" = "Always expand candidate window panel"; -"1.title" = "vChewing Preferences"; -"10.title" = "Hanyu Pinyin with Numeral Intonation"; -"100.title" = "64"; -"101.title" = "96"; -"110.title" = "Enable Space key for calling candidate window"; -"12.title" = "BPMF Parser:"; -"126.title" = "Basic Layout:"; -"128.title" = "OtherViews"; -"137.title" = "IBM"; -"14.title" = "Choose the cursor position where you want to list possible candidates."; -"16.title" = "Cursor in front of the phrase (like macOS built-in Zhuyin IME)"; -"17.title" = "Cursor at the rear of the phrase (like Microsoft New Phonetic)"; -"18.title" = "Radio"; -"1AW-xf-c2f.label" = "Keyboard"; -"20.title" = "Radio"; -"21.title" = "Horizontal"; -"22.title" = "Vertical"; -"24.title" = "Candidate List Layout:"; -"27F-8T-FkQ.title" = "Fake Seigyou (similar to JinYei)"; -"29.title" = "Candidate UI font size:"; -"2iG-Ic-gbl.label" = "Dictionary"; -"2pS-nv-te4.title" = "Choose which keys you prefer for selecting candidates."; -"3N6-LT-HPv.title" = "Security-harden the composition buffer for all clients"; -"5.title" = "OtherViews"; -"6.title" = "Microsoft, Dachen, Wang, etc."; -"62u-jY-BRh.title" = "Stop farting (when typed phonetic combination is invalid, etc.)"; -"7.title" = "ETen"; -"7fV-x8-WHQ.title" = "MiTAC"; -"8.title" = "Hsu"; -"8tT-hw-Hhr.title" = "Check for updates automatically"; -"9.title" = "ETen26"; -"92.title" = "OtherViews"; -"93.title" = "12"; -"94.title" = "14"; -"95.title" = "16"; -"96.title" = "18"; -"98.title" = "24"; -"99.title" = "32"; -"9DS-Rc-TXq.title" = "UI language setting:"; -"akC-2g-ybz.title" = "Simplified Chinese"; -"ArK-Vk-OoT.title" = "Emulating select-candidate-per-character mode"; -"BDG-qU-aj6.title" = "All strokes in the composition buffer will be shown as ASCII keyboard characters unless this option is enabled. Stroke is definable in the “%keyname” section of the CIN file."; -"BSK-bH-Gct.title" = "Auto-convert traditional Chinese glyphs to KangXi characters"; -"btnImportFromKimoTxt.title" = "Import Yahoo! KeyKey User Dictionary File"; -"cBw-gz-TXe.title" = "Only enforce conversion in Traditional Chinese mode"; -"cf2-se-PDO.title" = "Dictionary and Language Models"; -"chkAllowBoostingSingleKanjiAsUserPhrase.title" = "Allow boosting / excluding a candidate of single kanji when marking"; -"chkAlsoConfirmAssociatedCandidatesByEnter.title" = "Allow using Enter key to confirm associated candidate selection"; -"chkAutoCorrectReadingCombination.title" = "Automatically correct reading combinations when typing"; -"chkBypassNonAppleCapsLockHandling.title" = "Bypass the vChewing built-in Caps Lock handling"; -"chkCheckAbusersOfSecureEventInputAPI.title" = "Actively check those processes abusing the SecureEventInput API"; -"chkConsolidateContextOnCandidateSelection.title" = "Consolidate the context on confirming candidate selection"; -"chkFetchSuggestionsFromUserOverrideModel.title" = "Applying typing suggestions from half-life user override model"; -"chkHardenVerticalPunctuations.title" = "Harden vertical punctuations during vertical typing"; -"chkKeepReadingUponCompositionError.title" = "Allow backspace-editing miscomposed readings"; -"chkRespectClientAccentColor.title" = "Respect accent colors of the client app and the system"; -"chkShiftEisuToggleOffTogetherWithCapsLock.title" = "Sync the off state between Caps Lock and Shift / Eisu Alphanumerical Toggle"; -"chkUseFixedCandidateOrderOnSelection.title" = "Always use fixed listing order in candidate window"; -"clN-4A-iec.title" = "Use Space to confirm highlighted candidate in Per-Char Select Mode"; -"Cp2-hn-bOq.title" = "Disable forced conversion for cassette outputs"; -"CVy-8U-3qQ.title" = "Toggle alphanumerical mode with Left-Shift"; -"DbW-eq-ZdB.title" = "Starlight"; -"dIN-TZ-67g.title" = "Space to +revolve candidates, Shift+Space to +revolve pages"; -"E1l-m8-xgb.title" = "Advanced Settings"; -"ego-1f-8cO.title" = "Choose the Chinese conversion behavior in cassette mode."; -"eia-1F-Do0.title" = "Auto-convert traditional Chinese glyphs to JIS Shinjitai characters"; -"f2j-xD-4xK.title" = "Use ESC key to clear the entire input buffer"; -"f8i-69-zxm.title" = "Automatically reload user data files if changes detected"; -"fEA-Bp-Ayn.title" = "Read external factory dictionary files if possible"; -"FnD-oH-El5.title" = "Selection Keys:"; -"fQ0-Yu-pJF.title" = "Enforce conversion in both input modes"; -"FSG-lN-CJO.title" = "English"; -"FVC-br-H57.title" = "Revolving Candidates"; -"GlJ-Ns-9eE.title" = "Auto-Select"; -"Grn-MZ-wTg.title" = "Enable cassette mode, suppressing phonabet input"; -"hcP-5k-mMw.title" = "Show available reverse-lookup results in candidate window"; -"hSv-LJ-Cq3.title" = "Enable symbol input support (incl. certain emoji symbols)"; -"Iai-0X-nxi.title" = "Choose your desired cassette file path. Will be omitted if invalid."; -"iRg-wx-Nx2.title" = "Change UI font size of candidate window for a better visual clarity."; -"iWy-Nw-QKB.title" = "Commit Hanyu-Pinyin instead on Ctrl(+Option)+Command+Enter"; -"iyh-1K-76v.title" = "Enable phrase replacement table"; -"j8q-IY-UF1.title" = "This conversion only affects the cassette module, converting typed contents to either Simplified Chinese or Traditional Chinese in accordance with this setting and your current input mode."; -"jQC-12-UuK.ibShadowedObjectValues[0]" = "Item 1"; -"jQC-12-UuK.ibShadowedObjectValues[1]" = "Item 2"; -"jQC-12-UuK.ibShadowedObjectValues[2]" = "Item 3"; -"K8U-Oq-lFc.title" = "Share alphanumerical mode status across all clients"; -"kcM-O6-mLN.title" = "This hinders all client apps from unwelcomely accessing your uncommitted contents in the composition buffer. A popup composition buffer will be shown instead."; -"lblAcceptLeadingIntonations.title" = "Accept leading intonations in rare cases"; -"lblAlwaysShowTooltipTextsHorizontally.title" = "Always show tooltip texts horizontally"; -"lblBypassNonAppleCapsLockHandling.title" = "This won't affect the same feature offered by macOS since 10.14 Mojave and later."; -"lblCheckAbusersOfSecureEventInputAPI.title" = "Such abuse of SecureEventInput API in the background can hinder all 3rd-party input methods from being able to switch to. It is fine to use SecureEventInput for sensitive input fields. However, an app calling EnableSecureEventInput() is responsible to call DisableSecureEventInput() immediately right after the input field loses focus. This situation may also happen if an app is hanging in the background (or working as a helper application in the background) with its SecureEventInput left enabled."; -"lblDevZoneTitleDescription.title" = "Warning: This page is for testing future features. \nFeatures listed here may not work as expected."; -"lblIntonationKeyBehavior.title" = "Specify what intonation key does when syllable composer is empty."; -"lblReadingNarrationCoverageDescription.title" = "This reads your typed phonabets aloud. Only works with non-cassette Mode."; -"lblReadingNarrationCoverageShortTitle.title" = "Reading composer contents to narrate:"; -"lblShiftBkspKeyBehavior.title" = "Choose the attempted behavior of Shift+BackSpace key."; -"lblShiftEisuToggleOffTogetherWithCapsLock.title" = "This does: 1) On macOS 12 and later, if the Caps Lock gets turned off, then the internal switch for Shift-key / JIS-Eisu-key Alphanumerical Mode Toggle will also be switched off. 2) If you have turned off the same switch by JIS-Eisu key, then the Caps Lock gets turned off together. Note: vChewing has no way to recognize single hits of Shift key when Caps Lock is on."; -"lblUpperCaseLetterKeyBehavior.title" = "Choose the behavior of Shift+Letter key with letter inputs."; -"lDd-rN-BSM.title" = "Enable mouse wheel support for Tadokoro Candidate Window"; -"MKJ-Q6-dLd.title" = "Also use “\\” or “¥” key for Hanin Keyboard Symbol Input"; -"N6e-bR-mVa.title" = "Disable segmented thick underline in marking mode for managed clients"; -"neb-Pz-n1h.title" = "Auto-composite when the longest possible key is formed"; -"NumPadCharInputBehavior-description.title" = "Choose the behavior of numeric pad inputs."; -"NumPadCharInputBehavior-option-0.title" = "Always directly commit half-width chars"; -"NumPadCharInputBehavior-option-1.title" = "Always directly commit full-width chars"; -"NumPadCharInputBehavior-option-2.title" = "Insert into composition buffer (half-width)"; -"NumPadCharInputBehavior-option-3.title" = "Insert into composition buffer (full-width)"; -"NumPadCharInputBehavior-option-4.title" = "Directly commit half-width chars only if the compositor is empty"; -"NumPadCharInputBehavior-option-5.title" = "Directly commit full-width chars only if the compositor is empty"; -"o3r-NZ-gsU.title" = "Only enforce conversion in Simplified Chinese mode"; -"optReadingNarrationCoverageConfirmed.title" = "Only when combined by intonation"; -"optReadingNarrationCoverageNothing.title" = "Do not narrate"; -"optReadingNarrationCoverageRealtime.title" = "All changes in reading composer"; -"OVR-eb-laC.title" = "One-line layout"; -"Parser11.title" = "Secondary Pinyin with Numeral Intonation"; -"Parser12.title" = "Yale Pinyin with Numeral Intonation"; -"Parser13.title" = "Hualuo Pinyin with Numeral Intonation"; -"Parser14.title" = "Universal Pinyin with Numeral Intonation"; -"Pg5-G9-pY5.title" = "Choose the behavior of (Shift+)Space key with candidates."; -"QUQ-oY-4Hc.label" = "General"; -"rdoIntonationKeyBehavior0.title" = "Override the previous reading's intonation with candidate-reset"; -"rdoIntonationKeyBehavior1.title" = "Only override the intonation of the previous reading if different"; -"rdoIntonationKeyBehavior2.title" = "Always type intonations to the inline composition buffer"; -"rdoShiftBkspKeyBehavior0.title" = "Disassemble the previous reading, dropping its intonation"; -"rdoShiftBkspKeyBehavior1.title" = "Clear the entire inline composition buffer like Shift+Delete"; -"rdoShiftBkspKeyBehavior2.title" = "Always drop the previous reading"; -"rdoUpperCaseLetterKeyBehavior0.title" = "Type them into inline composition buffer"; -"rdoUpperCaseLetterKeyBehavior1.title" = "Always directly commit lowercased letters"; -"rdoUpperCaseLetterKeyBehavior2.title" = "Always directly commit uppercased letters"; -"rdoUpperCaseLetterKeyBehavior3.title" = "Directly commit lowercased letters only if the compositor is empty"; -"rdoUpperCaseLetterKeyBehavior4.title" = "Directly commit uppercased letters only if the compositor is empty"; -"Rl7-3a-RDn.title" = "This feature only needs to parse consecutive NSEvents passed by macOS built-in InputMethodKit framework, hence no necessity of asking end-users for extra privileges of monitoring global keyboard inputs. You are free to investigate our codebase or reverse-engineer this input method to see whether the above statement is trustable."; -"RQ6-MS-m4C.title" = "Choose your preferred keyboard layout and phonetic parser."; -"RUG-ls-KyA.title" = "Push the cursor in front of the phrase after selection"; -"rVQ-Hx-cGi.title" = "Japanese"; -"rXc-Ji-ery.title" = "Cassette mode is similar to the CIN support of the Yahoo Kimo IME, allowing users to use their own CIN tables to implement their stroked-based input schema (e.g. Wubi, Cangjie, Boshiamy, etc.) as a plan-B in vChewing IME. However, since vChewing won't compromise its phonabet input mode experience for this cassette mode, users might not feel comfortable enough comparing to their experiences with RIME (recommended) or OpenVanilla (deprecated)."; -"s7u-Fm-dVg.title" = "Revolving Pages"; -"shc-Nu-UsM.title" = "Show notifications when toggling Caps Lock"; -"SzF-FL-sVO.title" = "Show translated strokes in composition buffer"; -"tglTrimUnfinishedReadingsOnCommit.title" = "Trim unfinished readings / strokes on commit"; -"TKl-TY-lvN.title" = "General Settings"; -"Toggle alphanumerical mode with Right-Shift" = "Toggle alphanumerical mode with Right-Shift"; -"TXr-FF-ehw.title" = "Traditional Chinese"; -"ueU-Rz-a1C.title" = "Choose the behavior of (Shift+)Tab key in the candidate window."; -"VAP-TU-eck.title" = "Some clients with web-based front UI may have issues rendering segmented thick underlines drawn by their implemented “setMarkedText()”. This option stops the input method from delivering segmented thick underlines to “client().setMarkedText()”. Note that segmented thick underlines are only used in marking mode, unless the client itself misimplements the IMKTextInput method “setMarkedText()”. This option only affects the inline composition buffer."; -"VdT-fw-7pQ.title" = "Debug Mode"; -"vpd-zx-GIk.title" = "Seigyou (JinYei)"; -"W24-T4-cg0.title" = "Enable CNS11643 Support (2024-01-15)"; -"WcE-vn-c6K.title" = "Adjust candidate window location according to current node length"; -"wFR-zX-M8H.title" = "Show Hanyu-Pinyin in the inline composition buffer"; -"wN3-k3-b2a.title" = "Choose your desired user data folder path. Will be omitted if invalid."; -"wQ9-px-b07.title" = "Choose the macOS-level basic keyboard layout. Non-QWERTY alphanumerical keyboard layouts are for Pinyin parser only. This option will only affect the appearance of the on-screen-keyboard if the current Mandarin parser is neither (any) pinyin nor dynamically reparsable with different western keyboard layouts (like Eten 26, Hsu, etc.)."; -"Wvt-HE-LOv.title" = "Keyboard Layout"; -"WX6-BW-JPM.title" = "This editor only: Auto-reload modifications happened outside of this editor"; -"xC5-yV-1W1.title" = "Choose your preferred layout of the candidate window."; -"xibGeneralSettings.title" = "General Settings"; -"xibKeyboardShortcuts.title" = "Keyboard Shortcuts"; -"xibOutputSettings.title" = "Output Settings"; -"xibUsingCurrencyNumerals.title" = "Currency Numeral Output"; -"xibUsingHotKeyAssociates.title" = "Associated Phrases"; -"xibUsingHotKeyCassette.title" = "CIN Cassette Mode"; -"xibUsingHotKeyCNS.title" = "CNS11643 Mode"; -"xibUsingHotKeyHalfWidthASCII.title" = "Half-Width Punctuation Mode"; -"xibUsingHotKeyInputMode.title" = "CHS / CHT Input Mode Switch"; -"xibUsingHotKeyJIS.title" = "JIS Shinjitai Output"; -"xibUsingHotKeyKangXi.title" = "Force KangXi Writing"; -"xibUsingHotKeyRevLookup.title" = "Reverse Lookup (Phonabets)"; -"xibUsingHotKeySCPC.title" = "Per-Char Select Mode"; -"xjP-r7-GaK.title" = "Dachen 26 (libChewing)"; -"XqL-rf-X6d.title" = "Space to +revolve pages, Shift+Space to +revolve candidates"; -"xrE-8T-WKO.label" = "Advanced"; -"ZEv-Q2-mYL.title" = "Change user interface language (will reboot the IME)."; -"ZEv-Q2-mYN.title" = "Shift-key Alphanumerical Mode Toggle (not work if CapsLock is ON)"; diff --git a/Source/WindowNIBs/ja.lproj/frmPrefWindow.strings b/Source/WindowNIBs/ja.lproj/frmPrefWindow.strings deleted file mode 100644 index 9974a260..00000000 --- a/Source/WindowNIBs/ja.lproj/frmPrefWindow.strings +++ /dev/null @@ -1,174 +0,0 @@ -"0yk-Xi-GaC.title" = "文字候補ウィンドウを折り畳みせずに"; -"1.title" = "威注音アプリ機能設定"; -"10.title" = "漢語弁音(ローマ字+数字音調)"; -"100.title" = "64"; -"101.title" = "96"; -"110.title" = "Space キーで入力候補を呼び出す"; -"12.title" = "注音配列:"; -"126.title" = "基礎キーボード:"; -"128.title" = "OtherViews"; -"137.title" = "IBM 配列"; -"14.title" = "カーソルはどこで入力候補を呼び出すかとご選択ください:"; -"16.title" = "単語の前で // macOS 内蔵注音入力のやり方"; -"17.title" = "単語の後で // Microsoft 新注音入力のやり方"; -"18.title" = "Radio"; -"1AW-xf-c2f.label" = "キーボード"; -"20.title" = "Radio"; -"21.title" = "横型陳列"; -"22.title" = "縦型陳列"; -"24.title" = "入力候補陳列の仕様:"; -"27F-8T-FkQ.title" = "偽精業配列"; -"29.title" = "候補文字の字号:"; -"2iG-Ic-gbl.label" = "辞書"; -"2pS-nv-te4.title" = "お好きなる言選り用キー陣列をお選びください。"; -"3N6-LT-HPv.title" = "全ての客体アプリに対して、入力緩衝列にセキュリティ強化対策を起用"; -"5.title" = "OtherViews"; -"6.title" = "大千配列(Microsoft 標準・王安など)"; -"62u-jY-BRh.title" = "マナーモード // 外すと入力間違の時に変な音が出る"; -"7.title" = "倚天伝統配列"; -"7fV-x8-WHQ.title" = "神通配列"; -"8.title" = "許氏国音自然配列"; -"8tT-hw-Hhr.title" = "アプリの更新通知を受く"; -"9.title" = "倚天形忘れ配列 (26キー)"; -"92.title" = "OtherViews"; -"93.title" = "12"; -"94.title" = "14"; -"95.title" = "16"; -"96.title" = "18"; -"98.title" = "24"; -"99.title" = "32"; -"9DS-Rc-TXq.title" = "アプリ表示用言語:"; -"akC-2g-ybz.title" = "簡体中国語"; -"ArK-Vk-OoT.title" = "漢字1つづつ全候補選択入力モード"; -"BDG-qU-aj6.title" = "これをチェックしないと、全ての筆画は ASCII キーネームで入力緩衝列で表示してしまうことになる。CIN ファイルの「%keyname」というところで筆画の定義はできる。"; -"BSK-bH-Gct.title" = "入力した繁体字を康熙字体と自動変換"; -"btnImportFromKimoTxt.title" = "Yahoo! KeyKey ユーザー辞書ファイルを読込"; -"cBw-gz-TXe.title" = "繁体モードだけの場合、カセットモードの漢字出力転換を"; -"cf2-se-PDO.title" = "辞書と言語モデル"; -"chkAllowBoostingSingleKanjiAsUserPhrase.title" = "マーキングモードで即排除/即最優先にできる候補の文字数の最低限は1字とする"; -"chkAlsoConfirmAssociatedCandidatesByEnter.title" = "Enter キーを連想語彙候補の確認のために使う"; -"chkAutoCorrectReadingCombination.title" = "入力中で打ち間違った発音組み合わせを自動的に訂正する"; -"chkBypassNonAppleCapsLockHandling.title" = "威注音入力アプリの内蔵CapsLock処理を不使用"; -"chkCheckAbusersOfSecureEventInputAPI.title" = "SecureEventInput API を不正利用しているバクグラウンド・プロセスを自動検知"; -"chkConsolidateContextOnCandidateSelection.title" = "候補陳列ウィンドウで候補を選ぶ時に文脈を強固する"; -"chkFetchSuggestionsFromUserOverrideModel.title" = "入力中で臨時記憶モジュールからお薦めの候補を自動的に選ぶ"; -"chkHardenVerticalPunctuations.title" = "縦書きの時に、引用符・括弧などを強制的に縦書き文字と変換する(不推奨)"; -"chkKeepReadingUponCompositionError.title" = "効かぬ音読みを BackSpace で再編集"; -"chkRespectClientAccentColor.title" = "客体アプリ・システムのアクセントカラーに準ず"; -"chkShiftEisuToggleOffTogetherWithCapsLock.title" = "「Shiftキー・JIS英数キー」による英数モードのオフ状態をCapsLockのオフ状態と同期する"; -"chkUseFixedCandidateOrderOnSelection.title" = "候補文字を固定順番で陳列する"; -"clN-4A-iec.title" = "全候補入力の場合、ハイライト候補を Space キーで確認"; -"Cp2-hn-bOq.title" = "カセットモードによる漢字出力の簡繁転換を行わずにする"; -"CVy-8U-3qQ.title" = "允许使用左侧的 Shift 键切换英数输入模式"; -"DbW-eq-ZdB.title" = "星光"; -"dIN-TZ-67g.title" = "Shift+Space で次のページ、Space で次の候補文字を"; -"E1l-m8-xgb.title" = "詳細設定"; -"ego-1f-8cO.title" = "カセットモードでの簡体繁体転換行為をご指定ください。"; -"eia-1F-Do0.title" = "入力した繁体字を日文 JIS 新字体と自動変換"; -"f2j-xD-4xK.title" = "ESC キーで入力緩衝列を消す"; -"f8i-69-zxm.title" = "変更されたユーザー辞書データを自動的に再読込"; -"fEA-Bp-Ayn.title" = "なるべく(内蔵辞書より)外部の公式辞書ファイルを利用"; -"FnD-oH-El5.title" = "言選り用キー:"; -"fQ0-Yu-pJF.title" = "カセットモードによる漢字出力の簡体繁体転換を常に行う"; -"FSG-lN-CJO.title" = "英語"; -"FVC-br-H57.title" = "候補文字そのもの"; -"GlJ-Ns-9eE.title" = "システム設定に準ずる"; -"Grn-MZ-wTg.title" = "カセットモードを起用(注音入力はこのモードで使えぬ)"; -"hcP-5k-mMw.title" = "候補陳列ウィンドウで可能な逆引参照結果を示す"; -"hSv-LJ-Cq3.title" = "僅かなる絵文字も含む符号入力サポートを起用"; -"Iai-0X-nxi.title" = "欲しがる CIN カセットファイルをご指定ください。無効なる設定は省かれる。"; -"iRg-wx-Nx2.title" = "入力候補陳列の候補文字の字号をご指定ください。"; -"iWy-Nw-QKB.title" = "Ctrl(+Option)+Command+Enter で出すのを漢語弁音と変換"; -"iyh-1K-76v.title" = "言葉置換表を起用"; -"j8q-IY-UF1.title" = "この転換はカセットモードだけに使える転換であり、転換結果はこの設定と入力モード次第である。"; -"jQC-12-UuK.ibShadowedObjectValues[0]" = "Item 1"; -"jQC-12-UuK.ibShadowedObjectValues[1]" = "Item 2"; -"jQC-12-UuK.ibShadowedObjectValues[2]" = "Item 3"; -"K8U-Oq-lFc.title" = "全ての客体アプリに英数入力モードの状態を共有"; -"kcM-O6-mLN.title" = "これで、どの客体アプリも、入力緩衝列の送り出さなかった内容を(勝手に)読み用いることは不可能になる。すなわち「吹き出し入力緩衝列ウィンドウ」の「常に出番」である。"; -"lblAcceptLeadingIntonations.title" = "まれな場合には、音調記号の優先入力を許容する"; -"lblAlwaysShowTooltipTextsHorizontally.title" = "ヒントを常に横書きにする"; -"lblBypassNonAppleCapsLockHandling.title" = "macOS 10.14 からのシステム内蔵機能としての同じ機能に影響しません。"; -"lblCheckAbusersOfSecureEventInputAPI.title" = "このような不正利用は「システム内蔵入力以外の全ての入力アプリがメニューで灰色状態で選べなくて使えない」の元凶である。センシティブな資料の記入どころでSecureEventInputをEnableSecureEventInput()で使うのは当然であるが、「入力中」状態が終わった後必ずDisableSecureEventInput()で状態解消すべきだと義務である。いくつかヘルパーアプリも、あるいはSecureEventInputを呼び起こしてからすぐ固まったアプリも、この状態になりやすい。特に、他のアプリの画面へ切り替えたとしても、固まったアプリのSecureEventInput状態は自動的に解消できぬ。"; -"lblDevZoneTitleDescription.title" = "警告:これからの新機能テストのために作ったページですから、\nここで陳列されている諸機能は予想通り動けるだと思わないでください。"; -"lblIntonationKeyBehavior.title" = "音調組立緩衝列が空かされた時の音調キーの行為をご指定ください。"; -"lblReadingNarrationCoverageDescription.title" = "音読組立緩衝列の内容の変化を朗読。該功能對磁帶模式無效。"; -"lblReadingNarrationCoverageShortTitle.title" = "音読組立の朗読:"; -"lblShiftBkspKeyBehavior.title" = "Shift+BackSpace キーの優先行為をご指定ください。"; -"lblShiftEisuToggleOffTogetherWithCapsLock.title" = "このチェックを入れると:イ)[macOS 12 以降] CapsLockがオフした時に、「Shiftキー・JIS英数キー」の共有していた内部のスイッチもオフにする;ロ)「JIS英数キー」でそのキーに応ずる英数モードがオフした時に、CapsLockもオフにする。尚、CapsLockがオンの時に、「Shiftキーだけを打った」行為は検知できません。"; -"lblUpperCaseLetterKeyBehavior.title" = "Shift+文字キーの行為をご指定ください。"; -"lDd-rN-BSM.title" = "田所候補陳列ウィンドウのマウススクロール機能を起用"; -"MKJ-Q6-dLd.title" = "「\\」・「¥」キーでも漢音キーボード符号入力"; -"N6e-bR-mVa.title" = "管理されている客体アプリには、マーキングモードの多段式太下線の描きを禁ず"; -"neb-Pz-n1h.title" = "最長可能キーができた場合、文字を組み立つ"; -"NumPadCharInputBehavior-description.title" = "テンキー文字の入力行為をご指定ください。"; -"NumPadCharInputBehavior-option-0.title" = "いつでも半角で直接出力"; -"NumPadCharInputBehavior-option-1.title" = "いつでも全角で直接出力"; -"NumPadCharInputBehavior-option-2.title" = "入力緩衝列に半角文字を挿入"; -"NumPadCharInputBehavior-option-3.title" = "入力緩衝列に全角文字を挿入"; -"NumPadCharInputBehavior-option-4.title" = "入力緩衝列がからっぽの時、半角で直接出力"; -"NumPadCharInputBehavior-option-5.title" = "入力緩衝列がからっぽの時、全角で直接出力"; -"nxP-CV-ZAu.title" = "右側の Shift キーで英数入力モードの切り替え"; -"o3r-NZ-gsU.title" = "簡体モードだけの場合、カセットモードの漢字出力転換を"; -"optReadingNarrationCoverageConfirmed.title" = "音調キーで確認するときに"; -"optReadingNarrationCoverageNothing.title" = "朗読せずに"; -"optReadingNarrationCoverageRealtime.title" = "いずれの変化が起きたときに"; -"OVR-eb-laC.title" = "一行・列組版"; -"Parser11.title" = "国音二式 (ローマ字+数字音調)"; -"Parser12.title" = "イェール弁音 (ローマ字+数字音調)"; -"Parser13.title" = "中華ローマ弁音 (ローマ字+数字音調)"; -"Parser14.title" = "汎用弁音 (ローマ字+数字音調)"; -"Pg5-G9-pY5.title" = "入力候補についての (Shift+)Space キーの輪番切替対象をご指定ください。"; -"QUQ-oY-4Hc.label" = "全般"; -"rdoIntonationKeyBehavior0.title" = "カーソルの後部の音読みの音調を上書きし、候補選択状態を戻す"; -"rdoIntonationKeyBehavior1.title" = "カーソルの後部の音読みの異なる音調だけを上書きする"; -"rdoIntonationKeyBehavior2.title" = "常に入力緩衝列に音調を入力する"; -"rdoShiftBkspKeyBehavior0.title" = "カーソルの後部の音読みを解き、その音調を除く"; -"rdoShiftBkspKeyBehavior1.title" = "Shift+Delete のように入力緩衝列を消す"; -"rdoShiftBkspKeyBehavior2.title" = "カーソルの後部の音読みを常に削除する"; -"rdoUpperCaseLetterKeyBehavior0.title" = "入力緩衝列にローマ字入力"; -"rdoUpperCaseLetterKeyBehavior1.title" = "いつでもローマ字(小文字)を直接出力"; -"rdoUpperCaseLetterKeyBehavior2.title" = "いつでもローマ字(大文字)を直接出力"; -"rdoUpperCaseLetterKeyBehavior3.title" = "入力緩衝列がからっぽの時、ローマ字(小文字)を直接出力"; -"rdoUpperCaseLetterKeyBehavior4.title" = "入力緩衝列がからっぽの時、ローマ字(大文字)を直接出力"; -"Rl7-3a-RDn.title" = "この機能の利用する NSEvent は、macOS 内蔵の入力アプリ共用モジュール「InputMethodKit」から提供した NSEvent のみであり、その NSEvent 文脈関係で「Shift キーは1回押したかどうか」と判断することはできる。この事実に疑いを持つ者は、本アプリのソースコードを審査するか、あるいは本アプリを逆向工程(分解工学, いわゆる「Reverse-Engineering」)するがよい。"; -"RQ6-MS-m4C.title" = "お好きなるキーボードとそれに相応しい注音配列をお選びください。"; -"RUG-ls-KyA.title" = "候補選択の直後、すぐカーソルを単語の向こうに推す"; -"rVQ-Hx-cGi.title" = "和語"; -"rXc-Ji-ery.title" = "カセットモードは、CIN ファイルを用いて、(五筆や倉頡や嘸蝦米などのような)筆画入力を機能拡張できるモードである。ですが、単なる予備機能として提供したもののため、使いやすいかどうか、RIME や OpenVanilla などに比べられないかもしれん。"; -"s7u-Fm-dVg.title" = "ページ"; -"shc-Nu-UsM.title" = "Caps Lock で切り替えの時に吹出通知メッセージを"; -"SzF-FL-sVO.title" = "原始キーネームでなく、筆画を入力緩衝列で表示する"; -"tglTrimUnfinishedReadingsOnCommit.title" = "送り出す緩衝列内容から未完成な音読み/筆組みを除く"; -"TKl-TY-lvN.title" = "一般設定"; -"TXr-FF-ehw.title" = "繁体中国語"; -"ueU-Rz-a1C.title" = "入力候補陳列での (Shift+)Tab キーの輪番切替対象をご指定ください。"; -"VAP-TU-eck.title" = "一部の「Web UI を用いた」客体アプリには、多段式太下線の描きをうまく取り扱えぬ支障はございます。このチェックを入れると、IME から「client().setMarkedText()」を経由して、客体に「多段式太下線を書かずに」と命令することはできます。多段式太下線はマーキングモードだけで用いるデザインですが、間違くて別のモードでもそれを書いてしまう客体アプリはございます(多分 IMKTextInput の実作の問題かもしれません)。このチェックは「文脈内入力緩衝列」だけに関わります。"; -"VdT-fw-7pQ.title" = "欠陥辿着モード"; -"vpd-zx-GIk.title" = "精業配列"; -"W24-T4-cg0.title" = "全字庫モード // 入力可能の漢字数倍増 (2024-01-15)"; -"WcE-vn-c6K.title" = "カーソル所在位置の単語の長さによって候補陳列ウィンドウの位置を調整"; -"wFR-zX-M8H.title" = "弁音合併入力(入力緩衝列で音読みを漢語弁音に)"; -"wN3-k3-b2a.title" = "欲しがるユーザー辞書保存先をご指定ください。無効の保存先設定は効かぬ。"; -"wQ9-px-b07.title" = "macOS 基礎キーボード配置をご指定ください。QWERTY 以外の英数キーボードは弁音以外の配列に不適用。弁音配列或いは「英数キーボードー配置と関わる注音配列(例えば許氏など)」を起用していない限り、キーボード配置の設定はキーボードビューアの有りようだけに影響を及ぼす。"; -"Wvt-HE-LOv.title" = "キーボード"; -"WX6-BW-JPM.title" = "このエディターの外部からの編集結果をこのエディターに自動的に読み込む"; -"xC5-yV-1W1.title" = "入力候補陳列の仕様をご指定ください。"; -"xibGeneralSettings.title" = "全般設定"; -"xibKeyboardShortcuts.title" = "ショートカット"; -"xibOutputSettings.title" = "出力設定"; -"xibUsingCurrencyNumerals.title" = "数字大字変換"; -"xibUsingHotKeyAssociates.title" = "関連語彙モード"; -"xibUsingHotKeyCassette.title" = "CIN カセットモード"; -"xibUsingHotKeyCNS.title" = "全字庫モード"; -"xibUsingHotKeyHalfWidthASCII.title" = "半角句読モード"; -"xibUsingHotKeyInputMode.title" = "簡体・繁体中国語入力の切り替え"; -"xibUsingHotKeyJIS.title" = "JIS 新字体モード"; -"xibUsingHotKeyKangXi.title" = "康熙文字変換モード"; -"xibUsingHotKeyRevLookup.title" = "注音音読逆引参照"; -"xibUsingHotKeySCPC.title" = "全候補入力モード"; -"xjP-r7-GaK.title" = "酷音大千 26 キー配列"; -"XqL-rf-X6d.title" = "Space で次のページ、Shift+Space で次の候補文字を"; -"xrE-8T-WKO.label" = "詳細"; -"ZEv-Q2-mYL.title" = "アプリ表示用言語をご指定ください、そして入力アプリは自動的に再起動。"; -"ZEv-Q2-mYN.title" = "Shiftキーによる英漢入力モード切り替え (CapsLockがONの時に効かぬ)"; diff --git a/Source/WindowNIBs/zh-Hans.lproj/frmPrefWindow.strings b/Source/WindowNIBs/zh-Hans.lproj/frmPrefWindow.strings deleted file mode 100644 index 4ff9ac28..00000000 --- a/Source/WindowNIBs/zh-Hans.lproj/frmPrefWindow.strings +++ /dev/null @@ -1,174 +0,0 @@ -"0yk-Xi-GaC.title" = "始终自动展开多行选字窗"; -"1.title" = "威注音偏好设定"; -"10.title" = "汉语拼音+数字标调"; -"100.title" = "64"; -"101.title" = "96"; -"110.title" = "敲空格键以呼出候选字窗"; -"12.title" = "基础键盘布局:"; -"126.title" = "英数键盘布局:"; -"128.title" = "OtherViews"; -"137.title" = "IBM"; -"14.title" = "用以触发选字的光标相对位置:"; -"16.title" = "光标置于词语前方 // macOS 内建注音风格"; -"17.title" = "光标置于词语后方 // Windows 微软新注音风格"; -"18.title" = "Radio"; -"1AW-xf-c2f.label" = "键盘"; -"20.title" = "Radio"; -"21.title" = "横向布局"; -"22.title" = "纵向布局"; -"24.title" = "候选字窗布局:"; -"27F-8T-FkQ.title" = "伪精业"; -"29.title" = "字型大小设定:"; -"2iG-Ic-gbl.label" = "辞典"; -"2pS-nv-te4.title" = "选择您所偏好的用来选字的按键组合。"; -"3N6-LT-HPv.title" = "针对所有客体软体启用强化型组字区安全防护"; -"5.title" = "OtherViews"; -"6.title" = "微软/大千/王安/国乔/零壹/仲鼎"; -"62u-jY-BRh.title" = "廉耻模式 // 取消勾选的话,敲错字时会有异音"; -"7.title" = "倚天传统"; -"7fV-x8-WHQ.title" = "神通"; -"8.title" = "许氏(国音&自然)"; -"8tT-hw-Hhr.title" = "自动检查软件更新"; -"9.title" = "倚天二十六键"; -"92.title" = "OtherViews"; -"93.title" = "12"; -"94.title" = "14"; -"95.title" = "16"; -"96.title" = "18"; -"98.title" = "24"; -"99.title" = "32"; -"9DS-Rc-TXq.title" = "界面语言设定:"; -"akC-2g-ybz.title" = "简体中文"; -"ArK-Vk-OoT.title" = "仿真 90 年代前期注音逐字选字输入风格"; -"BDG-qU-aj6.title" = "不启用该选项的话,在组字区内的字根将会以原始键盘按键名称来显示。所有关于字根的定义,均请洽 CIN 磁带档案内的「%keyname」章节。"; -"BSK-bH-Gct.title" = "自动将繁体中文字转换为康熙正体字"; -"btnImportFromKimoTxt.title" = "汇入奇摩输入法自订词资料库"; -"cBw-gz-TXe.title" = "仅在繁体模式转换至繁体"; -"cf2-se-PDO.title" = "辞典&語言模型"; -"chkAllowBoostingSingleKanjiAsUserPhrase.title" = "允许借由标记模式将可以就地升权/排除的候选字词的最短词长设为单个汉字"; -"chkAlsoConfirmAssociatedCandidatesByEnter.title" = "允许使用 Enter 确认当前选中的关联词语"; -"chkAutoCorrectReadingCombination.title" = "敲字时自动纠正读音组合"; -"chkBypassNonAppleCapsLockHandling.title" = "不使用威注音输入法内建的 Caps Lock 处理"; -"chkCheckAbusersOfSecureEventInputAPI.title" = "主动检测正在滥用 SecureEventInput API 的后台进程"; -"chkConsolidateContextOnCandidateSelection.title" = "在使用选字窗选字时,自动巩固上下文"; -"chkFetchSuggestionsFromUserOverrideModel.title" = "在敲字时自动套用来自半衰记忆模组的建议"; -"chkHardenVerticalPunctuations.title" = "在纵排书写时,强制转换标点为纵排形式(不推荐)"; -"chkKeepReadingUponCompositionError.title" = "允许对无效的读音使用 BackSpace 编辑"; -"chkRespectClientAccentColor.title" = "遵循客体应用或系统全局的强调色偏好设定"; -"chkShiftEisuToggleOffTogetherWithCapsLock.title" = "使「Shift 键 / JIS 英数键」英数模式的关闭状态与 Caps Lock 的关闭状态保持彼此同步"; -"chkUseFixedCandidateOrderOnSelection.title" = "以固定顺序来陈列选字窗内的候选字"; -"clN-4A-iec.title" = "在逐字选字模式当中使用空格键确认当前高亮候选字"; -"Cp2-hn-bOq.title" = "对磁带模式禁用繁简转换"; -"CVy-8U-3qQ.title" = "允许使用左侧的 Shift 键切换英数输入模式"; -"DbW-eq-ZdB.title" = "星光"; -"dIN-TZ-67g.title" = "Shift+Space 换下一页,Space 换选下一个候选字。"; -"E1l-m8-xgb.title" = "进阶设定"; -"ego-1f-8cO.title" = "请指定磁带模式下的繁简转换行为。"; -"eia-1F-Do0.title" = "自动将繁体中文字转换为日本简化字(JIS 新字体)"; -"f2j-xD-4xK.title" = "敲 ESC 键以清空整个输入缓冲区"; -"f8i-69-zxm.title" = "自动重新加载变更过的使用者资料内容"; -"fEA-Bp-Ayn.title" = "尽量使用外置原厂辞典档案"; -"FnD-oH-El5.title" = "选字键:"; -"fQ0-Yu-pJF.title" = "依当前简繁模式强制转换"; -"FSG-lN-CJO.title" = "英文"; -"FVC-br-H57.title" = "轮替候选字"; -"GlJ-Ns-9eE.title" = "自动选择"; -"Grn-MZ-wTg.title" = "启用磁带模式,会停用注音输入"; -"hcP-5k-mMw.title" = "在选字窗内显示可用的字根反查结果"; -"hSv-LJ-Cq3.title" = "启用包括少许绘文字在内的符号输入支援"; -"Iai-0X-nxi.title" = "请在此指定您想指定的 CIN 磁带档案。无效值会被忽略。"; -"iRg-wx-Nx2.title" = "变更候选字窗的字型大小。"; -"iWy-Nw-QKB.title" = "Ctrl(+Option)+Command+Enter 输出汉语拼音而非注音"; -"iyh-1K-76v.title" = "启用语汇置换表"; -"j8q-IY-UF1.title" = "该转换仅对磁带模式有影响,会将键入的内容根据该选项与当前的简繁体模式来转换。"; -"jQC-12-UuK.ibShadowedObjectValues[0]" = "Item 1"; -"jQC-12-UuK.ibShadowedObjectValues[1]" = "Item 2"; -"jQC-12-UuK.ibShadowedObjectValues[2]" = "Item 3"; -"K8U-Oq-lFc.title" = "对所有客体应用共用中英文输入切换状态"; -"kcM-O6-mLN.title" = "这会阻止任何客体擅自存取尚未递交的组字区内容。此举也会全局启用浮动组字窗。"; -"lblAcceptLeadingIntonations.title" = "在个别情况下,允许声调前置键入"; -"lblAlwaysShowTooltipTextsHorizontally.title" = "始终使用横排来显示工具提示视窗"; -"lblBypassNonAppleCapsLockHandling.title" = "这不会影响到对 macOS 10.14 开始的系统内建的同名功能。"; -"lblCheckAbusersOfSecureEventInputAPI.title" = "这种滥用会导致系统内的所有第三方输入法全都无法正常使用(在输入法选单内会变成灰色)。针对需要填写敏感数据的场合,使用 SecureEventInput 无可厚非。但是,用 EnableSecureEventInput() 开启该模式之后,就有义务在输入窗格失焦的那一刻呼叫 DisableSecureEventInput() 来结束这种状态。这种状态还常见于后台辅助 App 当中、或者某个 App 在叫出该模式之后失去响应(这样的话,哪怕被切换到后台,SecureEventInput 也不会自动解除)。"; -"lblDevZoneTitleDescription.title" = "警告:该页面仅作未来功能测试所用。\n在此列出的功能并非处于完全可用之状态。"; -"lblIntonationKeyBehavior.title" = "指定声调键(在注拼槽为「空」状态时)的行为。"; -"lblReadingNarrationCoverageDescription.title" = "这会将您的组音区的内容念出来。该功能对磁带模式无效。"; -"lblReadingNarrationCoverageShortTitle.title" = "要念读的组音区内容:"; -"lblShiftBkspKeyBehavior.title" = "指定 Shift+BackSpace 组合键率先尝试的行为。"; -"lblShiftEisuToggleOffTogetherWithCapsLock.title" = "勾选该选项后:1) [至少 macOS 12 起] Caps Lock 在关掉的时候,会连带关掉由 Shift 键 / JIS 英数键负责控制的英数模式;2) 在借由 JIS 英数键关掉其控制的英数模式的时候,也会关掉 Caps Lock。注:威注音无法在 Caps Lock 亮灯的时候感知 Shift 键的单独敲击事件。"; -"lblUpperCaseLetterKeyBehavior.title" = "指定 Shift+字母键 的行为。"; -"lDd-rN-BSM.title" = "启用田所选字窗的滑鼠滚动支援"; -"MKJ-Q6-dLd.title" = "亦使用「\\」或「¥」键启用汉音键盘符号模式"; -"N6e-bR-mVa.title" = "针对被管理的客体,在标记模式下禁用分段式粗型下划线"; -"neb-Pz-n1h.title" = "在已经敲出最长可能码的时候自动组字"; -"NumPadCharInputBehavior-description.title" = "指定数字小键盘的输入行为。"; -"NumPadCharInputBehavior-option-0.title" = "始终以半形文字直接递交"; -"NumPadCharInputBehavior-option-1.title" = "始终以全形文字直接递交"; -"NumPadCharInputBehavior-option-2.title" = "以半形文字插入组字区"; -"NumPadCharInputBehavior-option-3.title" = "以全形文字插入组字区"; -"NumPadCharInputBehavior-option-4.title" = "直接递交半形文字,除非组字区不为空"; -"NumPadCharInputBehavior-option-5.title" = "直接递交全形文字,除非组字区不为空"; -"nxP-CV-ZAu.title" = "允许使用右侧的 Shift 键切换英数输入模式"; -"o3r-NZ-gsU.title" = "仅在简体模式转换至简体"; -"optReadingNarrationCoverageConfirmed.title" = "仅在用声调键确认时"; -"optReadingNarrationCoverageNothing.title" = "不念读"; -"optReadingNarrationCoverageRealtime.title" = "实时念读组音区的任何变化"; -"OVR-eb-laC.title" = "单行/列布局"; -"Parser11.title" = "国音二式+数字标调"; -"Parser12.title" = "耶鲁拼音+数字标调"; -"Parser13.title" = "华罗拼音+数字标调"; -"Parser14.title" = "通用拼音+数字标调"; -"Pg5-G9-pY5.title" = "指定 (Shift+)Space 热键对候选字词而言的轮替操作对象。"; -"QUQ-oY-4Hc.label" = "一般"; -"rdoIntonationKeyBehavior0.title" = "尝试对游标正后方的字音覆写声调,且重设其选字状态"; -"rdoIntonationKeyBehavior1.title" = "仅在键入的声调与游标正后方的字音不同时,尝试覆写"; -"rdoIntonationKeyBehavior2.title" = "始终在内文组字区内键入声调符号"; -"rdoShiftBkspKeyBehavior0.title" = "析构游标正后方的字音,且剔除其声调"; -"rdoShiftBkspKeyBehavior1.title" = "像 Shift+Delete 那样清空当前组字区的内容"; -"rdoShiftBkspKeyBehavior2.title" = "始终剔除游标正后方的字音"; -"rdoUpperCaseLetterKeyBehavior0.title" = "直接键入内文组字区"; -"rdoUpperCaseLetterKeyBehavior1.title" = "始终直接递交小写字母"; -"rdoUpperCaseLetterKeyBehavior2.title" = "始终直接递交大写字母"; -"rdoUpperCaseLetterKeyBehavior3.title" = "直接递交小写字母,除非组字区不为空"; -"rdoUpperCaseLetterKeyBehavior4.title" = "直接递交大写字母,除非组字区不为空"; -"Rl7-3a-RDn.title" = "该功能只需要对借由 macOS 内建的输入法框架传来的 NSEvent 做上下文分析,自然没有「向使用者寻求系统全局键盘事件监听权限」之必要。您可自行审视敝输入法的原始程式码仓库、或对敝输入法逆向工程,以自行证实此处所言之真假。"; -"RQ6-MS-m4C.title" = "选择您所偏好的系统键盘布局与注音分析器排列。"; -"RUG-ls-KyA.title" = "在选字后将光标置于该字词的前方"; -"rVQ-Hx-cGi.title" = "和语"; -"rXc-Ji-ery.title" = "磁带模式类似于雅虎奇摩输入法的 CIN 支援模式,允许使用者借由 CIN 表格档案扩充自己想要的笔画输入法(比如五笔、仓颉、呒虾米,等)。然而,因为威注音不打算为了这个功能而牺牲注音输入的体验,所以这个磁带模式的体验对于已经习惯 RIME 或者 OpenVanilla 的人群而言可能会稍微麻烦一些。"; -"s7u-Fm-dVg.title" = "轮替页面"; -"shc-Nu-UsM.title" = "以 Caps Lock 切换输入法/中英模式时显示通知"; -"SzF-FL-sVO.title" = "在组字区内显示字根、而非原始键盘码"; -"tglTrimUnfinishedReadingsOnCommit.title" = "在递交时清理未完成拼写的读音或字根"; -"TKl-TY-lvN.title" = "一般设定"; -"TXr-FF-ehw.title" = "繁体中文"; -"ueU-Rz-a1C.title" = "指定 (Shift+)Tab 热键在选字窗内的轮替操作对象。"; -"VAP-TU-eck.title" = "部分采用 Web 前端介面设计的客体应用可能会无法正常绘制用于输入法标记模式的分段式粗型下划线。这个选项将会阻止输入法借由 client().setMarkedText() 函式向客体应用传达对粗型下划线的分段绘制请求。分段式粗型下划线仅用于输入法的标记模式,除非客体应用对 setMarkedText() 这个 IMKTextInput 协定方法的实作有问题。该选项仅影响内文组字区。"; -"VdT-fw-7pQ.title" = "侦错模式"; -"vpd-zx-GIk.title" = "精业"; -"W24-T4-cg0.title" = "启用 CNS11643 全字库支援 (2024-01-15)"; -"WcE-vn-c6K.title" = "根据当前位置的字词长度,自动调整选字窗的位置"; -"wFR-zX-M8H.title" = "拼音并击(组字区内显示汉语拼音)"; -"wN3-k3-b2a.title" = "请在此指定您想指定的使用者语汇档案目录。无效值会被忽略。"; -"wQ9-px-b07.title" = "请选择 macOS 基础键盘布局。QWERTY 以外的英数布局是为了拼音排列的使用者而准备的。如果当前的普通话/国音分析器并未设为拼音、或者并未设定成任何受西文键盘布局影响的注音排列(比如倚天 26 键排列、许氏排列,等)的话,则键盘布局选项仅会影响到荧幕键盘。"; -"Wvt-HE-LOv.title" = "键盘布局"; -"WX6-BW-JPM.title" = "仅限该编辑器:自动读入来自该编辑器外部的档案内容修改"; -"xC5-yV-1W1.title" = "选择您所偏好的候选字窗布局。"; -"xibGeneralSettings.title" = "一般设定"; -"xibKeyboardShortcuts.title" = "键盘热键"; -"xibOutputSettings.title" = "输出设定"; -"xibUsingCurrencyNumerals.title" = "大写汉字数字输出"; -"xibUsingHotKeyAssociates.title" = "关联词语模式"; -"xibUsingHotKeyCassette.title" = "CIN 磁带模式"; -"xibUsingHotKeyCNS.title" = "全字库模式"; -"xibUsingHotKeyHalfWidthASCII.title" = "半形标点模式"; -"xibUsingHotKeyInputMode.title" = "简体/繁体中文输入模式切换"; -"xibUsingHotKeyJIS.title" = "JIS 新字体模式"; -"xibUsingHotKeyKangXi.title" = "康熙正体字模式"; -"xibUsingHotKeyRevLookup.title" = "注音反查"; -"xibUsingHotKeySCPC.title" = "模拟逐字选字输入"; -"xjP-r7-GaK.title" = "酷音大千二十六键"; -"XqL-rf-X6d.title" = "Space 换下一页,Shift+Space 换选下一个候选字。"; -"xrE-8T-WKO.label" = "进阶"; -"ZEv-Q2-mYL.title" = "变更使用者界面语言,会自动重新启动输入法。"; -"ZEv-Q2-mYN.title" = "基于 Shift 键的中英文输入模式切换 (CapsLock 灯亮时无效)"; diff --git a/Source/WindowNIBs/zh-Hant.lproj/frmPrefWindow.strings b/Source/WindowNIBs/zh-Hant.lproj/frmPrefWindow.strings deleted file mode 100644 index ea957b49..00000000 --- a/Source/WindowNIBs/zh-Hant.lproj/frmPrefWindow.strings +++ /dev/null @@ -1,174 +0,0 @@ -"0yk-Xi-GaC.title" = "始終自動展開多行選字窗"; -"1.title" = "威注音偏好設定"; -"10.title" = "漢語拼音+數字標調"; -"100.title" = "64"; -"101.title" = "96"; -"110.title" = "敲空格鍵以呼出候選字窗"; -"12.title" = "注音排列:"; -"126.title" = "基礎鍵盤佈局:"; -"128.title" = "OtherViews"; -"137.title" = "IBM"; -"14.title" = "用以觸發選字的游標相對位置:"; -"16.title" = "游標置於詞語前方 // macOS 內建注音風格"; -"17.title" = "游標置於詞語後方 // Windows 微軟新注音風格"; -"18.title" = "Radio"; -"1AW-xf-c2f.label" = "鍵盤"; -"20.title" = "Radio"; -"21.title" = "橫向佈局"; -"22.title" = "縱向佈局"; -"24.title" = "候選字窗佈局:"; -"27F-8T-FkQ.title" = "偽精業"; -"29.title" = "字型大小設定:"; -"2iG-Ic-gbl.label" = "辭典"; -"2pS-nv-te4.title" = "選擇您所偏好的用來選字的按鍵組合。"; -"3N6-LT-HPv.title" = "針對所有客體軟體啟用強化型組字區安全防護"; -"5.title" = "OtherViews"; -"6.title" = "微軟/大千/王安/國喬/零壹/仲鼎"; -"62u-jY-BRh.title" = "廉恥模式 // 取消勾選的話,敲錯字時會有異音"; -"7.title" = "倚天傳統"; -"7fV-x8-WHQ.title" = "神通"; -"8.title" = "許氏(國音&自然)"; -"8tT-hw-Hhr.title" = "自動檢查軟體更新"; -"9.title" = "倚天二十六鍵"; -"92.title" = "OtherViews"; -"93.title" = "12"; -"94.title" = "14"; -"95.title" = "16"; -"96.title" = "18"; -"98.title" = "24"; -"99.title" = "32"; -"9DS-Rc-TXq.title" = "介面語言設定:"; -"akC-2g-ybz.title" = "簡體中文"; -"ArK-Vk-OoT.title" = "模擬 90 年代前期注音逐字選字輸入風格"; -"BDG-qU-aj6.title" = "不啟用該選項的話,在組字區內的字根將會以原始鍵盤按鍵名稱來顯示。所有關於字根的定義,均請洽 CIN 磁帶檔案內的「%keyname」章節。"; -"BSK-bH-Gct.title" = "自動將繁體中文字轉換為康熙正體字"; -"btnImportFromKimoTxt.title" = "匯入奇摩輸入法自訂詞資料庫"; -"cBw-gz-TXe.title" = "僅在繁體模式轉換至繁體"; -"cf2-se-PDO.title" = "辭典&語言模型"; -"chkAllowBoostingSingleKanjiAsUserPhrase.title" = "允許藉由標記模式將可以就地升權/排除的候選字詞的最短詞長設為單個漢字"; -"chkAlsoConfirmAssociatedCandidatesByEnter.title" = "允許使用 Enter 確認當前選中的關聯詞語"; -"chkAutoCorrectReadingCombination.title" = "敲字時自動糾正讀音組合"; -"chkBypassNonAppleCapsLockHandling.title" = "不使用威注音輸入法內建的 Caps Lock 處理"; -"chkCheckAbusersOfSecureEventInputAPI.title" = "主動偵測正在濫用 SecureEventInput API 的後檯執行緒"; -"chkConsolidateContextOnCandidateSelection.title" = "在使用選字窗選字時,自動鞏固上下文"; -"chkFetchSuggestionsFromUserOverrideModel.title" = "在敲字時自動套用來自半衰記憶模組的建議"; -"chkHardenVerticalPunctuations.title" = "在縱排書寫時,強制轉換標點為縱排形式(不推薦)"; -"chkKeepReadingUponCompositionError.title" = "允許對無效的讀音使用 BackSpace 編輯"; -"chkRespectClientAccentColor.title" = "遵循客體應用或系統全局的強調色偏好設定"; -"chkShiftEisuToggleOffTogetherWithCapsLock.title" = "使「Shift 鍵 / JIS 英数鍵」英數模式的關閉狀態與 Caps Lock 的關閉狀態保持彼此同步"; -"chkUseFixedCandidateOrderOnSelection.title" = "以固定順序來陳列選字窗內的候選字"; -"clN-4A-iec.title" = "在逐字選字模式當中使用空格鍵確認當前高亮候選字"; -"Cp2-hn-bOq.title" = "對磁帶模式禁用繁簡轉換"; -"CVy-8U-3qQ.title" = "允許使用左側的 Shift 鍵切換英數輸入模式"; -"DbW-eq-ZdB.title" = "星光"; -"dIN-TZ-67g.title" = "Shift+Space 換下一頁,Space 換選下一個候選字"; -"E1l-m8-xgb.title" = "進階設定"; -"ego-1f-8cO.title" = "請指定磁帶模式下的繁簡轉換行為。"; -"eia-1F-Do0.title" = "自動將繁體中文字轉換為日本簡化字(JIS 新字體)"; -"f2j-xD-4xK.title" = "敲 ESC 鍵以清空整個輸入緩衝區"; -"f8i-69-zxm.title" = "自動重新載入變更過的使用者資料內容"; -"fEA-Bp-Ayn.title" = "盡量使用外置原廠辭典檔案"; -"FnD-oH-El5.title" = "選字鍵:"; -"fQ0-Yu-pJF.title" = "依當前簡繁模式強制轉換"; -"FSG-lN-CJO.title" = "英文"; -"FVC-br-H57.title" = "輪替候選字"; -"GlJ-Ns-9eE.title" = "自動選擇"; -"Grn-MZ-wTg.title" = "啟用磁帶模式,會停用注音輸入"; -"hcP-5k-mMw.title" = "在選字窗內顯示可用的字根反查結果"; -"hSv-LJ-Cq3.title" = "啟用包括少許繪文字在內的符號輸入支援"; -"Iai-0X-nxi.title" = "請在此指定您想指定的 CIN 磁帶檔案。無效值會被忽略。"; -"iRg-wx-Nx2.title" = "變更候選字窗的字型大小。"; -"iWy-Nw-QKB.title" = "Ctrl(+Option)+Command+Enter 輸出漢語拼音而非注音"; -"iyh-1K-76v.title" = "啟用語彙置換表"; -"j8q-IY-UF1.title" = "該轉換僅對磁帶模式有影響,會將鍵入的內容根據該選項與當前的簡繁體模式來轉換。"; -"jQC-12-UuK.ibShadowedObjectValues[0]" = "Item 1"; -"jQC-12-UuK.ibShadowedObjectValues[1]" = "Item 2"; -"jQC-12-UuK.ibShadowedObjectValues[2]" = "Item 3"; -"K8U-Oq-lFc.title" = "對所有客體應用共用中英文輸入切換狀態"; -"kcM-O6-mLN.title" = "這會阻止任何客體擅自存取尚未遞交的組字區內容。此舉也會全局啟用浮動組字窗。"; -"lblAcceptLeadingIntonations.title" = "在個別情況下,允許聲調前置鍵入"; -"lblAlwaysShowTooltipTextsHorizontally.title" = "始終使用橫排來顯示工具提示視窗"; -"lblBypassNonAppleCapsLockHandling.title" = "這不會影響到對 macOS 10.14 開始的系統內建的同名功能。"; -"lblCheckAbusersOfSecureEventInputAPI.title" = "這種濫用會導致系統內的所有第三方輸入法全都無法正常使用(在輸入法選單內會變成灰色)。針對需要填寫敏感資料的場合,使用 SecureEventInput 無可厚非。但是,用 EnableSecureEventInput() 開啟該模式之後,就有義務在輸入窗格失焦的那一刻呼叫 DisableSecureEventInput() 來結束這種狀態。這種狀態還常見於後檯輔助 App 當中、或者某個 App 在叫出該模式之後失去回應(這樣的話,哪怕被切換到後檯,SecureEventInput 也不會自動解除)。"; -"lblDevZoneTitleDescription.title" = "警告:該頁面僅作未來功能測試所用。\n在此列出的功能並非處於完全可用之狀態。"; -"lblIntonationKeyBehavior.title" = "指定聲調鍵(在注拼槽為「空」狀態時)的行為。"; -"lblReadingNarrationCoverageDescription.title" = "這會將您的組音區的內容念出來。該功能對磁帶模式無效。"; -"lblReadingNarrationCoverageShortTitle.title" = "要唸讀的組音區內容:"; -"lblShiftBkspKeyBehavior.title" = "指定 Shift+BackSpace 組合鍵率先嘗試的行為。"; -"lblShiftEisuToggleOffTogetherWithCapsLock.title" = "勾選該選項後:1) [至少 macOS 12 起] Caps Lock 在關掉的時候,會連帶關掉由 Shift 鍵 / JIS 英數鍵負責控制的英數模式;2) 在藉由 JIS 英數鍵關掉其控制的英數模式的時候,也會關掉 Caps Lock。註:威注音無法在 Caps Lock 亮燈的時候感知 Shift 鍵的單獨敲擊事件。"; -"lblUpperCaseLetterKeyBehavior.title" = "指定 Shift+字母鍵 的行為。"; -"lDd-rN-BSM.title" = "啟用田所選字窗的滑鼠滾動支援"; -"MKJ-Q6-dLd.title" = "亦使用「\\」或「¥」鍵啟用漢音鍵盤符號模式"; -"N6e-bR-mVa.title" = "針對被管理的客體,在標記模式下禁用分段式粗型下劃線"; -"neb-Pz-n1h.title" = "在已經敲出最長可能碼的時候自動組字"; -"NumPadCharInputBehavior-description.title" = "指定數字小鍵盤的輸入行為。"; -"NumPadCharInputBehavior-option-0.title" = "始終以半形文字直接遞交"; -"NumPadCharInputBehavior-option-1.title" = "始終以全形文字直接遞交"; -"NumPadCharInputBehavior-option-2.title" = "以半形文字插入組字區"; -"NumPadCharInputBehavior-option-3.title" = "以全形文字插入組字區"; -"NumPadCharInputBehavior-option-4.title" = "直接遞交半形文字,除非組字區不為空"; -"NumPadCharInputBehavior-option-5.title" = "直接遞交全形文字,除非組字區不為空"; -"nxP-CV-ZAu.title" = "允許使用右側的 Shift 鍵切換英數輸入模式"; -"o3r-NZ-gsU.title" = "僅在簡體模式轉換至簡體"; -"optReadingNarrationCoverageConfirmed.title" = "僅在用聲調鍵確認時"; -"optReadingNarrationCoverageNothing.title" = "不唸讀"; -"optReadingNarrationCoverageRealtime.title" = "實時唸讀組音區的任何變化"; -"OVR-eb-laC.title" = "單行/列佈局"; -"Parser11.title" = "國音二式+數字標調"; -"Parser12.title" = "耶魯拼音+數字標調"; -"Parser13.title" = "華羅拼音+數字標調"; -"Parser14.title" = "通用拼音+數字標調"; -"Pg5-G9-pY5.title" = "指定 (Shift+)Space 熱鍵對候選字詞而言的輪替操作對象。"; -"QUQ-oY-4Hc.label" = "一般"; -"rdoIntonationKeyBehavior0.title" = "嘗試對游標正後方的字音覆寫聲調,且重設其選字狀態"; -"rdoIntonationKeyBehavior1.title" = "僅在鍵入的聲調與游標正後方的字音不同時,嘗試覆寫"; -"rdoIntonationKeyBehavior2.title" = "始終在內文組字區內鍵入聲調符號"; -"rdoShiftBkspKeyBehavior0.title" = "析構游標正後方的字音,且剔除其聲調"; -"rdoShiftBkspKeyBehavior1.title" = "像 Shift+Delete 那樣清空當前組字區的內容"; -"rdoShiftBkspKeyBehavior2.title" = "始終剔除游標正後方的字音"; -"rdoUpperCaseLetterKeyBehavior0.title" = "直接鍵入內文組字區"; -"rdoUpperCaseLetterKeyBehavior1.title" = "始終直接遞交小寫字母"; -"rdoUpperCaseLetterKeyBehavior2.title" = "始終直接遞交大寫字母"; -"rdoUpperCaseLetterKeyBehavior3.title" = "直接遞交小寫字母,除非組字區不為空"; -"rdoUpperCaseLetterKeyBehavior4.title" = "直接遞交大寫字母,除非組字區不為空"; -"Rl7-3a-RDn.title" = "該功能只需要對藉由 macOS 內建的輸入法框架傳來的 NSEvent 做上下文分析,自然沒有「向使用者尋求系統全局鍵盤事件監聽權限」之必要。您可自行審視敝輸入法的原始程式碼倉庫、或對敝輸入法逆向工程,以自行證實此處所言之真假。"; -"RQ6-MS-m4C.title" = "選擇您所偏好的系統鍵盤佈局與注音分析器排列。"; -"RUG-ls-KyA.title" = "在選字後將游標置於該字詞的前方"; -"rVQ-Hx-cGi.title" = "和語"; -"rXc-Ji-ery.title" = "磁帶模式類似於雅虎奇摩輸入法的 CIN 支援模式,允許使用者藉由 CIN 表格檔案擴充自己想要的筆畫輸入法(比如五筆、倉頡、嘸蝦米,等)。然而,因為威注音不打算為了這個功能而犧牲注音輸入的體驗,所以這個磁帶模式的體驗對於已經習慣 RIME 或者 OpenVanilla 的人群而言可能會稍微麻煩一些。"; -"s7u-Fm-dVg.title" = "輪替頁面"; -"shc-Nu-UsM.title" = "以 Caps Lock 切換輸入法/中英模式時顯示通知"; -"SzF-FL-sVO.title" = "在組字區內顯示字根、而非原始鍵盤碼"; -"tglTrimUnfinishedReadingsOnCommit.title" = "在遞交時清理未完成拼寫的讀音或字根"; -"TKl-TY-lvN.title" = "一般設定"; -"TXr-FF-ehw.title" = "繁體中文"; -"ueU-Rz-a1C.title" = "指定 (Shift+)Tab 熱鍵在選字窗內的輪替操作對象。"; -"VAP-TU-eck.title" = "部分採用 Web 前端介面設計的客體應用可能會無法正常繪製用於輸入法標記模式的分段式粗型下劃線。這個選項將會阻止輸入法藉由 client().setMarkedText() 函式向客體應用傳達對粗型下劃線的分段繪製請求。分段式粗型下劃線僅用於輸入法的標記模式,除非客體應用對 setMarkedText() 這個 IMKTextInput 協定方法的實作有問題。該選項僅影響內文組字區。"; -"VdT-fw-7pQ.title" = "偵錯模式"; -"vpd-zx-GIk.title" = "精業"; -"W24-T4-cg0.title" = "啟用 CNS11643 全字庫支援 (2024-01-15)"; -"WcE-vn-c6K.title" = "根據當前位置的字詞長度,自動調整選字窗的位置"; -"wFR-zX-M8H.title" = "拼音並擊(組字區內顯示漢語拼音)"; -"wN3-k3-b2a.title" = "請在此指定您想指定的使用者語彙檔案目錄。無效值會被忽略。"; -"wQ9-px-b07.title" = "請選擇 macOS 基礎鍵盤佈局。QWERTY 以外的英數佈局是為了拼音排列的使用者而準備的。如果當前的普通話/國音分析器並未設為拼音、或者並未設定成任何受西文鍵盤佈局影響的注音排列(比如倚天 26 鍵排列、許氏排列,等)的話,則鍵盤佈局選項僅會影響到螢幕鍵盤。"; -"Wvt-HE-LOv.title" = "鍵盤佈局"; -"WX6-BW-JPM.title" = "僅限該編輯器:自動讀入來自該編輯器外部的檔案內容修改"; -"xC5-yV-1W1.title" = "選擇您所偏好的候選字窗佈局。"; -"xibGeneralSettings.title" = "一般設定"; -"xibKeyboardShortcuts.title" = "鍵盤熱鍵"; -"xibOutputSettings.title" = "輸出設定"; -"xibUsingCurrencyNumerals.title" = "大寫漢字數字輸出"; -"xibUsingHotKeyAssociates.title" = "關聯詞語模式"; -"xibUsingHotKeyCassette.title" = "CIN 磁帶模式"; -"xibUsingHotKeyCNS.title" = "全字庫模式"; -"xibUsingHotKeyHalfWidthASCII.title" = "半形標點模式"; -"xibUsingHotKeyInputMode.title" = "簡體/繁體中文輸入模式切換"; -"xibUsingHotKeyJIS.title" = "JIS 新字體模式"; -"xibUsingHotKeyKangXi.title" = "康熙正體字模式"; -"xibUsingHotKeyRevLookup.title" = "注音反查"; -"xibUsingHotKeySCPC.title" = "模擬逐字選字輸入"; -"xjP-r7-GaK.title" = "酷音大千二十六鍵"; -"XqL-rf-X6d.title" = "Space 換下一頁,Shift+Space 換選下一個候選字"; -"xrE-8T-WKO.label" = "進階"; -"ZEv-Q2-mYL.title" = "變更使用者介面語言,會自動重新啟動輸入法。"; -"ZEv-Q2-mYN.title" = "基於 Shift 鍵的中英文輸入模式切換 (CapsLock 燈亮時無效)"; diff --git a/vChewing.xcodeproj/project.pbxproj b/vChewing.xcodeproj/project.pbxproj index acbaa9f4..eeb0a0a1 100644 --- a/vChewing.xcodeproj/project.pbxproj +++ b/vChewing.xcodeproj/project.pbxproj @@ -20,7 +20,6 @@ 5B70F4EB2A0BE900005EA8C4 /* MenuIcon-SCVIM@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 5B70F4E72A0BE900005EA8C4 /* MenuIcon-SCVIM@2x.png */; }; 5B70F4EC2A0BE900005EA8C4 /* MenuIcon-TCVIM@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 5B70F4E82A0BE900005EA8C4 /* MenuIcon-TCVIM@2x.png */; }; 5B765F09293A253C00122315 /* PhraseEditorUI in Frameworks */ = {isa = PBXBuildFile; productRef = 5B765F08293A253C00122315 /* PhraseEditorUI */; }; - 5B7BC4B027AFFBE800F66C24 /* frmPrefWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B7BC4AE27AFFBE800F66C24 /* frmPrefWindow.xib */; }; 5B7DA80328BF6BC600D7B2AD /* fixinstall.sh in Resources */ = {isa = PBXBuildFile; fileRef = 5B7DA80228BF6BBA00D7B2AD /* fixinstall.sh */; }; 5B963C9D28D5BFB800DCEE88 /* CocoaExtension in Frameworks */ = {isa = PBXBuildFile; productRef = 5B963C9C28D5BFB800DCEE88 /* CocoaExtension */; }; 5B963CA328D5C23600DCEE88 /* SwiftExtension in Frameworks */ = {isa = PBXBuildFile; productRef = 5B963CA228D5C23600DCEE88 /* SwiftExtension */; }; @@ -39,7 +38,6 @@ 5BC5E01E28DDE4770094E427 /* NotifierUI in Frameworks */ = {isa = PBXBuildFile; productRef = 5BC5E01D28DDE4770094E427 /* NotifierUI */; }; 5BC5E02128DDEFE00094E427 /* TooltipUI in Frameworks */ = {isa = PBXBuildFile; productRef = 5BC5E02028DDEFE00094E427 /* TooltipUI */; }; 5BC5E02428DE07860094E427 /* PopupCompositionBuffer in Frameworks */ = {isa = PBXBuildFile; productRef = 5BC5E02328DE07860094E427 /* PopupCompositionBuffer */; }; - 5BCC631629407BBB00A2D84F /* CtlPrefWindow_PhraseEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BCC631529407BBB00A2D84F /* CtlPrefWindow_PhraseEditor.swift */; }; 5BDB7A3928D4824A001AC277 /* BookmarkManager in Frameworks */ = {isa = PBXBuildFile; productRef = 5BDB7A3828D4824A001AC277 /* BookmarkManager */; }; 5BDB7A3B28D4824A001AC277 /* FolderMonitor in Frameworks */ = {isa = PBXBuildFile; productRef = 5BDB7A3A28D4824A001AC277 /* FolderMonitor */; }; 5BDB7A3D28D4824A001AC277 /* Hotenka in Frameworks */ = {isa = PBXBuildFile; productRef = 5BDB7A3C28D4824A001AC277 /* Hotenka */; }; @@ -70,7 +68,6 @@ 6ACA420215FC1E5200935EF6 /* vChewing.app in Resources */ = {isa = PBXBuildFile; fileRef = 6A0D4EA215FC0D2D00ABF4B3 /* vChewing.app */; }; D427F76C278CA2B0004A2160 /* AppDelegateImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = D427F76B278CA1BA004A2160 /* AppDelegateImpl.swift */; }; D47B92C027972AD100458394 /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = D47B92BF27972AC800458394 /* main.swift */; }; - D47F7DCE278BFB57002F9DD7 /* CtlPrefWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = D47F7DCD278BFB57002F9DD7 /* CtlPrefWindow.swift */; }; D4E33D8A27A838CF006DB1CF /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = D4E33D8827A838CF006DB1CF /* Localizable.strings */; }; D4E33D8F27A838F0006DB1CF /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = D4E33D8D27A838F0006DB1CF /* InfoPlist.strings */; }; /* End PBXBuildFile section */ @@ -103,12 +100,10 @@ 5B04305427B529D800CB65BC /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.strings"; sourceTree = ""; }; 5B04305627B529D800CB65BC /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/InfoPlist.strings"; sourceTree = ""; }; 5B04305727B529D800CB65BC /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.strings"; sourceTree = ""; }; - 5B04305927B529D800CB65BC /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = ja.lproj/frmPrefWindow.strings; sourceTree = ""; }; 5B04305E27B5312E00CB65BC /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/InfoPlist.strings; sourceTree = ""; }; 5B04305F27B5312E00CB65BC /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Localizable.strings; sourceTree = ""; }; 5B04306127B5312E00CB65BC /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/InfoPlist.strings; sourceTree = ""; }; 5B04306227B5312E00CB65BC /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Localizable.strings; sourceTree = ""; }; - 5B04306427B5312E00CB65BC /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = "zh-Hans.lproj/frmPrefWindow.strings"; sourceTree = ""; }; 5B05A47B27AFF7CA00437698 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 5B05A47C27AFF7CF00437698 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; }; 5B09307728B6FC3B0021F8C5 /* zh-Hant */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; lineEnding = 0; name = "zh-Hant"; path = "zh-Hant.lproj/shortcuts.html"; sourceTree = ""; }; @@ -138,8 +133,6 @@ 5B70F4E72A0BE900005EA8C4 /* MenuIcon-SCVIM@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "MenuIcon-SCVIM@2x.png"; sourceTree = ""; }; 5B70F4E82A0BE900005EA8C4 /* MenuIcon-TCVIM@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "MenuIcon-TCVIM@2x.png"; sourceTree = ""; }; 5B765F07293A250000122315 /* vChewing_PhraseEditorUI */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = vChewing_PhraseEditorUI; path = Packages/vChewing_PhraseEditorUI; sourceTree = ""; }; - 5B7BC4AF27AFFBE800F66C24 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/frmPrefWindow.xib; sourceTree = ""; }; - 5B7BC4B227AFFC0B00F66C24 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/frmPrefWindow.strings; sourceTree = ""; }; 5B7DA80228BF6BBA00D7B2AD /* fixinstall.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; lineEnding = 0; path = fixinstall.sh; sourceTree = ""; }; 5B963C9B28D5BE4100DCEE88 /* vChewing_CocoaExtension */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = vChewing_CocoaExtension; path = Packages/vChewing_CocoaExtension; sourceTree = ""; }; 5B963C9E28D5C14600DCEE88 /* vChewing_Shared */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = vChewing_Shared; path = Packages/vChewing_Shared; sourceTree = ""; }; @@ -160,7 +153,6 @@ 5BC5E01C28DDE4270094E427 /* vChewing_NotifierUI */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = vChewing_NotifierUI; path = Packages/vChewing_NotifierUI; sourceTree = ""; }; 5BC5E01F28DDEFD80094E427 /* vChewing_TooltipUI */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = vChewing_TooltipUI; path = Packages/vChewing_TooltipUI; sourceTree = ""; }; 5BC5E02228DE07250094E427 /* vChewing_PopupCompositionBuffer */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = vChewing_PopupCompositionBuffer; path = Packages/vChewing_PopupCompositionBuffer; sourceTree = ""; }; - 5BCC631529407BBB00A2D84F /* CtlPrefWindow_PhraseEditor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CtlPrefWindow_PhraseEditor.swift; sourceTree = ""; }; 5BDB7A3028D47587001AC277 /* Jad_BookmarkManager */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = Jad_BookmarkManager; path = Packages/Jad_BookmarkManager; sourceTree = ""; }; 5BDB7A3128D47587001AC277 /* DanielGalasko_FolderMonitor */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = DanielGalasko_FolderMonitor; path = Packages/DanielGalasko_FolderMonitor; sourceTree = ""; }; 5BDB7A3228D47587001AC277 /* vChewing_Hotenka */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = vChewing_Hotenka; path = Packages/vChewing_Hotenka; sourceTree = ""; }; @@ -168,7 +160,6 @@ 5BDB7A3428D47587001AC277 /* Qwertyyb_ShiftKeyUpChecker */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = Qwertyyb_ShiftKeyUpChecker; path = Packages/Qwertyyb_ShiftKeyUpChecker; sourceTree = ""; }; 5BDB7A3528D47587001AC277 /* RMJay_LineReader */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = RMJay_LineReader; path = Packages/RMJay_LineReader; sourceTree = ""; }; 5BDB7A3628D47587001AC277 /* vChewing_Tekkon */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = vChewing_Tekkon; path = Packages/vChewing_Tekkon; sourceTree = ""; }; - 5BDCBB4527B4F6C600D0CC59 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/frmPrefWindow.strings"; sourceTree = ""; }; 5BDCBB4727B4F6C600D0CC59 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/InfoPlist.strings"; sourceTree = ""; }; 5BDCBB4827B4F6C600D0CC59 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/Localizable.strings"; sourceTree = ""; }; 5BDCBB4927B4F6C700D0CC59 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/InfoPlist.strings"; sourceTree = ""; }; @@ -200,7 +191,6 @@ 6ACA41F215FC1D9000935EF6 /* Installer-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "Installer-Info.plist"; path = "Installer/Installer-Info.plist"; sourceTree = SOURCE_ROOT; }; D427F76B278CA1BA004A2160 /* AppDelegateImpl.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; fileEncoding = 4; indentWidth = 2; lineEnding = 0; path = AppDelegateImpl.swift; sourceTree = ""; tabWidth = 2; usesTabs = 0; }; D47B92BF27972AC800458394 /* main.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; fileEncoding = 4; indentWidth = 2; lineEnding = 0; path = main.swift; sourceTree = ""; tabWidth = 2; usesTabs = 0; }; - D47F7DCD278BFB57002F9DD7 /* CtlPrefWindow.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; fileEncoding = 4; indentWidth = 2; lineEnding = 0; path = CtlPrefWindow.swift; sourceTree = ""; tabWidth = 2; usesTabs = 0; }; D4E33D8927A838CF006DB1CF /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Base; path = Base.lproj/Localizable.strings; sourceTree = ""; }; D4E33D8E27A838F0006DB1CF /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Base; path = Base.lproj/InfoPlist.strings; sourceTree = ""; }; /* End PBXFileReference section */ @@ -304,8 +294,6 @@ isa = PBXGroup; children = ( 5B0EF55E28CDBF8E00F8F7CE /* CtlClientListMgr.swift */, - D47F7DCD278BFB57002F9DD7 /* CtlPrefWindow.swift */, - 5BCC631529407BBB00A2D84F /* CtlPrefWindow_PhraseEditor.swift */, 5B30BF272944867800BD87A9 /* CtlRevLookupWindow.swift */, ); path = WindowControllers; @@ -315,7 +303,6 @@ isa = PBXGroup; children = ( 5B0EF55C28CDBF7100F8F7CE /* frmClientListMgr.xib */, - 5B7BC4AE27AFFBE800F66C24 /* frmPrefWindow.xib */, 6A187E2816004C5900466B2E /* MainMenu.xib */, ); path = WindowNIBs; @@ -625,7 +612,6 @@ 5BF9DA2B28840E6200DBD48E /* template-userphrases.txt in Resources */, 5BF9DA2728840E6200DBD48E /* template-usersymbolphrases.txt in Resources */, 5BBC2DA128F51C0400C986F6 /* LICENSE-CHS.txt in Resources */, - 5B7BC4B027AFFBE800F66C24 /* frmPrefWindow.xib in Resources */, 5BF9DA2A28840E6200DBD48E /* template-replacements.txt in Resources */, 6A187E2616004C5900466B2E /* MainMenu.xib in Resources */, 5BBBB75F27AED54C0023B93A /* Beep.m4a in Resources */, @@ -742,9 +728,7 @@ D427F76C278CA2B0004A2160 /* AppDelegateImpl.swift in Sources */, D47B92C027972AD100458394 /* main.swift in Sources */, 5B0EF55F28CDBF8E00F8F7CE /* CtlClientListMgr.swift in Sources */, - D47F7DCE278BFB57002F9DD7 /* CtlPrefWindow.swift in Sources */, 5B30BF282944867800BD87A9 /* CtlRevLookupWindow.swift in Sources */, - 5BCC631629407BBB00A2D84F /* CtlPrefWindow_PhraseEditor.swift in Sources */, 5BB802DA27FABA8300CF1C19 /* SessionCtl_Menu.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -783,18 +767,6 @@ name = shortcuts.html; sourceTree = ""; }; - 5B7BC4AE27AFFBE800F66C24 /* frmPrefWindow.xib */ = { - isa = PBXVariantGroup; - children = ( - 5B7BC4AF27AFFBE800F66C24 /* Base */, - 5B7BC4B227AFFC0B00F66C24 /* en */, - 5BDCBB4527B4F6C600D0CC59 /* zh-Hant */, - 5B04305927B529D800CB65BC /* zh-Hans */, - 5B04306427B5312E00CB65BC /* ja */, - ); - name = frmPrefWindow.xib; - sourceTree = ""; - }; 6A187E2816004C5900466B2E /* MainMenu.xib */ = { isa = PBXVariantGroup; children = (