SettingsCocoa // Add file drag receiver button for Kimo Data import.
This commit is contained in:
parent
54f61a28b1
commit
71e34790e8
|
@ -439,3 +439,58 @@ public extension NSMenuItem {
|
|||
return self
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - NSFileDragRetrieverButton
|
||||
|
||||
@objcMembers public class NSFileDragRetrieverButton: NSButton {
|
||||
public var postDragHandler: ((URL) -> Void) = { url in
|
||||
NSSound.beep()
|
||||
print(url.description)
|
||||
}
|
||||
|
||||
var allowedTypes: [String] = ["txt"]
|
||||
|
||||
public init() {
|
||||
super.init(frame: .zero)
|
||||
bezelStyle = .rounded
|
||||
title = "DRAG FILE TO HERE"
|
||||
registerForDraggedTypes([.init(rawValue: kUTTypeFileURL as String)])
|
||||
target = self
|
||||
}
|
||||
|
||||
required init?(coder: NSCoder) {
|
||||
super.init(coder: coder)
|
||||
}
|
||||
|
||||
override public func draggingEntered(_ sender: NSDraggingInfo) -> NSDragOperation {
|
||||
checkExtension(sender) ? .copy : NSDragOperation()
|
||||
}
|
||||
|
||||
fileprivate func checkExtension(_ drag: NSDraggingInfo) -> Bool {
|
||||
guard let pasteboard = drag.draggingPasteboard.propertyList(
|
||||
forType: NSPasteboard.PasteboardType(rawValue: "NSFilenamesPboardType")
|
||||
) as? [String], let path = pasteboard.first else {
|
||||
return false
|
||||
}
|
||||
|
||||
let suffix = URL(fileURLWithPath: path).pathExtension
|
||||
for ext in allowedTypes {
|
||||
if ext.lowercased() == suffix {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
override public func performDragOperation(_ sender: NSDraggingInfo) -> Bool {
|
||||
guard let pasteboard = sender.draggingPasteboard.propertyList(
|
||||
forType: NSPasteboard.PasteboardType(rawValue: "NSFilenamesPboardType")
|
||||
) as? [String], let path = pasteboard.first else {
|
||||
print("failure")
|
||||
return false
|
||||
}
|
||||
|
||||
postDragHandler(URL(fileURLWithPath: path))
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
|
||||
import AppKit
|
||||
import BookmarkManager
|
||||
import CocoaExtension
|
||||
import Foundation
|
||||
import Shared
|
||||
|
||||
|
@ -16,6 +17,7 @@ public extension SettingsPanesCocoa {
|
|||
let windowWidth: CGFloat = 577
|
||||
let contentWidth: CGFloat = 512
|
||||
let pctUserDictionaryFolder: NSPathControl = .init()
|
||||
let dragRetrieverKimo: NSFileDragRetrieverButton = .init()
|
||||
|
||||
override public func loadView() {
|
||||
prepareUserDictionaryFolderPathControl(pctUserDictionaryFolder)
|
||||
|
@ -63,17 +65,27 @@ public extension SettingsPanesCocoa {
|
|||
NSStackView.build(.horizontal) {
|
||||
"i18n:settings.importFromKimoTxt.buttonText".makeNSLabel(fixWidth: contentWidth)
|
||||
NSView()
|
||||
NSButton(
|
||||
verbatim: "...",
|
||||
target: self,
|
||||
action: #selector(importYahooKeyKeyUserDictionaryData(_:))
|
||||
)
|
||||
importKimoDragButton()
|
||||
}
|
||||
}?.boxed()
|
||||
NSView().makeSimpleConstraint(.height, relation: .equal, value: NSFont.systemFontSize)
|
||||
}
|
||||
}
|
||||
|
||||
func importKimoDragButton() -> NSFileDragRetrieverButton {
|
||||
dragRetrieverKimo.postDragHandler = { url in
|
||||
guard var rawString = try? String(contentsOf: url) else { return }
|
||||
let count = LMMgr.importYahooKeyKeyUserDictionary(text: &rawString)
|
||||
CtlSettingsCocoa.shared?.window.callAlert(
|
||||
title: String(format: "i18n:settings.importFromKimoTxt.finishedCount:%@".localized, count.description)
|
||||
)
|
||||
}
|
||||
dragRetrieverKimo.title = "i18n:kimoImportButton.DragFileToHere".localized
|
||||
dragRetrieverKimo.target = self
|
||||
dragRetrieverKimo.action = #selector(importYahooKeyKeyUserDictionaryData(_:))
|
||||
return dragRetrieverKimo
|
||||
}
|
||||
|
||||
func pathControlMainView() -> NSView? {
|
||||
NSStackView.build(.horizontal) {
|
||||
self.pctUserDictionaryFolder
|
||||
|
@ -123,6 +135,10 @@ public extension SettingsPanesCocoa {
|
|||
}
|
||||
|
||||
@IBAction func importYahooKeyKeyUserDictionaryData(_: NSButton) {
|
||||
guard #available(macOS 10.13, *) else {
|
||||
SettingsPanesCocoa.warnAboutComDlg32Inavailability()
|
||||
return
|
||||
}
|
||||
let dlgOpenFile = NSOpenPanel()
|
||||
dlgOpenFile.title = NSLocalizedString(
|
||||
"i18n:settings.importFromKimoTxt.buttonText", comment: ""
|
||||
|
|
|
@ -153,7 +153,6 @@
|
|||
"Emulating select-candidate-per-character mode" = "Emulating select-candidate-per-character mode";
|
||||
"en" = "English";
|
||||
"Enable cassette mode, suppressing phonabet input" = "Enable cassette mode, suppressing phonabet input";
|
||||
"i18n:UserDef.kCNS11643Enabled.shortTitle" = "Enable CNS11643 Support (2024-01-23)";
|
||||
"Enable experimental Swift UI typesetting method" = "Enable experimental Swift UI typesetting method";
|
||||
"Enable mouse wheel support for Tadokoro Candidate Window" = "Enable mouse wheel support for Tadokoro Candidate Window";
|
||||
"Enable phrase replacement table" = "Enable phrase replacement table";
|
||||
|
@ -196,6 +195,7 @@
|
|||
"i18n:aboutWindow.OK_BUTTON" = "I Accept";
|
||||
"i18n:aboutWindow.WEBSITE_BUTTON" = "Website";
|
||||
"i18n:CandidateKey.ValidationError.AssignedForOtherPurposes" = "Candidates cannot have those keys who are assigned for other purposes.";
|
||||
"i18n:kimoImportButton.DragFileToHere" = "DRAG FILE TO HERE";
|
||||
"i18n:securityAgentHelper.warningMessage.footer" = "When this message shows up, vChewing has already attempted to call DisableSecureEventInput() trying to make itself selectable in the input method menu again. Your suggested further steps:\n\n0. Keep a screenshot of this dialog (if you don't have one) for further purposes.\n\n1. If vChewing is still not selectable in the input method menu, you are suggested to manually terminate the processes listed above to force-release their SecureEventInput states. This will make vChewing available immediately.\n\n2. If the process belongs to an app from Mac App Store, please report its abuse of SecureEventInput to Apple. Apple may take actions to such apps if necessary, including pulling them off from the Mac App Store until the problem gets solved by the developers of such apps.\n\n3. Whether this process is from Mac App Store or not, you report this abuse to the related app vendor / developer. You may give them the screenshot of this alert message since it should have enough information to help the vendor / developer troubleshoot the issue.";
|
||||
"i18n:securityAgentHelper.warningMessage.header" = "vChewing has detected that the following background processes are abusing the SecureEventInput, hindering all 3rd-party input methods from being able to switch to.\n\nIt 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.\n\nThe found processes are:";
|
||||
"i18n:securityAgentHelper.warningMessage.title" = "SecureEventInput Abuse Detected";
|
||||
|
@ -206,6 +206,7 @@
|
|||
"i18n:UserDef.kBypassNonAppleCapsLockHandling.shortTitle" = "Bypass the vChewing built-in Caps Lock handling";
|
||||
"i18n:userdef.kCheckAbusersOfSecureEventInputAPI.description" = "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.";
|
||||
"i18n:UserDef.kCheckAbusersOfSecureEventInputAPI.shortTitle" = "Actively check those processes abusing the SecureEventInput API";
|
||||
"i18n:UserDef.kCNS11643Enabled.shortTitle" = "Enable CNS11643 Support (2024-01-23)";
|
||||
"i18n:UserDef.kDodgeInvalidEdgeCandidateCursorPosition.shortTitle" = "Dodge Invalid Edge Candidate Cursor Position";
|
||||
"i18n:UserDef.kNumPadCharInputBehavior.description" = "Choose the behavior of numeric pad inputs.";
|
||||
"i18n:UserDef.kNumPadCharInputBehavior.option.0" = "Always directly commit half-width chars";
|
||||
|
|
|
@ -153,7 +153,6 @@
|
|||
"Emulating select-candidate-per-character mode" = "漢字1つづつ全候補選択入力モード";
|
||||
"en" = "英語";
|
||||
"Enable cassette mode, suppressing phonabet input" = "カセットモードを起用(注音入力はこのモードで使えぬ)";
|
||||
"i18n:UserDef.kCNS11643Enabled.shortTitle" = "全字庫モード // 入力可能な漢字数を倍増す (2024-01-23)";
|
||||
"Enable experimental Swift UI typesetting method" = "Swift UI 組版方法を起用する";
|
||||
"Enable mouse wheel support for Tadokoro Candidate Window" = "田所候補陳列ウィンドウのマウススクロール機能を起用";
|
||||
"Enable phrase replacement table" = "言葉置換表を起用";
|
||||
|
@ -196,6 +195,7 @@
|
|||
"i18n:aboutWindow.OK_BUTTON" = "うむ";
|
||||
"i18n:aboutWindow.WEBSITE_BUTTON" = "公式HP";
|
||||
"i18n:CandidateKey.ValidationError.AssignedForOtherPurposes" = "他の用途に指定したキーは言選りには使えません。";
|
||||
"i18n:kimoImportButton.DragFileToHere" = "ここにドラッグして";
|
||||
"i18n:securityAgentHelper.warningMessage.footer" = "このメッセージが出た時に、威注音がすでに「DisableSecureEventInput()」を実行してみました。これで入力ソースメニューで威注音は利用できる状態になったかもしれませんが、下記のステップはおすすめです:\n\nイ)今のこのメッセージの画面のスクリーンショットを撮って置いてください。後ほど使えます。\n\nロ)もし、今でも入力ソースメニューで威注音は利用できぬ状態でしたら、上記のプロセスを(強制)中止してください。そうすれば、それぞれのSecureEventInput状態は解消できて、入力ソースメニューで威注音はすぐ利用できることになります。\n\nハ)もし、該当プロセスは Mac App Store のアプリからのものでしたら、該当アプリを Apple 社にご通報ください。状況と必要性次第、該当アプリは Mac App Store からしばらく取り下がて、支障解決まで Mac App Store 提供中止になるかもしれません。\n\nニ)該当プロセスは Mac App Store からダウンロードしたものか否か、それぞれの開発元にこの支障をご通報ください。今のこのメッセージの画面のスクリーンショットを該当開発元に送れば、必要なる情報は該当開発元に全部お知らせすることができます。";
|
||||
"i18n:securityAgentHelper.warningMessage.header" = "威注音入力アプリ(略称「威注音」)は「他のバックグラウンド・プロセスがSecureEventInputを正しく利用していない」と検出しました。このような不正利用は「システム内蔵入力以外の全ての入力アプリがメニューで灰色状態で選べなくて使えない」の元凶です。\n\nセンシティブな資料の記入どころでSecureEventInputをEnableSecureEventInput()で使うのは当然ですが、「入力中」状態が終わった後必ずDisableSecureEventInput()で状態解消すべきだと義務です。いくつかヘルパーアプリも、あるいはSecureEventInputを呼び起こしてからすぐ固まったアプリも、この状態になりやすいです。特に、他のアプリの画面へ切り替えたとしても、固まったアプリのSecureEventInput状態は自動的に解消できません。\n\n検出した該当プロセスは:";
|
||||
"i18n:securityAgentHelper.warningMessage.title" = "SecureEventInput の不正利用が検出";
|
||||
|
@ -206,6 +206,7 @@
|
|||
"i18n:UserDef.kBypassNonAppleCapsLockHandling.shortTitle" = "威注音入力アプリの内蔵CapsLock処理を不使用";
|
||||
"i18n:userdef.kCheckAbusersOfSecureEventInputAPI.description" = "このような不正利用は「システム内蔵入力以外の全ての入力アプリがメニューで灰色状態で選べなくて使えない」の元凶である。センシティブな資料の記入どころでSecureEventInputをEnableSecureEventInput()で使うのは当然であるが、「入力中」状態が終わった後必ずDisableSecureEventInput()で状態解消すべきだと義務である。いくつかヘルパーアプリも、あるいはSecureEventInputを呼び起こしてからすぐ固まったアプリも、この状態になりやすい。特に、他のアプリの画面へ切り替えたとしても、固まったアプリのSecureEventInput状態は自動的に解消できぬ。";
|
||||
"i18n:UserDef.kCheckAbusersOfSecureEventInputAPI.shortTitle" = "SecureEventInput API を不正利用しているバクグラウンド・プロセスを自動検知";
|
||||
"i18n:UserDef.kCNS11643Enabled.shortTitle" = "全字庫モード // 入力可能な漢字数を倍増す (2024-01-23)";
|
||||
"i18n:UserDef.kDodgeInvalidEdgeCandidateCursorPosition.shortTitle" = "端末での不合理的な候補選択用カーソル位置を是正";
|
||||
"i18n:UserDef.kNumPadCharInputBehavior.description" = "テンキー文字の入力行為をご指定ください。";
|
||||
"i18n:UserDef.kNumPadCharInputBehavior.option.0" = "いつでも半角で直接出力";
|
||||
|
@ -281,7 +282,7 @@
|
|||
"Phrase" = "語彙";
|
||||
"Please check the permission at \"%@\"." = "「%@」に書き出す権限は不足らしい。";
|
||||
"Please drag the apps into the Client Manager window from Finder." = "Finder からアプリをこのウィンドウに直接にドラッグしてください。";
|
||||
"Please drag the desired target from Finder to this place." = "ご指定したいものは直接に Finder からこの辺にお引きずりを。";
|
||||
"Please drag the desired target from Finder to this place." = "ご指定したいものは直接に Finder からこの辺にドラッグを。";
|
||||
"Please enter the client app bundle identifier(s) you want to register." = "登録したい客体アプリの唯一識別子(Bundle Identifier)をご入力ください。";
|
||||
"Please manage the list of those clients here which are: 1) IMKTextInput-incompatible; 2) suspected from abusing the contents of the inline composition buffer. A client listed here, if checked, will use popup composition buffer with maximum 20 reading counts holdable." = "下記の客体アプリはここでご登録を:1)IMKTextInput 議定規約に反するもの;2)文脈内入力緩衝列の内容の不正利用容疑のあるもの。「登録済みのアプリ」にチェックを入れると、「吹き出し入力緩衝列ウィンドウ」と「緩衝列容量制限」を起用し、容量制限は最大限音読み20箇とする。";
|
||||
"Please manually enter the identifier(s)." = "ご自分で唯一識別子(Bundle Identifier)のご入力を。";
|
||||
|
|
|
@ -153,7 +153,6 @@
|
|||
"Emulating select-candidate-per-character mode" = "模拟 90 年代前期注音逐字选字输入风格";
|
||||
"en" = "英文";
|
||||
"Enable cassette mode, suppressing phonabet input" = "启用磁带模式,会停用注音输入";
|
||||
"i18n:UserDef.kCNS11643Enabled.shortTitle" = "启用 CNS11643 全字库支援 (2024-01-23)";
|
||||
"Enable experimental Swift UI typesetting method" = "使用 Swift UI 介面排版方法";
|
||||
"Enable mouse wheel support for Tadokoro Candidate Window" = "启用田所选字窗的滑鼠滚动支援";
|
||||
"Enable phrase replacement table" = "启用语汇置换表";
|
||||
|
@ -196,6 +195,7 @@
|
|||
"i18n:aboutWindow.OK_BUTTON" = "确定";
|
||||
"i18n:aboutWindow.WEBSITE_BUTTON" = "网站";
|
||||
"i18n:CandidateKey.ValidationError.AssignedForOtherPurposes" = "无法将已挪作他用的按键设为选字键。";
|
||||
"i18n:kimoImportButton.DragFileToHere" = "请将档案拽到这边";
|
||||
"i18n:securityAgentHelper.warningMessage.footer" = "当这则讯息呈现出来的时候,威注音已经尝试呼叫 `DisableSecureEventInput()` 来试图解除这个状态。以下是威注音建议您采取的行动:\n\n0. 将这则讯息视窗留一份屏幕撷图、以备接下来的需要。\n\n1. 如果输入法选单内的威注音仍旧处于无法选取的状态(下文简称「灰色不可用状态」),则请考虑结束上述进程、以迫使其释放各自的 SecureEventInput 状态。这将立刻解除威注音的灰色不可用状态。\n\n2. 如果该进程所属的 App 来自于 Mac App Store 的话,请向 Apple 检举其对 SecureEventInput 的滥用。Apple 会在必要的情况下对这类 App 采取措施,比如:临时下架,直至软件开发者解决相关故障。\n\n3. 无论该进程是否来自于 Mac App Store,也都请您向相关的开发者/提供方提报该故障。您可以将这则讯息的屏幕撷图给他们看,因为里面已经包含了用以检测该故障的必要资讯。";
|
||||
"i18n:securityAgentHelper.warningMessage.header" = "威注音有检测到下述后台进程有在滥用 SecureEventInput。这种滥用会导致系统内的所有第三方输入法全都无法正常使用(在输入法选单内会变成灰色)。\n\n针对需要填写敏感数据的场合,使用 SecureEventInput 无可厚非。但是,用 EnableSecureEventInput() 开启该模式之后,就有义务在输入窗格失焦的那一刻呼叫 DisableSecureEventInput() 来结束这种状态。这种状态还常见于后台辅助 App 当中、或者某个 App 在叫出该模式之后失去响应(这样的话,哪怕被切换到后台,SecureEventInput 也不会自动解除)。\n\n被侦测到的进程如下:";
|
||||
"i18n:securityAgentHelper.warningMessage.title" = "检测到对 SecureEventInput 的滥用行为";
|
||||
|
@ -206,6 +206,7 @@
|
|||
"i18n:UserDef.kBypassNonAppleCapsLockHandling.shortTitle" = "不使用威注音输入法内建的 Caps Lock 处理";
|
||||
"i18n:userdef.kCheckAbusersOfSecureEventInputAPI.description" = "这种滥用会导致系统内的所有第三方输入法全都无法正常使用(在输入法选单内会变成灰色)。针对需要填写敏感数据的场合,使用 SecureEventInput 无可厚非。但是,用 EnableSecureEventInput() 开启该模式之后,就有义务在输入窗格失焦的那一刻呼叫 DisableSecureEventInput() 来结束这种状态。这种状态还常见于后台辅助 App 当中、或者某个 App 在叫出该模式之后失去响应(这样的话,哪怕被切换到后台,SecureEventInput 也不会自动解除)。";
|
||||
"i18n:UserDef.kCheckAbusersOfSecureEventInputAPI.shortTitle" = "主动检测正在滥用 SecureEventInput API 的后台进程";
|
||||
"i18n:UserDef.kCNS11643Enabled.shortTitle" = "启用 CNS11643 全字库支援 (2024-01-23)";
|
||||
"i18n:UserDef.kDodgeInvalidEdgeCandidateCursorPosition.shortTitle" = "糾正不合理的端点选字游标位置";
|
||||
"i18n:UserDef.kNumPadCharInputBehavior.description" = "指定数字小键盘的输入行为。";
|
||||
"i18n:UserDef.kNumPadCharInputBehavior.option.0" = "始终以半形文字直接递交";
|
||||
|
|
|
@ -153,7 +153,6 @@
|
|||
"Emulating select-candidate-per-character mode" = "模擬 90 年代前期注音逐字選字輸入風格";
|
||||
"en" = "英文";
|
||||
"Enable cassette mode, suppressing phonabet input" = "啟用磁帶模式,會停用注音輸入";
|
||||
"i18n:UserDef.kCNS11643Enabled.shortTitle" = "啟用 CNS11643 全字庫支援 (2024-01-23)";
|
||||
"Enable experimental Swift UI typesetting method" = "使用 Swift UI 介面排版方法";
|
||||
"Enable mouse wheel support for Tadokoro Candidate Window" = "啟用田所選字窗的滑鼠滾動支援";
|
||||
"Enable phrase replacement table" = "啟用語彙置換表";
|
||||
|
@ -196,6 +195,7 @@
|
|||
"i18n:aboutWindow.OK_BUTTON" = "確定";
|
||||
"i18n:aboutWindow.WEBSITE_BUTTON" = "網站";
|
||||
"i18n:CandidateKey.ValidationError.AssignedForOtherPurposes" = "無法將已挪作他用的按鍵設為選字鍵。";
|
||||
"i18n:kimoImportButton.DragFileToHere" = "請將檔案拽到這邊";
|
||||
"i18n:securityAgentHelper.warningMessage.footer" = "當這則訊息呈現出來的時候,威注音已經嘗試呼叫 `DisableSecureEventInput()` 來試圖解除這個狀態。以下是威注音建議您採取的行動:\n\n0. 將這則訊息視窗留一份螢幕擷圖、以備接下來的需要。\n\n1. 如果輸入法選單內的威注音仍舊處於無法選取的狀態(下文簡稱「灰色不可用狀態」),則請考慮結束上述執行緒、以迫使其釋放各自的 SecureEventInput 狀態。這將立刻解除威注音的灰色不可用狀態。\n\n2. 如果該執行緒所屬的 App 來自於 Mac App Store 的話,請向 Apple 檢舉其對 SecureEventInput 的濫用。Apple 會在必要的情況下對這類 App 採取措施,比如:臨時下架,直至軟體研發方解決相關故障。\n\n3. 無論該執行緒是否來自於 Mac App Store,也都請您向相關的研發方/提供方提報該故障。您可以將這則訊息的螢幕擷圖給他們看,因為裡面已經包含了用以偵測該故障的必要資訊。";
|
||||
"i18n:securityAgentHelper.warningMessage.header" = "威注音有偵測到下述後檯執行緒有在濫用 SecureEventInput。這種濫用會導致系統內的所有第三方輸入法全都無法正常使用(在輸入法選單內會變成灰色)。\n\n針對需要填寫敏感資料的場合,使用 SecureEventInput 無可厚非。但是,用 EnableSecureEventInput() 開啟該模式之後,就有義務在輸入窗格失焦的那一刻呼叫 DisableSecureEventInput() 來結束這種狀態。這種狀態還常見於後檯輔助 App 當中、或者某個 App 在叫出該模式之後失去回應(這樣的話,哪怕被切換到後檯,SecureEventInput 也不會自動解除)。\n\n被偵測到的執行緒如下:";
|
||||
"i18n:securityAgentHelper.warningMessage.title" = "偵測到對 SecureEventInput 的濫用行為";
|
||||
|
@ -206,6 +206,7 @@
|
|||
"i18n:UserDef.kBypassNonAppleCapsLockHandling.shortTitle" = "不使用威注音輸入法內建的 Caps Lock 處理";
|
||||
"i18n:userdef.kCheckAbusersOfSecureEventInputAPI.description" = "這種濫用會導致系統內的所有第三方輸入法全都無法正常使用(在輸入法選單內會變成灰色)。針對需要填寫敏感資料的場合,使用 SecureEventInput 無可厚非。但是,用 EnableSecureEventInput() 開啟該模式之後,就有義務在輸入窗格失焦的那一刻呼叫 DisableSecureEventInput() 來結束這種狀態。這種狀態還常見於後檯輔助 App 當中、或者某個 App 在叫出該模式之後失去回應(這樣的話,哪怕被切換到後檯,SecureEventInput 也不會自動解除)。";
|
||||
"i18n:UserDef.kCheckAbusersOfSecureEventInputAPI.shortTitle" = "主動偵測正在濫用 SecureEventInput API 的後檯執行緒";
|
||||
"i18n:UserDef.kCNS11643Enabled.shortTitle" = "啟用 CNS11643 全字庫支援 (2024-01-23)";
|
||||
"i18n:UserDef.kDodgeInvalidEdgeCandidateCursorPosition.shortTitle" = "糾正不合理的端點選字游標位置";
|
||||
"i18n:UserDef.kNumPadCharInputBehavior.description" = "指定數字小鍵盤的輸入行為。";
|
||||
"i18n:UserDef.kNumPadCharInputBehavior.option.0" = "始終以半形文字直接遞交";
|
||||
|
|
Loading…
Reference in New Issue