InputState // Allow adding user phrases even if reading count mismatch.

This commit is contained in:
ShikiSuen 2022-07-31 00:47:02 +08:00
parent c2189993f2
commit 37e408a1b5
6 changed files with 10 additions and 15 deletions

View File

@ -264,9 +264,9 @@ enum InputState {
private var deleteTargetExists = false private var deleteTargetExists = false
var tooltip: String { var tooltip: String {
if composingBuffer.count != readings.count { if composingBuffer.count != readings.count {
ctlInputMethod.tooltipController.setColor(state: .redAlert) ctlInputMethod.tooltipController.setColor(state: .denialOverflow)
return NSLocalizedString( return NSLocalizedString(
"⚠︎ Unhandlable: Chars and Readings in buffer doesn't match.", comment: "" "⚠︎ Beware: Chars and Readings in buffer doesn't match.", comment: ""
) )
} }
if mgrPrefs.phraseReplacementEnabled { if mgrPrefs.phraseReplacementEnabled {
@ -376,14 +376,9 @@ enum InputState {
} }
var validToWrite: Bool { var validToWrite: Bool {
/// The input method allows users to input a string whose length differs ///
/// from the amount of Bopomofo readings. In this case, the range /// deleteTargetExists 使
/// in the composing buffer and the readings could not match, so (ctlInputMethod.areWeDeleting && !deleteTargetExists)
/// we disable the function to write user phrases in this case.
/// deleteTargetExists 使
/// 使
((composingBuffer.count != readings.count)
|| (ctlInputMethod.areWeDeleting && !deleteTargetExists))
? false ? false
: allowedMarkRange.contains(literalMarkedRange.count) : allowedMarkRange.contains(literalMarkedRange.count)
} }

View File

@ -37,7 +37,7 @@
"Please specify at least 4 candidate keys." = "Please specify at least 4 candidate keys."; "Please specify at least 4 candidate keys." = "Please specify at least 4 candidate keys.";
"Maximum 15 candidate keys allowed." = "Maximum 15 candidate keys allowed."; "Maximum 15 candidate keys allowed." = "Maximum 15 candidate keys allowed.";
"⚠︎ Phrase replacement mode enabled, interfering user phrase entry." = "⚠︎ Phrase replacement mode enabled, interfering user phrase entry."; "⚠︎ Phrase replacement mode enabled, interfering user phrase entry." = "⚠︎ Phrase replacement mode enabled, interfering user phrase entry.";
"⚠︎ Unhandlable: Chars and Readings in buffer doesn't match." = "⚠︎ Unhandlable: Chars and Readings in buffer doesn't match."; "⚠︎ Beware: Chars and Readings in buffer doesn't match." = "⚠︎ Beware: Chars and Readings in buffer doesn't match.";
"Per-Char Select Mode" = "Per-Char Select Mode"; "Per-Char Select Mode" = "Per-Char Select Mode";
"CNS11643 Mode" = "CNS11643 Mode"; "CNS11643 Mode" = "CNS11643 Mode";
"JIS Shinjitai Output" = "JIS Shinjitai Output"; "JIS Shinjitai Output" = "JIS Shinjitai Output";

View File

@ -37,7 +37,7 @@
"Please specify at least 4 candidate keys." = "Please specify at least 4 candidate keys."; "Please specify at least 4 candidate keys." = "Please specify at least 4 candidate keys.";
"Maximum 15 candidate keys allowed." = "Maximum 15 candidate keys allowed."; "Maximum 15 candidate keys allowed." = "Maximum 15 candidate keys allowed.";
"⚠︎ Phrase replacement mode enabled, interfering user phrase entry." = "⚠︎ Phrase replacement mode enabled, interfering user phrase entry."; "⚠︎ Phrase replacement mode enabled, interfering user phrase entry." = "⚠︎ Phrase replacement mode enabled, interfering user phrase entry.";
"⚠︎ Unhandlable: Chars and Readings in buffer doesn't match." = "⚠︎ Unhandlable: Chars and Readings in buffer doesn't match."; "⚠︎ Beware: Chars and Readings in buffer doesn't match." = "⚠︎ Beware: Chars and Readings in buffer doesn't match.";
"Per-Char Select Mode" = "Per-Char Select Mode"; "Per-Char Select Mode" = "Per-Char Select Mode";
"CNS11643 Mode" = "CNS11643 Mode"; "CNS11643 Mode" = "CNS11643 Mode";
"JIS Shinjitai Output" = "JIS Shinjitai Output"; "JIS Shinjitai Output" = "JIS Shinjitai Output";

View File

@ -37,7 +37,7 @@
"Please specify at least 4 candidate keys." = "言選り用キー陣列に少なくとも4つのキーをご登録ください。"; "Please specify at least 4 candidate keys." = "言選り用キー陣列に少なくとも4つのキーをご登録ください。";
"Maximum 15 candidate keys allowed." = "言選り用キー陣列には最多15つキー登録できます。"; "Maximum 15 candidate keys allowed." = "言選り用キー陣列には最多15つキー登録できます。";
"⚠︎ Phrase replacement mode enabled, interfering user phrase entry." = "⚠︎ 言葉置換機能稼働中、新添付言葉にも影響。"; "⚠︎ Phrase replacement mode enabled, interfering user phrase entry." = "⚠︎ 言葉置換機能稼働中、新添付言葉にも影響。";
"⚠︎ Unhandlable: Chars and Readings in buffer doesn't match." = "⚠︎ 緩衝列の字数は読みの数と不同等のため、対処不可。"; "⚠︎ Beware: Chars and Readings in buffer doesn't match." = "⚠︎ 注意:緩衝列の字数は読みの数と不同等。";
"Per-Char Select Mode" = "全候補入力モード"; "Per-Char Select Mode" = "全候補入力モード";
"CNS11643 Mode" = "全字庫モード"; "CNS11643 Mode" = "全字庫モード";
"JIS Shinjitai Output" = "JIS 新字体モード"; "JIS Shinjitai Output" = "JIS 新字体モード";

View File

@ -37,7 +37,7 @@
"Please specify at least 4 candidate keys." = "请至少指定四个选字键。"; "Please specify at least 4 candidate keys." = "请至少指定四个选字键。";
"Maximum 15 candidate keys allowed." = "选字键最多只能指定十五个。"; "Maximum 15 candidate keys allowed." = "选字键最多只能指定十五个。";
"⚠︎ Phrase replacement mode enabled, interfering user phrase entry." = "⚠︎ 语汇置换功能已启用,会波及语汇自订。"; "⚠︎ Phrase replacement mode enabled, interfering user phrase entry." = "⚠︎ 语汇置换功能已启用,会波及语汇自订。";
"⚠︎ Unhandlable: Chars and Readings in buffer doesn't match." = "⚠︎ 无法处理组字区字数与读音数不对应的情形。"; "⚠︎ Beware: Chars and Readings in buffer doesn't match." = "⚠︎ 注意:组字区字数与读音数不对应。";
"Per-Char Select Mode" = "仿真逐字选字输入"; "Per-Char Select Mode" = "仿真逐字选字输入";
"CNS11643 Mode" = "全字库模式"; "CNS11643 Mode" = "全字库模式";
"JIS Shinjitai Output" = "JIS 新字体模式"; "JIS Shinjitai Output" = "JIS 新字体模式";

View File

@ -37,7 +37,7 @@
"Please specify at least 4 candidate keys." = "請至少指定四個選字鍵。"; "Please specify at least 4 candidate keys." = "請至少指定四個選字鍵。";
"Maximum 15 candidate keys allowed." = "選字鍵最多只能指定十五個。"; "Maximum 15 candidate keys allowed." = "選字鍵最多只能指定十五個。";
"⚠︎ Phrase replacement mode enabled, interfering user phrase entry." = "⚠︎ 語彙置換功能已啟用,會波及語彙自訂。"; "⚠︎ Phrase replacement mode enabled, interfering user phrase entry." = "⚠︎ 語彙置換功能已啟用,會波及語彙自訂。";
"⚠︎ Unhandlable: Chars and Readings in buffer doesn't match." = "⚠︎ 無法處理組字區字數與讀音數不對應的情形。"; "⚠︎ Beware: Chars and Readings in buffer doesn't match." = "⚠︎ 注意:組字區字數與讀音數不對應。";
"Per-Char Select Mode" = "模擬逐字選字輸入"; "Per-Char Select Mode" = "模擬逐字選字輸入";
"CNS11643 Mode" = "全字庫模式"; "CNS11643 Mode" = "全字庫模式";
"JIS Shinjitai Output" = "JIS 新字體模式"; "JIS Shinjitai Output" = "JIS 新字體模式";