Pre Merge pull request !12 from ShikiSuen/upd/1.4.2

This commit is contained in:
ShikiSuen 2022-03-24 02:11:30 +00:00 committed by Gitee
commit 44d0b0843d
24 changed files with 778 additions and 504 deletions

View File

@ -57,7 +57,7 @@
"QYf-Nf-hoi.title" = "OpenVanilla 小麦注音プロジェクトから派生。"; "QYf-Nf-hoi.title" = "OpenVanilla 小麦注音プロジェクトから派生。";
/* Class = "NSTextFieldCell"; title = "McBopomofo Engine by Mengjuei Hsieh, Lukhnos Liu, Zonble Yang, et al.\nvChewing macOS Development: Shiki Suen, Hiraku Wang, etc.\nvChewing Phrase Database Maintained by Shiki Suen."; ObjectID = "VW8-s5-Wpn"; */ /* Class = "NSTextFieldCell"; title = "McBopomofo Engine by Mengjuei Hsieh, Lukhnos Liu, Zonble Yang, et al.\nvChewing macOS Development: Shiki Suen, Hiraku Wang, etc.\nvChewing Phrase Database Maintained by Shiki Suen."; ObjectID = "VW8-s5-Wpn"; */
"VW8-s5-Wpn.title" = "小麦注音入力エンジン開発Mengjuei Hsieh, Lukhnos Liu, Zonble Yang, など。\nmacOS 版の開発Shiki Suen, Hiraku Wang, など。\n威注音語彙データの維持Shiki Suen。"; "VW8-s5-Wpn.title" = "小麦注音入力エンジン開発Mengjuei Hsieh, Lukhnos Liu, Zonble Yang, など。\nmacOS 版威注音の開発Shiki Suen, Hiraku Wang, など。\n威注音語彙データの維持Shiki Suen。";
/* Class = "NSTextFieldCell"; title = "Placeholder for showing copyright information."; ObjectID = "eo3-TK-0rB"; */ /* Class = "NSTextFieldCell"; title = "Placeholder for showing copyright information."; ObjectID = "eo3-TK-0rB"; */
"eo3-TK-0rB.title" = "Placeholder for showing copyright information."; "eo3-TK-0rB.title" = "Placeholder for showing copyright information.";

View File

@ -0,0 +1,2 @@
#!/bin/sh
~/Library/Input\ Methods/vChewing.app/Contents/MacOS/vChewing install --all

View File

@ -2,7 +2,7 @@ vChewing macOS: MIT商標不許可ライセンス (MIT-NTL License)
© 2011-2022 OpenVanilla Project & © 2021-2022 vChewing Project. © 2011-2022 OpenVanilla Project & © 2021-2022 vChewing Project.
小麦注音入力エンジン開発Mengjuei Hsieh, Lukhnos Liu, Zonble Yang, など。 小麦注音入力エンジン開発Mengjuei Hsieh, Lukhnos Liu, Zonble Yang, など。
威注音 macOS 版の開発Hiraku Wang, Shiki Suen, など。 macOS 版威注音の開発Hiraku Wang, Shiki Suen, など。
威注音語彙データの維持Shiki Suen。 威注音語彙データの維持Shiki Suen。
以下に定める条件に従い、本ソフトウェアおよび関連文書のファイル(以下「ソフトウェア」)の複製を取得するすべての人に対し、ソフトウェアを無制限に扱うことを無償で許可します。これには、ソフトウェアの複製を使用、複写、変更、結合、掲載、頒布、サブライセンス、および/または販売する権利、およびソフトウェアを提供する相手に同じことを許可する権利も無制限に含まれます。 以下に定める条件に従い、本ソフトウェアおよび関連文書のファイル(以下「ソフトウェア」)の複製を取得するすべての人に対し、ソフトウェアを無制限に扱うことを無償で許可します。これには、ソフトウェアの複製を使用、複写、変更、結合、掲載、頒布、サブライセンス、および/または販売する権利、およびソフトウェアを提供する相手に同じことを許可する権利も無制限に含まれます。

View File

