!25 1.5.3 Final // Merge Gitee PR!25 from upd/1.5.3

This commit is contained in:
ShikiSuen 2022-04-22 06:04:28 +00:00 committed by Gitee
commit 6be618a723
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
23 changed files with 173 additions and 166 deletions

@ -1 +1 @@
Subproject commit 2d0c040a95621f382a13664667fa5d1c43d172ee Subproject commit 8199254d3abbf63e3b7535bbc975f8519a2d6834

View File

@ -237,7 +237,7 @@ class InputState: NSObject {
) )
return String( return String(
format: NSLocalizedString( format: NSLocalizedString(
"\"%@\" already exists: ↩ to boost, ⇧⌘↩ to exclude.", comment: "" "\"%@\" already exists: ENTER to boost, \n SHIFT+CMD+ENTER to exclude.", comment: ""
), text ), text
) )
} }
@ -246,7 +246,7 @@ class InputState: NSObject {
) )
TooltipController.textColor = NSColor.white TooltipController.textColor = NSColor.white
return String( return String(
format: NSLocalizedString("\"%@\" selected. to add user phrase.", comment: ""), format: NSLocalizedString("\"%@\" selected. ENTER to add user phrase.", comment: ""),
text text
) )
} }

View File

@ -40,8 +40,8 @@ struct BufferStatePackage
{ {
NSString *composedText; NSString *composedText;
NSInteger cursorIndex; NSInteger cursorIndex;
NSString *resultOfBefore; NSString *resultOfRear;
NSString *resultOfAfter; NSString *resultOfFront;
}; };
@class KeyHandler; @class KeyHandler;
@ -74,12 +74,13 @@ struct BufferStatePackage
- (BOOL)isPrintable:(UniChar)charCode; - (BOOL)isPrintable:(UniChar)charCode;
- (NSArray<NSString *> *)buildAssociatePhraseArrayWithKey:(NSString *)key; - (NSArray<NSString *> *)buildAssociatePhraseArrayWithKey:(NSString *)key;
- (NSArray<NSString *> *)getCandidatesArray; - (NSArray<NSString *> *)getCandidatesArray;
- (NSInteger)getKeyLengthAtIndexZero;
- (NSInteger)getBuilderCursorIndex; - (NSInteger)getBuilderCursorIndex;
- (NSInteger)getBuilderLength; - (NSInteger)getBuilderLength;
- (NSInteger)getPackagedCursorIndex; - (NSInteger)getPackagedCursorIndex;
- (NSString *)getComposedText; - (NSString *)getComposedText;
- (NSString *)getCompositionFromPhoneticReadingBuffer; - (NSString *)getCompositionFromPhoneticReadingBuffer;
- (NSString *)getStrLocationResult:(BOOL)isAfter NS_SWIFT_NAME(getStrLocationResult(isAfter:)); - (NSString *)getStrLocationResult:(BOOL)isFront NS_SWIFT_NAME(getStrLocationResult(isFront:));
- (NSString *)getSyllableCompositionFromPhoneticReadingBuffer; - (NSString *)getSyllableCompositionFromPhoneticReadingBuffer;
- (void)clearPhoneticReadingBuffer; - (void)clearPhoneticReadingBuffer;
- (void)combinePhoneticReadingBufferKey:(UniChar)charCode; - (void)combinePhoneticReadingBufferKey:(UniChar)charCode;

View File

@ -46,8 +46,8 @@ static const double kEpsilon = 0.000001;
NSString *packagedComposedText; NSString *packagedComposedText;
NSInteger packagedCursorIndex; NSInteger packagedCursorIndex;
NSString *packagedResultOfBefore; NSString *packagedResultOfRear;
NSString *packagedResultOfAfter; NSString *packagedResultOfFront;
// NON-SWIFTIFIABLE // NON-SWIFTIFIABLE
static double FindHighestScore(const std::vector<Gramambular::NodeAnchor> &nodes, double epsilon) static double FindHighestScore(const std::vector<Gramambular::NodeAnchor> &nodes, double epsilon)
@ -233,8 +233,8 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
size_t readingCursorIndex = 0; size_t readingCursorIndex = 0;
size_t builderCursorIndex = [self getBuilderCursorIndex]; size_t builderCursorIndex = [self getBuilderCursorIndex];
NSString *resultOfBefore = @""; NSString *resultOfRear = @"";
NSString *resultOfAfter = @""; NSString *resultOfFront = @"";
for (std::vector<Gramambular::NodeAnchor>::iterator wi = _walkedNodes.begin(), we = _walkedNodes.end(); wi != we; for (std::vector<Gramambular::NodeAnchor>::iterator wi = _walkedNodes.begin(), we = _walkedNodes.end(); wi != we;
++wi) ++wi)
@ -282,19 +282,19 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
} }
if (builderCursorIndex == 0) if (builderCursorIndex == 0)
{ {
resultOfBefore = resultOfFront =
[NSString stringWithUTF8String:_builder->readings()[builderCursorIndex].c_str()]; [NSString stringWithUTF8String:_builder->readings()[builderCursorIndex].c_str()];
} }
else if (builderCursorIndex >= _builder->readings().size()) else if (builderCursorIndex >= _builder->readings().size())
{ {
resultOfAfter = [NSString resultOfRear = [NSString
stringWithUTF8String:_builder->readings()[_builder->readings().size() - 1].c_str()]; stringWithUTF8String:_builder->readings()[_builder->readings().size() - 1].c_str()];
} }
else else
{ {
resultOfBefore = resultOfFront =
[NSString stringWithUTF8String:_builder->readings()[builderCursorIndex].c_str()]; [NSString stringWithUTF8String:_builder->readings()[builderCursorIndex].c_str()];
resultOfAfter = resultOfRear =
[NSString stringWithUTF8String:_builder->readings()[builderCursorIndex - 1].c_str()]; [NSString stringWithUTF8String:_builder->readings()[builderCursorIndex - 1].c_str()];
} }
} }
@ -314,17 +314,17 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
packagedComposedText = composedText; packagedComposedText = composedText;
packagedCursorIndex = cursorIndex; packagedCursorIndex = cursorIndex;
packagedResultOfBefore = resultOfBefore; packagedResultOfRear = resultOfRear;
packagedResultOfAfter = resultOfAfter; packagedResultOfFront = resultOfFront;
} }
// NON-SWIFTIFIABLE DUE TO VARIABLE AVAILABLE ACCESSIBILITY RANGE. // NON-SWIFTIFIABLE DUE TO VARIABLE AVAILABLE ACCESSIBILITY RANGE.
- (NSString *)getStrLocationResult:(BOOL)isAfter - (NSString *)getStrLocationResult:(BOOL)isFront
{ {
if (isAfter) if (isFront)
return packagedResultOfAfter; return packagedResultOfFront;
else else
return packagedResultOfBefore; return packagedResultOfRear;
} }
// NON-SWIFTIFIABLE DUE TO VARIABLE AVAILABLE ACCESSIBILITY RANGE. // NON-SWIFTIFIABLE DUE TO VARIABLE AVAILABLE ACCESSIBILITY RANGE.
@ -555,8 +555,6 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
- (void)dealWithOverrideModelSuggestions - (void)dealWithOverrideModelSuggestions
{ {
// 讓 grid 知道目前的游標候選字判定是前置還是後置
_builder->grid().setHaninInputEnabled(!mgrPrefs.selectPhraseAfterCursorAsCandidate);
// 這一整段都太 C++ 且只出現一次,就整個端過來了。 // 這一整段都太 C++ 且只出現一次,就整個端過來了。
// 拆開封裝的話,只會把問題搞得更麻煩而已。 // 拆開封裝的話,只會把問題搞得更麻煩而已。
std::string overrideValue = (mgrPrefs.useSCPCTypingMode) std::string overrideValue = (mgrPrefs.useSCPCTypingMode)
@ -567,7 +565,9 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
if (!overrideValue.empty()) if (!overrideValue.empty())
{ {
NSInteger cursorIndex = [self getActualCandidateCursorIndex]; NSInteger cursorIndex = [self getActualCandidateCursorIndex];
std::vector<Gramambular::NodeAnchor> nodes = _builder->grid().nodesCrossingOrEndingAt(cursorIndex); std::vector<Gramambular::NodeAnchor> nodes = mgrPrefs.setRearCursorMode
? _builder->grid().nodesCrossingOrEndingAt(cursorIndex)
: _builder->grid().nodesEndingAt(cursorIndex);
double highestScore = FindHighestScore(nodes, kEpsilon); double highestScore = FindHighestScore(nodes, kEpsilon);
_builder->grid().overrideNodeScoreForSelectedCandidate(cursorIndex, overrideValue, _builder->grid().overrideNodeScoreForSelectedCandidate(cursorIndex, overrideValue,
static_cast<float>(highestScore)); static_cast<float>(highestScore));
@ -601,13 +601,12 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
- (NSArray<NSString *> *)getCandidatesArray - (NSArray<NSString *> *)getCandidatesArray
{ {
// 讓 grid 知道目前的游標候選字判定是前置還是後置
_builder->grid().setHaninInputEnabled(!mgrPrefs.selectPhraseAfterCursorAsCandidate);
NSMutableArray<NSString *> *candidatesArray = [[NSMutableArray alloc] init]; NSMutableArray<NSString *> *candidatesArray = [[NSMutableArray alloc] init];
NSInteger cursorIndex = [self getActualCandidateCursorIndex]; NSInteger cursorIndex = [self getActualCandidateCursorIndex];
std::vector<Gramambular::NodeAnchor> nodes = _builder->grid().nodesCrossingOrEndingAt(cursorIndex); std::vector<Gramambular::NodeAnchor> nodes = mgrPrefs.setRearCursorMode
? _builder->grid().nodesCrossingOrEndingAt(cursorIndex)
: _builder->grid().nodesEndingAt(cursorIndex);
// sort the nodes, so that longer nodes (representing longer phrases) are placed at the top of the candidate list // sort the nodes, so that longer nodes (representing longer phrases) are placed at the top of the candidate list
stable_sort(nodes.begin(), nodes.end(), NodeAnchorDescendingSorter()); stable_sort(nodes.begin(), nodes.end(), NodeAnchorDescendingSorter());
@ -623,6 +622,11 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
return candidatesArray; return candidatesArray;
} }
- (NSInteger)getKeyLengthAtIndexZero
{
return [NSString stringWithUTF8String:_walkedNodes[0].node->currentKeyValue().value.c_str()].length;
}
#pragma mark - 威注音認為有必要單獨拿出來處理的部分,交給 Swift 則有些困難。 #pragma mark - 威注音認為有必要單獨拿出來處理的部分,交給 Swift 則有些困難。
- (BOOL)isPrintable:(UniChar)charCode - (BOOL)isPrintable:(UniChar)charCode

View File

@ -35,14 +35,20 @@ import Cocoa
func getActualCandidateCursorIndex() -> Int { func getActualCandidateCursorIndex() -> Int {
var cursorIndex = getBuilderCursorIndex() var cursorIndex = getBuilderCursorIndex()
// MS Phonetics IME style, phrase is *after* the cursor. // Windows Yahoo Kimo IME style, phrase is *at the rear of* the cursor.
// (i.e. the cursor is always *before* the phrase.) // (i.e. the cursor is always *before* the phrase.)
if (mgrPrefs.selectPhraseAfterCursorAsCandidate // This is different from MS Phonetics IME style ...
// ... since Windows Yahoo Kimo allows "node crossing".
if (mgrPrefs.setRearCursorMode
&& (cursorIndex < getBuilderLength())) && (cursorIndex < getBuilderLength()))
|| cursorIndex == 0 || cursorIndex == 0
{ {
if cursorIndex == 0 && !mgrPrefs.setRearCursorMode {
cursorIndex += getKeyLengthAtIndexZero()
} else {
cursorIndex += 1 cursorIndex += 1
} }
}
return cursorIndex return cursorIndex
} }
} }

View File

@ -37,28 +37,38 @@ import Cocoa
// //
let composedText = getComposedText() let composedText = getComposedText()
let packagedCursorIndex = UInt(getPackagedCursorIndex()) let packagedCursorIndex = UInt(getPackagedCursorIndex())
let resultOfBefore = getStrLocationResult(isAfter: false) let resultOfRear = getStrLocationResult(isFront: false)
let resultOfAfter = getStrLocationResult(isAfter: true) let resultOfFront = getStrLocationResult(isFront: true)
// //
let newState = InputState.Inputting(composingBuffer: composedText, cursorIndex: packagedCursorIndex) let newState = InputState.Inputting(composingBuffer: composedText, cursorIndex: packagedCursorIndex)
// //
var tooltip = "" var tooltip = ""
if resultOfBefore == "", resultOfAfter != "" {
tooltip = String(format: NSLocalizedString("Cursor is after \"%@\".", comment: ""), resultOfAfter) //
} // TODO:
if resultOfBefore != "", resultOfAfter == "" { // if ctlInputMethod.currentKeyHandler.inputMode == InputMode.imeModeCHT {
tooltip = String(format: NSLocalizedString("Cursor is before \"%@\".", comment: ""), resultOfBefore) // if mgrPrefs.chineseConversionEnabled && !mgrPrefs.shiftJISShinjitaiOutputEnabled {
} // tooltip = String(
if resultOfBefore != "", resultOfAfter != "" { // format: "%@%@%@", NSLocalizedString("Force KangXi Writing", comment: ""), "\n",
// NSLocalizedString("NotificationSwitchON", comment: ""))
// } else if mgrPrefs.shiftJISShinjitaiOutputEnabled {
// tooltip = String(
// format: "%@%@%@", NSLocalizedString("JIS Shinjitai Output", comment: ""), "\n",
// NSLocalizedString("NotificationSwitchON", comment: ""))
// }
// }
// NSString Emoji
//
if resultOfRear != "" || resultOfFront != "" {
tooltip = String( tooltip = String(
format: NSLocalizedString("Cursor is between \"%@\" and \"%@\".", comment: ""), format: NSLocalizedString("Cursor is between \"%@\" and \"%@\".", comment: ""),
resultOfAfter, resultOfBefore resultOfFront, resultOfRear
) )
} }
//
newState.tooltip = tooltip newState.tooltip = tooltip
return newState return newState
} }

