2.8.5 SP2 // Bug fixes. Merge PR#168 from upd/2.8.5sp2

This commit is contained in:
ShikiSuen 2022-10-03 14:52:39 +08:00 committed by GitHub
commit e9ec97269d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 151 additions and 65 deletions

View File

@ -184,7 +184,6 @@ public class CandidatePool {
var indexSpecified = indexSpecified var indexSpecified = indexSpecified
highlightedIndex = indexSpecified highlightedIndex = indexSpecified
if !(0..<candidateDataAll.count).contains(highlightedIndex) { if !(0..<candidateDataAll.count).contains(highlightedIndex) {
NSSound.beep()
switch highlightedIndex { switch highlightedIndex {
case candidateDataAll.count...: case candidateDataAll.count...:
currentRowNumber = candidateRows.count - 1 currentRowNumber = candidateRows.count - 1
@ -218,7 +217,6 @@ public class CandidatePool {
var indexSpecified = indexSpecified var indexSpecified = indexSpecified
highlightedIndex = indexSpecified highlightedIndex = indexSpecified
if !(0..<candidateDataAll.count).contains(highlightedIndex) { if !(0..<candidateDataAll.count).contains(highlightedIndex) {
NSSound.beep()
switch highlightedIndex { switch highlightedIndex {
case candidateDataAll.count...: case candidateDataAll.count...:
currentColumnNumber = candidateColumns.count - 1 currentColumnNumber = candidateColumns.count - 1

View File

@ -89,6 +89,12 @@ public class CtlCandidateTDK: CtlCandidate {
} }
@discardableResult override public func showNextPage() -> Bool { @discardableResult override public func showNextPage() -> Bool {
if (currentLayout == .horizontal && thePoolHorizontal.currentRowNumber == thePoolHorizontal.candidateRows.count - 1)
|| (currentLayout == .vertical
&& thePoolVertical.currentColumnNumber == thePoolVertical.candidateColumns.count - 1)
{
return highlightNextCandidate()
}
switch currentLayout { switch currentLayout {
case .horizontal: case .horizontal:
for _ in 0..<thePoolHorizontal.maximumRowsPerPage { for _ in 0..<thePoolHorizontal.maximumRowsPerPage {
@ -105,7 +111,31 @@ public class CtlCandidateTDK: CtlCandidate {
return true return true
} }
@discardableResult override public func showNextLine() -> Bool {
if (currentLayout == .horizontal && thePoolHorizontal.currentRowNumber == thePoolHorizontal.candidateRows.count - 1)
|| (currentLayout == .vertical
&& thePoolVertical.currentColumnNumber == thePoolVertical.candidateColumns.count - 1)
{
return highlightNextCandidate()
}
switch currentLayout {
case .horizontal:
thePoolHorizontal.selectNewNeighborRow(direction: .down)
case .vertical:
thePoolVertical.selectNewNeighborColumn(direction: .right)
@unknown default:
return false
}
updateDisplay()
return true
}
@discardableResult override public func showPreviousPage() -> Bool { @discardableResult override public func showPreviousPage() -> Bool {
if (currentLayout == .horizontal && thePoolHorizontal.currentRowNumber == 0)
|| (currentLayout == .vertical && thePoolVertical.currentColumnNumber == 0)
{
return highlightPreviousCandidate()
}
switch currentLayout { switch currentLayout {
case .horizontal: case .horizontal:
for _ in 0..<thePoolHorizontal.maximumRowsPerPage { for _ in 0..<thePoolHorizontal.maximumRowsPerPage {
@ -122,20 +152,12 @@ public class CtlCandidateTDK: CtlCandidate {
return true return true
} }
@discardableResult override public func showNextLine() -> Bool {
switch currentLayout {
case .horizontal:
thePoolHorizontal.selectNewNeighborRow(direction: .down)
case .vertical:
thePoolVertical.selectNewNeighborColumn(direction: .right)
@unknown default:
return false
}
updateDisplay()
return true
}
@discardableResult override public func showPreviousLine() -> Bool { @discardableResult override public func showPreviousLine() -> Bool {
if (currentLayout == .horizontal && thePoolHorizontal.currentRowNumber == 0)
|| (currentLayout == .vertical && thePoolVertical.currentColumnNumber == 0)
{
return highlightPreviousCandidate()
}
switch currentLayout { switch currentLayout {
case .horizontal: case .horizontal:
thePoolHorizontal.selectNewNeighborRow(direction: .up) thePoolHorizontal.selectNewNeighborRow(direction: .up)
@ -151,8 +173,18 @@ public class CtlCandidateTDK: CtlCandidate {
@discardableResult override public func highlightNextCandidate() -> Bool { @discardableResult override public func highlightNextCandidate() -> Bool {
switch currentLayout { switch currentLayout {
case .horizontal: case .horizontal:
if thePoolHorizontal.highlightedIndex == thePoolHorizontal.candidateDataAll.count - 1 {
thePoolHorizontal.highlightHorizontal(at: 0)
delegate?.buzz()
break
}
thePoolHorizontal.highlightHorizontal(at: thePoolHorizontal.highlightedIndex + 1) thePoolHorizontal.highlightHorizontal(at: thePoolHorizontal.highlightedIndex + 1)
case .vertical: case .vertical:
if thePoolVertical.highlightedIndex == thePoolVertical.candidateDataAll.count - 1 {
thePoolVertical.highlightVertical(at: 0)
delegate?.buzz()
break
}
thePoolVertical.highlightVertical(at: thePoolVertical.highlightedIndex + 1) thePoolVertical.highlightVertical(at: thePoolVertical.highlightedIndex + 1)
@unknown default: @unknown default:
return false return false
@ -164,8 +196,18 @@ public class CtlCandidateTDK: CtlCandidate {
@discardableResult override public func highlightPreviousCandidate() -> Bool { @discardableResult override public func highlightPreviousCandidate() -> Bool {
switch currentLayout { switch currentLayout {
case .horizontal: case .horizontal:
if thePoolHorizontal.highlightedIndex == 0 {
thePoolHorizontal.highlightHorizontal(at: thePoolHorizontal.candidateDataAll.count - 1)
delegate?.buzz()
break
}
thePoolHorizontal.highlightHorizontal(at: thePoolHorizontal.highlightedIndex - 1) thePoolHorizontal.highlightHorizontal(at: thePoolHorizontal.highlightedIndex - 1)
case .vertical: case .vertical:
if thePoolVertical.highlightedIndex == 0 {
thePoolVertical.highlightVertical(at: thePoolVertical.candidateDataAll.count - 1)
delegate?.buzz()
break
}
thePoolVertical.highlightVertical(at: thePoolVertical.highlightedIndex - 1) thePoolVertical.highlightVertical(at: thePoolVertical.highlightedIndex - 1)
@unknown default: @unknown default:
return false return false
@ -179,11 +221,11 @@ public class CtlCandidateTDK: CtlCandidate {
case .horizontal: case .horizontal:
let currentRow = thePoolHorizontal.candidateRows[thePoolHorizontal.currentRowNumber] let currentRow = thePoolHorizontal.candidateRows[thePoolHorizontal.currentRowNumber]
let actualID = max(0, min(id, currentRow.count - 1)) let actualID = max(0, min(id, currentRow.count - 1))
return thePoolHorizontal.candidateRows[thePoolHorizontal.currentRowNumber][actualID].index return currentRow[actualID].index
case .vertical: case .vertical:
let currentColumn = thePoolVertical.candidateColumns[thePoolVertical.currentColumnNumber] let currentColumn = thePoolVertical.candidateColumns[thePoolVertical.currentColumnNumber]
let actualID = max(0, min(id, currentColumn.count - 1)) let actualID = max(0, min(id, currentColumn.count - 1))
return thePoolVertical.candidateColumns[thePoolVertical.currentColumnNumber][actualID].index return currentColumn[actualID].index
@unknown default: @unknown default:
return 0 return 0
} }

View File

@ -154,10 +154,13 @@ extension vChewingLM.LMUserOverride {
// MARK: - Hash and Dehash the entire UOM data, etc. // MARK: - Hash and Dehash the entire UOM data, etc.
extension vChewingLM.LMUserOverride { extension vChewingLM.LMUserOverride {
public func bleachSpecifiedSuggestions(target: String, saveCallback: @escaping () -> Void) { public func bleachSpecifiedSuggestions(targets: [String], saveCallback: @escaping () -> Void) {
if targets.isEmpty { return }
for neta in mutLRUMap { for neta in mutLRUMap {
if neta.value.observation.overrides.keys.contains(target) { for target in targets {
mutLRUMap.removeValue(forKey: neta.key) if neta.value.observation.overrides.keys.contains(target) {
mutLRUMap.removeValue(forKey: neta.key)
}
} }
} }
resetMRUList() resetMRUList()

View File

@ -91,6 +91,12 @@ public class CtlCandidateTDKBackports: CtlCandidate {
} }
@discardableResult override public func showNextPage() -> Bool { @discardableResult override public func showNextPage() -> Bool {
if (currentLayout == .horizontal && thePoolHorizontal.currentRowNumber == thePoolHorizontal.candidateRows.count - 1)
|| (currentLayout == .vertical
&& thePoolVertical.currentColumnNumber == thePoolVertical.candidateColumns.count - 1)
{
return highlightNextCandidate()
}
switch currentLayout { switch currentLayout {
case .horizontal: case .horizontal:
for _ in 0..<thePoolHorizontal.maximumRowsPerPage { for _ in 0..<thePoolHorizontal.maximumRowsPerPage {
@ -107,7 +113,31 @@ public class CtlCandidateTDKBackports: CtlCandidate {
return true return true
} }
@discardableResult override public func showNextLine() -> Bool {
if (currentLayout == .horizontal && thePoolHorizontal.currentRowNumber == thePoolHorizontal.candidateRows.count - 1)
|| (currentLayout == .vertical
&& thePoolVertical.currentColumnNumber == thePoolVertical.candidateColumns.count - 1)
{
return highlightNextCandidate()
}
switch currentLayout {
case .horizontal:
thePoolHorizontal.selectNewNeighborRow(direction: .down)
case .vertical:
thePoolVertical.selectNewNeighborColumn(direction: .right)
@unknown default:
return false
}
updateDisplay()
return true
}
@discardableResult override public func showPreviousPage() -> Bool { @discardableResult override public func showPreviousPage() -> Bool {
if (currentLayout == .horizontal && thePoolHorizontal.currentRowNumber == 0)
|| (currentLayout == .vertical && thePoolVertical.currentColumnNumber == 0)
{
return highlightPreviousCandidate()
}
switch currentLayout { switch currentLayout {
case .horizontal: case .horizontal:
for _ in 0..<thePoolHorizontal.maximumRowsPerPage { for _ in 0..<thePoolHorizontal.maximumRowsPerPage {
@ -124,20 +154,12 @@ public class CtlCandidateTDKBackports: CtlCandidate {
return true return true
} }
@discardableResult override public func showNextLine() -> Bool {
switch currentLayout {
case .horizontal:
thePoolHorizontal.selectNewNeighborRow(direction: .down)
case .vertical:
thePoolVertical.selectNewNeighborColumn(direction: .right)
@unknown default:
return false
}
updateDisplay()
return true
}
@discardableResult override public func showPreviousLine() -> Bool { @discardableResult override public func showPreviousLine() -> Bool {
if (currentLayout == .horizontal && thePoolHorizontal.currentRowNumber == 0)
|| (currentLayout == .vertical && thePoolVertical.currentColumnNumber == 0)
{
return highlightPreviousCandidate()
}
switch currentLayout { switch currentLayout {
case .horizontal: case .horizontal:
thePoolHorizontal.selectNewNeighborRow(direction: .up) thePoolHorizontal.selectNewNeighborRow(direction: .up)
@ -153,8 +175,18 @@ public class CtlCandidateTDKBackports: CtlCandidate {
@discardableResult override public func highlightNextCandidate() -> Bool { @discardableResult override public func highlightNextCandidate() -> Bool {
switch currentLayout { switch currentLayout {
case .horizontal: case .horizontal:
if thePoolHorizontal.highlightedIndex == thePoolHorizontal.candidateDataAll.count - 1 {
thePoolHorizontal.highlightHorizontal(at: 0)
delegate?.buzz()
break
}
thePoolHorizontal.highlightHorizontal(at: thePoolHorizontal.highlightedIndex + 1) thePoolHorizontal.highlightHorizontal(at: thePoolHorizontal.highlightedIndex + 1)
case .vertical: case .vertical:
if thePoolVertical.highlightedIndex == thePoolVertical.candidateDataAll.count - 1 {
thePoolVertical.highlightVertical(at: 0)
delegate?.buzz()
break
}
thePoolVertical.highlightVertical(at: thePoolVertical.highlightedIndex + 1) thePoolVertical.highlightVertical(at: thePoolVertical.highlightedIndex + 1)
@unknown default: @unknown default:
return false return false
@ -166,8 +198,18 @@ public class CtlCandidateTDKBackports: CtlCandidate {
@discardableResult override public func highlightPreviousCandidate() -> Bool { @discardableResult override public func highlightPreviousCandidate() -> Bool {
switch currentLayout { switch currentLayout {
case .horizontal: case .horizontal:
if thePoolHorizontal.highlightedIndex == 0 {
thePoolHorizontal.highlightHorizontal(at: thePoolHorizontal.candidateDataAll.count - 1)
delegate?.buzz()
break
}
thePoolHorizontal.highlightHorizontal(at: thePoolHorizontal.highlightedIndex - 1) thePoolHorizontal.highlightHorizontal(at: thePoolHorizontal.highlightedIndex - 1)
case .vertical: case .vertical:
if thePoolVertical.highlightedIndex == 0 {
thePoolVertical.highlightVertical(at: thePoolVertical.candidateDataAll.count - 1)
delegate?.buzz()
break
}
thePoolVertical.highlightVertical(at: thePoolVertical.highlightedIndex - 1) thePoolVertical.highlightVertical(at: thePoolVertical.highlightedIndex - 1)
@unknown default: @unknown default:
return false return false
@ -181,11 +223,11 @@ public class CtlCandidateTDKBackports: CtlCandidate {
case .horizontal: case .horizontal:
let currentRow = thePoolHorizontal.candidateRows[thePoolHorizontal.currentRowNumber] let currentRow = thePoolHorizontal.candidateRows[thePoolHorizontal.currentRowNumber]
let actualID = max(0, min(id, currentRow.count - 1)) let actualID = max(0, min(id, currentRow.count - 1))
return thePoolHorizontal.candidateRows[thePoolHorizontal.currentRowNumber][actualID].index return currentRow[actualID].index
case .vertical: case .vertical:
let currentColumn = thePoolVertical.candidateColumns[thePoolVertical.currentColumnNumber] let currentColumn = thePoolVertical.candidateColumns[thePoolVertical.currentColumnNumber]
let actualID = max(0, min(id, currentColumn.count - 1)) let actualID = max(0, min(id, currentColumn.count - 1))
return thePoolVertical.candidateColumns[thePoolVertical.currentColumnNumber][actualID].index return currentColumn[actualID].index
@unknown default: @unknown default:
return 0 return 0
} }

View File

@ -222,7 +222,7 @@ extension KeyHandler {
} }
} }
// MARK: (Associated Phrases) // MARK: (Associated Phrases)
if state.type == .ofAssociates { if state.type == .ofAssociates {
if !input.isShiftHold { return false } if !input.isShiftHold { return false }

View File

@ -610,12 +610,12 @@ public enum LMMgr {
group.notify(queue: DispatchQueue.main) {} group.notify(queue: DispatchQueue.main) {}
} }
public static func bleachSpecifiedSuggestions(target: String, mode: Shared.InputMode) { public static func bleachSpecifiedSuggestions(targets: [String], mode: Shared.InputMode) {
switch mode { switch mode {
case .imeModeCHS: case .imeModeCHS:
Self.uomCHT.bleachSpecifiedSuggestions(target: target, saveCallback: { Self.uomCHT.saveData() }) Self.uomCHT.bleachSpecifiedSuggestions(targets: targets, saveCallback: { Self.uomCHT.saveData() })
case .imeModeCHT: case .imeModeCHT:
Self.uomCHS.bleachSpecifiedSuggestions(target: target, saveCallback: { Self.uomCHS.saveData() }) Self.uomCHS.bleachSpecifiedSuggestions(targets: targets, saveCallback: { Self.uomCHS.saveData() })
case .imeModeNULL: case .imeModeNULL:
break break
} }

View File

@ -13,11 +13,11 @@ import Shared
extension PrefMgr { extension PrefMgr {
public func fixOddPreferences() { public func fixOddPreferences() {
// macOS 10.15 使 SwiftUI // macOS 10.15 使 SwiftUI
if #unavailable(macOS 10.15) { useIMKCandidateWindow = true }
if #unavailable(macOS 10.15) { if #unavailable(macOS 10.15) {
useIMKCandidateWindow = true
handleDefaultCandidateFontsByLangIdentifier = false handleDefaultCandidateFontsByLangIdentifier = false
shiftKeyAccommodationBehavior = 0 shiftKeyAccommodationBehavior = 0
disableShiftTogglingAlphanumericalMode = false disableShiftTogglingAlphanumericalMode = true
togglingAlphanumericalModeWithLShift = false togglingAlphanumericalModeWithLShift = false
} }
// ( didSet ) // ( didSet )

View File

@ -68,6 +68,7 @@ class SessionCtl: IMKInputController {
var state: IMEStateProtocol = IMEState.ofEmpty() { var state: IMEStateProtocol = IMEState.ofEmpty() {
didSet { didSet {
vCLog("Current State: \(state.type.rawValue)") vCLog("Current State: \(state.type.rawValue)")
setKeyLayout()
} }
} }
@ -134,7 +135,7 @@ extension SessionCtl {
/// ///
func setKeyLayout() { func setKeyLayout() {
guard let client = client() else { return } guard let client = client() else { return }
if isASCIIMode, IMKHelper.isDynamicBasicKeyboardLayoutEnabled { if (isASCIIMode && IMKHelper.isDynamicBasicKeyboardLayoutEnabled) || state.isCandidateContainer {
client.overrideKeyboard(withKeyboardNamed: PrefMgr.shared.alphanumericalKeyboardLayout) client.overrideKeyboard(withKeyboardNamed: PrefMgr.shared.alphanumericalKeyboardLayout)
return return
} }

View File

@ -43,8 +43,8 @@ extension SessionCtl: KeyHandlerDelegate {
let rawPair = state.data.userPhraseKVPair let rawPair = state.data.userPhraseKVPair
let valueCurrent = rawPair.1 let valueCurrent = rawPair.1
let valueReversed = ChineseConverter.crossConvert(rawPair.1) let valueReversed = ChineseConverter.crossConvert(rawPair.1)
LMMgr.bleachSpecifiedSuggestions(target: valueCurrent, mode: IMEApp.currentInputMode) LMMgr.bleachSpecifiedSuggestions(targets: [valueCurrent], mode: IMEApp.currentInputMode)
LMMgr.bleachSpecifiedSuggestions(target: valueReversed, mode: IMEApp.currentInputMode.reversed) LMMgr.bleachSpecifiedSuggestions(targets: [valueReversed], mode: IMEApp.currentInputMode.reversed)
// //
return true return true
} }

View File

@ -102,7 +102,7 @@ extension SessionCtl {
action: #selector(openUserDataFolder(_:)), keyEquivalent: "" action: #selector(openUserDataFolder(_:)), keyEquivalent: ""
) )
menu.addItem( menu.addItem(
withTitle: NSLocalizedString("Edit User Phrases…", comment: ""), withTitle: NSLocalizedString("Edit vChewing User Phrases…", comment: ""),
action: #selector(openUserPhrases(_:)), keyEquivalent: "" action: #selector(openUserPhrases(_:)), keyEquivalent: ""
) )
menu.addItem( menu.addItem(

View File

@ -225,7 +225,7 @@ struct suiPrefPaneKeyboard: View {
HStack { HStack {
Text( Text(
NSLocalizedString( NSLocalizedString(
"Choose the macOS-level alphanumerical keyboard layout. This setting is for the alphanumerical mode only.", "Choose the macOS-level alphanumerical keyboard layout. This setting is for candidate window and the alphanumerical mode only.",
comment: "" comment: ""
) )
) )

View File

@ -39,7 +39,7 @@
"NotificationSwitchON" = "✔ ON"; "NotificationSwitchON" = "✔ ON";
"NotificationSwitchOFF" = "✘ OFF"; "NotificationSwitchOFF" = "✘ OFF";
"NotificationSwitchASCII" = "↺ Switched"; "NotificationSwitchASCII" = "↺ Switched";
"Edit User Phrases…" = "Edit User Phrases…"; "Edit vChewing User Phrases…" = "Edit vChewing User Phrases…";
"Reload User Phrases" = "Reload User Phrases"; "Reload User Phrases" = "Reload User Phrases";
"Unable to create the user phrase file." = "Unable to create the user phrase file."; "Unable to create the user phrase file." = "Unable to create the user phrase file.";
"Please check the permission at \"%@\"." = "Please check the permission at \"%@\"."; "Please check the permission at \"%@\"." = "Please check the permission at \"%@\".";
@ -144,7 +144,7 @@
"Choose the behavior of (Shift+)Tab key in the candidate window." = "Choose the behavior of (Shift+)Tab key in the candidate window."; "Choose the behavior of (Shift+)Tab key in the candidate window." = "Choose the behavior of (Shift+)Tab key in the candidate window.";
"Choose the behavior of Shift+Letter key with letter inputs." = "Choose the behavior of Shift+Letter key with letter inputs."; "Choose the behavior of Shift+Letter key with letter inputs." = "Choose the behavior of Shift+Letter key with letter inputs.";
"Choose the cursor position where you want to list possible candidates." = "Choose the cursor position where you want to list possible candidates."; "Choose the cursor position where you want to list possible candidates." = "Choose the cursor position where you want to list possible candidates.";
"Choose the macOS-level alphanumerical keyboard layout. This setting is for the alphanumerical mode only." = "Choose the macOS-level alphanumerical keyboard layout. This setting is for the alphanumerical mode only."; "Choose the macOS-level alphanumerical keyboard layout. This setting is for candidate window and the alphanumerical mode only." = "Choose the macOS-level alphanumerical keyboard layout. This setting is for candidate window and the alphanumerical mode only.";
"Choose the macOS-level basic keyboard layout. Non-QWERTY alphanumerical keyboard layouts are for Pinyin parser only." = "Choose the macOS-level basic keyboard layout. Non-QWERTY alphanumerical keyboard layouts are for Pinyin parser only."; "Choose the macOS-level basic keyboard layout. Non-QWERTY alphanumerical keyboard layouts are for Pinyin parser only." = "Choose the macOS-level basic keyboard layout. Non-QWERTY alphanumerical keyboard layouts are for Pinyin parser only.";
"Choose the phonetic layout for Mandarin parser." = "Choose the phonetic layout for Mandarin parser."; "Choose the phonetic layout for Mandarin parser." = "Choose the phonetic layout for Mandarin parser.";
"Choose your desired user data folder path. Will be omitted if invalid." = "Choose your desired user data folder path. Will be omitted if invalid."; "Choose your desired user data folder path. Will be omitted if invalid." = "Choose your desired user data folder path. Will be omitted if invalid.";

View File

@ -39,7 +39,7 @@
"NotificationSwitchON" = "✔ ON"; "NotificationSwitchON" = "✔ ON";
"NotificationSwitchOFF" = "✘ OFF"; "NotificationSwitchOFF" = "✘ OFF";
"NotificationSwitchASCII" = "↺ Switched"; "NotificationSwitchASCII" = "↺ Switched";
"Edit User Phrases…" = "Edit User Phrases…"; "Edit vChewing User Phrases…" = "Edit vChewing User Phrases…";
"Reload User Phrases" = "Reload User Phrases"; "Reload User Phrases" = "Reload User Phrases";
"Unable to create the user phrase file." = "Unable to create the user phrase file."; "Unable to create the user phrase file." = "Unable to create the user phrase file.";
"Please check the permission at \"%@\"." = "Please check the permission at \"%@\"."; "Please check the permission at \"%@\"." = "Please check the permission at \"%@\".";
@ -144,7 +144,7 @@
"Choose the behavior of (Shift+)Tab key in the candidate window." = "Choose the behavior of (Shift+)Tab key in the candidate window."; "Choose the behavior of (Shift+)Tab key in the candidate window." = "Choose the behavior of (Shift+)Tab key in the candidate window.";
"Choose the behavior of Shift+Letter key with letter inputs." = "Choose the behavior of Shift+Letter key with letter inputs."; "Choose the behavior of Shift+Letter key with letter inputs." = "Choose the behavior of Shift+Letter key with letter inputs.";
"Choose the cursor position where you want to list possible candidates." = "Choose the cursor position where you want to list possible candidates."; "Choose the cursor position where you want to list possible candidates." = "Choose the cursor position where you want to list possible candidates.";
"Choose the macOS-level alphanumerical keyboard layout. This setting is for the alphanumerical mode only." = "Choose the macOS-level alphanumerical keyboard layout. This setting is for the alphanumerical mode only."; "Choose the macOS-level alphanumerical keyboard layout. This setting is for candidate window and the alphanumerical mode only." = "Choose the macOS-level alphanumerical keyboard layout. This setting is for candidate window and the alphanumerical mode only.";
"Choose the macOS-level basic keyboard layout. Non-QWERTY alphanumerical keyboard layouts are for Pinyin parser only." = "Choose the macOS-level basic keyboard layout. Non-QWERTY alphanumerical keyboard layouts are for Pinyin parser only."; "Choose the macOS-level basic keyboard layout. Non-QWERTY alphanumerical keyboard layouts are for Pinyin parser only." = "Choose the macOS-level basic keyboard layout. Non-QWERTY alphanumerical keyboard layouts are for Pinyin parser only.";
"Choose the phonetic layout for Mandarin parser." = "Choose the phonetic layout for Mandarin parser."; "Choose the phonetic layout for Mandarin parser." = "Choose the phonetic layout for Mandarin parser.";
"Choose your desired user data folder path. Will be omitted if invalid." = "Choose your desired user data folder path. Will be omitted if invalid."; "Choose your desired user data folder path. Will be omitted if invalid." = "Choose your desired user data folder path. Will be omitted if invalid.";

View File

@ -39,7 +39,7 @@
"NotificationSwitchON" = "✔ 機能起動"; "NotificationSwitchON" = "✔ 機能起動";
"NotificationSwitchOFF" = "✘ 機能停止"; "NotificationSwitchOFF" = "✘ 機能停止";
"NotificationSwitchASCII" = "↺ 切替完了"; "NotificationSwitchASCII" = "↺ 切替完了";
"Edit User Phrases…" = "ユーザー辞書を編集…"; "Edit vChewing User Phrases…" = "威注音ユーザー辞書を編集…";
"Reload User Phrases" = "ユーザー辞書を再び読込む"; "Reload User Phrases" = "ユーザー辞書を再び読込む";
"Unable to create the user phrase file." = "ユーザー辞書ファイルの作成は失敗しました。"; "Unable to create the user phrase file." = "ユーザー辞書ファイルの作成は失敗しました。";
"Please check the permission at \"%@\"." = "「%@」に書き出す権限は不足らしい。"; "Please check the permission at \"%@\"." = "「%@」に書き出す権限は不足らしい。";
@ -144,7 +144,7 @@
"Choose the behavior of (Shift+)Tab key in the candidate window." = "入力候補陳列での (Shift+)Tab キーの輪番切替対象をご指定ください。"; "Choose the behavior of (Shift+)Tab key in the candidate window." = "入力候補陳列での (Shift+)Tab キーの輪番切替対象をご指定ください。";
"Choose the behavior of Shift+Letter key with letter inputs." = "Shift+文字キーの行為をご指定ください。"; "Choose the behavior of Shift+Letter key with letter inputs." = "Shift+文字キーの行為をご指定ください。";
"Choose the cursor position where you want to list possible candidates." = "カーソルはどこで入力候補を呼び出すかとご指定ださい。"; "Choose the cursor position where you want to list possible candidates." = "カーソルはどこで入力候補を呼び出すかとご指定ださい。";
"Choose the macOS-level alphanumerical keyboard layout. This setting is for the alphanumerical mode only." = "macOS 英数キーボード配置をご指定ください。英数入力モードだけに使われる配置である。"; "Choose the macOS-level alphanumerical keyboard layout. This setting is for candidate window and the alphanumerical mode only." = "macOS 英数キーボード配置をご指定ください。文字候補の選択と英数入力モードだけに使われる配置である。";
"Choose the macOS-level basic keyboard layout. Non-QWERTY alphanumerical keyboard layouts are for Pinyin parser only." = "macOS 基礎キーボード配置をご指定ください。QWERTY 以外の英数キーボードは弁音以外の配列に不適用。"; "Choose the macOS-level basic keyboard layout. Non-QWERTY alphanumerical keyboard layouts are for Pinyin parser only." = "macOS 基礎キーボード配置をご指定ください。QWERTY 以外の英数キーボードは弁音以外の配列に不適用。";
"Choose the phonetic layout for Mandarin parser." = "共通語分析器の注音配列をご指定ください。"; "Choose the phonetic layout for Mandarin parser." = "共通語分析器の注音配列をご指定ください。";
"Choose your desired user data folder path. Will be omitted if invalid." = "欲しがるユーザー辞書保存先をご指定ください。無効なる保存先設定は省かれる。"; "Choose your desired user data folder path. Will be omitted if invalid." = "欲しがるユーザー辞書保存先をご指定ください。無効なる保存先設定は省かれる。";

View File

@ -39,7 +39,7 @@
"NotificationSwitchON" = "✔ 已启用"; "NotificationSwitchON" = "✔ 已启用";
"NotificationSwitchOFF" = "✘ 已停用"; "NotificationSwitchOFF" = "✘ 已停用";
"NotificationSwitchASCII" = "↺ 切换完毕"; "NotificationSwitchASCII" = "↺ 切换完毕";
"Edit User Phrases…" = "编辑自订语汇…"; "Edit vChewing User Phrases…" = "编辑威注音自订语汇…";
"Reload User Phrases" = "重载自订语汇"; "Reload User Phrases" = "重载自订语汇";
"Unable to create the user phrase file." = "无法创建自订语汇档案。"; "Unable to create the user phrase file." = "无法创建自订语汇档案。";
"Please check the permission at \"%@\"." = "请检查此处的存取权限:\"%@\"."; "Please check the permission at \"%@\"." = "请检查此处的存取权限:\"%@\".";
@ -144,7 +144,7 @@
"Choose the behavior of (Shift+)Tab key in the candidate window." = "指定 (Shift+)Tab 在选字窗内的轮替操作对象。"; "Choose the behavior of (Shift+)Tab key in the candidate window." = "指定 (Shift+)Tab 在选字窗内的轮替操作对象。";
"Choose the behavior of Shift+Letter key with letter inputs." = "指定 Shift+字母键 的行为。"; "Choose the behavior of Shift+Letter key with letter inputs." = "指定 Shift+字母键 的行为。";
"Choose the cursor position where you want to list possible candidates." = "请选择用以触发选字的游标相对位置。"; "Choose the cursor position where you want to list possible candidates." = "请选择用以触发选字的游标相对位置。";
"Choose the macOS-level alphanumerical keyboard layout. This setting is for the alphanumerical mode only." = "请选择 macOS 英数键盘布局。该布局仅用于英数输入模式。"; "Choose the macOS-level alphanumerical keyboard layout. This setting is for candidate window and the alphanumerical mode only." = "请选择 macOS 英数键盘布局。该布局仅用于选字窗和英数输入模式。";
"Choose the macOS-level basic keyboard layout. Non-QWERTY alphanumerical keyboard layouts are for Pinyin parser only." = "请选择 macOS 基础键盘布局。QWERTY 以外的英数布局是为了拼音排列使用者而准备的。"; "Choose the macOS-level basic keyboard layout. Non-QWERTY alphanumerical keyboard layouts are for Pinyin parser only." = "请选择 macOS 基础键盘布局。QWERTY 以外的英数布局是为了拼音排列使用者而准备的。";
"Choose the phonetic layout for Mandarin parser." = "请指定普通话/国音分析器所使用的注音排列。"; "Choose the phonetic layout for Mandarin parser." = "请指定普通话/国音分析器所使用的注音排列。";
"Choose your desired user data folder path. Will be omitted if invalid." = "请在此指定您想指定的使用者语汇档案目录。无效值会被忽略。"; "Choose your desired user data folder path. Will be omitted if invalid." = "请在此指定您想指定的使用者语汇档案目录。无效值会被忽略。";

View File

@ -39,7 +39,7 @@
"NotificationSwitchON" = "✔ 已啟用"; "NotificationSwitchON" = "✔ 已啟用";
"NotificationSwitchOFF" = "✘ 已停用"; "NotificationSwitchOFF" = "✘ 已停用";
"NotificationSwitchASCII" = "↺ 切換完畢"; "NotificationSwitchASCII" = "↺ 切換完畢";
"Edit User Phrases…" = "編輯自訂語彙…"; "Edit vChewing User Phrases…" = "編輯威注音自訂語彙…";
"Reload User Phrases" = "重載自訂語彙"; "Reload User Phrases" = "重載自訂語彙";
"Unable to create the user phrase file." = "無法創建自訂語彙檔案。"; "Unable to create the user phrase file." = "無法創建自訂語彙檔案。";
"Please check the permission at \"%@\"." = "請檢查此處的存取權限:\"%@\"."; "Please check the permission at \"%@\"." = "請檢查此處的存取權限:\"%@\".";
@ -144,7 +144,7 @@
"Choose the behavior of (Shift+)Tab key in the candidate window." = "指定 (Shift+)Tab 在選字窗內的輪替操作對象。"; "Choose the behavior of (Shift+)Tab key in the candidate window." = "指定 (Shift+)Tab 在選字窗內的輪替操作對象。";
"Choose the behavior of Shift+Letter key with letter inputs." = "指定 Shift+字母鍵 的行為。"; "Choose the behavior of Shift+Letter key with letter inputs." = "指定 Shift+字母鍵 的行為。";
"Choose the cursor position where you want to list possible candidates." = "請選擇用以觸發選字的游標相對位置。"; "Choose the cursor position where you want to list possible candidates." = "請選擇用以觸發選字的游標相對位置。";
"Choose the macOS-level alphanumerical keyboard layout. This setting is for the alphanumerical mode only." = "請選擇 macOS 英數鍵盤佈局。該佈局僅用於英數輸入模式。"; "Choose the macOS-level alphanumerical keyboard layout. This setting is for candidate window and the alphanumerical mode only." = "請選擇 macOS 英數鍵盤佈局。該佈局僅用於選字窗和英數輸入模式。";
"Choose the macOS-level basic keyboard layout. Non-QWERTY alphanumerical keyboard layouts are for Pinyin parser only." = "請選擇 macOS 基礎鍵盤佈局。QWERTY 以外的英數佈局是為了拼音排列使用者而準備的。"; "Choose the macOS-level basic keyboard layout. Non-QWERTY alphanumerical keyboard layouts are for Pinyin parser only." = "請選擇 macOS 基礎鍵盤佈局。QWERTY 以外的英數佈局是為了拼音排列使用者而準備的。";
"Choose the phonetic layout for Mandarin parser." = "請指定普通話/國音分析器所使用的注音排列。"; "Choose the phonetic layout for Mandarin parser." = "請指定普通話/國音分析器所使用的注音排列。";
"Choose your desired user data folder path. Will be omitted if invalid." = "請在此指定您想指定的使用者語彙檔案目錄。無效值會被忽略。"; "Choose your desired user data folder path. Will be omitted if invalid." = "請在此指定您想指定的使用者語彙檔案目錄。無效值會被忽略。";

View File

@ -5,7 +5,7 @@
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>2.8.5</string> <string>2.8.5</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>2851</string> <string>2852</string>
<key>UpdateInfoEndpoint</key> <key>UpdateInfoEndpoint</key>
<string>https://gitee.com/vchewing/vChewing-macOS/raw/main/Update-Info.plist</string> <string>https://gitee.com/vchewing/vChewing-macOS/raw/main/Update-Info.plist</string>
<key>UpdateInfoSite</key> <key>UpdateInfoSite</key>

View File

@ -1272,7 +1272,7 @@
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 2851; CURRENT_PROJECT_VERSION = 2852;
GCC_C_LANGUAGE_STANDARD = gnu11; GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_DYNAMIC_NO_PIC = NO; GCC_DYNAMIC_NO_PIC = NO;
GCC_PREPROCESSOR_DEFINITIONS = ( GCC_PREPROCESSOR_DEFINITIONS = (
@ -1312,7 +1312,7 @@
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 2851; CURRENT_PROJECT_VERSION = 2852;
ENABLE_NS_ASSERTIONS = NO; ENABLE_NS_ASSERTIONS = NO;
GCC_C_LANGUAGE_STANDARD = gnu11; GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
@ -1351,7 +1351,7 @@
CODE_SIGN_IDENTITY = "-"; CODE_SIGN_IDENTITY = "-";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 2851; CURRENT_PROJECT_VERSION = 2852;
DEAD_CODE_STRIPPING = YES; DEAD_CODE_STRIPPING = YES;
ENABLE_HARDENED_RUNTIME = YES; ENABLE_HARDENED_RUNTIME = YES;
GCC_C_LANGUAGE_STANDARD = gnu11; GCC_C_LANGUAGE_STANDARD = gnu11;
@ -1404,7 +1404,7 @@
CODE_SIGN_IDENTITY = "-"; CODE_SIGN_IDENTITY = "-";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 2851; CURRENT_PROJECT_VERSION = 2852;
DEAD_CODE_STRIPPING = YES; DEAD_CODE_STRIPPING = YES;
ENABLE_HARDENED_RUNTIME = YES; ENABLE_HARDENED_RUNTIME = YES;
ENABLE_NS_ASSERTIONS = NO; ENABLE_NS_ASSERTIONS = NO;
@ -1539,7 +1539,7 @@
CODE_SIGN_IDENTITY = "-"; CODE_SIGN_IDENTITY = "-";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 2851; CURRENT_PROJECT_VERSION = 2852;
DEAD_CODE_STRIPPING = YES; DEAD_CODE_STRIPPING = YES;
DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_ASSET_PATHS = "";
DEVELOPMENT_TEAM = ""; DEVELOPMENT_TEAM = "";
@ -1600,7 +1600,7 @@
CODE_SIGN_IDENTITY = "-"; CODE_SIGN_IDENTITY = "-";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 2851; CURRENT_PROJECT_VERSION = 2852;
DEAD_CODE_STRIPPING = YES; DEAD_CODE_STRIPPING = YES;
DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_ASSET_PATHS = "";
DEVELOPMENT_TEAM = ""; DEVELOPMENT_TEAM = "";
@ -1648,7 +1648,7 @@
CODE_SIGN_IDENTITY = "-"; CODE_SIGN_IDENTITY = "-";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 2851; CURRENT_PROJECT_VERSION = 2852;
DEAD_CODE_STRIPPING = YES; DEAD_CODE_STRIPPING = YES;
DEVELOPMENT_TEAM = ""; DEVELOPMENT_TEAM = "";
ENABLE_HARDENED_RUNTIME = YES; ENABLE_HARDENED_RUNTIME = YES;
@ -1694,7 +1694,7 @@
CODE_SIGN_IDENTITY = "-"; CODE_SIGN_IDENTITY = "-";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 2851; CURRENT_PROJECT_VERSION = 2852;
DEAD_CODE_STRIPPING = YES; DEAD_CODE_STRIPPING = YES;
DEVELOPMENT_TEAM = ""; DEVELOPMENT_TEAM = "";
ENABLE_HARDENED_RUNTIME = YES; ENABLE_HARDENED_RUNTIME = YES;