@ -72,7 +72,7 @@
威注音輸入法 macOS 版程式維護Shiki Suen。特別感謝 Hiraku Wong 等人的技術協力。 威注音輸入法 macOS 版程式維護Shiki Suen。特別感謝 Hiraku Wong 等人的技術協力。
威注音詞庫由孫志貴維護,以 3-Clause BSD License 授權釋出 威注音詞庫由 Shiki Suen 維護,以 3-Clause BSD License 授權釋出。其中的詞頻數據[由 NAER 授權用於非商業用途](https://twitter.com/ShikiSuen/status/1479329302713831424)
使用者可自由使用、散播本軟體,惟散播時必須完整保留版權聲明及軟體授權、且一旦經過修改便不可以再繼續使用威注音的產品名稱。 使用者可自由使用、散播本軟體,惟散播時必須完整保留版權聲明及軟體授權、且一旦經過修改便不可以再繼續使用威注音的產品名稱。

@ -1 +1 @@
Subproject commit 21e4163c6f6f5c9929c1dd5872d091f732f07836 Subproject commit bc21120f7241f61d968d291c988c2c34df4a1263

View File

@ -158,12 +158,13 @@ class InputState: NSObject {
@objc private(set) var markerIndex: UInt @objc private(set) var markerIndex: UInt
@objc private(set) var markedRange: NSRange @objc private(set) var markedRange: NSRange
@objc private var deleteTargetExists = false
@objc var tooltip: String { @objc var tooltip: String {
if composingBuffer.count != readings.count { if composingBuffer.count != readings.count {
TooltipController.backgroundColor = NSColor(red: 0.55, green: 0.00, blue: 0.00, alpha: 1.00) TooltipController.backgroundColor = NSColor(red: 0.55, green: 0.00, blue: 0.00, alpha: 1.00)
TooltipController.textColor = NSColor.white TooltipController.textColor = NSColor.white
return NSLocalizedString("⚠︎ Unhandlable char selected for user phrases.", comment: "") return NSLocalizedString("⚠︎ Unhandlable: Chars and Readings in buffer doesn't match.", comment: "")
} }
if mgrPrefs.phraseReplacementEnabled { if mgrPrefs.phraseReplacementEnabled {
@ -192,13 +193,14 @@ class InputState: NSObject {
let joined = selectedReadings.joined(separator: "-") let joined = selectedReadings.joined(separator: "-")
let exist = mgrLangModel.checkIfUserPhraseExist(userPhrase: text, mode: ctlInputMethod.currentKeyHandler.inputMode, key: joined) let exist = mgrLangModel.checkIfUserPhraseExist(userPhrase: text, mode: ctlInputMethod.currentKeyHandler.inputMode, key: joined)
if exist { if exist {
deleteTargetExists = exist
TooltipController.backgroundColor = NSColor(red: 0.00, green: 0.18, blue: 0.13, alpha: 1.00) TooltipController.backgroundColor = NSColor(red: 0.00, green: 0.18, blue: 0.13, alpha: 1.00)
TooltipController.textColor = NSColor(red: 0.00, green: 1.00, blue: 0.74, alpha: 1.00) TooltipController.textColor = NSColor(red: 0.00, green: 1.00, blue: 0.74, alpha: 1.00)
return String(format: NSLocalizedString("\"%@\" already exists, ENTER to boost its priority.", comment: ""), text) return String(format: NSLocalizedString("\"%@\" already exists: ↩ to boost, ⇧⌘↩ to exclude.", comment: ""), text)
} }
TooltipController.backgroundColor = NSColor(red: 0.18, green: 0.18, blue: 0.18, alpha: 1.00) TooltipController.backgroundColor = NSColor(red: 0.18, green: 0.18, blue: 0.18, alpha: 1.00)
TooltipController.textColor = NSColor.white TooltipController.textColor = NSColor.white
return String(format: NSLocalizedString("\"%@\" selected. ENTER to add user phrase.", comment: ""), text) return String(format: NSLocalizedString("\"%@\" selected. to add user phrase.", comment: ""), text)
} }
@objc var tooltipForInputting: String = "" @objc var tooltipForInputting: String = ""
@ -257,6 +259,9 @@ class InputState: NSObject {
if markedRange.length > kMaxMarkRangeLength { if markedRange.length > kMaxMarkRangeLength {
return false return false
} }
if ctlInputMethod.areWeDeleting && !deleteTargetExists {
return false
}
return markedRange.length >= kMinMarkRangeLength && markedRange.length <= kMaxMarkRangeLength return markedRange.length >= kMinMarkRangeLength && markedRange.length <= kMaxMarkRangeLength
} }

View File

@ -525,12 +525,10 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
// MARK: Enter // MARK: Enter
if ([input isEnter]) { if ([input isEnter]) {
if ([input isControlHold]) { return ([input isControlHold] && [input isCommandHold]) ?
if (ctlInputMethod.areWeUsingOurOwnPhraseEditor || [input isCommandHold]) { [self _handleCtrlCommandEnterWithState:state stateCallback:stateCallback errorCallback:errorCallback]
return [self _handleCtrlEnterWithState:state stateCallback:stateCallback errorCallback:errorCallback]; :
} [self _handleEnterWithState:state stateCallback:stateCallback errorCallback:errorCallback];
}
return [self _handleEnterWithState:state stateCallback:stateCallback errorCallback:errorCallback];
} }
// MARK: Punctuation list // MARK: Punctuation list
@ -592,10 +590,10 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
} }
} }
// still nothing, then we update the composing buffer (some app has // still nothing, then we update the composing buffer (some app has strange behavior if we don't do this, "thinking" the key is not actually consumed)
// strange behavior if we don't do this, "thinking" the key is not // 砍掉這一段會導致「F1-F12 按鍵干擾組字區」的問題。暫時只能先恢復這段,且補上偵錯彙報機制,方便今後排查故障。
// actually consumed)
if ([state isKindOfClass:[InputStateNotEmpty class]] || !_bpmfReadingBuffer->isEmpty()) { if ([state isKindOfClass:[InputStateNotEmpty class]] || !_bpmfReadingBuffer->isEmpty()) {
[IME prtDebugIntel:[NSString stringWithFormat:@"Blocked data: charCode: %c, keyCode: %c", charCode, input.keyCode]];
[IME prtDebugIntel:@"A9BFF20E"]; [IME prtDebugIntel:@"A9BFF20E"];
errorCallback(); errorCallback();
stateCallback(state); stateCallback(state);
@ -850,7 +848,7 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
return YES; return YES;
} }
- (BOOL)_handleCtrlEnterWithState:(InputState *)state stateCallback:(void (^)(InputState *))stateCallback errorCallback:(void (^)(void))errorCallback - (BOOL)_handleCtrlCommandEnterWithState:(InputState *)state stateCallback:(void (^)(InputState *))stateCallback errorCallback:(void (^)(void))errorCallback
{ {
if (![state isKindOfClass:[InputStateInputting class]]) return NO; if (![state isKindOfClass:[InputStateInputting class]]) return NO;
@ -1002,7 +1000,8 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
UniChar charCode = input.charCode; UniChar charCode = input.charCode;
VTCandidateController *gCurrentCandidateController = [self.delegate candidateControllerForKeyHandler:self]; VTCandidateController *gCurrentCandidateController = [self.delegate candidateControllerForKeyHandler:self];
BOOL cancelCandidateKey = [input isBackSpace] || [input isESC] || [input isDelete]; BOOL cancelCandidateKey = [input isBackSpace] || [input isESC] || [input isDelete]
|| (([input isCursorBackward] || [input isCursorForward]) && [input isShiftHold]);
if (cancelCandidateKey) { if (cancelCandidateKey) {
if ([state isKindOfClass: [InputStateAssociatedPhrases class]]) { if ([state isKindOfClass: [InputStateAssociatedPhrases class]]) {

View File

@ -41,6 +41,8 @@ class ctlInputMethod: IMKInputController {
@objc static let kIMEModeCHS = "org.atelierInmu.inputmethod.vChewing.IMECHS"; @objc static let kIMEModeCHS = "org.atelierInmu.inputmethod.vChewing.IMECHS";
@objc static let kIMEModeCHT = "org.atelierInmu.inputmethod.vChewing.IMECHT"; @objc static let kIMEModeCHT = "org.atelierInmu.inputmethod.vChewing.IMECHT";
@objc static let kIMEModeNULL = "org.atelierInmu.inputmethod.vChewing.IMENULL"; @objc static let kIMEModeNULL = "org.atelierInmu.inputmethod.vChewing.IMENULL";
@objc static var areWeDeleting = false;
private static let tooltipController = TooltipController() private static let tooltipController = TooltipController()
@ -188,25 +190,24 @@ class ctlInputMethod: IMKInputController {
override func handle(_ event: NSEvent!, client: Any!) -> Bool { override func handle(_ event: NSEvent!, client: Any!) -> Bool {
if event.type == .flagsChanged { // flags使 KeyHandler
let functionKeyKeyboardLayoutID = mgrPrefs.functionKeyboardLayout // flags
let basisKeyboardLayoutID = mgrPrefs.basisKeyboardLayout // event.type == .flagsChanged return false
// NSInternalInconsistencyException
if functionKeyKeyboardLayoutID == basisKeyboardLayoutID { if (mgrPrefs.functionKeyboardLayout != mgrPrefs.basisKeyboardLayout) && (event.type == .flagsChanged) {
return false
}
let includeShift = mgrPrefs.functionKeyKeyboardLayoutOverrideIncludeShiftKey let includeShift = mgrPrefs.functionKeyKeyboardLayoutOverrideIncludeShiftKey
if (event.modifierFlags == .capsLock ||
if event.modifierFlags.contains(.capsLock) || event.modifierFlags.contains(.command) ||
event.modifierFlags.contains(.option) || event.modifierFlags.contains(.option) ||
event.modifierFlags.contains(.control) || event.modifierFlags.contains(.control) ||
event.modifierFlags.contains(.function) || event.modifierFlags.contains(.function) ||
(event.modifierFlags.contains(.shift) && includeShift) { (event.modifierFlags.contains(.shift) && includeShift)) {
(client as? IMKTextInput)?.overrideKeyboard(withKeyboardNamed: functionKeyKeyboardLayoutID) (client as? IMKTextInput)?.overrideKeyboard(withKeyboardNamed: mgrPrefs.functionKeyboardLayout)
return false } else {
(client as? IMKTextInput)?.overrideKeyboard(withKeyboardNamed: mgrPrefs.basisKeyboardLayout)
} }
(client as? IMKTextInput)?.overrideKeyboard(withKeyboardNamed: basisKeyboardLayoutID) // Enter
ctlInputMethod.areWeDeleting = event.modifierFlags.contains([.shift, .command])
return false return false
} }
@ -647,8 +648,8 @@ extension ctlInputMethod: KeyHandlerDelegate {
return false return false
} }
let InputModeReversed: InputMode = (ctlInputMethod.currentKeyHandler.inputMode == InputMode.imeModeCHT) ? InputMode.imeModeCHS : InputMode.imeModeCHT let InputModeReversed: InputMode = (ctlInputMethod.currentKeyHandler.inputMode == InputMode.imeModeCHT) ? InputMode.imeModeCHS : InputMode.imeModeCHT
mgrLangModel.writeUserPhrase(state.userPhrase, inputMode: keyHandler.inputMode, areWeDuplicating: state.chkIfUserPhraseExists) mgrLangModel.writeUserPhrase(state.userPhrase, inputMode: keyHandler.inputMode, areWeDuplicating: state.chkIfUserPhraseExists, areWeDeleting: ctlInputMethod.areWeDeleting)
mgrLangModel.writeUserPhrase(state.userPhraseConverted, inputMode: InputModeReversed, areWeDuplicating: false) mgrLangModel.writeUserPhrase(state.userPhraseConverted, inputMode: InputModeReversed, areWeDuplicating: false, areWeDeleting: ctlInputMethod.areWeDeleting)
return true return true
} }
} }

View File

@ -33,7 +33,7 @@ NS_ASSUME_NONNULL_BEGIN
+ (BOOL)checkIfUserDataFolderExists; + (BOOL)checkIfUserDataFolderExists;
+ (BOOL)checkIfUserPhraseExist:(NSString *)userPhrase inputMode:(InputMode)mode key:(NSString *)key NS_SWIFT_NAME(checkIfUserPhraseExist(userPhrase:mode:key:)); + (BOOL)checkIfUserPhraseExist:(NSString *)userPhrase inputMode:(InputMode)mode key:(NSString *)key NS_SWIFT_NAME(checkIfUserPhraseExist(userPhrase:mode:key:));
+ (BOOL)writeUserPhrase:(NSString *)userPhrase inputMode:(InputMode)mode areWeDuplicating:(BOOL)areWeDuplicating; + (BOOL)writeUserPhrase:(NSString *)userPhrase inputMode:(InputMode)mode areWeDuplicating:(BOOL)areWeDuplicating areWeDeleting:(BOOL)areWeDeleting;
+ (void)setPhraseReplacementEnabled:(BOOL)phraseReplacementEnabled; + (void)setPhraseReplacementEnabled:(BOOL)phraseReplacementEnabled;
+ (void)setCNSEnabled:(BOOL)cnsEnabled; + (void)setCNSEnabled:(BOOL)cnsEnabled;
+ (void)setSymbolEnabled:(BOOL)symbolEnabled; + (void)setSymbolEnabled:(BOOL)symbolEnabled;

View File

@ -235,14 +235,14 @@ static void LTLoadLanguageModelFile(NSString *filenameWithoutExtension, vChewing
return NO; return NO;
} }
+ (BOOL)writeUserPhrase:(NSString *)userPhrase inputMode:(InputMode)mode areWeDuplicating:(BOOL)areWeDuplicating + (BOOL)writeUserPhrase:(NSString *)userPhrase inputMode:(InputMode)mode areWeDuplicating:(BOOL)areWeDuplicating areWeDeleting:(BOOL)areWeDeleting
{ {
if (![self checkIfUserLanguageModelFilesExist]) { if (![self checkIfUserLanguageModelFilesExist]) {
return NO; return NO;
} }
// BOOL addLineBreakAtFront = NO; // BOOL addLineBreakAtFront = NO;
NSString *path = [self userPhrasesDataPath:mode]; NSString *path = areWeDeleting ? [self excludedPhrasesDataPath:mode] : [self userPhrasesDataPath:mode];
// if ([[NSFileManager defaultManager] fileExistsAtPath:path]) { // if ([[NSFileManager defaultManager] fileExistsAtPath:path]) {
// NSError *error = nil; // NSError *error = nil;
@ -267,7 +267,7 @@ static void LTLoadLanguageModelFile(NSString *filenameWithoutExtension, vChewing
// [currentMarkedPhrase appendString:@"\n"]; // [currentMarkedPhrase appendString:@"\n"];
// } // }
[currentMarkedPhrase appendString:userPhrase]; [currentMarkedPhrase appendString:userPhrase];
if (areWeDuplicating) { if (areWeDuplicating && !areWeDeleting) {
// Do not use ASCII characters to comment here. // Do not use ASCII characters to comment here.
// Otherwise, it will be scrambled by HYPY2BPMF module shipped in the vChewing Phrase Editor. // Otherwise, it will be scrambled by HYPY2BPMF module shipped in the vChewing Phrase Editor.
[currentMarkedPhrase appendString:@"\t#𝙾𝚟𝚎𝚛𝚛𝚒𝚍𝚎"]; [currentMarkedPhrase appendString:@"\t#𝙾𝚟𝚎𝚛𝚛𝚒𝚍𝚎"];

View File

@ -23,8 +23,8 @@
"Half-Width Punctuation Mode" = "Half-Width Punctuation Mode"; "Half-Width Punctuation Mode" = "Half-Width Punctuation Mode";
"\"%@\" length must ≥ 2 for a user phrase." = "\"%@\" length must ≥ 2 for a user phrase."; "\"%@\" length must ≥ 2 for a user phrase." = "\"%@\" length must ≥ 2 for a user phrase.";
"\"%@\" length should ≤ %d for a user phrase." = "\"%@\" length should ≤ %d for a user phrase."; "\"%@\" length should ≤ %d for a user phrase." = "\"%@\" length should ≤ %d for a user phrase.";
"\"%@\" selected. ENTER to add user phrase." = "\"%@\" selected. ENTER to add user phrase."; "\"%@\" selected. ↩ to add user phrase." = "\"%@\" selected. ↩ to add user phrase.";
"\"%@\" already exists, ENTER to boost its priority." = "\"%@\" already exists, ENTER to boost its priority."; "\"%@\" already exists: ↩ to boost, ⇧⌘↩ to exclude." = "\"%@\" already exists: ↩ to boost, ⇧⌘↩ to exclude.";
"Edit Phrase Replacement Table…" = "Edit Phrase Replacement Table…"; "Edit Phrase Replacement Table…" = "Edit Phrase Replacement Table…";
"Use Phrase Replacement" = "Use Phrase Replacement"; "Use Phrase Replacement" = "Use Phrase Replacement";
"Candidates keys cannot be empty." = "Candidates keys cannot be empty."; "Candidates keys cannot be empty." = "Candidates keys cannot be empty.";
@ -34,7 +34,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 char selected for user phrases." = "⚠︎ Unhandlable char selected for user phrases."; "⚠︎ Unhandlable: Chars and Readings in buffer doesn't match." = "⚠︎ Unhandlable: 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

@ -23,8 +23,8 @@
"Half-Width Punctuation Mode" = "Half-Width Punctuation Mode"; "Half-Width Punctuation Mode" = "Half-Width Punctuation Mode";
"\"%@\" length must ≥ 2 for a user phrase." = "\"%@\" length must ≥ 2 for a user phrase."; "\"%@\" length must ≥ 2 for a user phrase." = "\"%@\" length must ≥ 2 for a user phrase.";
"\"%@\" length should ≤ %d for a user phrase." = "\"%@\" length should ≤ %d for a user phrase."; "\"%@\" length should ≤ %d for a user phrase." = "\"%@\" length should ≤ %d for a user phrase.";
"\"%@\" selected. ENTER to add user phrase." = "\"%@\" selected. ENTER to add user phrase."; "\"%@\" selected. ↩ to add user phrase." = "\"%@\" selected. ↩ to add user phrase.";
"\"%@\" already exists, ENTER to boost its priority." = "\"%@\" already exists, ENTER to boost its priority."; "\"%@\" already exists: ↩ to boost, ⇧⌘↩ to exclude." = "\"%@\" already exists: ↩ to boost, ⇧⌘↩ to exclude.";
"Edit Phrase Replacement Table…" = "Edit Phrase Replacement Table…"; "Edit Phrase Replacement Table…" = "Edit Phrase Replacement Table…";
"Use Phrase Replacement" = "Use Phrase Replacement"; "Use Phrase Replacement" = "Use Phrase Replacement";
"Candidates keys cannot be empty." = "Candidates keys cannot be empty."; "Candidates keys cannot be empty." = "Candidates keys cannot be empty.";
@ -34,7 +34,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 char selected for user phrases." = "⚠︎ Unhandlable char selected for user phrases."; "⚠︎ Unhandlable: Chars and Readings in buffer doesn't match." = "⚠︎ Unhandlable: 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

@ -23,8 +23,8 @@
"Half-Width Punctuation Mode" = "半角句読モード"; "Half-Width Punctuation Mode" = "半角句読モード";
"\"%@\" length must ≥ 2 for a user phrase." = "「%@」もう1つ文字のお選びを。"; "\"%@\" length must ≥ 2 for a user phrase." = "「%@」もう1つ文字のお選びを。";
"\"%@\" length should ≤ %d for a user phrase." = "「%@」文字数過剰で登録不可、%d 文字以内にして下さい。"; "\"%@\" length should ≤ %d for a user phrase." = "「%@」文字数過剰で登録不可、%d 文字以内にして下さい。";
"\"%@\" selected. ENTER to add user phrase." = "「%@」を ENTER で辞書に登録。"; "\"%@\" selected. ↩ to add user phrase." = "「%@」を ↩ で辞書に登録。";
"\"%@\" already exists, ENTER to boost its priority." = "「%@」は既存語彙であり、ENTER で最優先にする。"; "\"%@\" already exists: ↩ to boost, ⇧⌘↩ to exclude." = "「%@」は既存語彙:↩ で最優先にし;⇧⌘↩ で排除。";
"Edit Phrase Replacement Table…" = "言葉置換表を編集…"; "Edit Phrase Replacement Table…" = "言葉置換表を編集…";
"Use Phrase Replacement" = "言葉置換機能"; "Use Phrase Replacement" = "言葉置換機能";
"Candidates keys cannot be empty." = "言選り用キー陣列に何かキーをご登録ください。"; "Candidates keys cannot be empty." = "言選り用キー陣列に何かキーをご登録ください。";
@ -34,7 +34,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 char selected for user phrases." = "⚠︎ ユーザー辞書の対処できない文字は選択されています。"; "⚠︎ Unhandlable: 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

@ -23,8 +23,8 @@
"Half-Width Punctuation Mode" = "半角标点模式"; "Half-Width Punctuation Mode" = "半角标点模式";
"\"%@\" length must ≥ 2 for a user phrase." = "「%@」字数不足以自订语汇。"; "\"%@\" length must ≥ 2 for a user phrase." = "「%@」字数不足以自订语汇。";
"\"%@\" length should ≤ %d for a user phrase." = "「%@」字数超过 %d、无法自订。"; "\"%@\" length should ≤ %d for a user phrase." = "「%@」字数超过 %d、无法自订。";
"\"%@\" selected. ENTER to add user phrase." = "「%@」敲 Enter 添入自订语汇。"; "\"%@\" selected. to add user phrase." = "「%@」敲 Enter 添入自订语汇。";
"\"%@\" already exists, ENTER to boost its priority." = "「%@」已存在,敲 ENTER 以提升其权重。"; "\"%@\" already exists: ↩ to boost, ⇧⌘↩ to exclude." = "「%@」已存在:敲 ↩ 以升权;敲 ⇧⌘↩ 以排除。";
"Edit Phrase Replacement Table…" = "编辑语汇置换表…"; "Edit Phrase Replacement Table…" = "编辑语汇置换表…";
"Use Phrase Replacement" = "使用语汇置换"; "Use Phrase Replacement" = "使用语汇置换";
"Candidates keys cannot be empty." = "您必须指定选字键。"; "Candidates keys cannot be empty." = "您必须指定选字键。";
@ -34,7 +34,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 char selected for user phrases." = "⚠︎ 已选中无法处理的字符,无法加入自订语汇。"; "⚠︎ Unhandlable: 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

@ -23,8 +23,8 @@
"Half-Width Punctuation Mode" = "半形標點模式"; "Half-Width Punctuation Mode" = "半形標點模式";
"\"%@\" length must ≥ 2 for a user phrase." = "「%@」字數不足以自訂語彙。"; "\"%@\" length must ≥ 2 for a user phrase." = "「%@」字數不足以自訂語彙。";
"\"%@\" length should ≤ %d for a user phrase." = "「%@」字數超過 %d、無法自訂。"; "\"%@\" length should ≤ %d for a user phrase." = "「%@」字數超過 %d、無法自訂。";
"\"%@\" selected. ENTER to add user phrase." = "「%@」敲 Enter 添入自訂語彙。"; "\"%@\" selected. to add user phrase." = "「%@」敲 Enter 添入自訂語彙。";
"\"%@\" already exists, ENTER to boost its priority." = "「%@」已存在,敲 ENTER 以提升其權重。"; "\"%@\" already exists: ↩ to boost, ⇧⌘↩ to exclude." = "「%@」已存在:敲 ↩ 以升權;敲 ⇧⌘↩ 以排除。";
"Edit Phrase Replacement Table…" = "編輯語彙置換表…"; "Edit Phrase Replacement Table…" = "編輯語彙置換表…";
"Use Phrase Replacement" = "使用語彙置換"; "Use Phrase Replacement" = "使用語彙置換";
"Candidates keys cannot be empty." = "您必須指定選字鍵。"; "Candidates keys cannot be empty." = "您必須指定選字鍵。";
@ -34,7 +34,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 char selected for user phrases." = "⚠︎ 已選中無法處理的字元,無法加入自訂語彙。"; "⚠︎ Unhandlable: 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

@ -104,7 +104,6 @@ public class NotifierController: NSWindowController, NotifierWindowDelegate {
let transparentVisualEffect = NSVisualEffectView() let transparentVisualEffect = NSVisualEffectView()
transparentVisualEffect.blendingMode = .behindWindow transparentVisualEffect.blendingMode = .behindWindow
transparentVisualEffect.state = .active transparentVisualEffect.state = .active
transparentVisualEffect.material = .dark
let panel = NotifierWindow(contentRect: windowRect, styleMask: styleMask, backing: .buffered, defer: false) let panel = NotifierWindow(contentRect: windowRect, styleMask: styleMask, backing: .buffered, defer: false)
panel.contentView = transparentVisualEffect panel.contentView = transparentVisualEffect

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="19529" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES"> <document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="20037" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<dependencies> <dependencies>
<deployment identifier="macosx"/> <deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19529"/> <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="20037"/>
</dependencies> </dependencies>
<objects> <objects>
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication"> <customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
@ -37,10 +37,273 @@
</items> </items>
</menu> </menu>
</menuItem> </menuItem>
<menuItem title="Edit" id="73w-1j-Pwb">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Edit" id="aF3-oi-MgO">
<items>
<menuItem title="Undo" keyEquivalent="z" id="VvZ-by-3nQ">
<connections>
<action selector="undo:" target="-1" id="dM4-lt-Id3"/>
</connections>
</menuItem>
<menuItem title="Redo" keyEquivalent="Z" id="LwP-Gv-Nnn">
<connections>
<action selector="redo:" target="-1" id="2Hr-YX-Ra9"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="4o9-gU-7Ts"/>
<menuItem title="Cut" keyEquivalent="x" id="FMA-yq-tJm">
<connections>
<action selector="cut:" target="-1" id="eMD-tW-O7D"/>
</connections>
</menuItem>
<menuItem title="Copy" keyEquivalent="c" id="xSe-3Y-Hb0">
<connections>
<action selector="copy:" target="-1" id="ADA-xT-moq"/>
</connections>
</menuItem>
<menuItem title="Paste" keyEquivalent="v" id="gaB-df-vQW">
<connections>
<action selector="paste:" target="-1" id="Oxs-FQ-EY8"/>
</connections>
</menuItem>
<menuItem title="Delete" id="blu-F1-kET">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="delete:" target="-1" id="n2a-VH-u4x"/>
</connections>
</menuItem>
<menuItem title="Select All" keyEquivalent="a" id="R7e-C0-eBE">
<connections>
<action selector="selectAll:" target="-1" id="WBA-da-pQi"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
</items> </items>
<point key="canvasLocation" x="139" y="154"/> <point key="canvasLocation" x="139" y="154"/>
</menu> </menu>
<customObject id="494" customClass="AppDelegate"/> <customObject id="494" customClass="AppDelegate" customModule="vChewing" customModuleProvider="target"/>
<customObject id="420" customClass="NSFontManager"/> <customObject id="420" customClass="NSFontManager"/>
<menuItem title="Edit" id="ubu-d1-37W">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Edit" id="rWr-dm-Kh8">
<items>
<menuItem title="Undo" keyEquivalent="z" id="3jT-kO-21c">
<connections>
<action selector="undo:" target="-1" id="H88-C0-yc4"/>
</connections>
</menuItem>
<menuItem title="Redo" keyEquivalent="Z" id="o0s-IT-wiY">
<connections>
<action selector="redo:" target="-1" id="XMe-PD-zfW"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="GdZ-gw-RJ8"/>
<menuItem title="Cut" keyEquivalent="x" id="CeT-VO-r8T">
<connections>
<action selector="cut:" target="-1" id="tGh-UJ-Vgt"/>
</connections>
</menuItem>
<menuItem title="Copy" keyEquivalent="c" id="MIS-yk-vix">
<connections>
<action selector="copy:" target="-1" id="JK4-kZ-a0m"/>
</connections>
</menuItem>
<menuItem title="Paste" keyEquivalent="v" id="JUZ-YQ-cFn">
<connections>
<action selector="paste:" target="-1" id="46I-YE-e2p"/>
</connections>
</menuItem>
<menuItem title="Paste and Match Style" keyEquivalent="V" id="JOe-dd-jy3">
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
<connections>
<action selector="pasteAsPlainText:" target="-1" id="Rxh-ra-eKX"/>
</connections>
</menuItem>
<menuItem title="Delete" id="Faq-pj-osx">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="delete:" target="-1" id="Cf4-1V-BBE"/>
</connections>
</menuItem>
<menuItem title="Select All" keyEquivalent="a" id="Km9-HM-RBf">
<connections>
<action selector="selectAll:" target="-1" id="TdD-7L-1Hl"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="3Q6-9i-Ftx"/>
<menuItem title="Find" id="eZX-Tk-2Xs">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Find" id="o8K-C1-Ual">
<items>
<menuItem title="Find…" tag="1" keyEquivalent="f" id="x8v-4n-8Se">
<connections>
<action selector="performFindPanelAction:" target="-1" id="NPo-Yv-mhO"/>
</connections>
</menuItem>
<menuItem title="Find and Replace…" tag="12" keyEquivalent="f" id="VO0-HH-cDi">
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
<connections>
<action selector="performFindPanelAction:" target="-1" id="dfm-eJ-wf8"/>
</connections>
</menuItem>
<menuItem title="Find Next" tag="2" keyEquivalent="g" id="L2F-2v-SNG">
<connections>
<action selector="performFindPanelAction:" target="-1" id="Yrz-HD-dMn"/>
</connections>
</menuItem>
<menuItem title="Find Previous" tag="3" keyEquivalent="G" id="FzW-oT-4oW">
<connections>
<action selector="performFindPanelAction:" target="-1" id="QYN-5u-Zdh"/>
</connections>
</menuItem>
<menuItem title="Use Selection for Find" tag="7" keyEquivalent="e" id="OuV-dO-fyz">
<connections>
<action selector="performFindPanelAction:" target="-1" id="BZA-Sf-ZCF"/>
</connections>
</menuItem>
<menuItem title="Jump to Selection" keyEquivalent="j" id="Yh8-Lk-MRK">
<connections>
<action selector="centerSelectionInVisibleArea:" target="-1" id="Cop-2Q-Beg"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Spelling and Grammar" id="OjH-Oc-gM5">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Spelling" id="rrh-zf-CSE">
<items>
<menuItem title="Show Spelling and Grammar" keyEquivalent=":" id="tuz-aN-xtP">
<connections>
<action selector="showGuessPanel:" target="-1" id="gQt-Ay-LeU"/>
</connections>
</menuItem>
<menuItem title="Check Document Now" keyEquivalent=";" id="ouV-6W-KCA">
<connections>
<action selector="checkSpelling:" target="-1" id="105-Ob-GAr"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="27b-Cl-Ti1"/>
<menuItem title="Check Spelling While Typing" id="hCs-gx-PNe">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleContinuousSpellChecking:" target="-1" id="eQJ-3B-eRo"/>
</connections>
</menuItem>
<menuItem title="Check Grammar With Spelling" id="Ueh-2V-rU3">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleGrammarChecking:" target="-1" id="Sba-oJ-gVM"/>
</connections>
</menuItem>
<menuItem title="Correct Spelling Automatically" id="YAm-Zg-eX4">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleAutomaticSpellingCorrection:" target="-1" id="7U7-L5-wzk"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Substitutions" id="Ap5-IB-isK">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Substitutions" id="yhF-g2-yW7">
<items>
<menuItem title="Show Substitutions" id="jrN-2d-uJP">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="orderFrontSubstitutionsPanel:" target="-1" id="aNR-LM-bAT"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="bnA-uN-vXa"/>
<menuItem title="Smart Copy/Paste" id="Fpp-CM-nih">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleSmartInsertDelete:" target="-1" id="hYU-zq-zFJ"/>
</connections>
</menuItem>
<menuItem title="Smart Quotes" id="H46-y2-RTt">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleAutomaticQuoteSubstitution:" target="-1" id="hmA-7z-eIl"/>
</connections>
</menuItem>
<menuItem title="Smart Dashes" id="d5k-mO-lMN">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleAutomaticDashSubstitution:" target="-1" id="dwi-Ki-5U1"/>
</connections>
</menuItem>
<menuItem title="Smart Links" id="wSJ-zV-SHN">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleAutomaticLinkDetection:" target="-1" id="40W-Sa-gpf"/>
</connections>
</menuItem>
<menuItem title="Data Detectors" id="Kse-Sx-GW1">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleAutomaticDataDetection:" target="-1" id="Bds-Kb-mV8"/>
</connections>
</menuItem>
<menuItem title="Text Replacement" id="Zp2-yc-5aq">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleAutomaticTextReplacement:" target="-1" id="RVr-al-Vwf"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Transformations" id="6Ph-8U-iVV">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Transformations" id="aX8-Sh-tR0">
<items>
<menuItem title="Make Upper Case" id="omc-Qv-BAT">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="uppercaseWord:" target="-1" id="cnH-13-TAH"/>
</connections>
</menuItem>
<menuItem title="Make Lower Case" id="f8Y-8w-C0J">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="lowercaseWord:" target="-1" id="SYC-Pb-q91"/>
</connections>
</menuItem>
<menuItem title="Capitalize" id="egK-sl-ehm">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="capitalizeWord:" target="-1" id="hvr-oY-28h"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Speech" id="Ibl-gf-hHZ">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Speech" id="l5i-Fp-oFN">
<items>
<menuItem title="Start Speaking" id="ig1-uM-Ksp">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="startSpeaking:" target="-1" id="2LD-ZA-Tht"/>
</connections>
</menuItem>
<menuItem title="Stop Speaking" id="nYM-UY-zpE">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="stopSpeaking:" target="-1" id="jNL-ea-ecQ"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
</items>
</menu>
</menuItem>
</objects> </objects>
</document> </document>

View File

@ -24,4 +24,4 @@
// "lblCopyright.title" = "© 2011-2022 OpenVanilla Project & © 2021-2022 vChewing Project."; // "lblCopyright.title" = "© 2011-2022 OpenVanilla Project & © 2021-2022 vChewing Project.";
/* Class = "NSTextFieldCell"; title = "McBopomofo Engine by Mengjuei Hsieh, Lukhnos Liu, Zonble Yang, et al.\nvChewing macOS Development: Shiki Suen, Hiraku Wang, etc.\nvChewing Phrase Database Maintained by Shiki Suen."; ObjectID = "lblCredits"; */ /* Class = "NSTextFieldCell"; title = "McBopomofo Engine by Mengjuei Hsieh, Lukhnos Liu, Zonble Yang, et al.\nvChewing macOS Development: Shiki Suen, Hiraku Wang, etc.\nvChewing Phrase Database Maintained by Shiki Suen."; ObjectID = "lblCredits"; */
"lblCredits.title" = "小麦注音入力エンジン開発Mengjuei Hsieh, Lukhnos Liu, Zonble Yang, など。\nmacOS 版の開発Shiki Suen, Hiraku Wang, など。\n威注音語彙データの維持Shiki Suen。"; "lblCredits.title" = "小麦注音入力エンジン開発Mengjuei Hsieh, Lukhnos Liu, Zonble Yang, など。\nmacOS 版威注音の開発Shiki Suen, Hiraku Wang, など。\n威注音語彙データの維持Shiki Suen。";

View File

@ -24,4 +24,4 @@
// "lblCopyright.title" = "© 2011-2022 OpenVanilla Project & © 2021-2022 vChewing Project."; // "lblCopyright.title" = "© 2011-2022 OpenVanilla Project & © 2021-2022 vChewing Project.";
/* Class = "NSTextFieldCell"; title = "McBopomofo Engine by Mengjuei Hsieh, Lukhnos Liu, Zonble Yang, et al.\nvChewing macOS Development: Shiki Suen, Hiraku Wang, etc.\nvChewing Phrase Database Maintained by Shiki Suen."; ObjectID = "lblCredits"; */ /* Class = "NSTextFieldCell"; title = "McBopomofo Engine by Mengjuei Hsieh, Lukhnos Liu, Zonble Yang, et al.\nvChewing macOS Development: Shiki Suen, Hiraku Wang, etc.\nvChewing Phrase Database Maintained by Shiki Suen."; ObjectID = "lblCredits"; */
"VW8-s5-Wpn.title" = "小麦注音引擎研发Mengjuei Hsieh, Lukhnos Liu, Zonble Yang, 等。\n威注音 macOS 程式研发Shiki Suen, Hiraku Wang, 等。\n威注音词库维护Shiki Suen。"; "lblCredits.title" = "小麦注音引擎研发Mengjuei Hsieh, Lukhnos Liu, Zonble Yang, 等。\n威注音 macOS 程式研发Shiki Suen, Hiraku Wang, 等。\n威注音词库维护Shiki Suen。";

View File

@ -24,4 +24,4 @@
// "lblCopyright.title" = "© 2011-2022 OpenVanilla Project & © 2021-2022 vChewing Project."; // "lblCopyright.title" = "© 2011-2022 OpenVanilla Project & © 2021-2022 vChewing Project.";
/* Class = "NSTextFieldCell"; title = "McBopomofo Engine by Mengjuei Hsieh, Lukhnos Liu, Zonble Yang, et al.\nvChewing macOS Development: Shiki Suen, Hiraku Wang, etc.\nvChewing Phrase Database Maintained by Shiki Suen."; ObjectID = "lblCredits"; */ /* Class = "NSTextFieldCell"; title = "McBopomofo Engine by Mengjuei Hsieh, Lukhnos Liu, Zonble Yang, et al.\nvChewing macOS Development: Shiki Suen, Hiraku Wang, etc.\nvChewing Phrase Database Maintained by Shiki Suen."; ObjectID = "lblCredits"; */
"VW8-s5-Wpn.title" = "小麥注音引擎研發Mengjuei Hsieh, Lukhnos Liu, Zonble Yang, 等。\n威注音 macOS 程式研發Shiki Suen, Hiraku Wang, 等。\n威注音詞庫維護Shiki Suen。"; "lblCredits.title" = "小麥注音引擎研發Mengjuei Hsieh, Lukhnos Liu, Zonble Yang, 等。\n威注音 macOS 程式研發Shiki Suen, Hiraku Wang, 等。\n威注音詞庫維護Shiki Suen。";

View File

@ -7,8 +7,8 @@
<key>UpdateInfoSite</key> <key>UpdateInfoSite</key>
<string>https://gitee.com/vChewing/vChewing-macOS/releases</string> <string>https://gitee.com/vChewing/vChewing-macOS/releases</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>1940</string> <string>1942</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>1.4.0</string> <string>1.4.2</string>
</dict> </dict>
</plist> </plist>

View File

@ -27,6 +27,9 @@ extension String {
self = regex.stringByReplacingMatches(in: self, options: [], range: range, withTemplate: replaceWith) self = regex.stringByReplacingMatches(in: self, options: [], range: range, withTemplate: replaceWith)
} catch { return } } catch { return }
} }
mutating func selfReplace(_ strOf: String, _ strWith: String = "") {
self = self.replacingOccurrences(of: strOf, with: strWith)
}
mutating func formatConsolidate(HYPY2BPMF: Bool) { mutating func formatConsolidate(HYPY2BPMF: Bool) {
// Step 1: Consolidating formats per line. // Step 1: Consolidating formats per line.
var strProcessed = self var strProcessed = self
@ -55,435 +58,435 @@ extension String {
// //
// //
// 調 // 調
varLineData.regReplace(pattern: "chuang", replaceWith: "ㄔㄨㄤ") varLineData.selfReplace("chuang", "ㄔㄨㄤ")
varLineData.regReplace(pattern: "shuang", replaceWith: "ㄕㄨㄤ") varLineData.selfReplace("shuang", "ㄕㄨㄤ")
varLineData.regReplace(pattern: "zhuang", replaceWith: "ㄓㄨㄤ") varLineData.selfReplace("zhuang", "ㄓㄨㄤ")
varLineData.regReplace(pattern: "chang", replaceWith: "ㄔㄤ") varLineData.selfReplace("chang", "ㄔㄤ")
varLineData.regReplace(pattern: "cheng", replaceWith: "ㄔㄥ") varLineData.selfReplace("cheng", "ㄔㄥ")
varLineData.regReplace(pattern: "chong", replaceWith: "ㄔㄨㄥ") varLineData.selfReplace("chong", "ㄔㄨㄥ")
varLineData.regReplace(pattern: "chuai", replaceWith: "ㄔㄨㄞ") varLineData.selfReplace("chuai", "ㄔㄨㄞ")
varLineData.regReplace(pattern: "chuan", replaceWith: "ㄔㄨㄢ") varLineData.selfReplace("chuan", "ㄔㄨㄢ")
varLineData.regReplace(pattern: "guang", replaceWith: "ㄍㄨㄤ") varLineData.selfReplace("guang", "ㄍㄨㄤ")
varLineData.regReplace(pattern: "huang", replaceWith: "ㄏㄨㄤ") varLineData.selfReplace("huang", "ㄏㄨㄤ")
varLineData.regReplace(pattern: "jiang", replaceWith: "ㄐㄧㄤ") varLineData.selfReplace("jiang", "ㄐㄧㄤ")
varLineData.regReplace(pattern: "jiong", replaceWith: "ㄐㄩㄥ") varLineData.selfReplace("jiong", "ㄐㄩㄥ")
varLineData.regReplace(pattern: "kuang", replaceWith: "ㄎㄨㄤ") varLineData.selfReplace("kuang", "ㄎㄨㄤ")
varLineData.regReplace(pattern: "liang", replaceWith: "ㄌㄧㄤ") varLineData.selfReplace("liang", "ㄌㄧㄤ")
varLineData.regReplace(pattern: "niang", replaceWith: "ㄋㄧㄤ") varLineData.selfReplace("niang", "ㄋㄧㄤ")
varLineData.regReplace(pattern: "qiang", replaceWith: "ㄑㄧㄤ") varLineData.selfReplace("qiang", "ㄑㄧㄤ")
varLineData.regReplace(pattern: "qiong", replaceWith: "ㄑㄩㄥ") varLineData.selfReplace("qiong", "ㄑㄩㄥ")
varLineData.regReplace(pattern: "shang", replaceWith: "ㄕㄤ") varLineData.selfReplace("shang", "ㄕㄤ")
varLineData.regReplace(pattern: "sheng", replaceWith: "ㄕㄥ") varLineData.selfReplace("sheng", "ㄕㄥ")
varLineData.regReplace(pattern: "shuai", replaceWith: "ㄕㄨㄞ") varLineData.selfReplace("shuai", "ㄕㄨㄞ")
varLineData.regReplace(pattern: "shuan", replaceWith: "ㄕㄨㄢ") varLineData.selfReplace("shuan", "ㄕㄨㄢ")
varLineData.regReplace(pattern: "xiang", replaceWith: "ㄒㄧㄤ") varLineData.selfReplace("xiang", "ㄒㄧㄤ")
varLineData.regReplace(pattern: "xiong", replaceWith: "ㄒㄩㄥ") varLineData.selfReplace("xiong", "ㄒㄩㄥ")
varLineData.regReplace(pattern: "zhang", replaceWith: "ㄓㄤ") varLineData.selfReplace("zhang", "ㄓㄤ")
varLineData.regReplace(pattern: "zheng", replaceWith: "ㄓㄥ") varLineData.selfReplace("zheng", "ㄓㄥ")
varLineData.regReplace(pattern: "zhong", replaceWith: "ㄓㄨㄥ") varLineData.selfReplace("zhong", "ㄓㄨㄥ")
varLineData.regReplace(pattern: "zhuai", replaceWith: "ㄓㄨㄞ") varLineData.selfReplace("zhuai", "ㄓㄨㄞ")
varLineData.regReplace(pattern: "zhuan", replaceWith: "ㄓㄨㄢ") varLineData.selfReplace("zhuan", "ㄓㄨㄢ")
varLineData.regReplace(pattern: "bang", replaceWith: "ㄅㄤ") varLineData.selfReplace("bang", "ㄅㄤ")
varLineData.regReplace(pattern: "beng", replaceWith: "ㄅㄥ") varLineData.selfReplace("beng", "ㄅㄥ")
varLineData.regReplace(pattern: "bian", replaceWith: "ㄅㄧㄢ") varLineData.selfReplace("bian", "ㄅㄧㄢ")
varLineData.regReplace(pattern: "biao", replaceWith: "ㄅㄧㄠ") varLineData.selfReplace("biao", "ㄅㄧㄠ")
varLineData.regReplace(pattern: "bing", replaceWith: "ㄅㄧㄥ") varLineData.selfReplace("bing", "ㄅㄧㄥ")
varLineData.regReplace(pattern: "cang", replaceWith: "ㄘㄤ") varLineData.selfReplace("cang", "ㄘㄤ")
varLineData.regReplace(pattern: "ceng", replaceWith: "ㄘㄥ") varLineData.selfReplace("ceng", "ㄘㄥ")
varLineData.regReplace(pattern: "chai", replaceWith: "ㄔㄞ") varLineData.selfReplace("chai", "ㄔㄞ")
varLineData.regReplace(pattern: "chan", replaceWith: "ㄔㄢ") varLineData.selfReplace("chan", "ㄔㄢ")
varLineData.regReplace(pattern: "chao", replaceWith: "ㄔㄠ") varLineData.selfReplace("chao", "ㄔㄠ")
varLineData.regReplace(pattern: "chen", replaceWith: "ㄔㄣ") varLineData.selfReplace("chen", "ㄔㄣ")
varLineData.regReplace(pattern: "chou", replaceWith: "ㄔㄡ") varLineData.selfReplace("chou", "ㄔㄡ")
varLineData.regReplace(pattern: "chua", replaceWith: "ㄔㄨㄚ") varLineData.selfReplace("chua", "ㄔㄨㄚ")
varLineData.regReplace(pattern: "chui", replaceWith: "ㄔㄨㄟ") varLineData.selfReplace("chui", "ㄔㄨㄟ")
varLineData.regReplace(pattern: "chun", replaceWith: "ㄔㄨㄣ") varLineData.selfReplace("chun", "ㄔㄨㄣ")
varLineData.regReplace(pattern: "chuo", replaceWith: "ㄔㄨㄛ") varLineData.selfReplace("chuo", "ㄔㄨㄛ")
varLineData.regReplace(pattern: "cong", replaceWith: "ㄘㄨㄥ") varLineData.selfReplace("cong", "ㄘㄨㄥ")
varLineData.regReplace(pattern: "cuan", replaceWith: "ㄘㄨㄢ") varLineData.selfReplace("cuan", "ㄘㄨㄢ")
varLineData.regReplace(pattern: "dang", replaceWith: "ㄉㄤ") varLineData.selfReplace("dang", "ㄉㄤ")
varLineData.regReplace(pattern: "deng", replaceWith: "ㄉㄥ") varLineData.selfReplace("deng", "ㄉㄥ")
varLineData.regReplace(pattern: "dian", replaceWith: "ㄉㄧㄢ") varLineData.selfReplace("dian", "ㄉㄧㄢ")
varLineData.regReplace(pattern: "diao", replaceWith: "ㄉㄧㄠ") varLineData.selfReplace("diao", "ㄉㄧㄠ")
varLineData.regReplace(pattern: "ding", replaceWith: "ㄉㄧㄥ") varLineData.selfReplace("ding", "ㄉㄧㄥ")
varLineData.regReplace(pattern: "dong", replaceWith: "ㄉㄨㄥ") varLineData.selfReplace("dong", "ㄉㄨㄥ")
varLineData.regReplace(pattern: "duan", replaceWith: "ㄉㄨㄢ") varLineData.selfReplace("duan", "ㄉㄨㄢ")
varLineData.regReplace(pattern: "fang", replaceWith: "ㄈㄤ") varLineData.selfReplace("fang", "ㄈㄤ")
varLineData.regReplace(pattern: "feng", replaceWith: "ㄈㄥ") varLineData.selfReplace("feng", "ㄈㄥ")
varLineData.regReplace(pattern: "fiao", replaceWith: "ㄈㄧㄠ") varLineData.selfReplace("fiao", "ㄈㄧㄠ")
varLineData.regReplace(pattern: "fong", replaceWith: "ㄈㄨㄥ") varLineData.selfReplace("fong", "ㄈㄨㄥ")
varLineData.regReplace(pattern: "gang", replaceWith: "ㄍㄤ") varLineData.selfReplace("gang", "ㄍㄤ")
varLineData.regReplace(pattern: "geng", replaceWith: "ㄍㄥ") varLineData.selfReplace("geng", "ㄍㄥ")
varLineData.regReplace(pattern: "giao", replaceWith: "ㄍㄧㄠ") varLineData.selfReplace("giao", "ㄍㄧㄠ")
varLineData.regReplace(pattern: "gong", replaceWith: "ㄍㄨㄥ") varLineData.selfReplace("gong", "ㄍㄨㄥ")
varLineData.regReplace(pattern: "guai", replaceWith: "ㄍㄨㄞ") varLineData.selfReplace("guai", "ㄍㄨㄞ")
varLineData.regReplace(pattern: "guan", replaceWith: "ㄍㄨㄢ") varLineData.selfReplace("guan", "ㄍㄨㄢ")
varLineData.regReplace(pattern: "hang", replaceWith: "ㄏㄤ") varLineData.selfReplace("hang", "ㄏㄤ")
varLineData.regReplace(pattern: "heng", replaceWith: "ㄏㄥ") varLineData.selfReplace("heng", "ㄏㄥ")
varLineData.regReplace(pattern: "hong", replaceWith: "ㄏㄨㄥ") varLineData.selfReplace("hong", "ㄏㄨㄥ")
varLineData.regReplace(pattern: "huai", replaceWith: "ㄏㄨㄞ") varLineData.selfReplace("huai", "ㄏㄨㄞ")
varLineData.regReplace(pattern: "huan", replaceWith: "ㄏㄨㄢ") varLineData.selfReplace("huan", "ㄏㄨㄢ")
varLineData.regReplace(pattern: "jian", replaceWith: "ㄐㄧㄢ") varLineData.selfReplace("jian", "ㄐㄧㄢ")
varLineData.regReplace(pattern: "jiao", replaceWith: "ㄐㄧㄠ") varLineData.selfReplace("jiao", "ㄐㄧㄠ")
varLineData.regReplace(pattern: "jing", replaceWith: "ㄐㄧㄥ") varLineData.selfReplace("jing", "ㄐㄧㄥ")
varLineData.regReplace(pattern: "juan", replaceWith: "ㄐㄩㄢ") varLineData.selfReplace("juan", "ㄐㄩㄢ")
varLineData.regReplace(pattern: "kang", replaceWith: "ㄎㄤ") varLineData.selfReplace("kang", "ㄎㄤ")
varLineData.regReplace(pattern: "keng", replaceWith: "ㄎㄥ") varLineData.selfReplace("keng", "ㄎㄥ")
varLineData.regReplace(pattern: "kong", replaceWith: "ㄎㄨㄥ") varLineData.selfReplace("kong", "ㄎㄨㄥ")
varLineData.regReplace(pattern: "kuai", replaceWith: "ㄎㄨㄞ") varLineData.selfReplace("kuai", "ㄎㄨㄞ")
varLineData.regReplace(pattern: "kuan", replaceWith: "ㄎㄨㄢ") varLineData.selfReplace("kuan", "ㄎㄨㄢ")
varLineData.regReplace(pattern: "lang", replaceWith: "ㄌㄤ") varLineData.selfReplace("lang", "ㄌㄤ")
varLineData.regReplace(pattern: "leng", replaceWith: "ㄌㄥ") varLineData.selfReplace("leng", "ㄌㄥ")
varLineData.regReplace(pattern: "lian", replaceWith: "ㄌㄧㄢ") varLineData.selfReplace("lian", "ㄌㄧㄢ")
varLineData.regReplace(pattern: "liao", replaceWith: "ㄌㄧㄠ") varLineData.selfReplace("liao", "ㄌㄧㄠ")
varLineData.regReplace(pattern: "ling", replaceWith: "ㄌㄧㄥ") varLineData.selfReplace("ling", "ㄌㄧㄥ")
varLineData.regReplace(pattern: "long", replaceWith: "ㄌㄨㄥ") varLineData.selfReplace("long", "ㄌㄨㄥ")
varLineData.regReplace(pattern: "luan", replaceWith: "ㄌㄨㄢ") varLineData.selfReplace("luan", "ㄌㄨㄢ")
varLineData.regReplace(pattern: "lvan", replaceWith: "ㄌㄩㄢ") varLineData.selfReplace("lvan", "ㄌㄩㄢ")
varLineData.regReplace(pattern: "mang", replaceWith: "ㄇㄤ") varLineData.selfReplace("mang", "ㄇㄤ")
varLineData.regReplace(pattern: "meng", replaceWith: "ㄇㄥ") varLineData.selfReplace("meng", "ㄇㄥ")
varLineData.regReplace(pattern: "mian", replaceWith: "ㄇㄧㄢ") varLineData.selfReplace("mian", "ㄇㄧㄢ")
varLineData.regReplace(pattern: "miao", replaceWith: "ㄇㄧㄠ") varLineData.selfReplace("miao", "ㄇㄧㄠ")
varLineData.regReplace(pattern: "ming", replaceWith: "ㄇㄧㄥ") varLineData.selfReplace("ming", "ㄇㄧㄥ")
varLineData.regReplace(pattern: "nang", replaceWith: "ㄋㄤ") varLineData.selfReplace("nang", "ㄋㄤ")
varLineData.regReplace(pattern: "neng", replaceWith: "ㄋㄥ") varLineData.selfReplace("neng", "ㄋㄥ")
varLineData.regReplace(pattern: "nian", replaceWith: "ㄋㄧㄢ") varLineData.selfReplace("nian", "ㄋㄧㄢ")
varLineData.regReplace(pattern: "niao", replaceWith: "ㄋㄧㄠ") varLineData.selfReplace("niao", "ㄋㄧㄠ")
varLineData.regReplace(pattern: "ning", replaceWith: "ㄋㄧㄥ") varLineData.selfReplace("ning", "ㄋㄧㄥ")
varLineData.regReplace(pattern: "nong", replaceWith: "ㄋㄨㄥ") varLineData.selfReplace("nong", "ㄋㄨㄥ")
varLineData.regReplace(pattern: "nuan", replaceWith: "ㄋㄨㄢ") varLineData.selfReplace("nuan", "ㄋㄨㄢ")
varLineData.regReplace(pattern: "pang", replaceWith: "ㄆㄤ") varLineData.selfReplace("pang", "ㄆㄤ")
varLineData.regReplace(pattern: "peng", replaceWith: "ㄆㄥ") varLineData.selfReplace("peng", "ㄆㄥ")
varLineData.regReplace(pattern: "pian", replaceWith: "ㄆㄧㄢ") varLineData.selfReplace("pian", "ㄆㄧㄢ")
varLineData.regReplace(pattern: "piao", replaceWith: "ㄆㄧㄠ") varLineData.selfReplace("piao", "ㄆㄧㄠ")
varLineData.regReplace(pattern: "ping", replaceWith: "ㄆㄧㄥ") varLineData.selfReplace("ping", "ㄆㄧㄥ")
varLineData.regReplace(pattern: "qian", replaceWith: "ㄑㄧㄢ") varLineData.selfReplace("qian", "ㄑㄧㄢ")
varLineData.regReplace(pattern: "qiao", replaceWith: "ㄑㄧㄠ") varLineData.selfReplace("qiao", "ㄑㄧㄠ")
varLineData.regReplace(pattern: "qing", replaceWith: "ㄑㄧㄥ") varLineData.selfReplace("qing", "ㄑㄧㄥ")
varLineData.regReplace(pattern: "quan", replaceWith: "ㄑㄩㄢ") varLineData.selfReplace("quan", "ㄑㄩㄢ")
varLineData.regReplace(pattern: "rang", replaceWith: "ㄖㄤ") varLineData.selfReplace("rang", "ㄖㄤ")
varLineData.regReplace(pattern: "reng", replaceWith: "ㄖㄥ") varLineData.selfReplace("reng", "ㄖㄥ")
varLineData.regReplace(pattern: "rong", replaceWith: "ㄖㄨㄥ") varLineData.selfReplace("rong", "ㄖㄨㄥ")
varLineData.regReplace(pattern: "ruan", replaceWith: "ㄖㄨㄢ") varLineData.selfReplace("ruan", "ㄖㄨㄢ")
varLineData.regReplace(pattern: "sang", replaceWith: "ㄙㄤ") varLineData.selfReplace("sang", "ㄙㄤ")
varLineData.regReplace(pattern: "seng", replaceWith: "ㄙㄥ") varLineData.selfReplace("seng", "ㄙㄥ")
varLineData.regReplace(pattern: "shai", replaceWith: "ㄕㄞ") varLineData.selfReplace("shai", "ㄕㄞ")
varLineData.regReplace(pattern: "shan", replaceWith: "ㄕㄢ") varLineData.selfReplace("shan", "ㄕㄢ")
varLineData.regReplace(pattern: "shao", replaceWith: "ㄕㄠ") varLineData.selfReplace("shao", "ㄕㄠ")
varLineData.regReplace(pattern: "shei", replaceWith: "ㄕㄟ") varLineData.selfReplace("shei", "ㄕㄟ")
varLineData.regReplace(pattern: "shen", replaceWith: "ㄕㄣ") varLineData.selfReplace("shen", "ㄕㄣ")
varLineData.regReplace(pattern: "shou", replaceWith: "ㄕㄡ") varLineData.selfReplace("shou", "ㄕㄡ")
varLineData.regReplace(pattern: "shua", replaceWith: "ㄕㄨㄚ") varLineData.selfReplace("shua", "ㄕㄨㄚ")
varLineData.regReplace(pattern: "shui", replaceWith: "ㄕㄨㄟ") varLineData.selfReplace("shui", "ㄕㄨㄟ")
varLineData.regReplace(pattern: "shun", replaceWith: "ㄕㄨㄣ") varLineData.selfReplace("shun", "ㄕㄨㄣ")
varLineData.regReplace(pattern: "shuo", replaceWith: "ㄕㄨㄛ") varLineData.selfReplace("shuo", "ㄕㄨㄛ")
varLineData.regReplace(pattern: "song", replaceWith: "ㄙㄨㄥ") varLineData.selfReplace("song", "ㄙㄨㄥ")
varLineData.regReplace(pattern: "suan", replaceWith: "ㄙㄨㄢ") varLineData.selfReplace("suan", "ㄙㄨㄢ")
varLineData.regReplace(pattern: "tang", replaceWith: "ㄊㄤ") varLineData.selfReplace("tang", "ㄊㄤ")
varLineData.regReplace(pattern: "teng", replaceWith: "ㄊㄥ") varLineData.selfReplace("teng", "ㄊㄥ")
varLineData.regReplace(pattern: "tian", replaceWith: "ㄊㄧㄢ") varLineData.selfReplace("tian", "ㄊㄧㄢ")
varLineData.regReplace(pattern: "tiao", replaceWith: "ㄊㄧㄠ") varLineData.selfReplace("tiao", "ㄊㄧㄠ")
varLineData.regReplace(pattern: "ting", replaceWith: "ㄊㄧㄥ") varLineData.selfReplace("ting", "ㄊㄧㄥ")
varLineData.regReplace(pattern: "tong", replaceWith: "ㄊㄨㄥ") varLineData.selfReplace("tong", "ㄊㄨㄥ")
varLineData.regReplace(pattern: "tuan", replaceWith: "ㄊㄨㄢ") varLineData.selfReplace("tuan", "ㄊㄨㄢ")
varLineData.regReplace(pattern: "wang", replaceWith: "ㄨㄤ") varLineData.selfReplace("wang", "ㄨㄤ")
varLineData.regReplace(pattern: "weng", replaceWith: "ㄨㄥ") varLineData.selfReplace("weng", "ㄨㄥ")
varLineData.regReplace(pattern: "xian", replaceWith: "ㄒㄧㄢ") varLineData.selfReplace("xian", "ㄒㄧㄢ")
varLineData.regReplace(pattern: "xiao", replaceWith: "ㄒㄧㄠ") varLineData.selfReplace("xiao", "ㄒㄧㄠ")
varLineData.regReplace(pattern: "xing", replaceWith: "ㄒㄧㄥ") varLineData.selfReplace("xing", "ㄒㄧㄥ")
varLineData.regReplace(pattern: "xuan", replaceWith: "ㄒㄩㄢ") varLineData.selfReplace("xuan", "ㄒㄩㄢ")
varLineData.regReplace(pattern: "yang", replaceWith: "ㄧㄤ") varLineData.selfReplace("yang", "ㄧㄤ")
varLineData.regReplace(pattern: "ying", replaceWith: "ㄧㄥ") varLineData.selfReplace("ying", "ㄧㄥ")
varLineData.regReplace(pattern: "yong", replaceWith: "ㄩㄥ") varLineData.selfReplace("yong", "ㄩㄥ")
varLineData.regReplace(pattern: "yuan", replaceWith: "ㄩㄢ") varLineData.selfReplace("yuan", "ㄩㄢ")
varLineData.regReplace(pattern: "zang", replaceWith: "ㄗㄤ") varLineData.selfReplace("zang", "ㄗㄤ")
varLineData.regReplace(pattern: "zeng", replaceWith: "ㄗㄥ") varLineData.selfReplace("zeng", "ㄗㄥ")
varLineData.regReplace(pattern: "zhai", replaceWith: "ㄓㄞ") varLineData.selfReplace("zhai", "ㄓㄞ")
varLineData.regReplace(pattern: "zhan", replaceWith: "ㄓㄢ") varLineData.selfReplace("zhan", "ㄓㄢ")
varLineData.regReplace(pattern: "zhao", replaceWith: "ㄓㄠ") varLineData.selfReplace("zhao", "ㄓㄠ")
varLineData.regReplace(pattern: "zhei", replaceWith: "ㄓㄟ") varLineData.selfReplace("zhei", "ㄓㄟ")
varLineData.regReplace(pattern: "zhen", replaceWith: "ㄓㄣ") varLineData.selfReplace("zhen", "ㄓㄣ")
varLineData.regReplace(pattern: "zhou", replaceWith: "ㄓㄡ") varLineData.selfReplace("zhou", "ㄓㄡ")
varLineData.regReplace(pattern: "zhua", replaceWith: "ㄓㄨㄚ") varLineData.selfReplace("zhua", "ㄓㄨㄚ")
varLineData.regReplace(pattern: "zhui", replaceWith: "ㄓㄨㄟ") varLineData.selfReplace("zhui", "ㄓㄨㄟ")
varLineData.regReplace(pattern: "zhun", replaceWith: "ㄓㄨㄣ") varLineData.selfReplace("zhun", "ㄓㄨㄣ")
varLineData.regReplace(pattern: "zhuo", replaceWith: "ㄓㄨㄛ") varLineData.selfReplace("zhuo", "ㄓㄨㄛ")
varLineData.regReplace(pattern: "zong", replaceWith: "ㄗㄨㄥ") varLineData.selfReplace("zong", "ㄗㄨㄥ")
varLineData.regReplace(pattern: "zuan", replaceWith: "ㄗㄨㄢ") varLineData.selfReplace("zuan", "ㄗㄨㄢ")
varLineData.regReplace(pattern: "jun", replaceWith: "ㄐㄩㄣ") varLineData.selfReplace("jun", "ㄐㄩㄣ")
varLineData.regReplace(pattern: "ang", replaceWith: "") varLineData.selfReplace("ang", "")
varLineData.regReplace(pattern: "bai", replaceWith: "ㄅㄞ") varLineData.selfReplace("bai", "ㄅㄞ")
varLineData.regReplace(pattern: "ban", replaceWith: "ㄅㄢ") varLineData.selfReplace("ban", "ㄅㄢ")
varLineData.regReplace(pattern: "bao", replaceWith: "ㄅㄠ") varLineData.selfReplace("bao", "ㄅㄠ")
varLineData.regReplace(pattern: "bei", replaceWith: "ㄅㄟ") varLineData.selfReplace("bei", "ㄅㄟ")
varLineData.regReplace(pattern: "ben", replaceWith: "ㄅㄣ") varLineData.selfReplace("ben", "ㄅㄣ")
varLineData.regReplace(pattern: "bie", replaceWith: "ㄅㄧㄝ") varLineData.selfReplace("bie", "ㄅㄧㄝ")
varLineData.regReplace(pattern: "bin", replaceWith: "ㄅㄧㄣ") varLineData.selfReplace("bin", "ㄅㄧㄣ")
varLineData.regReplace(pattern: "cai", replaceWith: "ㄘㄞ") varLineData.selfReplace("cai", "ㄘㄞ")
varLineData.regReplace(pattern: "can", replaceWith: "ㄘㄢ") varLineData.selfReplace("can", "ㄘㄢ")
varLineData.regReplace(pattern: "cao", replaceWith: "ㄘㄠ") varLineData.selfReplace("cao", "ㄘㄠ")
varLineData.regReplace(pattern: "cei", replaceWith: "ㄘㄟ") varLineData.selfReplace("cei", "ㄘㄟ")
varLineData.regReplace(pattern: "cen", replaceWith: "ㄘㄣ") varLineData.selfReplace("cen", "ㄘㄣ")
varLineData.regReplace(pattern: "cha", replaceWith: "ㄔㄚ") varLineData.selfReplace("cha", "ㄔㄚ")
varLineData.regReplace(pattern: "che", replaceWith: "ㄔㄜ") varLineData.selfReplace("che", "ㄔㄜ")
varLineData.regReplace(pattern: "chi", replaceWith: "") varLineData.selfReplace("chi", "")
varLineData.regReplace(pattern: "chu", replaceWith: "ㄔㄨ") varLineData.selfReplace("chu", "ㄔㄨ")
varLineData.regReplace(pattern: "cou", replaceWith: "ㄘㄡ") varLineData.selfReplace("cou", "ㄘㄡ")
varLineData.regReplace(pattern: "cui", replaceWith: "ㄘㄨㄟ") varLineData.selfReplace("cui", "ㄘㄨㄟ")
varLineData.regReplace(pattern: "cun", replaceWith: "ㄘㄨㄣ") varLineData.selfReplace("cun", "ㄘㄨㄣ")
varLineData.regReplace(pattern: "cuo", replaceWith: "ㄘㄨㄛ") varLineData.selfReplace("cuo", "ㄘㄨㄛ")
varLineData.regReplace(pattern: "dai", replaceWith: "ㄉㄞ") varLineData.selfReplace("dai", "ㄉㄞ")
varLineData.regReplace(pattern: "dan", replaceWith: "ㄉㄢ") varLineData.selfReplace("dan", "ㄉㄢ")
varLineData.regReplace(pattern: "dao", replaceWith: "ㄉㄠ") varLineData.selfReplace("dao", "ㄉㄠ")
varLineData.regReplace(pattern: "dei", replaceWith: "ㄉㄟ") varLineData.selfReplace("dei", "ㄉㄟ")
varLineData.regReplace(pattern: "den", replaceWith: "ㄉㄣ") varLineData.selfReplace("den", "ㄉㄣ")
varLineData.regReplace(pattern: "dia", replaceWith: "ㄉㄧㄚ") varLineData.selfReplace("dia", "ㄉㄧㄚ")
varLineData.regReplace(pattern: "die", replaceWith: "ㄉㄧㄝ") varLineData.selfReplace("die", "ㄉㄧㄝ")
varLineData.regReplace(pattern: "diu", replaceWith: "ㄉㄧㄡ") varLineData.selfReplace("diu", "ㄉㄧㄡ")
varLineData.regReplace(pattern: "dou", replaceWith: "ㄉㄡ") varLineData.selfReplace("dou", "ㄉㄡ")
varLineData.regReplace(pattern: "dui", replaceWith: "ㄉㄨㄟ") varLineData.selfReplace("dui", "ㄉㄨㄟ")
varLineData.regReplace(pattern: "dun", replaceWith: "ㄉㄨㄣ") varLineData.selfReplace("dun", "ㄉㄨㄣ")
varLineData.regReplace(pattern: "duo", replaceWith: "ㄉㄨㄛ") varLineData.selfReplace("duo", "ㄉㄨㄛ")
varLineData.regReplace(pattern: "eng", replaceWith: "") varLineData.selfReplace("eng", "")
varLineData.regReplace(pattern: "fan", replaceWith: "ㄈㄢ") varLineData.selfReplace("fan", "ㄈㄢ")
varLineData.regReplace(pattern: "fei", replaceWith: "ㄈㄟ") varLineData.selfReplace("fei", "ㄈㄟ")
varLineData.regReplace(pattern: "fen", replaceWith: "ㄈㄣ") varLineData.selfReplace("fen", "ㄈㄣ")
varLineData.regReplace(pattern: "fou", replaceWith: "ㄈㄡ") varLineData.selfReplace("fou", "ㄈㄡ")
varLineData.regReplace(pattern: "gai", replaceWith: "ㄍㄞ") varLineData.selfReplace("gai", "ㄍㄞ")
varLineData.regReplace(pattern: "gan", replaceWith: "ㄍㄢ") varLineData.selfReplace("gan", "ㄍㄢ")
varLineData.regReplace(pattern: "gao", replaceWith: "ㄍㄠ") varLineData.selfReplace("gao", "ㄍㄠ")
varLineData.regReplace(pattern: "gei", replaceWith: "ㄍㄟ") varLineData.selfReplace("gei", "ㄍㄟ")
varLineData.regReplace(pattern: "gin", replaceWith: "ㄍㄧㄣ") varLineData.selfReplace("gin", "ㄍㄧㄣ")
varLineData.regReplace(pattern: "gen", replaceWith: "ㄍㄣ") varLineData.selfReplace("gen", "ㄍㄣ")
varLineData.regReplace(pattern: "gou", replaceWith: "ㄍㄡ") varLineData.selfReplace("gou", "ㄍㄡ")
varLineData.regReplace(pattern: "gua", replaceWith: "ㄍㄨㄚ") varLineData.selfReplace("gua", "ㄍㄨㄚ")
varLineData.regReplace(pattern: "gue", replaceWith: "ㄍㄨㄜ") varLineData.selfReplace("gue", "ㄍㄨㄜ")
varLineData.regReplace(pattern: "gui", replaceWith: "ㄍㄨㄟ") varLineData.selfReplace("gui", "ㄍㄨㄟ")
varLineData.regReplace(pattern: "gun", replaceWith: "ㄍㄨㄣ") varLineData.selfReplace("gun", "ㄍㄨㄣ")
varLineData.regReplace(pattern: "guo", replaceWith: "ㄍㄨㄛ") varLineData.selfReplace("guo", "ㄍㄨㄛ")
varLineData.regReplace(pattern: "hai", replaceWith: "ㄏㄞ") varLineData.selfReplace("hai", "ㄏㄞ")
varLineData.regReplace(pattern: "han", replaceWith: "ㄏㄢ") varLineData.selfReplace("han", "ㄏㄢ")
varLineData.regReplace(pattern: "hao", replaceWith: "ㄏㄠ") varLineData.selfReplace("hao", "ㄏㄠ")
varLineData.regReplace(pattern: "hei", replaceWith: "ㄏㄟ") varLineData.selfReplace("hei", "ㄏㄟ")
varLineData.regReplace(pattern: "hen", replaceWith: "ㄏㄣ") varLineData.selfReplace("hen", "ㄏㄣ")
varLineData.regReplace(pattern: "hou", replaceWith: "ㄏㄡ") varLineData.selfReplace("hou", "ㄏㄡ")
varLineData.regReplace(pattern: "hua", replaceWith: "ㄏㄨㄚ") varLineData.selfReplace("hua", "ㄏㄨㄚ")
varLineData.regReplace(pattern: "hui", replaceWith: "ㄏㄨㄟ") varLineData.selfReplace("hui", "ㄏㄨㄟ")
varLineData.regReplace(pattern: "hun", replaceWith: "ㄏㄨㄣ") varLineData.selfReplace("hun", "ㄏㄨㄣ")
varLineData.regReplace(pattern: "huo", replaceWith: "ㄏㄨㄛ") varLineData.selfReplace("huo", "ㄏㄨㄛ")
varLineData.regReplace(pattern: "jia", replaceWith: "ㄐㄧㄚ") varLineData.selfReplace("jia", "ㄐㄧㄚ")
varLineData.regReplace(pattern: "jie", replaceWith: "ㄐㄧㄝ") varLineData.selfReplace("jie", "ㄐㄧㄝ")
varLineData.regReplace(pattern: "jin", replaceWith: "ㄐㄧㄣ") varLineData.selfReplace("jin", "ㄐㄧㄣ")
varLineData.regReplace(pattern: "jiu", replaceWith: "ㄐㄧㄡ") varLineData.selfReplace("jiu", "ㄐㄧㄡ")
varLineData.regReplace(pattern: "jue", replaceWith: "ㄐㄩㄝ") varLineData.selfReplace("jue", "ㄐㄩㄝ")
varLineData.regReplace(pattern: "kai", replaceWith: "ㄎㄞ") varLineData.selfReplace("kai", "ㄎㄞ")
varLineData.regReplace(pattern: "kan", replaceWith: "ㄎㄢ") varLineData.selfReplace("kan", "ㄎㄢ")
varLineData.regReplace(pattern: "kao", replaceWith: "ㄎㄠ") varLineData.selfReplace("kao", "ㄎㄠ")
varLineData.regReplace(pattern: "ken", replaceWith: "ㄎㄣ") varLineData.selfReplace("ken", "ㄎㄣ")
varLineData.regReplace(pattern: "kiu", replaceWith: "ㄎㄧㄡ") varLineData.selfReplace("kiu", "ㄎㄧㄡ")
varLineData.regReplace(pattern: "kou", replaceWith: "ㄎㄡ") varLineData.selfReplace("kou", "ㄎㄡ")
varLineData.regReplace(pattern: "kua", replaceWith: "ㄎㄨㄚ") varLineData.selfReplace("kua", "ㄎㄨㄚ")
varLineData.regReplace(pattern: "kui", replaceWith: "ㄎㄨㄟ") varLineData.selfReplace("kui", "ㄎㄨㄟ")
varLineData.regReplace(pattern: "kun", replaceWith: "ㄎㄨㄣ") varLineData.selfReplace("kun", "ㄎㄨㄣ")
varLineData.regReplace(pattern: "kuo", replaceWith: "ㄎㄨㄛ") varLineData.selfReplace("kuo", "ㄎㄨㄛ")
varLineData.regReplace(pattern: "lai", replaceWith: "ㄌㄞ") varLineData.selfReplace("lai", "ㄌㄞ")
varLineData.regReplace(pattern: "lan", replaceWith: "ㄌㄢ") varLineData.selfReplace("lan", "ㄌㄢ")
varLineData.regReplace(pattern: "lao", replaceWith: "ㄌㄠ") varLineData.selfReplace("lao", "ㄌㄠ")
varLineData.regReplace(pattern: "lei", replaceWith: "ㄌㄟ") varLineData.selfReplace("lei", "ㄌㄟ")
varLineData.regReplace(pattern: "lia", replaceWith: "ㄌㄧㄚ") varLineData.selfReplace("lia", "ㄌㄧㄚ")
varLineData.regReplace(pattern: "lie", replaceWith: "ㄌㄧㄝ") varLineData.selfReplace("lie", "ㄌㄧㄝ")
varLineData.regReplace(pattern: "lin", replaceWith: "ㄌㄧㄣ") varLineData.selfReplace("lin", "ㄌㄧㄣ")
varLineData.regReplace(pattern: "liu", replaceWith: "ㄌㄧㄡ") varLineData.selfReplace("liu", "ㄌㄧㄡ")
varLineData.regReplace(pattern: "lou", replaceWith: "ㄌㄡ") varLineData.selfReplace("lou", "ㄌㄡ")
varLineData.regReplace(pattern: "lun", replaceWith: "ㄌㄨㄣ") varLineData.selfReplace("lun", "ㄌㄨㄣ")
varLineData.regReplace(pattern: "luo", replaceWith: "ㄌㄨㄛ") varLineData.selfReplace("luo", "ㄌㄨㄛ")
varLineData.regReplace(pattern: "lve", replaceWith: "ㄌㄩㄝ") varLineData.selfReplace("lve", "ㄌㄩㄝ")
varLineData.regReplace(pattern: "mai", replaceWith: "ㄇㄞ") varLineData.selfReplace("mai", "ㄇㄞ")
varLineData.regReplace(pattern: "man", replaceWith: "ㄇㄢ") varLineData.selfReplace("man", "ㄇㄢ")
varLineData.regReplace(pattern: "mao", replaceWith: "ㄇㄠ") varLineData.selfReplace("mao", "ㄇㄠ")
varLineData.regReplace(pattern: "mei", replaceWith: "ㄇㄟ") varLineData.selfReplace("mei", "ㄇㄟ")
varLineData.regReplace(pattern: "men", replaceWith: "ㄇㄣ") varLineData.selfReplace("men", "ㄇㄣ")
varLineData.regReplace(pattern: "mie", replaceWith: "ㄇㄧㄝ") varLineData.selfReplace("mie", "ㄇㄧㄝ")
varLineData.regReplace(pattern: "min", replaceWith: "ㄇㄧㄣ") varLineData.selfReplace("min", "ㄇㄧㄣ")
varLineData.regReplace(pattern: "miu", replaceWith: "ㄇㄧㄡ") varLineData.selfReplace("miu", "ㄇㄧㄡ")
varLineData.regReplace(pattern: "mou", replaceWith: "ㄇㄡ") varLineData.selfReplace("mou", "ㄇㄡ")
varLineData.regReplace(pattern: "nai", replaceWith: "ㄋㄞ") varLineData.selfReplace("nai", "ㄋㄞ")
varLineData.regReplace(pattern: "nan", replaceWith: "ㄋㄢ") varLineData.selfReplace("nan", "ㄋㄢ")
varLineData.regReplace(pattern: "nao", replaceWith: "ㄋㄠ") varLineData.selfReplace("nao", "ㄋㄠ")
varLineData.regReplace(pattern: "nei", replaceWith: "ㄋㄟ") varLineData.selfReplace("nei", "ㄋㄟ")
varLineData.regReplace(pattern: "nen", replaceWith: "ㄋㄣ") varLineData.selfReplace("nen", "ㄋㄣ")
varLineData.regReplace(pattern: "nie", replaceWith: "ㄋㄧㄝ") varLineData.selfReplace("nie", "ㄋㄧㄝ")
varLineData.regReplace(pattern: "nin", replaceWith: "ㄋㄧㄣ") varLineData.selfReplace("nin", "ㄋㄧㄣ")
varLineData.regReplace(pattern: "niu", replaceWith: "ㄋㄧㄡ") varLineData.selfReplace("niu", "ㄋㄧㄡ")
varLineData.regReplace(pattern: "nou", replaceWith: "ㄋㄡ") varLineData.selfReplace("nou", "ㄋㄡ")
varLineData.regReplace(pattern: "nui", replaceWith: "ㄋㄨㄟ") varLineData.selfReplace("nui", "ㄋㄨㄟ")
varLineData.regReplace(pattern: "nun", replaceWith: "ㄋㄨㄣ") varLineData.selfReplace("nun", "ㄋㄨㄣ")
varLineData.regReplace(pattern: "nuo", replaceWith: "ㄋㄨㄛ") varLineData.selfReplace("nuo", "ㄋㄨㄛ")
varLineData.regReplace(pattern: "nve", replaceWith: "ㄋㄩㄝ") varLineData.selfReplace("nve", "ㄋㄩㄝ")
varLineData.regReplace(pattern: "pai", replaceWith: "ㄆㄞ") varLineData.selfReplace("pai", "ㄆㄞ")
varLineData.regReplace(pattern: "pan", replaceWith: "ㄆㄢ") varLineData.selfReplace("pan", "ㄆㄢ")
varLineData.regReplace(pattern: "pao", replaceWith: "ㄆㄠ") varLineData.selfReplace("pao", "ㄆㄠ")
varLineData.regReplace(pattern: "pei", replaceWith: "ㄆㄟ") varLineData.selfReplace("pei", "ㄆㄟ")
varLineData.regReplace(pattern: "pen", replaceWith: "ㄆㄣ") varLineData.selfReplace("pen", "ㄆㄣ")
varLineData.regReplace(pattern: "pia", replaceWith: "ㄆㄧㄚ") varLineData.selfReplace("pia", "ㄆㄧㄚ")
varLineData.regReplace(pattern: "pie", replaceWith: "ㄆㄧㄝ") varLineData.selfReplace("pie", "ㄆㄧㄝ")
varLineData.regReplace(pattern: "pin", replaceWith: "ㄆㄧㄣ") varLineData.selfReplace("pin", "ㄆㄧㄣ")
varLineData.regReplace(pattern: "pou", replaceWith: "ㄆㄡ") varLineData.selfReplace("pou", "ㄆㄡ")
varLineData.regReplace(pattern: "qia", replaceWith: "ㄑㄧㄚ") varLineData.selfReplace("qia", "ㄑㄧㄚ")
varLineData.regReplace(pattern: "qie", replaceWith: "ㄑㄧㄝ") varLineData.selfReplace("qie", "ㄑㄧㄝ")
varLineData.regReplace(pattern: "qin", replaceWith: "ㄑㄧㄣ") varLineData.selfReplace("qin", "ㄑㄧㄣ")
varLineData.regReplace(pattern: "qiu", replaceWith: "ㄑㄧㄡ") varLineData.selfReplace("qiu", "ㄑㄧㄡ")
varLineData.regReplace(pattern: "que", replaceWith: "ㄑㄩㄝ") varLineData.selfReplace("que", "ㄑㄩㄝ")
varLineData.regReplace(pattern: "qun", replaceWith: "ㄑㄩㄣ") varLineData.selfReplace("qun", "ㄑㄩㄣ")
varLineData.regReplace(pattern: "ran", replaceWith: "ㄖㄢ") varLineData.selfReplace("ran", "ㄖㄢ")
varLineData.regReplace(pattern: "rao", replaceWith: "ㄖㄠ") varLineData.selfReplace("rao", "ㄖㄠ")
varLineData.regReplace(pattern: "ren", replaceWith: "ㄖㄣ") varLineData.selfReplace("ren", "ㄖㄣ")
varLineData.regReplace(pattern: "rou", replaceWith: "ㄖㄡ") varLineData.selfReplace("rou", "ㄖㄡ")
varLineData.regReplace(pattern: "rui", replaceWith: "ㄖㄨㄟ") varLineData.selfReplace("rui", "ㄖㄨㄟ")
varLineData.regReplace(pattern: "run", replaceWith: "ㄖㄨㄣ") varLineData.selfReplace("run", "ㄖㄨㄣ")
varLineData.regReplace(pattern: "ruo", replaceWith: "ㄖㄨㄛ") varLineData.selfReplace("ruo", "ㄖㄨㄛ")
varLineData.regReplace(pattern: "sai", replaceWith: "ㄙㄞ") varLineData.selfReplace("sai", "ㄙㄞ")
varLineData.regReplace(pattern: "san", replaceWith: "ㄙㄢ") varLineData.selfReplace("san", "ㄙㄢ")
varLineData.regReplace(pattern: "sao", replaceWith: "ㄙㄠ") varLineData.selfReplace("sao", "ㄙㄠ")
varLineData.regReplace(pattern: "sei", replaceWith: "ㄙㄟ") varLineData.selfReplace("sei", "ㄙㄟ")
varLineData.regReplace(pattern: "sen", replaceWith: "ㄙㄣ") varLineData.selfReplace("sen", "ㄙㄣ")
varLineData.regReplace(pattern: "sha", replaceWith: "ㄕㄚ") varLineData.selfReplace("sha", "ㄕㄚ")
varLineData.regReplace(pattern: "she", replaceWith: "ㄕㄜ") varLineData.selfReplace("she", "ㄕㄜ")
varLineData.regReplace(pattern: "shi", replaceWith: "") varLineData.selfReplace("shi", "")
varLineData.regReplace(pattern: "shu", replaceWith: "ㄕㄨ") varLineData.selfReplace("shu", "ㄕㄨ")
varLineData.regReplace(pattern: "sou", replaceWith: "ㄙㄡ") varLineData.selfReplace("sou", "ㄙㄡ")
varLineData.regReplace(pattern: "sui", replaceWith: "ㄙㄨㄟ") varLineData.selfReplace("sui", "ㄙㄨㄟ")
varLineData.regReplace(pattern: "sun", replaceWith: "ㄙㄨㄣ") varLineData.selfReplace("sun", "ㄙㄨㄣ")
varLineData.regReplace(pattern: "suo", replaceWith: "ㄙㄨㄛ") varLineData.selfReplace("suo", "ㄙㄨㄛ")
varLineData.regReplace(pattern: "tai", replaceWith: "ㄊㄞ") varLineData.selfReplace("tai", "ㄊㄞ")
varLineData.regReplace(pattern: "tan", replaceWith: "ㄊㄢ") varLineData.selfReplace("tan", "ㄊㄢ")
varLineData.regReplace(pattern: "tao", replaceWith: "ㄊㄠ") varLineData.selfReplace("tao", "ㄊㄠ")
varLineData.regReplace(pattern: "tie", replaceWith: "ㄊㄧㄝ") varLineData.selfReplace("tie", "ㄊㄧㄝ")
varLineData.regReplace(pattern: "tou", replaceWith: "ㄊㄡ") varLineData.selfReplace("tou", "ㄊㄡ")
varLineData.regReplace(pattern: "tui", replaceWith: "ㄊㄨㄟ") varLineData.selfReplace("tui", "ㄊㄨㄟ")
varLineData.regReplace(pattern: "tun", replaceWith: "ㄊㄨㄣ") varLineData.selfReplace("tun", "ㄊㄨㄣ")
varLineData.regReplace(pattern: "tuo", replaceWith: "ㄊㄨㄛ") varLineData.selfReplace("tuo", "ㄊㄨㄛ")
varLineData.regReplace(pattern: "wai", replaceWith: "ㄨㄞ") varLineData.selfReplace("wai", "ㄨㄞ")
varLineData.regReplace(pattern: "wan", replaceWith: "ㄨㄢ") varLineData.selfReplace("wan", "ㄨㄢ")
varLineData.regReplace(pattern: "wei", replaceWith: "ㄨㄟ") varLineData.selfReplace("wei", "ㄨㄟ")
varLineData.regReplace(pattern: "wen", replaceWith: "ㄨㄣ") varLineData.selfReplace("wen", "ㄨㄣ")
varLineData.regReplace(pattern: "xia", replaceWith: "ㄒㄧㄚ") varLineData.selfReplace("xia", "ㄒㄧㄚ")
varLineData.regReplace(pattern: "xie", replaceWith: "ㄒㄧㄝ") varLineData.selfReplace("xie", "ㄒㄧㄝ")
varLineData.regReplace(pattern: "xin", replaceWith: "ㄒㄧㄣ") varLineData.selfReplace("xin", "ㄒㄧㄣ")
varLineData.regReplace(pattern: "xiu", replaceWith: "ㄒㄧㄡ") varLineData.selfReplace("xiu", "ㄒㄧㄡ")
varLineData.regReplace(pattern: "xue", replaceWith: "ㄒㄩㄝ") varLineData.selfReplace("xue", "ㄒㄩㄝ")
varLineData.regReplace(pattern: "xun", replaceWith: "ㄒㄩㄣ") varLineData.selfReplace("xun", "ㄒㄩㄣ")
varLineData.regReplace(pattern: "yai", replaceWith: "ㄧㄞ") varLineData.selfReplace("yai", "ㄧㄞ")
varLineData.regReplace(pattern: "yan", replaceWith: "ㄧㄢ") varLineData.selfReplace("yan", "ㄧㄢ")
varLineData.regReplace(pattern: "yao", replaceWith: "ㄧㄠ") varLineData.selfReplace("yao", "ㄧㄠ")
varLineData.regReplace(pattern: "yin", replaceWith: "ㄧㄣ") varLineData.selfReplace("yin", "ㄧㄣ")
varLineData.regReplace(pattern: "you", replaceWith: "ㄧㄡ") varLineData.selfReplace("you", "ㄧㄡ")
varLineData.regReplace(pattern: "yue", replaceWith: "ㄩㄝ") varLineData.selfReplace("yue", "ㄩㄝ")
varLineData.regReplace(pattern: "yun", replaceWith: "ㄩㄣ") varLineData.selfReplace("yun", "ㄩㄣ")
varLineData.regReplace(pattern: "zai", replaceWith: "ㄗㄞ") varLineData.selfReplace("zai", "ㄗㄞ")
varLineData.regReplace(pattern: "zan", replaceWith: "ㄗㄢ") varLineData.selfReplace("zan", "ㄗㄢ")
varLineData.regReplace(pattern: "zao", replaceWith: "ㄗㄠ") varLineData.selfReplace("zao", "ㄗㄠ")
varLineData.regReplace(pattern: "zei", replaceWith: "ㄗㄟ") varLineData.selfReplace("zei", "ㄗㄟ")
varLineData.regReplace(pattern: "zen", replaceWith: "ㄗㄣ") varLineData.selfReplace("zen", "ㄗㄣ")
varLineData.regReplace(pattern: "zha", replaceWith: "ㄓㄚ") varLineData.selfReplace("zha", "ㄓㄚ")
varLineData.regReplace(pattern: "zhe", replaceWith: "ㄓㄜ") varLineData.selfReplace("zhe", "ㄓㄜ")
varLineData.regReplace(pattern: "zhi", replaceWith: "") varLineData.selfReplace("zhi", "")
varLineData.regReplace(pattern: "zhu", replaceWith: "ㄓㄨ") varLineData.selfReplace("zhu", "ㄓㄨ")
varLineData.regReplace(pattern: "zou", replaceWith: "ㄗㄡ") varLineData.selfReplace("zou", "ㄗㄡ")
varLineData.regReplace(pattern: "zui", replaceWith: "ㄗㄨㄟ") varLineData.selfReplace("zui", "ㄗㄨㄟ")
varLineData.regReplace(pattern: "zun", replaceWith: "ㄗㄨㄣ") varLineData.selfReplace("zun", "ㄗㄨㄣ")
varLineData.regReplace(pattern: "zuo", replaceWith: "ㄗㄨㄛ") varLineData.selfReplace("zuo", "ㄗㄨㄛ")
varLineData.regReplace(pattern: "ai", replaceWith: "") varLineData.selfReplace("ai", "")
varLineData.regReplace(pattern: "an", replaceWith: "") varLineData.selfReplace("an", "")
varLineData.regReplace(pattern: "ao", replaceWith: "") varLineData.selfReplace("ao", "")
varLineData.regReplace(pattern: "ba", replaceWith: "ㄅㄚ") varLineData.selfReplace("ba", "ㄅㄚ")
varLineData.regReplace(pattern: "bi", replaceWith: "ㄅㄧ") varLineData.selfReplace("bi", "ㄅㄧ")
varLineData.regReplace(pattern: "bo", replaceWith: "ㄅㄛ") varLineData.selfReplace("bo", "ㄅㄛ")
varLineData.regReplace(pattern: "bu", replaceWith: "ㄅㄨ") varLineData.selfReplace("bu", "ㄅㄨ")
varLineData.regReplace(pattern: "ca", replaceWith: "ㄘㄚ") varLineData.selfReplace("ca", "ㄘㄚ")
varLineData.regReplace(pattern: "ce", replaceWith: "ㄘㄜ") varLineData.selfReplace("ce", "ㄘㄜ")
varLineData.regReplace(pattern: "ci", replaceWith: "") varLineData.selfReplace("ci", "")
varLineData.regReplace(pattern: "cu", replaceWith: "ㄘㄨ") varLineData.selfReplace("cu", "ㄘㄨ")
varLineData.regReplace(pattern: "da", replaceWith: "ㄉㄚ") varLineData.selfReplace("da", "ㄉㄚ")
varLineData.regReplace(pattern: "de", replaceWith: "ㄉㄜ") varLineData.selfReplace("de", "ㄉㄜ")
varLineData.regReplace(pattern: "di", replaceWith: "ㄉㄧ") varLineData.selfReplace("di", "ㄉㄧ")
varLineData.regReplace(pattern: "du", replaceWith: "ㄉㄨ") varLineData.selfReplace("du", "ㄉㄨ")
varLineData.regReplace(pattern: "eh", replaceWith: "") varLineData.selfReplace("eh", "")
varLineData.regReplace(pattern: "ei", replaceWith: "") varLineData.selfReplace("ei", "")
varLineData.regReplace(pattern: "en", replaceWith: "") varLineData.selfReplace("en", "")
varLineData.regReplace(pattern: "er", replaceWith: "") varLineData.selfReplace("er", "")
varLineData.regReplace(pattern: "fa", replaceWith: "ㄈㄚ") varLineData.selfReplace("fa", "ㄈㄚ")
varLineData.regReplace(pattern: "fo", replaceWith: "ㄈㄛ") varLineData.selfReplace("fo", "ㄈㄛ")
varLineData.regReplace(pattern: "fu", replaceWith: "ㄈㄨ") varLineData.selfReplace("fu", "ㄈㄨ")
varLineData.regReplace(pattern: "ga", replaceWith: "ㄍㄚ") varLineData.selfReplace("ga", "ㄍㄚ")
varLineData.regReplace(pattern: "ge", replaceWith: "ㄍㄜ") varLineData.selfReplace("ge", "ㄍㄜ")
varLineData.regReplace(pattern: "gi", replaceWith: "ㄍㄧ") varLineData.selfReplace("gi", "ㄍㄧ")
varLineData.regReplace(pattern: "gu", replaceWith: "ㄍㄨ") varLineData.selfReplace("gu", "ㄍㄨ")
varLineData.regReplace(pattern: "ha", replaceWith: "ㄏㄚ") varLineData.selfReplace("ha", "ㄏㄚ")
varLineData.regReplace(pattern: "he", replaceWith: "ㄏㄜ") varLineData.selfReplace("he", "ㄏㄜ")
varLineData.regReplace(pattern: "hu", replaceWith: "ㄏㄨ") varLineData.selfReplace("hu", "ㄏㄨ")
varLineData.regReplace(pattern: "ji", replaceWith: "ㄐㄧ") varLineData.selfReplace("ji", "ㄐㄧ")
varLineData.regReplace(pattern: "ju", replaceWith: "ㄐㄩ") varLineData.selfReplace("ju", "ㄐㄩ")
varLineData.regReplace(pattern: "ka", replaceWith: "ㄎㄚ") varLineData.selfReplace("ka", "ㄎㄚ")
varLineData.regReplace(pattern: "ke", replaceWith: "ㄎㄜ") varLineData.selfReplace("ke", "ㄎㄜ")
varLineData.regReplace(pattern: "ku", replaceWith: "ㄎㄨ") varLineData.selfReplace("ku", "ㄎㄨ")
varLineData.regReplace(pattern: "la", replaceWith: "ㄌㄚ") varLineData.selfReplace("la", "ㄌㄚ")
varLineData.regReplace(pattern: "le", replaceWith: "ㄌㄜ") varLineData.selfReplace("le", "ㄌㄜ")
varLineData.regReplace(pattern: "li", replaceWith: "ㄌㄧ") varLineData.selfReplace("li", "ㄌㄧ")
varLineData.regReplace(pattern: "lo", replaceWith: "ㄌㄛ") varLineData.selfReplace("lo", "ㄌㄛ")
varLineData.regReplace(pattern: "lu", replaceWith: "ㄌㄨ") varLineData.selfReplace("lu", "ㄌㄨ")
varLineData.regReplace(pattern: "lv", replaceWith: "ㄌㄩ") varLineData.selfReplace("lv", "ㄌㄩ")
varLineData.regReplace(pattern: "ma", replaceWith: "ㄇㄚ") varLineData.selfReplace("ma", "ㄇㄚ")
varLineData.regReplace(pattern: "me", replaceWith: "ㄇㄜ") varLineData.selfReplace("me", "ㄇㄜ")
varLineData.regReplace(pattern: "mi", replaceWith: "ㄇㄧ") varLineData.selfReplace("mi", "ㄇㄧ")
varLineData.regReplace(pattern: "mo", replaceWith: "ㄇㄛ") varLineData.selfReplace("mo", "ㄇㄛ")
varLineData.regReplace(pattern: "mu", replaceWith: "ㄇㄨ") varLineData.selfReplace("mu", "ㄇㄨ")
varLineData.regReplace(pattern: "na", replaceWith: "ㄋㄚ") varLineData.selfReplace("na", "ㄋㄚ")
varLineData.regReplace(pattern: "ne", replaceWith: "ㄋㄜ") varLineData.selfReplace("ne", "ㄋㄜ")
varLineData.regReplace(pattern: "ni", replaceWith: "ㄋㄧ") varLineData.selfReplace("ni", "ㄋㄧ")
varLineData.regReplace(pattern: "nu", replaceWith: "ㄋㄨ") varLineData.selfReplace("nu", "ㄋㄨ")
varLineData.regReplace(pattern: "nv", replaceWith: "ㄋㄩ") varLineData.selfReplace("nv", "ㄋㄩ")
varLineData.regReplace(pattern: "ou", replaceWith: "") varLineData.selfReplace("ou", "")
varLineData.regReplace(pattern: "pa", replaceWith: "ㄆㄚ") varLineData.selfReplace("pa", "ㄆㄚ")
varLineData.regReplace(pattern: "pi", replaceWith: "ㄆㄧ") varLineData.selfReplace("pi", "ㄆㄧ")
varLineData.regReplace(pattern: "po", replaceWith: "ㄆㄛ") varLineData.selfReplace("po", "ㄆㄛ")
varLineData.regReplace(pattern: "pu", replaceWith: "ㄆㄨ") varLineData.selfReplace("pu", "ㄆㄨ")
varLineData.regReplace(pattern: "qi", replaceWith: "ㄑㄧ") varLineData.selfReplace("qi", "ㄑㄧ")
varLineData.regReplace(pattern: "qu", replaceWith: "ㄑㄩ") varLineData.selfReplace("qu", "ㄑㄩ")
varLineData.regReplace(pattern: "re", replaceWith: "ㄖㄜ") varLineData.selfReplace("re", "ㄖㄜ")
varLineData.regReplace(pattern: "ri", replaceWith: "") varLineData.selfReplace("ri", "")
varLineData.regReplace(pattern: "ru", replaceWith: "ㄖㄨ") varLineData.selfReplace("ru", "ㄖㄨ")
varLineData.regReplace(pattern: "sa", replaceWith: "ㄙㄚ") varLineData.selfReplace("sa", "ㄙㄚ")
varLineData.regReplace(pattern: "se", replaceWith: "ㄙㄜ") varLineData.selfReplace("se", "ㄙㄜ")
varLineData.regReplace(pattern: "si", replaceWith: "") varLineData.selfReplace("si", "")
varLineData.regReplace(pattern: "su", replaceWith: "ㄙㄨ") varLineData.selfReplace("su", "ㄙㄨ")
varLineData.regReplace(pattern: "ta", replaceWith: "ㄊㄚ") varLineData.selfReplace("ta", "ㄊㄚ")
varLineData.regReplace(pattern: "te", replaceWith: "ㄊㄜ") varLineData.selfReplace("te", "ㄊㄜ")
varLineData.regReplace(pattern: "ti", replaceWith: "ㄊㄧ") varLineData.selfReplace("ti", "ㄊㄧ")
varLineData.regReplace(pattern: "tu", replaceWith: "ㄊㄨ") varLineData.selfReplace("tu", "ㄊㄨ")
varLineData.regReplace(pattern: "wa", replaceWith: "ㄨㄚ") varLineData.selfReplace("wa", "ㄨㄚ")
varLineData.regReplace(pattern: "wo", replaceWith: "ㄨㄛ") varLineData.selfReplace("wo", "ㄨㄛ")
varLineData.regReplace(pattern: "wu", replaceWith: "") varLineData.selfReplace("wu", "")
varLineData.regReplace(pattern: "xi", replaceWith: "ㄒㄧ") varLineData.selfReplace("xi", "ㄒㄧ")
varLineData.regReplace(pattern: "xu", replaceWith: "ㄒㄩ") varLineData.selfReplace("xu", "ㄒㄩ")
varLineData.regReplace(pattern: "ya", replaceWith: "ㄧㄚ") varLineData.selfReplace("ya", "ㄧㄚ")
varLineData.regReplace(pattern: "ye", replaceWith: "ㄧㄝ") varLineData.selfReplace("ye", "ㄧㄝ")
varLineData.regReplace(pattern: "yi", replaceWith: "") varLineData.selfReplace("yi", "")
varLineData.regReplace(pattern: "yo", replaceWith: "ㄧㄛ") varLineData.selfReplace("yo", "ㄧㄛ")
varLineData.regReplace(pattern: "yu", replaceWith: "") varLineData.selfReplace("yu", "")
varLineData.regReplace(pattern: "za", replaceWith: "ㄗㄚ") varLineData.selfReplace("za", "ㄗㄚ")
varLineData.regReplace(pattern: "ze", replaceWith: "ㄗㄜ") varLineData.selfReplace("ze", "ㄗㄜ")
varLineData.regReplace(pattern: "zi", replaceWith: "") varLineData.selfReplace("zi", "")
varLineData.regReplace(pattern: "zu", replaceWith: "ㄗㄨ") varLineData.selfReplace("zu", "ㄗㄨ")
varLineData.regReplace(pattern: "a", replaceWith: "") varLineData.selfReplace("a", "")
varLineData.regReplace(pattern: "e", replaceWith: "") varLineData.selfReplace("e", "")
varLineData.regReplace(pattern: "o", replaceWith: "") varLineData.selfReplace("o", "")
varLineData.regReplace(pattern: "q", replaceWith: "") varLineData.selfReplace("q", "")
varLineData.regReplace(pattern: "2", replaceWith: "ˊ") varLineData.selfReplace("2", "ˊ")
varLineData.regReplace(pattern: "3", replaceWith: "ˇ") varLineData.selfReplace("3", "ˇ")
varLineData.regReplace(pattern: "4", replaceWith: "ˋ") varLineData.selfReplace("4", "ˋ")
varLineData.regReplace(pattern: "5", replaceWith: "˙") varLineData.selfReplace("5", "˙")
varLineData.regReplace(pattern: "1", replaceWith: "") varLineData.selfReplace("1", "")
strProcessed += varLineData strProcessed += varLineData
strProcessed += "\n" strProcessed += "\n"
} }

View File

@ -686,6 +686,8 @@
<dict> <dict>
<key>POSTINSTALL_PATH</key> <key>POSTINSTALL_PATH</key>
<dict> <dict>
<key>PATH</key>
<string>Installer/pkgPostInstall.sh</string>
<key>PATH_TYPE</key> <key>PATH_TYPE</key>
<integer>1</integer> <integer>1</integer>
</dict> </dict>
@ -724,7 +726,7 @@
<key>USE_HFS+_COMPRESSION</key> <key>USE_HFS+_COMPRESSION</key>
<false/> <false/>
<key>VERSION</key> <key>VERSION</key>
<string>1.4.0</string> <string>1.4.2</string>
</dict> </dict>
<key>TYPE</key> <key>TYPE</key>
<integer>0</integer> <integer>0</integer>

View File

@ -1179,7 +1179,7 @@
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO; COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1940; CURRENT_PROJECT_VERSION = 1942;
DEBUG_INFORMATION_FORMAT = dwarf; DEBUG_INFORMATION_FORMAT = dwarf;
GCC_C_LANGUAGE_STANDARD = gnu11; GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_DYNAMIC_NO_PIC = NO; GCC_DYNAMIC_NO_PIC = NO;
@ -1202,7 +1202,7 @@
"@executable_path/../Frameworks", "@executable_path/../Frameworks",
); );
MACOSX_DEPLOYMENT_TARGET = 10.11.5; MACOSX_DEPLOYMENT_TARGET = 10.11.5;
MARKETING_VERSION = 1.4.0; MARKETING_VERSION = 1.4.2;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = org.atelierInmu.vChewing.vChewingPhraseEditor; PRODUCT_BUNDLE_IDENTIFIER = org.atelierInmu.vChewing.vChewingPhraseEditor;
@ -1235,7 +1235,7 @@
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO; COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1940; CURRENT_PROJECT_VERSION = 1942;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO; ENABLE_NS_ASSERTIONS = NO;
GCC_C_LANGUAGE_STANDARD = gnu11; GCC_C_LANGUAGE_STANDARD = gnu11;
@ -1254,7 +1254,7 @@
"@executable_path/../Frameworks", "@executable_path/../Frameworks",
); );
MACOSX_DEPLOYMENT_TARGET = 10.11.5; MACOSX_DEPLOYMENT_TARGET = 10.11.5;
MARKETING_VERSION = 1.4.0; MARKETING_VERSION = 1.4.2;
MTL_ENABLE_DEBUG_INFO = NO; MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = org.atelierInmu.vChewing.vChewingPhraseEditor; PRODUCT_BUNDLE_IDENTIFIER = org.atelierInmu.vChewing.vChewingPhraseEditor;
@ -1369,7 +1369,7 @@
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO; COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1940; CURRENT_PROJECT_VERSION = 1942;
DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_ASSET_PATHS = "";
DEVELOPMENT_TEAM = ""; DEVELOPMENT_TEAM = "";
GCC_C_LANGUAGE_STANDARD = gnu99; GCC_C_LANGUAGE_STANDARD = gnu99;
@ -1404,7 +1404,7 @@
"@executable_path/../Frameworks", "@executable_path/../Frameworks",
); );
MACOSX_DEPLOYMENT_TARGET = 10.11.5; MACOSX_DEPLOYMENT_TARGET = 10.11.5;
MARKETING_VERSION = 1.4.0; MARKETING_VERSION = 1.4.2;
ONLY_ACTIVE_ARCH = YES; ONLY_ACTIVE_ARCH = YES;
PRODUCT_BUNDLE_IDENTIFIER = org.atelierInmu.inputmethod.vChewing; PRODUCT_BUNDLE_IDENTIFIER = org.atelierInmu.inputmethod.vChewing;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
@ -1437,7 +1437,7 @@
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO; COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1940; CURRENT_PROJECT_VERSION = 1942;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_ASSET_PATHS = "";
DEVELOPMENT_TEAM = ""; DEVELOPMENT_TEAM = "";
@ -1467,7 +1467,7 @@
"@executable_path/../Frameworks", "@executable_path/../Frameworks",
); );
MACOSX_DEPLOYMENT_TARGET = 10.11.5; MACOSX_DEPLOYMENT_TARGET = 10.11.5;
MARKETING_VERSION = 1.4.0; MARKETING_VERSION = 1.4.2;
PRODUCT_BUNDLE_IDENTIFIER = org.atelierInmu.inputmethod.vChewing; PRODUCT_BUNDLE_IDENTIFIER = org.atelierInmu.inputmethod.vChewing;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";
@ -1551,7 +1551,7 @@
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO; COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1940; CURRENT_PROJECT_VERSION = 1942;
DEVELOPMENT_TEAM = ""; DEVELOPMENT_TEAM = "";
GCC_C_LANGUAGE_STANDARD = gnu99; GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO; GCC_DYNAMIC_NO_PIC = NO;
@ -1576,7 +1576,7 @@
"@executable_path/../Frameworks", "@executable_path/../Frameworks",
); );
MACOSX_DEPLOYMENT_TARGET = 10.11.5; MACOSX_DEPLOYMENT_TARGET = 10.11.5;
MARKETING_VERSION = 1.4.0; MARKETING_VERSION = 1.4.2;
ONLY_ACTIVE_ARCH = YES; ONLY_ACTIVE_ARCH = YES;
PRODUCT_BUNDLE_IDENTIFIER = "org.atelierInmu.vChewing.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_BUNDLE_IDENTIFIER = "org.atelierInmu.vChewing.${PRODUCT_NAME:rfc1034identifier}";
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
@ -1604,7 +1604,7 @@
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO; COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1940; CURRENT_PROJECT_VERSION = 1942;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = ""; DEVELOPMENT_TEAM = "";
GCC_C_LANGUAGE_STANDARD = gnu99; GCC_C_LANGUAGE_STANDARD = gnu99;
@ -1624,7 +1624,7 @@
"@executable_path/../Frameworks", "@executable_path/../Frameworks",
); );
MACOSX_DEPLOYMENT_TARGET = 10.11.5; MACOSX_DEPLOYMENT_TARGET = 10.11.5;
MARKETING_VERSION = 1.4.0; MARKETING_VERSION = 1.4.2;
PRODUCT_BUNDLE_IDENTIFIER = "org.atelierInmu.vChewing.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_BUNDLE_IDENTIFIER = "org.atelierInmu.vChewing.${PRODUCT_NAME:rfc1034identifier}";
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";