View File

@ -37,7 +37,7 @@ struct UserDef {
static let kCandidateListTextSize = "CandidateListTextSize" static let kCandidateListTextSize = "CandidateListTextSize"
static let kAppleLanguages = "AppleLanguages" static let kAppleLanguages = "AppleLanguages"
static let kShouldAutoReloadUserDataFiles = "ShouldAutoReloadUserDataFiles" static let kShouldAutoReloadUserDataFiles = "ShouldAutoReloadUserDataFiles"
static let kSelectPhraseAfterCursorAsCandidate = "SelectPhraseAfterCursorAsCandidate" static let kSetRearCursorMode = "SetRearCursorMode"
static let kUseHorizontalCandidateList = "UseHorizontalCandidateList" static let kUseHorizontalCandidateList = "UseHorizontalCandidateList"
static let kComposingBufferSize = "ComposingBufferSize" static let kComposingBufferSize = "ComposingBufferSize"
static let kChooseCandidateUsingSpace = "ChooseCandidateUsingSpace" static let kChooseCandidateUsingSpace = "ChooseCandidateUsingSpace"
@ -210,7 +210,7 @@ public class mgrPrefs: NSObject {
UserDef.kCandidateListTextSize, UserDef.kCandidateListTextSize,
UserDef.kAppleLanguages, UserDef.kAppleLanguages,
UserDef.kShouldAutoReloadUserDataFiles, UserDef.kShouldAutoReloadUserDataFiles,
UserDef.kSelectPhraseAfterCursorAsCandidate, UserDef.kSetRearCursorMode,
UserDef.kUseHorizontalCandidateList, UserDef.kUseHorizontalCandidateList,
UserDef.kComposingBufferSize, UserDef.kComposingBufferSize,
UserDef.kChooseCandidateUsingSpace, UserDef.kChooseCandidateUsingSpace,
@ -258,7 +258,7 @@ public class mgrPrefs: NSObject {
UserDefaults.standard.setDefault(mgrPrefs.useSCPCTypingMode, forKey: UserDef.kUseSCPCTypingMode) UserDefaults.standard.setDefault(mgrPrefs.useSCPCTypingMode, forKey: UserDef.kUseSCPCTypingMode)
UserDefaults.standard.setDefault(mgrPrefs.associatedPhrasesEnabled, forKey: UserDef.kAssociatedPhrasesEnabled) UserDefaults.standard.setDefault(mgrPrefs.associatedPhrasesEnabled, forKey: UserDef.kAssociatedPhrasesEnabled)
UserDefaults.standard.setDefault( UserDefaults.standard.setDefault(
mgrPrefs.selectPhraseAfterCursorAsCandidate, forKey: UserDef.kSelectPhraseAfterCursorAsCandidate mgrPrefs.setRearCursorMode, forKey: UserDef.kSetRearCursorMode
) )
UserDefaults.standard.setDefault( UserDefaults.standard.setDefault(
mgrPrefs.moveCursorAfterSelectingCandidate, forKey: UserDef.kMoveCursorAfterSelectingCandidate mgrPrefs.moveCursorAfterSelectingCandidate, forKey: UserDef.kMoveCursorAfterSelectingCandidate
@ -322,8 +322,8 @@ public class mgrPrefs: NSObject {
@UserDefault(key: UserDef.kShouldAutoReloadUserDataFiles, defaultValue: true) @UserDefault(key: UserDef.kShouldAutoReloadUserDataFiles, defaultValue: true)
@objc static var shouldAutoReloadUserDataFiles: Bool @objc static var shouldAutoReloadUserDataFiles: Bool
@UserDefault(key: UserDef.kSelectPhraseAfterCursorAsCandidate, defaultValue: false) @UserDefault(key: UserDef.kSetRearCursorMode, defaultValue: false)
@objc static var selectPhraseAfterCursorAsCandidate: Bool @objc static var setRearCursorMode: Bool
@UserDefault(key: UserDef.kMoveCursorAfterSelectingCandidate, defaultValue: true) @UserDefault(key: UserDef.kMoveCursorAfterSelectingCandidate, defaultValue: true)
@objc static var moveCursorAfterSelectingCandidate: Bool @objc static var moveCursorAfterSelectingCandidate: Bool

View File

@ -44,9 +44,6 @@ class Grid
void insertNode(const Node &node, size_t location, size_t spanningLength); void insertNode(const Node &node, size_t location, size_t spanningLength);
bool hasNodeAtLocationSpanningLengthMatchingKey(size_t location, size_t spanningLength, const std::string &key); bool hasNodeAtLocationSpanningLengthMatchingKey(size_t location, size_t spanningLength, const std::string &key);
void setHaninInputEnabled(bool enabled);
bool HaninInputEnabled();
void expandGridByOneAtLocation(size_t location); void expandGridByOneAtLocation(size_t location);
void shrinkGridByOneAtLocation(size_t location); void shrinkGridByOneAtLocation(size_t location);
@ -119,19 +116,8 @@ class Grid
protected: protected:
std::vector<Span> m_spans; std::vector<Span> m_spans;
bool m_bolHaninEnabled;
}; };
inline void Grid::setHaninInputEnabled(bool enabled)
{
m_bolHaninEnabled = enabled;
}
inline bool Grid::HaninInputEnabled()
{
return m_bolHaninEnabled;
}
inline void Grid::clear() inline void Grid::clear()
{ {
m_spans.clear(); m_spans.clear();
@ -206,6 +192,7 @@ inline size_t Grid::width() const
return m_spans.size(); return m_spans.size();
} }
// macOS 10.6 開始的內建注音的游標前置選字風格
inline std::vector<NodeAnchor> Grid::nodesEndingAt(size_t location) inline std::vector<NodeAnchor> Grid::nodesEndingAt(size_t location)
{ {
std::vector<NodeAnchor> result; std::vector<NodeAnchor> result;
@ -234,6 +221,8 @@ inline std::vector<NodeAnchor> Grid::nodesEndingAt(size_t location)
return result; return result;
} }
// Windows 版奇摩注音輸入法的游標後置的選字風格。
// 與微軟新注音相異的是,這個風格允許在詞的中間叫出候選字窗。
inline std::vector<NodeAnchor> Grid::nodesCrossingOrEndingAt(size_t location) inline std::vector<NodeAnchor> Grid::nodesCrossingOrEndingAt(size_t location)
{ {
std::vector<NodeAnchor> result; std::vector<NodeAnchor> result;
@ -248,9 +237,7 @@ inline std::vector<NodeAnchor> Grid::nodesCrossingOrEndingAt(size_t location)
{ {
for (size_t j = 1, m = span.maximumLength(); j <= m; j++) for (size_t j = 1, m = span.maximumLength(); j <= m; j++)
{ {
// 左半是漢音模式,已經自威注音 1.5.2 版開始解決了可以在詞中間叫出候選字的問題。 if (i + j < location)
// TODO: 右半是微軟新注音模式,仍有可以在詞中間叫出候選字的問題。
if (((i + j != location) && m_bolHaninEnabled) || ((i + j < location) && !m_bolHaninEnabled))
{ {
continue; continue;
} }

View File

@ -26,8 +26,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. ↩ to add user phrase." = "\"%@\" selected. ↩ to add user phrase."; "\"%@\" selected. ENTER to add user phrase." = "\"%@\" selected. ENTER to add user phrase.";
"\"%@\" already exists: ↩ to boost, ⇧⌘↩ to exclude." = "\"%@\" already exists: ↩ to boost, ⇧⌘↩ to exclude."; "\"%@\" already exists: ENTER to boost, \n SHIFT+CMD+ENTER to exclude." = "\"%@\" already exists: ENTER to boost, \n SHIFT+CMD+ENTER 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.";
@ -56,8 +56,6 @@
"Symbol & Emoji Input" = "Symbol & Emoji Input"; "Symbol & Emoji Input" = "Symbol & Emoji Input";
"Edit User Symbol & Emoji Data…" = "Edit User Symbol & Emoji Data…"; "Edit User Symbol & Emoji Data…" = "Edit User Symbol & Emoji Data…";
"Choose your desired user data folder." = "Choose your desired user data folder."; "Choose your desired user data folder." = "Choose your desired user data folder.";
"Cursor is after \"%@\"." = "Cursor is after \"%@\".";
"Cursor is before \"%@\"." = "Cursor is before \"%@\".";
"Cursor is between \"%@\" and \"%@\"." = "Cursor is between \"%@\" and \"%@\"."; "Cursor is between \"%@\" and \"%@\"." = "Cursor is between \"%@\" and \"%@\".";
// The followings are the category names used in the Symbol menu. // The followings are the category names used in the Symbol menu.
@ -129,7 +127,7 @@
"Non-QWERTY alphanumeral keyboard layouts are for Hanyu Pinyin parser only." = "Non-QWERTY alphanumeral keyboard layouts are for Hanyu Pinyin parser only."; "Non-QWERTY alphanumeral keyboard layouts are for Hanyu Pinyin parser only." = "Non-QWERTY alphanumeral keyboard layouts are for Hanyu Pinyin parser only.";
"Output Settings:" = "Output Settings:"; "Output Settings:" = "Output Settings:";
"Phonetic Parser:" = "Phonetic Parser:"; "Phonetic Parser:" = "Phonetic Parser:";
"Push the cursor to the front of the phrase after selection" = "Push the cursor to the front of the phrase after selection"; "Push the cursor in front of the phrase after selection" = "Push the cursor in front of the phrase after selection";
"Selection Keys:" = "Selection Keys:"; "Selection Keys:" = "Selection Keys:";
"Show page buttons in candidate window" = "Show page buttons in candidate window"; "Show page buttons in candidate window" = "Show page buttons in candidate window";
"Simplified Chinese" = "Simplified Chinese"; "Simplified Chinese" = "Simplified Chinese";
@ -137,8 +135,8 @@
"Space to +cycle candidates, Shift+Space to +cycle pages" = "Space to +cycle candidates, Shift+Space to +cycle pages"; "Space to +cycle candidates, Shift+Space to +cycle pages" = "Space to +cycle candidates, Shift+Space to +cycle pages";
"Space to +cycle pages, Shift+Space to +cycle candidates" = "Space to +cycle pages, Shift+Space to +cycle candidates"; "Space to +cycle pages, Shift+Space to +cycle candidates" = "Space to +cycle pages, Shift+Space to +cycle candidates";
"Stop farting (when typed phonetic combination is invalid, etc.)" = "Stop farting (when typed phonetic combination is invalid, etc.)"; "Stop farting (when typed phonetic combination is invalid, etc.)" = "Stop farting (when typed phonetic combination is invalid, etc.)";
"to the front of the phrase (like Matsushita Hanin IME)" = "to the front of the phrase (like Matsushita Hanin IME)"; "in front of the phrase (like macOS built-in Zhuyin IME)" = "in front of the phrase (like macOS built-in Zhuyin IME)";
"to the rear of the phrase (like MS New-Phonetic IME)" = "to the rear of the phrase (like MS New-Phonetic IME)"; "at anyplace else (like Windows Yahoo KeyKey)" = "at anyplace else (like Windows Yahoo KeyKey)";
"Traditional Chinese" = "Traditional Chinese"; "Traditional Chinese" = "Traditional Chinese";
"Typing Style:" = "Typing Style:"; "Typing Style:" = "Typing Style:";
"UI Language:" = "UI Language:"; "UI Language:" = "UI Language:";

View File

@ -26,8 +26,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. ↩ to add user phrase." = "\"%@\" selected. ↩ to add user phrase."; "\"%@\" selected. ENTER to add user phrase." = "\"%@\" selected. ENTER to add user phrase.";
"\"%@\" already exists: ↩ to boost, ⇧⌘↩ to exclude." = "\"%@\" already exists: ↩ to boost, ⇧⌘↩ to exclude."; "\"%@\" already exists: ENTER to boost, \n SHIFT+CMD+ENTER to exclude." = "\"%@\" already exists: ENTER to boost, \n SHIFT+CMD+ENTER 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.";
@ -56,8 +56,6 @@
"Symbol & Emoji Input" = "Symbol & Emoji Input"; "Symbol & Emoji Input" = "Symbol & Emoji Input";
"Edit User Symbol & Emoji Data…" = "Edit User Symbol & Emoji Data…"; "Edit User Symbol & Emoji Data…" = "Edit User Symbol & Emoji Data…";
"Choose your desired user data folder." = "Choose your desired user data folder."; "Choose your desired user data folder." = "Choose your desired user data folder.";
"Cursor is after \"%@\"." = "Cursor is after \"%@\".";
"Cursor is before \"%@\"." = "Cursor is before \"%@\".";
"Cursor is between \"%@\" and \"%@\"." = "Cursor is between \"%@\" and \"%@\"."; "Cursor is between \"%@\" and \"%@\"." = "Cursor is between \"%@\" and \"%@\".";
// The followings are the category names used in the Symbol menu. // The followings are the category names used in the Symbol menu.
@ -129,7 +127,7 @@
"Non-QWERTY alphanumeral keyboard layouts are for Hanyu Pinyin parser only." = "Non-QWERTY alphanumeral keyboard layouts are for Hanyu Pinyin parser only."; "Non-QWERTY alphanumeral keyboard layouts are for Hanyu Pinyin parser only." = "Non-QWERTY alphanumeral keyboard layouts are for Hanyu Pinyin parser only.";
"Output Settings:" = "Output Settings:"; "Output Settings:" = "Output Settings:";
"Phonetic Parser:" = "Phonetic Parser:"; "Phonetic Parser:" = "Phonetic Parser:";
"Push the cursor to the front of the phrase after selection" = "Push the cursor to the front of the phrase after selection"; "Push the cursor in front of the phrase after selection" = "Push the cursor in front of the phrase after selection";
"Selection Keys:" = "Selection Keys:"; "Selection Keys:" = "Selection Keys:";
"Show page buttons in candidate window" = "Show page buttons in candidate window"; "Show page buttons in candidate window" = "Show page buttons in candidate window";
"Simplified Chinese" = "Simplified Chinese"; "Simplified Chinese" = "Simplified Chinese";
@ -137,8 +135,8 @@
"Space to +cycle candidates, Shift+Space to +cycle pages" = "Space to +cycle candidates, Shift+Space to +cycle pages"; "Space to +cycle candidates, Shift+Space to +cycle pages" = "Space to +cycle candidates, Shift+Space to +cycle pages";
"Space to +cycle pages, Shift+Space to +cycle candidates" = "Space to +cycle pages, Shift+Space to +cycle candidates"; "Space to +cycle pages, Shift+Space to +cycle candidates" = "Space to +cycle pages, Shift+Space to +cycle candidates";
"Stop farting (when typed phonetic combination is invalid, etc.)" = "Stop farting (when typed phonetic combination is invalid, etc.)"; "Stop farting (when typed phonetic combination is invalid, etc.)" = "Stop farting (when typed phonetic combination is invalid, etc.)";
"to the front of the phrase (like Matsushita Hanin IME)" = "to the front of the phrase (like Matsushita Hanin IME)"; "in front of the phrase (like macOS built-in Zhuyin IME)" = "in front of the phrase (like macOS built-in Zhuyin IME)";
"to the rear of the phrase (like MS New-Phonetic IME)" = "to the rear of the phrase (like MS New-Phonetic IME)"; "at anyplace else (like Windows Yahoo KeyKey)" = "at anyplace else (like Windows Yahoo KeyKey)";
"Traditional Chinese" = "Traditional Chinese"; "Traditional Chinese" = "Traditional Chinese";
"Typing Style:" = "Typing Style:"; "Typing Style:" = "Typing Style:";
"UI Language:" = "UI Language:"; "UI Language:" = "UI Language:";

View File

@ -26,8 +26,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. ↩ to add user phrase." = "「%@」を ↩ で辞書に登録。"; "\"%@\" selected. ENTER to add user phrase." = "「%@」を ENTER で辞書に登録。";
"\"%@\" already exists: ↩ to boost, ⇧⌘↩ to exclude." = "「%@」は既存語彙:↩ で最優先にし;⇧⌘↩ で排除。"; "\"%@\" already exists: ENTER to boost, \n SHIFT+CMD+ENTER to exclude." = "「%@」は既存語彙ENTER で最優先にし;\n SHIFT+CMD+ENTER で排除。";
"Edit Phrase Replacement Table…" = "言葉置換表を編集…"; "Edit Phrase Replacement Table…" = "言葉置換表を編集…";
"Use Phrase Replacement" = "言葉置換機能"; "Use Phrase Replacement" = "言葉置換機能";
"Candidates keys cannot be empty." = "言選り用キー陣列に何かキーをご登録ください。"; "Candidates keys cannot be empty." = "言選り用キー陣列に何かキーをご登録ください。";
@ -56,8 +56,6 @@
"Symbol & Emoji Input" = "符号&絵文字入力"; "Symbol & Emoji Input" = "符号&絵文字入力";
"Edit User Symbol & Emoji Data…" = "ユーザー符号&絵文字辞書を編集…"; "Edit User Symbol & Emoji Data…" = "ユーザー符号&絵文字辞書を編集…";
"Choose your desired user data folder." = "欲しがるユーザー辞書フォルダをお選びください。"; "Choose your desired user data folder." = "欲しがるユーザー辞書フォルダをお選びください。";
"Cursor is after \"%@\"." = "カーソルは「%@」の後に。";
"Cursor is before \"%@\"." = "カーソル「%@」の前に。";
"Cursor is between \"%@\" and \"%@\"." = "カーソルは「%@」と「%@」に間れ。"; "Cursor is between \"%@\" and \"%@\"." = "カーソルは「%@」と「%@」に間れ。";
// The followings are the category names used in the Symbol menu. // The followings are the category names used in the Symbol menu.
@ -129,7 +127,7 @@
"Non-QWERTY alphanumeral keyboard layouts are for Hanyu Pinyin parser only." = "QWERTY 以外の英数キーボードは漢語弁音以外の配列に不適用。"; "Non-QWERTY alphanumeral keyboard layouts are for Hanyu Pinyin parser only." = "QWERTY 以外の英数キーボードは漢語弁音以外の配列に不適用。";
"Output Settings:" = "出力設定:"; "Output Settings:" = "出力設定:";
"Phonetic Parser:" = "注音配列:"; "Phonetic Parser:" = "注音配列:";
"Push the cursor to the front of the phrase after selection" = "候補選択の直後、すぐカーソルを単語の向こうに推し進める"; "Push the cursor in front of the phrase after selection" = "候補選択の直後、すぐカーソルを単語の向こうに推し進める";
"Selection Keys:" = "言選り用キー:"; "Selection Keys:" = "言選り用キー:";
"Show page buttons in candidate window" = "入力候補陳列の側にページボタンを表示"; "Show page buttons in candidate window" = "入力候補陳列の側にページボタンを表示";
"Simplified Chinese" = "簡体中国語"; "Simplified Chinese" = "簡体中国語";
@ -137,8 +135,8 @@
"Space to +cycle candidates, Shift+Space to +cycle pages" = "Shift+Space で次のページ、Space で次の候補文字を"; "Space to +cycle candidates, Shift+Space to +cycle pages" = "Shift+Space で次のページ、Space で次の候補文字を";
"Space to +cycle pages, Shift+Space to +cycle candidates" = "Space で次のページ、Shift+Space で次の候補文字を"; "Space to +cycle pages, Shift+Space to +cycle candidates" = "Space で次のページ、Shift+Space で次の候補文字を";
"Stop farting (when typed phonetic combination is invalid, etc.)" = "マナーモード // 外すと入力間違った時に変な声が出る"; "Stop farting (when typed phonetic combination is invalid, etc.)" = "マナーモード // 外すと入力間違った時に変な声が出る";
"to the front of the phrase (like Matsushita Hanin IME)" = "単語の前で // パナソニック漢音のやり方"; "in front of the phrase (like macOS built-in Zhuyin IME)" = "単語の前で // macOS 内蔵注音入力のやり方";
"to the rear of the phrase (like MS New-Phonetic IME)" = "単語の後で // Microsoft 新注音のやり方"; "at anyplace else (like Windows Yahoo KeyKey)" = "単語の中・後で // Windows Yahoo KeyKey のやり方";
"Traditional Chinese" = "繁体中国語"; "Traditional Chinese" = "繁体中国語";
"Typing Style:" = "入力習慣:"; "Typing Style:" = "入力習慣:";
"UI Language:" = "表示用言語:"; "UI Language:" = "表示用言語:";

View File

@ -26,8 +26,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. to add user phrase." = "「%@」敲 Enter 添入自订语汇。"; "\"%@\" selected. ENTER to add user phrase." = "「%@」敲 Enter 添入自订语汇。";
"\"%@\" already exists: ↩ to boost, ⇧⌘↩ to exclude." = "「%@」已存在:敲 ↩ 以升权;敲 ⇧⌘↩ 以排除。"; "\"%@\" already exists: ENTER to boost, \n SHIFT+CMD+ENTER to exclude." = "「%@」已存在:敲 Enter 以升权;\n 敲 Shift+CMD+Enter 以排除。";
"Edit Phrase Replacement Table…" = "编辑语汇置换表…"; "Edit Phrase Replacement Table…" = "编辑语汇置换表…";
"Use Phrase Replacement" = "使用语汇置换"; "Use Phrase Replacement" = "使用语汇置换";
"Candidates keys cannot be empty." = "您必须指定选字键。"; "Candidates keys cannot be empty." = "您必须指定选字键。";
@ -56,8 +56,6 @@
"Symbol & Emoji Input" = "符号&绘文字输入"; "Symbol & Emoji Input" = "符号&绘文字输入";
"Edit User Symbol & Emoji Data…" = "编辑自订符号&绘文字资料…"; "Edit User Symbol & Emoji Data…" = "编辑自订符号&绘文字资料…";
"Choose your desired user data folder." = "请选择您想指定的使用者语汇档案目录。"; "Choose your desired user data folder." = "请选择您想指定的使用者语汇档案目录。";
"Cursor is after \"%@\"." = "游标在「%@」之后。";
"Cursor is before \"%@\"." = "游标在「%@」之前。";
"Cursor is between \"%@\" and \"%@\"." = "游标介于「%@」与「%@」之间。"; "Cursor is between \"%@\" and \"%@\"." = "游标介于「%@」与「%@」之间。";
// The followings are the category names used in the Symbol menu. // The followings are the category names used in the Symbol menu.
@ -129,7 +127,7 @@
"Non-QWERTY alphanumeral keyboard layouts are for Hanyu Pinyin parser only." = "QWERTY 以外的英数布局是为了汉语拼音排列使用者而准备的。"; "Non-QWERTY alphanumeral keyboard layouts are for Hanyu Pinyin parser only." = "QWERTY 以外的英数布局是为了汉语拼音排列使用者而准备的。";
"Output Settings:" = "输出设定:"; "Output Settings:" = "输出设定:";
"Phonetic Parser:" = "注音排列:"; "Phonetic Parser:" = "注音排列:";
"Push the cursor to the front of the phrase after selection" = "在选字后将游标置于该字词的前方"; "Push the cursor in front of the phrase after selection" = "在选字后将游标置于该字词的前方";
"Selection Keys:" = "选字键:"; "Selection Keys:" = "选字键:";
"Show page buttons in candidate window" = "在选字窗内显示翻页按钮"; "Show page buttons in candidate window" = "在选字窗内显示翻页按钮";
"Simplified Chinese" = "简体中文"; "Simplified Chinese" = "简体中文";
@ -137,8 +135,8 @@
"Space to +cycle candidates, Shift+Space to +cycle pages" = "Shift+空格键 换下一页,空格键 换选下一个后选字"; "Space to +cycle candidates, Shift+Space to +cycle pages" = "Shift+空格键 换下一页,空格键 换选下一个后选字";
"Space to +cycle pages, Shift+Space to +cycle candidates" = "空格键 换下一页Shift+空格键 换选下一个后选字"; "Space to +cycle pages, Shift+Space to +cycle candidates" = "空格键 换下一页Shift+空格键 换选下一个后选字";
"Stop farting (when typed phonetic combination is invalid, etc.)" = "廉耻模式 // 取消勾选的话,敲错字时会有异音"; "Stop farting (when typed phonetic combination is invalid, etc.)" = "廉耻模式 // 取消勾选的话,敲错字时会有异音";
"to the front of the phrase (like Matsushita Hanin IME)" = "将游标置于词语前方 // 松下汉音风格"; "in front of the phrase (like macOS built-in Zhuyin IME)" = "将游标置于词语前方 // macOS 内建注音风格";
"to the rear of the phrase (like MS New-Phonetic IME)" = "将游标置于词语后方 // 微软新注音风格"; "at anyplace else (like Windows Yahoo KeyKey)" = "将游标置于词语中后方 // Windows 奇摩注音风格";
"Traditional Chinese" = "繁体中文"; "Traditional Chinese" = "繁体中文";
"Typing Style:" = "输入风格:"; "Typing Style:" = "输入风格:";
"UI Language:" = "介面语言:"; "UI Language:" = "介面语言:";

View File

@ -26,8 +26,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. to add user phrase." = "「%@」敲 Enter 添入自訂語彙。"; "\"%@\" selected. ENTER to add user phrase." = "「%@」敲 Enter 添入自訂語彙。";
"\"%@\" already exists: ↩ to boost, ⇧⌘↩ to exclude." = "「%@」已存在:敲 ↩ 以升權;敲 ⇧⌘↩ 以排除。"; "\"%@\" already exists: ENTER to boost, \n SHIFT+CMD+ENTER to exclude." = "「%@」已存在:敲 Enter 以升權;\n 敲 Shift+CMD+Enter 以排除。";
"Edit Phrase Replacement Table…" = "編輯語彙置換表…"; "Edit Phrase Replacement Table…" = "編輯語彙置換表…";
"Use Phrase Replacement" = "使用語彙置換"; "Use Phrase Replacement" = "使用語彙置換";
"Candidates keys cannot be empty." = "您必須指定選字鍵。"; "Candidates keys cannot be empty." = "您必須指定選字鍵。";
@ -56,8 +56,6 @@
"Symbol & Emoji Input" = "符號&繪文字輸入"; "Symbol & Emoji Input" = "符號&繪文字輸入";
"Edit User Symbol & Emoji Data…" = "編輯自訂符號&繪文字資料…"; "Edit User Symbol & Emoji Data…" = "編輯自訂符號&繪文字資料…";
"Choose your desired user data folder." = "請選擇您想指定的使用者語彙檔案目錄。"; "Choose your desired user data folder." = "請選擇您想指定的使用者語彙檔案目錄。";
"Cursor is after \"%@\"." = "游標在「%@」之後。";
"Cursor is before \"%@\"." = "游標在「%@」之前。";
"Cursor is between \"%@\" and \"%@\"." = "游標介於「%@」與「%@」之間。"; "Cursor is between \"%@\" and \"%@\"." = "游標介於「%@」與「%@」之間。";
// The followings are the category names used in the Symbol menu. // The followings are the category names used in the Symbol menu.
@ -129,7 +127,7 @@
"Non-QWERTY alphanumeral keyboard layouts are for Hanyu Pinyin parser only." = "QWERTY 以外的英數佈局是為了漢語拼音排列使用者而準備的。"; "Non-QWERTY alphanumeral keyboard layouts are for Hanyu Pinyin parser only." = "QWERTY 以外的英數佈局是為了漢語拼音排列使用者而準備的。";
"Output Settings:" = "輸出設定:"; "Output Settings:" = "輸出設定:";
"Phonetic Parser:" = "注音排列:"; "Phonetic Parser:" = "注音排列:";
"Push the cursor to the front of the phrase after selection" = "在選字後將游標置於該字詞的前方"; "Push the cursor in front of the phrase after selection" = "在選字後將游標置於該字詞的前方";
"Selection Keys:" = "選字鍵:"; "Selection Keys:" = "選字鍵:";
"Show page buttons in candidate window" = "在選字窗內顯示翻頁按鈕"; "Show page buttons in candidate window" = "在選字窗內顯示翻頁按鈕";
"Simplified Chinese" = "簡體中文"; "Simplified Chinese" = "簡體中文";
@ -137,8 +135,8 @@
"Space to +cycle candidates, Shift+Space to +cycle pages" = "Shift+空格鍵 換下一頁,空格鍵 換選下一個後選字"; "Space to +cycle candidates, Shift+Space to +cycle pages" = "Shift+空格鍵 換下一頁,空格鍵 換選下一個後選字";
"Space to +cycle pages, Shift+Space to +cycle candidates" = "空格鍵 換下一頁Shift+空格鍵 換選下一個後選字"; "Space to +cycle pages, Shift+Space to +cycle candidates" = "空格鍵 換下一頁Shift+空格鍵 換選下一個後選字";
"Stop farting (when typed phonetic combination is invalid, etc.)" = "廉恥模式 // 取消勾選的話,敲錯字時會有異音"; "Stop farting (when typed phonetic combination is invalid, etc.)" = "廉恥模式 // 取消勾選的話,敲錯字時會有異音";
"to the front of the phrase (like Matsushita Hanin IME)" = "將游標置於詞語前方 // 松下漢音風格"; "in front of the phrase (like macOS built-in Zhuyin IME)" = "將游標置於詞語前方 // macOS 內建注音風格";
"to the rear of the phrase (like MS New-Phonetic IME)" = "將游標置於詞語後方 // 微軟新注音風格"; "at anyplace else (like Windows Yahoo KeyKey)" = "將游標置於詞語中後方 // Windows 奇摩注音風格";
"Traditional Chinese" = "繁體中文"; "Traditional Chinese" = "繁體中文";
"Typing Style:" = "輸入風格:"; "Typing Style:" = "輸入風格:";
"UI Language:" = "介面語言:"; "UI Language:" = "介面語言:";

View File

@ -32,7 +32,7 @@ struct suiPrefPaneExperience: View {
(UserDefaults.standard.string(forKey: UserDef.kCandidateKeys) ?? mgrPrefs.defaultCandidateKeys) as String (UserDefaults.standard.string(forKey: UserDef.kCandidateKeys) ?? mgrPrefs.defaultCandidateKeys) as String
@State private var selCursorPosition = @State private var selCursorPosition =
UserDefaults.standard.bool( UserDefaults.standard.bool(
forKey: UserDef.kSelectPhraseAfterCursorAsCandidate) ? 1 : 0 forKey: UserDef.kSetRearCursorMode) ? 1 : 0
@State private var selPushCursorAfterSelection = UserDefaults.standard.bool( @State private var selPushCursorAfterSelection = UserDefaults.standard.bool(
forKey: UserDef.kMoveCursorAfterSelectingCandidate) forKey: UserDef.kMoveCursorAfterSelectingCandidate)
@State private var selKeyBehaviorShiftTab = @State private var selKeyBehaviorShiftTab =
@ -90,17 +90,17 @@ struct suiPrefPaneExperience: View {
} }
Preferences.Section(bottomDivider: true, label: { Text(LocalizedStringKey("Cursor Selection:")) }) { Preferences.Section(bottomDivider: true, label: { Text(LocalizedStringKey("Cursor Selection:")) }) {
Picker("", selection: $selCursorPosition) { Picker("", selection: $selCursorPosition) {
Text(LocalizedStringKey("to the front of the phrase (like Matsushita Hanin IME)")).tag(0) Text(LocalizedStringKey("in front of the phrase (like macOS built-in Zhuyin IME)")).tag(0)
Text(LocalizedStringKey("to the rear of the phrase (like MS New-Phonetic IME)")).tag(1) Text(LocalizedStringKey("at anyplace else (like Windows Yahoo KeyKey)")).tag(1)
}.onChange(of: selCursorPosition) { value in }.onChange(of: selCursorPosition) { value in
mgrPrefs.selectPhraseAfterCursorAsCandidate = (value == 1) ? true : false mgrPrefs.setRearCursorMode = (value == 1) ? true : false
} }
.labelsHidden() .labelsHidden()
.pickerStyle(RadioGroupPickerStyle()) .pickerStyle(RadioGroupPickerStyle())
Text(LocalizedStringKey("Choose the cursor position where you want to list possible candidates.")) Text(LocalizedStringKey("Choose the cursor position where you want to list possible candidates."))
.preferenceDescription() .preferenceDescription()
Toggle( Toggle(
LocalizedStringKey("Push the cursor to the front of the phrase after selection"), LocalizedStringKey("Push the cursor in front of the phrase after selection"),
isOn: $selPushCursorAfterSelection isOn: $selPushCursorAfterSelection
).onChange(of: selPushCursorAfterSelection) { value in ).onChange(of: selPushCursorAfterSelection) { value in
mgrPrefs.moveCursorAfterSelectingCandidate = value mgrPrefs.moveCursorAfterSelectingCandidate = value

View File

@ -130,12 +130,22 @@ struct suiPrefPaneGeneral: View {
isOn: $selEnableKanjiConvToKangXi isOn: $selEnableKanjiConvToKangXi
).onChange(of: selEnableKanjiConvToKangXi) { value in ).onChange(of: selEnableKanjiConvToKangXi) { value in
mgrPrefs.chineseConversionEnabled = value mgrPrefs.chineseConversionEnabled = value
selEnableKanjiConvToKangXi = value
if value {
mgrPrefs.shiftJISShinjitaiOutputEnabled = !value
selEnableKanjiConvToJIS = !value
}
} }
Toggle( Toggle(
LocalizedStringKey("Auto-convert traditional Chinese glyphs to JIS Shinjitai characters"), LocalizedStringKey("Auto-convert traditional Chinese glyphs to JIS Shinjitai characters"),
isOn: $selEnableKanjiConvToJIS isOn: $selEnableKanjiConvToJIS
).onChange(of: selEnableKanjiConvToJIS) { value in ).onChange(of: selEnableKanjiConvToJIS) { value in
mgrPrefs.shiftJISShinjitaiOutputEnabled = value mgrPrefs.shiftJISShinjitaiOutputEnabled = value
selEnableKanjiConvToJIS = value
if value {
mgrPrefs.chineseConversionEnabled = !value
selEnableKanjiConvToKangXi = !value
}
} }
Toggle( Toggle(
LocalizedStringKey("Stop farting (when typed phonetic combination is invalid, etc.)"), LocalizedStringKey("Stop farting (when typed phonetic combination is invalid, etc.)"),

View File

@ -1,8 +1,7 @@
<?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="20037" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES"> <document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="19529" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<dependencies> <dependencies>
<deployment identifier="macosx"/> <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19529"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="20037"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
<objects> <objects>
@ -379,11 +378,11 @@
</buttonCell> </buttonCell>
<cells> <cells>
<column> <column>
<buttonCell type="radio" title="Cursor to the front of the phrase (like Matsushita Hanin IME)" imagePosition="left" alignment="left" controlSize="small" state="on" inset="2" id="16"> <buttonCell type="radio" title="Cursor in front of the phrase (like macOS built-in Zhuyin IME)" imagePosition="left" alignment="left" controlSize="small" state="on" inset="2" id="16">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/> <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="cellTitle"/> <font key="font" metaFont="cellTitle"/>
</buttonCell> </buttonCell>
<buttonCell type="radio" title="Cursor to the rear of the phrase (like MS New-Phonetic IME)" imagePosition="left" alignment="left" controlSize="small" tag="1" inset="2" id="17"> <buttonCell type="radio" title="Cursor at anyplace else (like Windows Yahoo KeyKey)" imagePosition="left" alignment="left" controlSize="small" tag="1" inset="2" id="17">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/> <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="cellTitle"/> <font key="font" metaFont="cellTitle"/>
</buttonCell> </buttonCell>
@ -398,7 +397,7 @@
<constraints> <constraints>
<constraint firstAttribute="height" constant="16" id="0iq-1M-a8l"/> <constraint firstAttribute="height" constant="16" id="0iq-1M-a8l"/>
</constraints> </constraints>
<buttonCell key="cell" type="check" title="Push the cursor to the front of the phrase after selection" bezelStyle="regularSquare" imagePosition="left" controlSize="small" state="on" inset="2" id="RUG-ls-KyA"> <buttonCell key="cell" type="check" title="Push the cursor in front of the phrase after selection" bezelStyle="regularSquare" imagePosition="left" controlSize="small" state="on" inset="2" id="RUG-ls-KyA">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/> <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="cellTitle"/> <font key="font" metaFont="cellTitle"/>
</buttonCell> </buttonCell>

View File

@ -29,11 +29,11 @@
/* Class = "NSTextFieldCell"; title = "Choose the cursor position where you want to list possible candidates."; ObjectID = "14"; */ /* Class = "NSTextFieldCell"; title = "Choose the cursor position where you want to list possible candidates."; ObjectID = "14"; */
"14.title" = "Choose the cursor position where you want to list possible candidates."; "14.title" = "Choose the cursor position where you want to list possible candidates.";
/* Class = "NSButtonCell"; title = "Cursor to the front of the phrase (like Matsushita Hanin IME)"; ObjectID = "16"; */ /* Class = "NSButtonCell"; title = "Cursor in front of the phrase (like macOS built-in Zhuyin IME)"; ObjectID = "16"; */
"16.title" = "Cursor to the front of the phrase (like Matsushita Hanin IME)"; "16.title" = "Cursor in front of the phrase (like macOS built-in Zhuyin IME)";
/* Class = "NSButtonCell"; title = "Cursor to the rear of the phrase (like MS New-Phonetic IME)"; ObjectID = "17"; */ /* Class = "NSButtonCell"; title = "Cursor at anyplace else (like Windows Yahoo KeyKey)"; ObjectID = "17"; */
"17.title" = "Cursor to the rear of the phrase (like MS New-Phonetic IME)"; "17.title" = "Cursor at anyplace else (like Windows Yahoo KeyKey)";
/* Class = "NSButtonCell"; title = "Radio"; ObjectID = "18"; */ /* Class = "NSButtonCell"; title = "Radio"; ObjectID = "18"; */
"18.title" = "Radio"; "18.title" = "Radio";
@ -143,8 +143,8 @@
/* Class = "NSTextFieldCell"; title = "Choose your preferred keyboard layout and phonetic parser."; ObjectID = "RQ6-MS-m4C"; */ /* Class = "NSTextFieldCell"; title = "Choose your preferred keyboard layout and phonetic parser."; ObjectID = "RQ6-MS-m4C"; */
"RQ6-MS-m4C.title" = "Choose your preferred keyboard layout and phonetic parser."; "RQ6-MS-m4C.title" = "Choose your preferred keyboard layout and phonetic parser.";
/* Class = "NSButtonCell"; title = "Push the cursor to the front of the phrase after selection"; ObjectID = "RUG-ls-KyA"; */ /* Class = "NSButtonCell"; title = "Push the cursor in front of the phrase after selection"; ObjectID = "RUG-ls-KyA"; */
"RUG-ls-KyA.title" = "Push the cursor to the front of the phrase after selection"; "RUG-ls-KyA.title" = "Push the cursor in front of the phrase after selection";
/* Class = "NSMenuItem"; title = "Traditional Chinese"; ObjectID = "TXr-FF-ehw"; */ /* Class = "NSMenuItem"; title = "Traditional Chinese"; ObjectID = "TXr-FF-ehw"; */
"TXr-FF-ehw.title" = "Traditional Chinese"; "TXr-FF-ehw.title" = "Traditional Chinese";

View File

@ -29,11 +29,11 @@
/* Class = "NSTextFieldCell"; title = "Choose the cursor position where you want to list possible candidates."; ObjectID = "14"; */ /* Class = "NSTextFieldCell"; title = "Choose the cursor position where you want to list possible candidates."; ObjectID = "14"; */
"14.title" = "カーソルはどこで入力候補を呼び出すかとご選択ください:"; "14.title" = "カーソルはどこで入力候補を呼び出すかとご選択ください:";
/* Class = "NSButtonCell"; title = "Cursor to the front of the phrase (like Matsushita Hanin IME)"; ObjectID = "16"; */ /* Class = "NSButtonCell"; title = "Cursor in front of the phrase (like macOS built-in Zhuyin IME)"; ObjectID = "16"; */
"16.title" = "単語の前で // パナソニック漢音の入力スタイル"; "16.title" = "単語の前で // macOS 内蔵注音入力の入力スタイル";
/* Class = "NSButtonCell"; title = "Cursor to the rear of the phrase (like MS New-Phonetic IME)"; ObjectID = "17"; */ /* Class = "NSButtonCell"; title = "Cursor at anyplace else (like Windows Yahoo KeyKey)"; ObjectID = "17"; */
"17.title" = "単語の後で // Microsoft 新注音の入力スタイル"; "17.title" = "単語の中・後で // Windows Yahoo KeyKey の入力スタイル";
/* Class = "NSButtonCell"; title = "Radio"; ObjectID = "18"; */ /* Class = "NSButtonCell"; title = "Radio"; ObjectID = "18"; */
"18.title" = "Radio"; "18.title" = "Radio";
@ -143,7 +143,7 @@
/* Class = "NSTextFieldCell"; title = "Choose your preferred keyboard layout and phonetic parser."; ObjectID = "RQ6-MS-m4C"; */ /* Class = "NSTextFieldCell"; title = "Choose your preferred keyboard layout and phonetic parser."; ObjectID = "RQ6-MS-m4C"; */
"RQ6-MS-m4C.title" = "お好きなるキーボードとそれに相応しい注音配列をお選びください。"; "RQ6-MS-m4C.title" = "お好きなるキーボードとそれに相応しい注音配列をお選びください。";
/* Class = "NSButtonCell"; title = "Push the cursor to the front of the phrase after selection"; ObjectID = "RUG-ls-KyA"; */ /* Class = "NSButtonCell"; title = "Push the cursor in front of the phrase after selection"; ObjectID = "RUG-ls-KyA"; */
"RUG-ls-KyA.title" = "候補選択の直後、すぐカーソルを単語の向こうに推す"; "RUG-ls-KyA.title" = "候補選択の直後、すぐカーソルを単語の向こうに推す";
/* Class = "NSMenuItem"; title = "Traditional Chinese"; ObjectID = "TXr-FF-ehw"; */ /* Class = "NSMenuItem"; title = "Traditional Chinese"; ObjectID = "TXr-FF-ehw"; */

View File

@ -29,11 +29,11 @@
/* Class = "NSTextFieldCell"; title = "Choose the cursor position where you want to list possible candidates."; ObjectID = "14"; */ /* Class = "NSTextFieldCell"; title = "Choose the cursor position where you want to list possible candidates."; ObjectID = "14"; */
"14.title" = "用以触发选字的光标相对位置:"; "14.title" = "用以触发选字的光标相对位置:";
/* Class = "NSButtonCell"; title = "Cursor to the front of the phrase (like Matsushita Hanin IME)"; ObjectID = "16"; */ /* Class = "NSButtonCell"; title = "Cursor in front of the phrase (like macOS built-in Zhuyin IME)"; ObjectID = "16"; */
"16.title" = "光标置于词语前方 // 松下汉音风格"; "16.title" = "光标置于词语前方 // macOS 内建注音风格";
/* Class = "NSButtonCell"; title = "Cursor to the rear of the phrase (like MS New-Phonetic IME)"; ObjectID = "17"; */ /* Class = "NSButtonCell"; title = "Cursor at anyplace else (like Windows Yahoo KeyKey)"; ObjectID = "17"; */
"17.title" = "光标置于词语后方 // 微软新注音风格"; "17.title" = "光标置于词语中后方 // Windows 奇摩注音风格";
/* Class = "NSButtonCell"; title = "Radio"; ObjectID = "18"; */ /* Class = "NSButtonCell"; title = "Radio"; ObjectID = "18"; */
"18.title" = "Radio"; "18.title" = "Radio";
@ -143,7 +143,7 @@
/* Class = "NSTextFieldCell"; title = "Choose your preferred keyboard layout and phonetic parser."; ObjectID = "RQ6-MS-m4C"; */ /* Class = "NSTextFieldCell"; title = "Choose your preferred keyboard layout and phonetic parser."; ObjectID = "RQ6-MS-m4C"; */
"RQ6-MS-m4C.title" = "选择您所偏好的系统键盘布局与注音分析器排列。"; "RQ6-MS-m4C.title" = "选择您所偏好的系统键盘布局与注音分析器排列。";
/* Class = "NSButtonCell"; title = "Push the cursor to the front of the phrase after selection"; ObjectID = "RUG-ls-KyA"; */ /* Class = "NSButtonCell"; title = "Push the cursor in front of the phrase after selection"; ObjectID = "RUG-ls-KyA"; */
"RUG-ls-KyA.title" = "在选字后将光标置于该字词的前方"; "RUG-ls-KyA.title" = "在选字后将光标置于该字词的前方";
/* Class = "NSMenuItem"; title = "Traditional Chinese"; ObjectID = "TXr-FF-ehw"; */ /* Class = "NSMenuItem"; title = "Traditional Chinese"; ObjectID = "TXr-FF-ehw"; */

View File

@ -29,11 +29,11 @@
/* Class = "NSTextFieldCell"; title = "Choose the cursor position where you want to list possible candidates."; ObjectID = "14"; */ /* Class = "NSTextFieldCell"; title = "Choose the cursor position where you want to list possible candidates."; ObjectID = "14"; */
"14.title" = "用以觸發選字的游標相對位置:"; "14.title" = "用以觸發選字的游標相對位置:";
/* Class = "NSButtonCell"; title = "Cursor to the front of the phrase (like Matsushita Hanin IME)"; ObjectID = "16"; */ /* Class = "NSButtonCell"; title = "Cursor in front of the phrase (like macOS built-in Zhuyin IME)"; ObjectID = "16"; */
"16.title" = "游標置於詞語前方 // 松下漢音風格"; "16.title" = "游標置於詞語前方 // macOS 內建注音風格";
/* Class = "NSButtonCell"; title = "Cursor to the rear of the phrase (like MS New-Phonetic IME)"; ObjectID = "17"; */ /* Class = "NSButtonCell"; title = "Cursor at anyplace else (like Windows Yahoo KeyKey)"; ObjectID = "17"; */
"17.title" = "游標置於詞語後方 // 微軟新注音風格"; "17.title" = "游標置於詞語中後方 // Windows 奇摩注音風格";
/* Class = "NSButtonCell"; title = "Radio"; ObjectID = "18"; */ /* Class = "NSButtonCell"; title = "Radio"; ObjectID = "18"; */
"18.title" = "Radio"; "18.title" = "Radio";
@ -143,7 +143,7 @@
/* Class = "NSTextFieldCell"; title = "Choose your preferred keyboard layout and phonetic parser."; ObjectID = "RQ6-MS-m4C"; */ /* Class = "NSTextFieldCell"; title = "Choose your preferred keyboard layout and phonetic parser."; ObjectID = "RQ6-MS-m4C"; */
"RQ6-MS-m4C.title" = "選擇您所偏好的系統鍵盤佈局與注音分析器排列。"; "RQ6-MS-m4C.title" = "選擇您所偏好的系統鍵盤佈局與注音分析器排列。";
/* Class = "NSButtonCell"; title = "Push the cursor to the front of the phrase after selection"; ObjectID = "RUG-ls-KyA"; */ /* Class = "NSButtonCell"; title = "Push the cursor in front of the phrase after selection"; ObjectID = "RUG-ls-KyA"; */
"RUG-ls-KyA.title" = "在選字後將游標置於該字詞的前方"; "RUG-ls-KyA.title" = "在選字後將游標置於該字詞的前方";
/* Class = "NSMenuItem"; title = "Traditional Chinese"; ObjectID = "TXr-FF-ehw"; */ /* Class = "NSMenuItem"; title = "Traditional Chinese"; ObjectID = "TXr-FF-ehw"; */

View File

@ -3,9 +3,9 @@
<plist version="1.0"> <plist version="1.0">
<dict> <dict>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>1.5.2</string> <string>1.5.3</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>1952</string> <string>1953</string>
<key>UpdateInfoEndpoint</key> <key>UpdateInfoEndpoint</key>
<string>https://gitee.com/vchewing/vChewing-macOS/raw/main/Update-Info.plist</string> <string>https://gitee.com/vchewing/vChewing-macOS/raw/main/Update-Info.plist</string>
<key>UpdateInfoSite</key> <key>UpdateInfoSite</key>

View File

@ -726,7 +726,7 @@
<key>USE_HFS+_COMPRESSION</key> <key>USE_HFS+_COMPRESSION</key>
<false/> <false/>
<key>VERSION</key> <key>VERSION</key>
<string>1.5.2</string> <string>1.5.3</string>
</dict> </dict>
<key>TYPE</key> <key>TYPE</key>
<integer>0</integer> <integer>0</integer>

View File

@ -389,9 +389,9 @@
5B4D47B627C9186900220DDC /* InstantiatedModels */ = { 5B4D47B627C9186900220DDC /* InstantiatedModels */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
5B62A32B27AE78B000A19448 /* CNSLM.h */,
5B8F43ED27C9BC220069AC27 /* SymbolLM.h */, 5B8F43ED27C9BC220069AC27 /* SymbolLM.h */,
5B7111C727DEF9FF00444310 /* UserSymbolLM.h */, 5B7111C727DEF9FF00444310 /* UserSymbolLM.h */,
5B62A32B27AE78B000A19448 /* CNSLM.h */,
); );
path = InstantiatedModels; path = InstantiatedModels;
sourceTree = "<group>"; sourceTree = "<group>";
@ -399,10 +399,10 @@
5B62A30127AE732800A19448 /* 3rdParty */ = { 5B62A30127AE732800A19448 /* 3rdParty */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
5BA9FD8C28006BA7002DE248 /* VDKComboBox */,
5B707CE627D9F43E0099EF99 /* OpenCCBridge */, 5B707CE627D9F43E0099EF99 /* OpenCCBridge */,
5B62A30227AE733500A19448 /* OVMandarin */, 5B62A30227AE733500A19448 /* OVMandarin */,
5BA9FCEA27FED652002DE248 /* SindreSorhus */, 5BA9FCEA27FED652002DE248 /* SindreSorhus */,
5BA9FD8C28006BA7002DE248 /* VDKComboBox */,
); );
path = 3rdParty; path = 3rdParty;
sourceTree = "<group>"; sourceTree = "<group>";
@ -428,14 +428,14 @@
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
5B11328827B94CFB00E58451 /* AppleKeyboardConverter.swift */, 5B11328827B94CFB00E58451 /* AppleKeyboardConverter.swift */,
D461B791279DAC010070E734 /* InputState.swift */,
D456576D279E4F7B00DF6BC9 /* InputHandler.swift */, D456576D279E4F7B00DF6BC9 /* InputHandler.swift */,
D4E569DA27A34CC100AC2CEF /* KeyHandler.h */, D461B791279DAC010070E734 /* InputState.swift */,
D4E569DB27A34CC100AC2CEF /* KeyHandler.mm */,
5B7F225C2808501000DDD3CB /* KeyHandler_HandleInput.swift */,
5B782EC3280C243C007276DE /* KeyHandler_HandleCandidate.swift */, 5B782EC3280C243C007276DE /* KeyHandler_HandleCandidate.swift */,
5B7F225C2808501000DDD3CB /* KeyHandler_HandleInput.swift */,
5B61B0C9280BEFD4002E3CFA /* KeyHandler_Misc.swift */, 5B61B0C9280BEFD4002E3CFA /* KeyHandler_Misc.swift */,
5B3133BE280B229700A4A505 /* KeyHandler_States.swift */, 5B3133BE280B229700A4A505 /* KeyHandler_States.swift */,
D4E569DA27A34CC100AC2CEF /* KeyHandler.h */,
D4E569DB27A34CC100AC2CEF /* KeyHandler.mm */,
6ACC3D3E27914F2400F1B140 /* KeyValueBlobReader.cpp */, 6ACC3D3E27914F2400F1B140 /* KeyValueBlobReader.cpp */,
6ACC3D3C27914AAB00F1B140 /* KeyValueBlobReader.h */, 6ACC3D3C27914AAB00F1B140 /* KeyValueBlobReader.h */,
5B62A33727AE79CD00A19448 /* NSStringUtils.swift */, 5B62A33727AE79CD00A19448 /* NSStringUtils.swift */,
@ -447,8 +447,8 @@
5B62A32027AE752000A19448 /* Headers */ = { 5B62A32027AE752000A19448 /* Headers */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
6A0D4EF615FC0DA600ABF4B3 /* vChewing-Prefix.pch */,
D427A9BF25ED28CC005D43E0 /* vChewing-Bridging-Header.h */, D427A9BF25ED28CC005D43E0 /* vChewing-Bridging-Header.h */,
6A0D4EF615FC0DA600ABF4B3 /* vChewing-Prefix.pch */,
); );
path = Headers; path = Headers;
sourceTree = "<group>"; sourceTree = "<group>";
@ -467,8 +467,8 @@
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
5BDC1CF927FDF1310052C2B9 /* apiUpdate.swift */, 5BDC1CF927FDF1310052C2B9 /* apiUpdate.swift */,
D4A13D5927A59D5C003BE359 /* ctlInputMethod.swift */,
5BB802D927FABA8300CF1C19 /* ctlInputMethod_Menu.swift */, 5BB802D927FABA8300CF1C19 /* ctlInputMethod_Menu.swift */,
D4A13D5927A59D5C003BE359 /* ctlInputMethod.swift */,
5B5E535127EF261400C6AA1E /* IME.swift */, 5B5E535127EF261400C6AA1E /* IME.swift */,
5B62A33127AE792F00A19448 /* InputSourceHelper.swift */, 5B62A33127AE792F00A19448 /* InputSourceHelper.swift */,
5B62A33527AE795800A19448 /* mgrPrefs.swift */, 5B62A33527AE795800A19448 /* mgrPrefs.swift */,
@ -487,13 +487,13 @@
5B62A32427AE757300A19448 /* LangModelRelated */ = { 5B62A32427AE757300A19448 /* LangModelRelated */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
D41355D9278E6D17005E5CBD /* LMInstantiator.mm */, 5B62A32527AE758000A19448 /* SubLanguageModels */,
D41355DA278E6D17005E5CBD /* LMInstantiator.h */, D41355DA278E6D17005E5CBD /* LMInstantiator.h */,
D41355D6278D7409005E5CBD /* mgrLangModel.h */, D41355D9278E6D17005E5CBD /* LMInstantiator.mm */,
D495583A27A5C6C4006ADE1C /* mgrLangModel_Privates.h */, D495583A27A5C6C4006ADE1C /* mgrLangModel_Privates.h */,
D41355D6278D7409005E5CBD /* mgrLangModel.h */,
D41355D7278D7409005E5CBD /* mgrLangModel.mm */, D41355D7278D7409005E5CBD /* mgrLangModel.mm */,
5BAEFACF28012565001F42C9 /* mgrLangModel.swift */, 5BAEFACF28012565001F42C9 /* mgrLangModel.swift */,
5B62A32527AE758000A19448 /* SubLanguageModels */,
); );
path = LangModelRelated; path = LangModelRelated;
sourceTree = "<group>"; sourceTree = "<group>";
@ -502,20 +502,20 @@
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
5B4D47B627C9186900220DDC /* InstantiatedModels */, 5B4D47B627C9186900220DDC /* InstantiatedModels */,
D47D73AB27A6CAE600255A50 /* AssociatedPhrases.h */,
D47D73AA27A6CAE600255A50 /* AssociatedPhrases.mm */,
5B62A32C27AE78B000A19448 /* CoreLM.h */, 5B62A32C27AE78B000A19448 /* CoreLM.h */,
5B62A32D27AE78B000A19448 /* CoreLM.mm */, 5B62A32D27AE78B000A19448 /* CoreLM.mm */,
D41355DC278EA3ED005E5CBD /* UserPhrasesLM.mm */,
D41355DD278EA3ED005E5CBD /* UserPhrasesLM.h */,
6ACC3D422793701600F1B140 /* ParselessLM.cpp */, 6ACC3D422793701600F1B140 /* ParselessLM.cpp */,
6ACC3D432793701600F1B140 /* ParselessLM.h */, 6ACC3D432793701600F1B140 /* ParselessLM.h */,
6ACC3D402793701600F1B140 /* ParselessPhraseDB.cpp */, 6ACC3D402793701600F1B140 /* ParselessPhraseDB.cpp */,
6ACC3D412793701600F1B140 /* ParselessPhraseDB.h */, 6ACC3D412793701600F1B140 /* ParselessPhraseDB.h */,
D44FB74B2792189A003C80A6 /* PhraseReplacementMap.mm */,
D44FB74C2792189A003C80A6 /* PhraseReplacementMap.h */, D44FB74C2792189A003C80A6 /* PhraseReplacementMap.h */,
D44FB74B2792189A003C80A6 /* PhraseReplacementMap.mm */,
D47F7DD2278C1263002F9DD7 /* UserOverrideModel.cpp */, D47F7DD2278C1263002F9DD7 /* UserOverrideModel.cpp */,
D47F7DD1278C1263002F9DD7 /* UserOverrideModel.h */, D47F7DD1278C1263002F9DD7 /* UserOverrideModel.h */,
D47D73AA27A6CAE600255A50 /* AssociatedPhrases.mm */, D41355DD278EA3ED005E5CBD /* UserPhrasesLM.h */,
D47D73AB27A6CAE600255A50 /* AssociatedPhrases.h */, D41355DC278EA3ED005E5CBD /* UserPhrasesLM.mm */,
); );
path = SubLanguageModels; path = SubLanguageModels;
sourceTree = "<group>"; sourceTree = "<group>";
@ -537,9 +537,9 @@
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
5B62A33E27AE7CD900A19448 /* CandidateUI */, 5B62A33E27AE7CD900A19448 /* CandidateUI */,
5B62A34427AE7CD900A19448 /* NotifierUI */,
5BA9FD0927FED9F3002DE248 /* PrefUI */, 5BA9FD0927FED9F3002DE248 /* PrefUI */,
5B62A34227AE7CD900A19448 /* TooltipUI */, 5B62A34227AE7CD900A19448 /* TooltipUI */,
5B62A34427AE7CD900A19448 /* NotifierUI */,
); );
path = UI; path = UI;
sourceTree = "<group>"; sourceTree = "<group>";
@ -681,10 +681,10 @@
5BBBB76E27AED70B0023B93A /* MenuIcons */ = { 5BBBB76E27AED70B0023B93A /* MenuIcons */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
5BBBB76F27AED70B0023B93A /* MenuIcon-TCVIM@2x.png */,
5BBBB77027AED70B0023B93A /* MenuIcon-SCVIM@2x.png */,
5BBBB77127AED70B0023B93A /* MenuIcon-SCVIM.png */, 5BBBB77127AED70B0023B93A /* MenuIcon-SCVIM.png */,
5BBBB77027AED70B0023B93A /* MenuIcon-SCVIM@2x.png */,
5BBBB77227AED70B0023B93A /* MenuIcon-TCVIM.png */, 5BBBB77227AED70B0023B93A /* MenuIcon-TCVIM.png */,
5BBBB76F27AED70B0023B93A /* MenuIcon-TCVIM@2x.png */,
); );
name = MenuIcons; name = MenuIcons;
path = Source/Resources/MenuIcons; path = Source/Resources/MenuIcons;
@ -825,13 +825,13 @@
5BBBB77827AEDB330023B93A /* Resources */, 5BBBB77827AEDB330023B93A /* Resources */,
D4F0BBE0279AF8B30071253C /* AppDelegate.swift */, D4F0BBE0279AF8B30071253C /* AppDelegate.swift */,
D4F0BBDE279AF1AF0071253C /* ArchiveUtil.swift */, D4F0BBDE279AF1AF0071253C /* ArchiveUtil.swift */,
D4F0BBE2279B08900071253C /* Chronosphere.h */,
D4F0BBE3279B08900071253C /* Chronosphere.m */,
6ACA41F215FC1D9000935EF6 /* Installer-Info.plist */, 6ACA41F215FC1D9000935EF6 /* Installer-Info.plist */,
6ACA41F315FC1D9000935EF6 /* Installer-Prefix.pch */, 6ACA41F315FC1D9000935EF6 /* Installer-Prefix.pch */,
5BC0AACA27F58472002D33E9 /* pkgPostInstall.sh */, 5BC0AACA27F58472002D33E9 /* pkgPostInstall.sh */,
5BC0AAC927F58472002D33E9 /* pkgPreInstall.sh */, 5BC0AAC927F58472002D33E9 /* pkgPreInstall.sh */,
6A93050C279877FF00D370DA /* vChewingInstaller-Bridging-Header.h */, 6A93050C279877FF00D370DA /* vChewingInstaller-Bridging-Header.h */,
D4F0BBE2279B08900071253C /* Chronosphere.h */,
D4F0BBE3279B08900071253C /* Chronosphere.m */,
); );
path = Installer; path = Installer;
sourceTree = "<group>"; sourceTree = "<group>";
@ -1324,7 +1324,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 = 1952; CURRENT_PROJECT_VERSION = 1953;
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;
@ -1347,7 +1347,7 @@
"@executable_path/../Frameworks", "@executable_path/../Frameworks",
); );
MACOSX_DEPLOYMENT_TARGET = 10.11.5; MACOSX_DEPLOYMENT_TARGET = 10.11.5;
MARKETING_VERSION = 1.5.2; MARKETING_VERSION = 1.5.3;
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;
@ -1380,7 +1380,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 = 1952; CURRENT_PROJECT_VERSION = 1953;
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;
@ -1399,7 +1399,7 @@
"@executable_path/../Frameworks", "@executable_path/../Frameworks",
); );
MACOSX_DEPLOYMENT_TARGET = 10.11.5; MACOSX_DEPLOYMENT_TARGET = 10.11.5;
MARKETING_VERSION = 1.5.2; MARKETING_VERSION = 1.5.3;
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;
@ -1513,7 +1513,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 = 1952; CURRENT_PROJECT_VERSION = 1953;
DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_ASSET_PATHS = "";
DEVELOPMENT_TEAM = ""; DEVELOPMENT_TEAM = "";
GCC_C_LANGUAGE_STANDARD = gnu99; GCC_C_LANGUAGE_STANDARD = gnu99;
@ -1548,7 +1548,7 @@
"@executable_path/../Frameworks", "@executable_path/../Frameworks",
); );
MACOSX_DEPLOYMENT_TARGET = 10.11.5; MACOSX_DEPLOYMENT_TARGET = 10.11.5;
MARKETING_VERSION = 1.5.2; MARKETING_VERSION = 1.5.3;
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)";
@ -1580,7 +1580,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 = 1952; CURRENT_PROJECT_VERSION = 1953;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_ASSET_PATHS = "";
DEVELOPMENT_TEAM = ""; DEVELOPMENT_TEAM = "";
@ -1610,7 +1610,7 @@
"@executable_path/../Frameworks", "@executable_path/../Frameworks",
); );
MACOSX_DEPLOYMENT_TARGET = 10.11.5; MACOSX_DEPLOYMENT_TARGET = 10.11.5;
MARKETING_VERSION = 1.5.2; MARKETING_VERSION = 1.5.3;
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 = "";
@ -1693,7 +1693,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 = 1952; CURRENT_PROJECT_VERSION = 1953;
DEVELOPMENT_TEAM = ""; DEVELOPMENT_TEAM = "";
GCC_C_LANGUAGE_STANDARD = gnu99; GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO; GCC_DYNAMIC_NO_PIC = NO;
@ -1718,7 +1718,7 @@
"@executable_path/../Frameworks", "@executable_path/../Frameworks",
); );
MACOSX_DEPLOYMENT_TARGET = 10.11.5; MACOSX_DEPLOYMENT_TARGET = 10.11.5;
MARKETING_VERSION = 1.5.2; MARKETING_VERSION = 1.5.3;
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)";
@ -1745,7 +1745,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 = 1952; CURRENT_PROJECT_VERSION = 1953;
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;
@ -1765,7 +1765,7 @@
"@executable_path/../Frameworks", "@executable_path/../Frameworks",
); );
MACOSX_DEPLOYMENT_TARGET = 10.11.5; MACOSX_DEPLOYMENT_TARGET = 10.11.5;
MARKETING_VERSION = 1.5.2; MARKETING_VERSION = 1.5.3;
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 = "";