!25 1.5.3 Final // Merge Gitee PR!25 from upd/1.5.3
This commit is contained in:
commit
6be618a723
|
@ -1 +1 @@
|
|||
Subproject commit 2d0c040a95621f382a13664667fa5d1c43d172ee
|
||||
Subproject commit 8199254d3abbf63e3b7535bbc975f8519a2d6834
|
|
@ -237,7 +237,7 @@ class InputState: NSObject {
|
|||
)
|
||||
return String(
|
||||
format: NSLocalizedString(
|
||||
"\"%@\" already exists: ↩ to boost, ⇧⌘↩ to exclude.", comment: ""
|
||||
"\"%@\" already exists: ENTER to boost, \n SHIFT+CMD+ENTER to exclude.", comment: ""
|
||||
), text
|
||||
)
|
||||
}
|
||||
|
@ -246,7 +246,7 @@ class InputState: NSObject {
|
|||
)
|
||||
TooltipController.textColor = NSColor.white
|
||||
return String(
|
||||
format: NSLocalizedString("\"%@\" selected. ↩ to add user phrase.", comment: ""),
|
||||
format: NSLocalizedString("\"%@\" selected. ENTER to add user phrase.", comment: ""),
|
||||
text
|
||||
)
|
||||
}
|
||||
|
|
|
@ -40,8 +40,8 @@ struct BufferStatePackage
|
|||
{
|
||||
NSString *composedText;
|
||||
NSInteger cursorIndex;
|
||||
NSString *resultOfBefore;
|
||||
NSString *resultOfAfter;
|
||||
NSString *resultOfRear;
|
||||
NSString *resultOfFront;
|
||||
};
|
||||
|
||||
@class KeyHandler;
|
||||
|
@ -74,12 +74,13 @@ struct BufferStatePackage
|
|||
- (BOOL)isPrintable:(UniChar)charCode;
|
||||
- (NSArray<NSString *> *)buildAssociatePhraseArrayWithKey:(NSString *)key;
|
||||
- (NSArray<NSString *> *)getCandidatesArray;
|
||||
- (NSInteger)getKeyLengthAtIndexZero;
|
||||
- (NSInteger)getBuilderCursorIndex;
|
||||
- (NSInteger)getBuilderLength;
|
||||
- (NSInteger)getPackagedCursorIndex;
|
||||
- (NSString *)getComposedText;
|
||||
- (NSString *)getCompositionFromPhoneticReadingBuffer;
|
||||
- (NSString *)getStrLocationResult:(BOOL)isAfter NS_SWIFT_NAME(getStrLocationResult(isAfter:));
|
||||
- (NSString *)getStrLocationResult:(BOOL)isFront NS_SWIFT_NAME(getStrLocationResult(isFront:));
|
||||
- (NSString *)getSyllableCompositionFromPhoneticReadingBuffer;
|
||||
- (void)clearPhoneticReadingBuffer;
|
||||
- (void)combinePhoneticReadingBufferKey:(UniChar)charCode;
|
||||
|
|
|
@ -46,8 +46,8 @@ static const double kEpsilon = 0.000001;
|
|||
|
||||
NSString *packagedComposedText;
|
||||
NSInteger packagedCursorIndex;
|
||||
NSString *packagedResultOfBefore;
|
||||
NSString *packagedResultOfAfter;
|
||||
NSString *packagedResultOfRear;
|
||||
NSString *packagedResultOfFront;
|
||||
|
||||
// NON-SWIFTIFIABLE
|
||||
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 builderCursorIndex = [self getBuilderCursorIndex];
|
||||
|
||||
NSString *resultOfBefore = @"";
|
||||
NSString *resultOfAfter = @"";
|
||||
NSString *resultOfRear = @"";
|
||||
NSString *resultOfFront = @"";
|
||||
|
||||
for (std::vector<Gramambular::NodeAnchor>::iterator wi = _walkedNodes.begin(), we = _walkedNodes.end(); wi != we;
|
||||
++wi)
|
||||
|
@ -282,19 +282,19 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
|
|||
}
|
||||
if (builderCursorIndex == 0)
|
||||
{
|
||||
resultOfBefore =
|
||||
resultOfFront =
|
||||
[NSString stringWithUTF8String:_builder->readings()[builderCursorIndex].c_str()];
|
||||
}
|
||||
else if (builderCursorIndex >= _builder->readings().size())
|
||||
{
|
||||
resultOfAfter = [NSString
|
||||
resultOfRear = [NSString
|
||||
stringWithUTF8String:_builder->readings()[_builder->readings().size() - 1].c_str()];
|
||||
}
|
||||
else
|
||||
{
|
||||
resultOfBefore =
|
||||
resultOfFront =
|
||||
[NSString stringWithUTF8String:_builder->readings()[builderCursorIndex].c_str()];
|
||||
resultOfAfter =
|
||||
resultOfRear =
|
||||
[NSString stringWithUTF8String:_builder->readings()[builderCursorIndex - 1].c_str()];
|
||||
}
|
||||
}
|
||||
|
@ -314,17 +314,17 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
|
|||
|
||||
packagedComposedText = composedText;
|
||||
packagedCursorIndex = cursorIndex;
|
||||
packagedResultOfBefore = resultOfBefore;
|
||||
packagedResultOfAfter = resultOfAfter;
|
||||
packagedResultOfRear = resultOfRear;
|
||||
packagedResultOfFront = resultOfFront;
|
||||
}
|
||||
|
||||
// NON-SWIFTIFIABLE DUE TO VARIABLE AVAILABLE ACCESSIBILITY RANGE.
|
||||
- (NSString *)getStrLocationResult:(BOOL)isAfter
|
||||
- (NSString *)getStrLocationResult:(BOOL)isFront
|
||||
{
|
||||
if (isAfter)
|
||||
return packagedResultOfAfter;
|
||||
if (isFront)
|
||||
return packagedResultOfFront;
|
||||
else
|
||||
return packagedResultOfBefore;
|
||||
return packagedResultOfRear;
|
||||
}
|
||||
|
||||
// NON-SWIFTIFIABLE DUE TO VARIABLE AVAILABLE ACCESSIBILITY RANGE.
|
||||
|
@ -555,8 +555,6 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
|
|||
|
||||
- (void)dealWithOverrideModelSuggestions
|
||||
{
|
||||
// 讓 grid 知道目前的游標候選字判定是前置還是後置
|
||||
_builder->grid().setHaninInputEnabled(!mgrPrefs.selectPhraseAfterCursorAsCandidate);
|
||||
// 這一整段都太 C++ 且只出現一次,就整個端過來了。
|
||||
// 拆開封裝的話,只會把問題搞得更麻煩而已。
|
||||
std::string overrideValue = (mgrPrefs.useSCPCTypingMode)
|
||||
|
@ -567,7 +565,9 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
|
|||
if (!overrideValue.empty())
|
||||
{
|
||||
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);
|
||||
_builder->grid().overrideNodeScoreForSelectedCandidate(cursorIndex, overrideValue,
|
||||
static_cast<float>(highestScore));
|
||||
|
@ -601,13 +601,12 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
|
|||
|
||||
- (NSArray<NSString *> *)getCandidatesArray
|
||||
{
|
||||
// 讓 grid 知道目前的游標候選字判定是前置還是後置
|
||||
_builder->grid().setHaninInputEnabled(!mgrPrefs.selectPhraseAfterCursorAsCandidate);
|
||||
|
||||
NSMutableArray<NSString *> *candidatesArray = [[NSMutableArray alloc] init];
|
||||
|
||||
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
|
||||
stable_sort(nodes.begin(), nodes.end(), NodeAnchorDescendingSorter());
|
||||
|
@ -623,6 +622,11 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
|
|||
return candidatesArray;
|
||||
}
|
||||
|
||||
- (NSInteger)getKeyLengthAtIndexZero
|
||||
{
|
||||
return [NSString stringWithUTF8String:_walkedNodes[0].node->currentKeyValue().value.c_str()].length;
|
||||
}
|
||||
|
||||
#pragma mark - 威注音認為有必要單獨拿出來處理的部分,交給 Swift 則有些困難。
|
||||
|
||||
- (BOOL)isPrintable:(UniChar)charCode
|
||||
|
|
|
@ -35,13 +35,19 @@ import Cocoa
|
|||
|
||||
func getActualCandidateCursorIndex() -> Int {
|
||||
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.)
|
||||
if (mgrPrefs.selectPhraseAfterCursorAsCandidate
|
||||
// This is different from MS Phonetics IME style ...
|
||||
// ... since Windows Yahoo Kimo allows "node crossing".
|
||||
if (mgrPrefs.setRearCursorMode
|
||||
&& (cursorIndex < getBuilderLength()))
|
||||
|| cursorIndex == 0
|
||||
{
|
||||
cursorIndex += 1
|
||||
if cursorIndex == 0 && !mgrPrefs.setRearCursorMode {
|
||||
cursorIndex += getKeyLengthAtIndexZero()
|
||||
} else {
|
||||
cursorIndex += 1
|
||||
}
|
||||
}
|
||||
return cursorIndex
|
||||
}
|
||||
|
|
|
@ -37,28 +37,38 @@ import Cocoa
|
|||
// 獲取封裝好的資料
|
||||
let composedText = getComposedText()
|
||||
let packagedCursorIndex = UInt(getPackagedCursorIndex())
|
||||
let resultOfBefore = getStrLocationResult(isAfter: false)
|
||||
let resultOfAfter = getStrLocationResult(isAfter: true)
|
||||
let resultOfRear = getStrLocationResult(isFront: false)
|
||||
let resultOfFront = getStrLocationResult(isFront: true)
|
||||
|
||||
// 初期化狀態
|
||||
let newState = InputState.Inputting(composingBuffer: composedText, cursorIndex: packagedCursorIndex)
|
||||
|
||||
// 組建提示文本
|
||||
var tooltip = ""
|
||||
if resultOfBefore == "", resultOfAfter != "" {
|
||||
tooltip = String(format: NSLocalizedString("Cursor is after \"%@\".", comment: ""), resultOfAfter)
|
||||
}
|
||||
if resultOfBefore != "", resultOfAfter == "" {
|
||||
tooltip = String(format: NSLocalizedString("Cursor is before \"%@\".", comment: ""), resultOfBefore)
|
||||
}
|
||||
if resultOfBefore != "", resultOfAfter != "" {
|
||||
|
||||
// 如果在用特定的模式的話,則始終顯示對應的提示。
|
||||
// TODO: 該功能無法正常運作,暫時註釋掉。
|
||||
// if ctlInputMethod.currentKeyHandler.inputMode == InputMode.imeModeCHT {
|
||||
// if mgrPrefs.chineseConversionEnabled && !mgrPrefs.shiftJISShinjitaiOutputEnabled {
|
||||
// tooltip = String(
|
||||
// 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(
|
||||
format: NSLocalizedString("Cursor is between \"%@\" and \"%@\".", comment: ""),
|
||||
resultOfAfter, resultOfBefore
|
||||
resultOfFront, resultOfRear
|
||||
)
|
||||
}
|
||||
|
||||
// 給新狀態安插配置好的提示文本、且送出新狀態
|
||||
newState.tooltip = tooltip
|
||||
return newState
|
||||
}
|
||||
|
|
|
@ -37,7 +37,7 @@ struct UserDef {
|
|||
static let kCandidateListTextSize = "CandidateListTextSize"
|
||||
static let kAppleLanguages = "AppleLanguages"
|
||||
static let kShouldAutoReloadUserDataFiles = "ShouldAutoReloadUserDataFiles"
|
||||
static let kSelectPhraseAfterCursorAsCandidate = "SelectPhraseAfterCursorAsCandidate"
|
||||
static let kSetRearCursorMode = "SetRearCursorMode"
|
||||
static let kUseHorizontalCandidateList = "UseHorizontalCandidateList"
|
||||
static let kComposingBufferSize = "ComposingBufferSize"
|
||||
static let kChooseCandidateUsingSpace = "ChooseCandidateUsingSpace"
|
||||
|
@ -210,7 +210,7 @@ public class mgrPrefs: NSObject {
|
|||
UserDef.kCandidateListTextSize,
|
||||
UserDef.kAppleLanguages,
|
||||
UserDef.kShouldAutoReloadUserDataFiles,
|
||||
UserDef.kSelectPhraseAfterCursorAsCandidate,
|
||||
UserDef.kSetRearCursorMode,
|
||||
UserDef.kUseHorizontalCandidateList,
|
||||
UserDef.kComposingBufferSize,
|
||||
UserDef.kChooseCandidateUsingSpace,
|
||||
|
@ -258,7 +258,7 @@ public class mgrPrefs: NSObject {
|
|||
UserDefaults.standard.setDefault(mgrPrefs.useSCPCTypingMode, forKey: UserDef.kUseSCPCTypingMode)
|
||||
UserDefaults.standard.setDefault(mgrPrefs.associatedPhrasesEnabled, forKey: UserDef.kAssociatedPhrasesEnabled)
|
||||
UserDefaults.standard.setDefault(
|
||||
mgrPrefs.selectPhraseAfterCursorAsCandidate, forKey: UserDef.kSelectPhraseAfterCursorAsCandidate
|
||||
mgrPrefs.setRearCursorMode, forKey: UserDef.kSetRearCursorMode
|
||||
)
|
||||
UserDefaults.standard.setDefault(
|
||||
mgrPrefs.moveCursorAfterSelectingCandidate, forKey: UserDef.kMoveCursorAfterSelectingCandidate
|
||||
|
@ -322,8 +322,8 @@ public class mgrPrefs: NSObject {
|
|||
@UserDefault(key: UserDef.kShouldAutoReloadUserDataFiles, defaultValue: true)
|
||||
@objc static var shouldAutoReloadUserDataFiles: Bool
|
||||
|
||||
@UserDefault(key: UserDef.kSelectPhraseAfterCursorAsCandidate, defaultValue: false)
|
||||
@objc static var selectPhraseAfterCursorAsCandidate: Bool
|
||||
@UserDefault(key: UserDef.kSetRearCursorMode, defaultValue: false)
|
||||
@objc static var setRearCursorMode: Bool
|
||||
|
||||
@UserDefault(key: UserDef.kMoveCursorAfterSelectingCandidate, defaultValue: true)
|
||||
@objc static var moveCursorAfterSelectingCandidate: Bool
|
||||
|
|
|
@ -44,9 +44,6 @@ class Grid
|
|||
void insertNode(const Node &node, size_t location, size_t spanningLength);
|
||||
bool hasNodeAtLocationSpanningLengthMatchingKey(size_t location, size_t spanningLength, const std::string &key);
|
||||
|
||||
void setHaninInputEnabled(bool enabled);
|
||||
bool HaninInputEnabled();
|
||||
|
||||
void expandGridByOneAtLocation(size_t location);
|
||||
void shrinkGridByOneAtLocation(size_t location);
|
||||
|
||||
|
@ -119,19 +116,8 @@ class Grid
|
|||
|
||||
protected:
|
||||
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()
|
||||
{
|
||||
m_spans.clear();
|
||||
|
@ -206,6 +192,7 @@ inline size_t Grid::width() const
|
|||
return m_spans.size();
|
||||
}
|
||||
|
||||
// macOS 10.6 開始的內建注音的游標前置選字風格
|
||||
inline std::vector<NodeAnchor> Grid::nodesEndingAt(size_t location)
|
||||
{
|
||||
std::vector<NodeAnchor> result;
|
||||
|
@ -234,6 +221,8 @@ inline std::vector<NodeAnchor> Grid::nodesEndingAt(size_t location)
|
|||
return result;
|
||||
}
|
||||
|
||||
// Windows 版奇摩注音輸入法的游標後置的選字風格。
|
||||
// 與微軟新注音相異的是,這個風格允許在詞的中間叫出候選字窗。
|
||||
inline std::vector<NodeAnchor> Grid::nodesCrossingOrEndingAt(size_t location)
|
||||
{
|
||||
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++)
|
||||
{
|
||||
// 左半是漢音模式,已經自威注音 1.5.2 版開始解決了可以在詞中間叫出候選字的問題。
|
||||
// TODO: 右半是微軟新注音模式,仍有可以在詞中間叫出候選字的問題。
|
||||
if (((i + j != location) && m_bolHaninEnabled) || ((i + j < location) && !m_bolHaninEnabled))
|
||||
if (i + j < location)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
|
|
@ -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." = "\"%@\" length should ≤ %d for a user phrase.";
|
||||
"\"%@\" selected. ↩ to add user phrase." = "\"%@\" selected. ↩ to add user phrase.";
|
||||
"\"%@\" already exists: ↩ to boost, ⇧⌘↩ to exclude." = "\"%@\" already exists: ↩ to boost, ⇧⌘↩ to exclude.";
|
||||
"\"%@\" selected. ENTER to add user phrase." = "\"%@\" selected. ENTER to add user phrase.";
|
||||
"\"%@\" 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…";
|
||||
"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 after \"%@\".";
|
||||
"Cursor is before \"%@\"." = "Cursor is before \"%@\".";
|
||||
"Cursor is between \"%@\" and \"%@\"." = "Cursor is between \"%@\" and \"%@\".";
|
||||
|
||||
// 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.";
|
||||
"Output Settings:" = "Output Settings:";
|
||||
"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:";
|
||||
"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" = "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";
|
||||
"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)";
|
||||
"to the rear of the phrase (like MS New-Phonetic IME)" = "to the rear of the phrase (like MS New-Phonetic IME)";
|
||||
"in front of the phrase (like macOS built-in Zhuyin IME)" = "in front of the phrase (like macOS built-in Zhuyin IME)";
|
||||
"at anyplace else (like Windows Yahoo KeyKey)" = "at anyplace else (like Windows Yahoo KeyKey)";
|
||||
"Traditional Chinese" = "Traditional Chinese";
|
||||
"Typing Style:" = "Typing Style:";
|
||||
"UI Language:" = "UI Language:";
|
||||
|
|
|
@ -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." = "\"%@\" length should ≤ %d for a user phrase.";
|
||||
"\"%@\" selected. ↩ to add user phrase." = "\"%@\" selected. ↩ to add user phrase.";
|
||||
"\"%@\" already exists: ↩ to boost, ⇧⌘↩ to exclude." = "\"%@\" already exists: ↩ to boost, ⇧⌘↩ to exclude.";
|
||||
"\"%@\" selected. ENTER to add user phrase." = "\"%@\" selected. ENTER to add user phrase.";
|
||||
"\"%@\" 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…";
|
||||
"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 after \"%@\".";
|
||||
"Cursor is before \"%@\"." = "Cursor is before \"%@\".";
|
||||
"Cursor is between \"%@\" and \"%@\"." = "Cursor is between \"%@\" and \"%@\".";
|
||||
|
||||
// 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.";
|
||||
"Output Settings:" = "Output Settings:";
|
||||
"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:";
|
||||
"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" = "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";
|
||||
"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)";
|
||||
"to the rear of the phrase (like MS New-Phonetic IME)" = "to the rear of the phrase (like MS New-Phonetic IME)";
|
||||
"in front of the phrase (like macOS built-in Zhuyin IME)" = "in front of the phrase (like macOS built-in Zhuyin IME)";
|
||||
"at anyplace else (like Windows Yahoo KeyKey)" = "at anyplace else (like Windows Yahoo KeyKey)";
|
||||
"Traditional Chinese" = "Traditional Chinese";
|
||||
"Typing Style:" = "Typing Style:";
|
||||
"UI Language:" = "UI Language:";
|
||||
|
|
|
@ -26,8 +26,8 @@
|
|||
"Half-Width Punctuation Mode" = "半角句読モード";
|
||||
"\"%@\" length must ≥ 2 for a user phrase." = "「%@」もう1つ文字のお選びを。";
|
||||
"\"%@\" length should ≤ %d for a user phrase." = "「%@」文字数過剰で登録不可、%d 文字以内にして下さい。";
|
||||
"\"%@\" selected. ↩ to add user phrase." = "「%@」を ↩ で辞書に登録。";
|
||||
"\"%@\" already exists: ↩ to boost, ⇧⌘↩ to exclude." = "「%@」は既存語彙:↩ で最優先にし;⇧⌘↩ で排除。";
|
||||
"\"%@\" selected. ENTER to add user phrase." = "「%@」を ENTER で辞書に登録。";
|
||||
"\"%@\" already exists: ENTER to boost, \n SHIFT+CMD+ENTER to exclude." = "「%@」は既存語彙:ENTER で最優先にし;\n SHIFT+CMD+ENTER で排除。";
|
||||
"Edit Phrase Replacement Table…" = "言葉置換表を編集…";
|
||||
"Use Phrase Replacement" = "言葉置換機能";
|
||||
"Candidates keys cannot be empty." = "言選り用キー陣列に何かキーをご登録ください。";
|
||||
|
@ -56,8 +56,6 @@
|
|||
"Symbol & Emoji Input" = "符号&絵文字入力";
|
||||
"Edit User Symbol & Emoji Data…" = "ユーザー符号&絵文字辞書を編集…";
|
||||
"Choose your desired user data folder." = "欲しがるユーザー辞書フォルダをお選びください。";
|
||||
"Cursor is after \"%@\"." = "カーソルは「%@」の後に。";
|
||||
"Cursor is before \"%@\"." = "カーソル「%@」の前に。";
|
||||
"Cursor is between \"%@\" and \"%@\"." = "カーソルは「%@」と「%@」に間れ。";
|
||||
|
||||
// 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 以外の英数キーボードは漢語弁音以外の配列に不適用。";
|
||||
"Output Settings:" = "出力設定:";
|
||||
"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:" = "言選り用キー:";
|
||||
"Show page buttons in candidate window" = "入力候補陳列の側にページボタンを表示";
|
||||
"Simplified Chinese" = "簡体中国語";
|
||||
|
@ -137,8 +135,8 @@
|
|||
"Space to +cycle candidates, Shift+Space to +cycle pages" = "Shift+Space で次のページ、Space で次の候補文字を";
|
||||
"Space to +cycle pages, Shift+Space to +cycle candidates" = "Space で次のページ、Shift+Space で次の候補文字を";
|
||||
"Stop farting (when typed phonetic combination is invalid, etc.)" = "マナーモード // 外すと入力間違った時に変な声が出る";
|
||||
"to the front of the phrase (like Matsushita Hanin IME)" = "単語の前で // パナソニック漢音のやり方";
|
||||
"to the rear of the phrase (like MS New-Phonetic IME)" = "単語の後で // Microsoft 新注音のやり方";
|
||||
"in front of the phrase (like macOS built-in Zhuyin IME)" = "単語の前で // macOS 内蔵注音入力のやり方";
|
||||
"at anyplace else (like Windows Yahoo KeyKey)" = "単語の中・後で // Windows Yahoo KeyKey のやり方";
|
||||
"Traditional Chinese" = "繁体中国語";
|
||||
"Typing Style:" = "入力習慣:";
|
||||
"UI Language:" = "表示用言語:";
|
||||
|
|
|
@ -26,8 +26,8 @@
|
|||
"Half-Width Punctuation Mode" = "半角标点模式";
|
||||
"\"%@\" length must ≥ 2 for a user phrase." = "「%@」字数不足以自订语汇。";
|
||||
"\"%@\" length should ≤ %d for a user phrase." = "「%@」字数超过 %d、无法自订。";
|
||||
"\"%@\" selected. ↩ to add user phrase." = "「%@」敲 Enter 添入自订语汇。";
|
||||
"\"%@\" already exists: ↩ to boost, ⇧⌘↩ to exclude." = "「%@」已存在:敲 ↩ 以升权;敲 ⇧⌘↩ 以排除。";
|
||||
"\"%@\" selected. ENTER to add user phrase." = "「%@」敲 Enter 添入自订语汇。";
|
||||
"\"%@\" already exists: ENTER to boost, \n SHIFT+CMD+ENTER to exclude." = "「%@」已存在:敲 Enter 以升权;\n 敲 Shift+CMD+Enter 以排除。";
|
||||
"Edit Phrase Replacement Table…" = "编辑语汇置换表…";
|
||||
"Use Phrase Replacement" = "使用语汇置换";
|
||||
"Candidates keys cannot be empty." = "您必须指定选字键。";
|
||||
|
@ -56,8 +56,6 @@
|
|||
"Symbol & Emoji Input" = "符号&绘文字输入";
|
||||
"Edit User Symbol & Emoji Data…" = "编辑自订符号&绘文字资料…";
|
||||
"Choose your desired user data folder." = "请选择您想指定的使用者语汇档案目录。";
|
||||
"Cursor is after \"%@\"." = "游标在「%@」之后。";
|
||||
"Cursor is before \"%@\"." = "游标在「%@」之前。";
|
||||
"Cursor is between \"%@\" and \"%@\"." = "游标介于「%@」与「%@」之间。";
|
||||
|
||||
// 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 以外的英数布局是为了汉语拼音排列使用者而准备的。";
|
||||
"Output Settings:" = "输出设定:";
|
||||
"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:" = "选字键:";
|
||||
"Show page buttons in candidate window" = "在选字窗内显示翻页按钮";
|
||||
"Simplified Chinese" = "简体中文";
|
||||
|
@ -137,8 +135,8 @@
|
|||
"Space to +cycle candidates, Shift+Space to +cycle pages" = "Shift+空格键 换下一页,空格键 换选下一个后选字";
|
||||
"Space to +cycle pages, Shift+Space to +cycle candidates" = "空格键 换下一页,Shift+空格键 换选下一个后选字";
|
||||
"Stop farting (when typed phonetic combination is invalid, etc.)" = "廉耻模式 // 取消勾选的话,敲错字时会有异音";
|
||||
"to the front of the phrase (like Matsushita Hanin IME)" = "将游标置于词语前方 // 松下汉音风格";
|
||||
"to the rear of the phrase (like MS New-Phonetic IME)" = "将游标置于词语后方 // 微软新注音风格";
|
||||
"in front of the phrase (like macOS built-in Zhuyin IME)" = "将游标置于词语前方 // macOS 内建注音风格";
|
||||
"at anyplace else (like Windows Yahoo KeyKey)" = "将游标置于词语中后方 // Windows 奇摩注音风格";
|
||||
"Traditional Chinese" = "繁体中文";
|
||||
"Typing Style:" = "输入风格:";
|
||||
"UI Language:" = "介面语言:";
|
||||
|
|
|
@ -26,8 +26,8 @@
|
|||
"Half-Width Punctuation Mode" = "半形標點模式";
|
||||
"\"%@\" length must ≥ 2 for a user phrase." = "「%@」字數不足以自訂語彙。";
|
||||
"\"%@\" length should ≤ %d for a user phrase." = "「%@」字數超過 %d、無法自訂。";
|
||||
"\"%@\" selected. ↩ to add user phrase." = "「%@」敲 Enter 添入自訂語彙。";
|
||||
"\"%@\" already exists: ↩ to boost, ⇧⌘↩ to exclude." = "「%@」已存在:敲 ↩ 以升權;敲 ⇧⌘↩ 以排除。";
|
||||
"\"%@\" selected. ENTER to add user phrase." = "「%@」敲 Enter 添入自訂語彙。";
|
||||
"\"%@\" already exists: ENTER to boost, \n SHIFT+CMD+ENTER to exclude." = "「%@」已存在:敲 Enter 以升權;\n 敲 Shift+CMD+Enter 以排除。";
|
||||
"Edit Phrase Replacement Table…" = "編輯語彙置換表…";
|
||||
"Use Phrase Replacement" = "使用語彙置換";
|
||||
"Candidates keys cannot be empty." = "您必須指定選字鍵。";
|
||||
|
@ -56,8 +56,6 @@
|
|||
"Symbol & Emoji Input" = "符號&繪文字輸入";
|
||||
"Edit User Symbol & Emoji Data…" = "編輯自訂符號&繪文字資料…";
|
||||
"Choose your desired user data folder." = "請選擇您想指定的使用者語彙檔案目錄。";
|
||||
"Cursor is after \"%@\"." = "游標在「%@」之後。";
|
||||
"Cursor is before \"%@\"." = "游標在「%@」之前。";
|
||||
"Cursor is between \"%@\" and \"%@\"." = "游標介於「%@」與「%@」之間。";
|
||||
|
||||
// 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 以外的英數佈局是為了漢語拼音排列使用者而準備的。";
|
||||
"Output Settings:" = "輸出設定:";
|
||||
"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:" = "選字鍵:";
|
||||
"Show page buttons in candidate window" = "在選字窗內顯示翻頁按鈕";
|
||||
"Simplified Chinese" = "簡體中文";
|
||||
|
@ -137,8 +135,8 @@
|
|||
"Space to +cycle candidates, Shift+Space to +cycle pages" = "Shift+空格鍵 換下一頁,空格鍵 換選下一個後選字";
|
||||
"Space to +cycle pages, Shift+Space to +cycle candidates" = "空格鍵 換下一頁,Shift+空格鍵 換選下一個後選字";
|
||||
"Stop farting (when typed phonetic combination is invalid, etc.)" = "廉恥模式 // 取消勾選的話,敲錯字時會有異音";
|
||||
"to the front of the phrase (like Matsushita Hanin IME)" = "將游標置於詞語前方 // 松下漢音風格";
|
||||
"to the rear of the phrase (like MS New-Phonetic IME)" = "將游標置於詞語後方 // 微軟新注音風格";
|
||||
"in front of the phrase (like macOS built-in Zhuyin IME)" = "將游標置於詞語前方 // macOS 內建注音風格";
|
||||
"at anyplace else (like Windows Yahoo KeyKey)" = "將游標置於詞語中後方 // Windows 奇摩注音風格";
|
||||
"Traditional Chinese" = "繁體中文";
|
||||
"Typing Style:" = "輸入風格:";
|
||||
"UI Language:" = "介面語言:";
|
||||
|
|
|
@ -32,7 +32,7 @@ struct suiPrefPaneExperience: View {
|
|||
(UserDefaults.standard.string(forKey: UserDef.kCandidateKeys) ?? mgrPrefs.defaultCandidateKeys) as String
|
||||
@State private var selCursorPosition =
|
||||
UserDefaults.standard.bool(
|
||||
forKey: UserDef.kSelectPhraseAfterCursorAsCandidate) ? 1 : 0
|
||||
forKey: UserDef.kSetRearCursorMode) ? 1 : 0
|
||||
@State private var selPushCursorAfterSelection = UserDefaults.standard.bool(
|
||||
forKey: UserDef.kMoveCursorAfterSelectingCandidate)
|
||||
@State private var selKeyBehaviorShiftTab =
|
||||
|
@ -90,17 +90,17 @@ struct suiPrefPaneExperience: View {
|
|||
}
|
||||
Preferences.Section(bottomDivider: true, label: { Text(LocalizedStringKey("Cursor Selection:")) }) {
|
||||
Picker("", selection: $selCursorPosition) {
|
||||
Text(LocalizedStringKey("to the front of the phrase (like Matsushita Hanin IME)")).tag(0)
|
||||
Text(LocalizedStringKey("to the rear of the phrase (like MS New-Phonetic IME)")).tag(1)
|
||||
Text(LocalizedStringKey("in front of the phrase (like macOS built-in Zhuyin IME)")).tag(0)
|
||||
Text(LocalizedStringKey("at anyplace else (like Windows Yahoo KeyKey)")).tag(1)
|
||||
}.onChange(of: selCursorPosition) { value in
|
||||
mgrPrefs.selectPhraseAfterCursorAsCandidate = (value == 1) ? true : false
|
||||
mgrPrefs.setRearCursorMode = (value == 1) ? true : false
|
||||
}
|
||||
.labelsHidden()
|
||||
.pickerStyle(RadioGroupPickerStyle())
|
||||
Text(LocalizedStringKey("Choose the cursor position where you want to list possible candidates."))
|
||||
.preferenceDescription()
|
||||
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
|
||||
).onChange(of: selPushCursorAfterSelection) { value in
|
||||
mgrPrefs.moveCursorAfterSelectingCandidate = value
|
||||
|
|
|
@ -130,12 +130,22 @@ struct suiPrefPaneGeneral: View {
|
|||
isOn: $selEnableKanjiConvToKangXi
|
||||
).onChange(of: selEnableKanjiConvToKangXi) { value in
|
||||
mgrPrefs.chineseConversionEnabled = value
|
||||
selEnableKanjiConvToKangXi = value
|
||||
if value {
|
||||
mgrPrefs.shiftJISShinjitaiOutputEnabled = !value
|
||||
selEnableKanjiConvToJIS = !value
|
||||
}
|
||||
}
|
||||
Toggle(
|
||||
LocalizedStringKey("Auto-convert traditional Chinese glyphs to JIS Shinjitai characters"),
|
||||
isOn: $selEnableKanjiConvToJIS
|
||||
).onChange(of: selEnableKanjiConvToJIS) { value in
|
||||
mgrPrefs.shiftJISShinjitaiOutputEnabled = value
|
||||
selEnableKanjiConvToJIS = value
|
||||
if value {
|
||||
mgrPrefs.chineseConversionEnabled = !value
|
||||
selEnableKanjiConvToKangXi = !value
|
||||
}
|
||||
}
|
||||
Toggle(
|
||||
LocalizedStringKey("Stop farting (when typed phonetic combination is invalid, etc.)"),
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
<?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>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="20037"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19529"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
|
@ -379,11 +378,11 @@
|
|||
</buttonCell>
|
||||
<cells>
|
||||
<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"/>
|
||||
<font key="font" metaFont="cellTitle"/>
|
||||
</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"/>
|
||||
<font key="font" metaFont="cellTitle"/>
|
||||
</buttonCell>
|
||||
|
@ -398,7 +397,7 @@
|
|||
<constraints>
|
||||
<constraint firstAttribute="height" constant="16" id="0iq-1M-a8l"/>
|
||||
</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"/>
|
||||
<font key="font" metaFont="cellTitle"/>
|
||||
</buttonCell>
|
||||
|
|
|
@ -29,11 +29,11 @@
|
|||
/* 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.";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Cursor to the front of the phrase (like Matsushita Hanin IME)"; ObjectID = "16"; */
|
||||
"16.title" = "Cursor to the front of the phrase (like Matsushita Hanin IME)";
|
||||
/* Class = "NSButtonCell"; title = "Cursor in front of the phrase (like macOS built-in Zhuyin IME)"; ObjectID = "16"; */
|
||||
"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"; */
|
||||
"17.title" = "Cursor to the rear of the phrase (like MS New-Phonetic IME)";
|
||||
/* Class = "NSButtonCell"; title = "Cursor at anyplace else (like Windows Yahoo KeyKey)"; ObjectID = "17"; */
|
||||
"17.title" = "Cursor at anyplace else (like Windows Yahoo KeyKey)";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Radio"; ObjectID = "18"; */
|
||||
"18.title" = "Radio";
|
||||
|
@ -143,8 +143,8 @@
|
|||
/* 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.";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Push the cursor to the 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";
|
||||
/* Class = "NSButtonCell"; title = "Push the cursor in front of the phrase after selection"; ObjectID = "RUG-ls-KyA"; */
|
||||
"RUG-ls-KyA.title" = "Push the cursor in front of the phrase after selection";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Traditional Chinese"; ObjectID = "TXr-FF-ehw"; */
|
||||
"TXr-FF-ehw.title" = "Traditional Chinese";
|
||||
|
|
|
@ -29,11 +29,11 @@
|
|||
/* Class = "NSTextFieldCell"; title = "Choose the cursor position where you want to list possible candidates."; ObjectID = "14"; */
|
||||
"14.title" = "カーソルはどこで入力候補を呼び出すかとご選択ください:";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Cursor to the front of the phrase (like Matsushita Hanin IME)"; ObjectID = "16"; */
|
||||
"16.title" = "単語の前で // パナソニック漢音の入力スタイル";
|
||||
/* Class = "NSButtonCell"; title = "Cursor in front of the phrase (like macOS built-in Zhuyin IME)"; ObjectID = "16"; */
|
||||
"16.title" = "単語の前で // macOS 内蔵注音入力の入力スタイル";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Cursor to the rear of the phrase (like MS New-Phonetic IME)"; ObjectID = "17"; */
|
||||
"17.title" = "単語の後で // Microsoft 新注音の入力スタイル";
|
||||
/* Class = "NSButtonCell"; title = "Cursor at anyplace else (like Windows Yahoo KeyKey)"; ObjectID = "17"; */
|
||||
"17.title" = "単語の中・後で // Windows Yahoo KeyKey の入力スタイル";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Radio"; ObjectID = "18"; */
|
||||
"18.title" = "Radio";
|
||||
|
@ -143,7 +143,7 @@
|
|||
/* Class = "NSTextFieldCell"; title = "Choose your preferred keyboard layout and phonetic parser."; ObjectID = "RQ6-MS-m4C"; */
|
||||
"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" = "候補選択の直後、すぐカーソルを単語の向こうに推す";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Traditional Chinese"; ObjectID = "TXr-FF-ehw"; */
|
||||
|
|
|
@ -29,11 +29,11 @@
|
|||
/* Class = "NSTextFieldCell"; title = "Choose the cursor position where you want to list possible candidates."; ObjectID = "14"; */
|
||||
"14.title" = "用以触发选字的光标相对位置:";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Cursor to the front of the phrase (like Matsushita Hanin IME)"; ObjectID = "16"; */
|
||||
"16.title" = "光标置于词语前方 // 松下汉音风格";
|
||||
/* Class = "NSButtonCell"; title = "Cursor in front of the phrase (like macOS built-in Zhuyin IME)"; ObjectID = "16"; */
|
||||
"16.title" = "光标置于词语前方 // macOS 内建注音风格";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Cursor to the rear of the phrase (like MS New-Phonetic IME)"; ObjectID = "17"; */
|
||||
"17.title" = "光标置于词语后方 // 微软新注音风格";
|
||||
/* Class = "NSButtonCell"; title = "Cursor at anyplace else (like Windows Yahoo KeyKey)"; ObjectID = "17"; */
|
||||
"17.title" = "光标置于词语中后方 // Windows 奇摩注音风格";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Radio"; ObjectID = "18"; */
|
||||
"18.title" = "Radio";
|
||||
|
@ -143,7 +143,7 @@
|
|||
/* Class = "NSTextFieldCell"; title = "Choose your preferred keyboard layout and phonetic parser."; ObjectID = "RQ6-MS-m4C"; */
|
||||
"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" = "在选字后将光标置于该字词的前方";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Traditional Chinese"; ObjectID = "TXr-FF-ehw"; */
|
||||
|
|
|
@ -29,11 +29,11 @@
|
|||
/* Class = "NSTextFieldCell"; title = "Choose the cursor position where you want to list possible candidates."; ObjectID = "14"; */
|
||||
"14.title" = "用以觸發選字的游標相對位置:";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Cursor to the front of the phrase (like Matsushita Hanin IME)"; ObjectID = "16"; */
|
||||
"16.title" = "游標置於詞語前方 // 松下漢音風格";
|
||||
/* Class = "NSButtonCell"; title = "Cursor in front of the phrase (like macOS built-in Zhuyin IME)"; ObjectID = "16"; */
|
||||
"16.title" = "游標置於詞語前方 // macOS 內建注音風格";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Cursor to the rear of the phrase (like MS New-Phonetic IME)"; ObjectID = "17"; */
|
||||
"17.title" = "游標置於詞語後方 // 微軟新注音風格";
|
||||
/* Class = "NSButtonCell"; title = "Cursor at anyplace else (like Windows Yahoo KeyKey)"; ObjectID = "17"; */
|
||||
"17.title" = "游標置於詞語中後方 // Windows 奇摩注音風格";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Radio"; ObjectID = "18"; */
|
||||
"18.title" = "Radio";
|
||||
|
@ -143,7 +143,7 @@
|
|||
/* Class = "NSTextFieldCell"; title = "Choose your preferred keyboard layout and phonetic parser."; ObjectID = "RQ6-MS-m4C"; */
|
||||
"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" = "在選字後將游標置於該字詞的前方";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Traditional Chinese"; ObjectID = "TXr-FF-ehw"; */
|
||||
|
|
|
@ -3,9 +3,9 @@
|
|||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.5.2</string>
|
||||
<string>1.5.3</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1952</string>
|
||||
<string>1953</string>
|
||||
<key>UpdateInfoEndpoint</key>
|
||||
<string>https://gitee.com/vchewing/vChewing-macOS/raw/main/Update-Info.plist</string>
|
||||
<key>UpdateInfoSite</key>
|
||||
|
|
|
@ -726,7 +726,7 @@
|
|||
<key>USE_HFS+_COMPRESSION</key>
|
||||
<false/>
|
||||
<key>VERSION</key>
|
||||
<string>1.5.2</string>
|
||||
<string>1.5.3</string>
|
||||
</dict>
|
||||
<key>TYPE</key>
|
||||
<integer>0</integer>
|
||||
|
|
|
@ -389,9 +389,9 @@
|
|||
5B4D47B627C9186900220DDC /* InstantiatedModels */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
5B62A32B27AE78B000A19448 /* CNSLM.h */,
|
||||
5B8F43ED27C9BC220069AC27 /* SymbolLM.h */,
|
||||
5B7111C727DEF9FF00444310 /* UserSymbolLM.h */,
|
||||
5B62A32B27AE78B000A19448 /* CNSLM.h */,
|
||||
);
|
||||
path = InstantiatedModels;
|
||||
sourceTree = "<group>";
|
||||
|
@ -399,10 +399,10 @@
|
|||
5B62A30127AE732800A19448 /* 3rdParty */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
5BA9FD8C28006BA7002DE248 /* VDKComboBox */,
|
||||
5B707CE627D9F43E0099EF99 /* OpenCCBridge */,
|
||||
5B62A30227AE733500A19448 /* OVMandarin */,
|
||||
5BA9FCEA27FED652002DE248 /* SindreSorhus */,
|
||||
5BA9FD8C28006BA7002DE248 /* VDKComboBox */,
|
||||
);
|
||||
path = 3rdParty;
|
||||
sourceTree = "<group>";
|
||||
|
@ -428,14 +428,14 @@
|
|||
isa = PBXGroup;
|
||||
children = (
|
||||
5B11328827B94CFB00E58451 /* AppleKeyboardConverter.swift */,
|
||||
D461B791279DAC010070E734 /* InputState.swift */,
|
||||
D456576D279E4F7B00DF6BC9 /* InputHandler.swift */,
|
||||
D4E569DA27A34CC100AC2CEF /* KeyHandler.h */,
|
||||
D4E569DB27A34CC100AC2CEF /* KeyHandler.mm */,
|
||||
5B7F225C2808501000DDD3CB /* KeyHandler_HandleInput.swift */,
|
||||
D461B791279DAC010070E734 /* InputState.swift */,
|
||||
5B782EC3280C243C007276DE /* KeyHandler_HandleCandidate.swift */,
|
||||
5B7F225C2808501000DDD3CB /* KeyHandler_HandleInput.swift */,
|
||||
5B61B0C9280BEFD4002E3CFA /* KeyHandler_Misc.swift */,
|
||||
5B3133BE280B229700A4A505 /* KeyHandler_States.swift */,
|
||||
D4E569DA27A34CC100AC2CEF /* KeyHandler.h */,
|
||||
D4E569DB27A34CC100AC2CEF /* KeyHandler.mm */,
|
||||
6ACC3D3E27914F2400F1B140 /* KeyValueBlobReader.cpp */,
|
||||
6ACC3D3C27914AAB00F1B140 /* KeyValueBlobReader.h */,
|
||||
5B62A33727AE79CD00A19448 /* NSStringUtils.swift */,
|
||||
|
@ -447,8 +447,8 @@
|
|||
5B62A32027AE752000A19448 /* Headers */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
6A0D4EF615FC0DA600ABF4B3 /* vChewing-Prefix.pch */,
|
||||
D427A9BF25ED28CC005D43E0 /* vChewing-Bridging-Header.h */,
|
||||
6A0D4EF615FC0DA600ABF4B3 /* vChewing-Prefix.pch */,
|
||||
);
|
||||
path = Headers;
|
||||
sourceTree = "<group>";
|
||||
|
@ -467,8 +467,8 @@
|
|||
isa = PBXGroup;
|
||||
children = (
|
||||
5BDC1CF927FDF1310052C2B9 /* apiUpdate.swift */,
|
||||
D4A13D5927A59D5C003BE359 /* ctlInputMethod.swift */,
|
||||
5BB802D927FABA8300CF1C19 /* ctlInputMethod_Menu.swift */,
|
||||
D4A13D5927A59D5C003BE359 /* ctlInputMethod.swift */,
|
||||
5B5E535127EF261400C6AA1E /* IME.swift */,
|
||||
5B62A33127AE792F00A19448 /* InputSourceHelper.swift */,
|
||||
5B62A33527AE795800A19448 /* mgrPrefs.swift */,
|
||||
|
@ -487,13 +487,13 @@
|
|||
5B62A32427AE757300A19448 /* LangModelRelated */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D41355D9278E6D17005E5CBD /* LMInstantiator.mm */,
|
||||
5B62A32527AE758000A19448 /* SubLanguageModels */,
|
||||
D41355DA278E6D17005E5CBD /* LMInstantiator.h */,
|
||||
D41355D6278D7409005E5CBD /* mgrLangModel.h */,
|
||||
D41355D9278E6D17005E5CBD /* LMInstantiator.mm */,
|
||||
D495583A27A5C6C4006ADE1C /* mgrLangModel_Privates.h */,
|
||||
D41355D6278D7409005E5CBD /* mgrLangModel.h */,
|
||||
D41355D7278D7409005E5CBD /* mgrLangModel.mm */,
|
||||
5BAEFACF28012565001F42C9 /* mgrLangModel.swift */,
|
||||
5B62A32527AE758000A19448 /* SubLanguageModels */,
|
||||
);
|
||||
path = LangModelRelated;
|
||||
sourceTree = "<group>";
|
||||
|
@ -502,20 +502,20 @@
|
|||
isa = PBXGroup;
|
||||
children = (
|
||||
5B4D47B627C9186900220DDC /* InstantiatedModels */,
|
||||
D47D73AB27A6CAE600255A50 /* AssociatedPhrases.h */,
|
||||
D47D73AA27A6CAE600255A50 /* AssociatedPhrases.mm */,
|
||||
5B62A32C27AE78B000A19448 /* CoreLM.h */,
|
||||
5B62A32D27AE78B000A19448 /* CoreLM.mm */,
|
||||
D41355DC278EA3ED005E5CBD /* UserPhrasesLM.mm */,
|
||||
D41355DD278EA3ED005E5CBD /* UserPhrasesLM.h */,
|
||||
6ACC3D422793701600F1B140 /* ParselessLM.cpp */,
|
||||
6ACC3D432793701600F1B140 /* ParselessLM.h */,
|
||||
6ACC3D402793701600F1B140 /* ParselessPhraseDB.cpp */,
|
||||
6ACC3D412793701600F1B140 /* ParselessPhraseDB.h */,
|
||||
D44FB74B2792189A003C80A6 /* PhraseReplacementMap.mm */,
|
||||
D44FB74C2792189A003C80A6 /* PhraseReplacementMap.h */,
|
||||
D44FB74B2792189A003C80A6 /* PhraseReplacementMap.mm */,
|
||||
D47F7DD2278C1263002F9DD7 /* UserOverrideModel.cpp */,
|
||||
D47F7DD1278C1263002F9DD7 /* UserOverrideModel.h */,
|
||||
D47D73AA27A6CAE600255A50 /* AssociatedPhrases.mm */,
|
||||
D47D73AB27A6CAE600255A50 /* AssociatedPhrases.h */,
|
||||
D41355DD278EA3ED005E5CBD /* UserPhrasesLM.h */,
|
||||
D41355DC278EA3ED005E5CBD /* UserPhrasesLM.mm */,
|
||||
);
|
||||
path = SubLanguageModels;
|
||||
sourceTree = "<group>";
|
||||
|
@ -537,9 +537,9 @@
|
|||
isa = PBXGroup;
|
||||
children = (
|
||||
5B62A33E27AE7CD900A19448 /* CandidateUI */,
|
||||
5B62A34427AE7CD900A19448 /* NotifierUI */,
|
||||
5BA9FD0927FED9F3002DE248 /* PrefUI */,
|
||||
5B62A34227AE7CD900A19448 /* TooltipUI */,
|
||||
5B62A34427AE7CD900A19448 /* NotifierUI */,
|
||||
);
|
||||
path = UI;
|
||||
sourceTree = "<group>";
|
||||
|
@ -681,10 +681,10 @@
|
|||
5BBBB76E27AED70B0023B93A /* MenuIcons */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
5BBBB76F27AED70B0023B93A /* MenuIcon-TCVIM@2x.png */,
|
||||
5BBBB77027AED70B0023B93A /* MenuIcon-SCVIM@2x.png */,
|
||||
5BBBB77127AED70B0023B93A /* MenuIcon-SCVIM.png */,
|
||||
5BBBB77027AED70B0023B93A /* MenuIcon-SCVIM@2x.png */,
|
||||
5BBBB77227AED70B0023B93A /* MenuIcon-TCVIM.png */,
|
||||
5BBBB76F27AED70B0023B93A /* MenuIcon-TCVIM@2x.png */,
|
||||
);
|
||||
name = MenuIcons;
|
||||
path = Source/Resources/MenuIcons;
|
||||
|
@ -825,13 +825,13 @@
|
|||
5BBBB77827AEDB330023B93A /* Resources */,
|
||||
D4F0BBE0279AF8B30071253C /* AppDelegate.swift */,
|
||||
D4F0BBDE279AF1AF0071253C /* ArchiveUtil.swift */,
|
||||
D4F0BBE2279B08900071253C /* Chronosphere.h */,
|
||||
D4F0BBE3279B08900071253C /* Chronosphere.m */,
|
||||
6ACA41F215FC1D9000935EF6 /* Installer-Info.plist */,
|
||||
6ACA41F315FC1D9000935EF6 /* Installer-Prefix.pch */,
|
||||
5BC0AACA27F58472002D33E9 /* pkgPostInstall.sh */,
|
||||
5BC0AAC927F58472002D33E9 /* pkgPreInstall.sh */,
|
||||
6A93050C279877FF00D370DA /* vChewingInstaller-Bridging-Header.h */,
|
||||
D4F0BBE2279B08900071253C /* Chronosphere.h */,
|
||||
D4F0BBE3279B08900071253C /* Chronosphere.m */,
|
||||
);
|
||||
path = Installer;
|
||||
sourceTree = "<group>";
|
||||
|
@ -1324,7 +1324,7 @@
|
|||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 1952;
|
||||
CURRENT_PROJECT_VERSION = 1953;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
|
@ -1347,7 +1347,7 @@
|
|||
"@executable_path/../Frameworks",
|
||||
);
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.11.5;
|
||||
MARKETING_VERSION = 1.5.2;
|
||||
MARKETING_VERSION = 1.5.3;
|
||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||
MTL_FAST_MATH = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.atelierInmu.vChewing.vChewingPhraseEditor;
|
||||
|
@ -1380,7 +1380,7 @@
|
|||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 1952;
|
||||
CURRENT_PROJECT_VERSION = 1953;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
|
@ -1399,7 +1399,7 @@
|
|||
"@executable_path/../Frameworks",
|
||||
);
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.11.5;
|
||||
MARKETING_VERSION = 1.5.2;
|
||||
MARKETING_VERSION = 1.5.3;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
MTL_FAST_MATH = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.atelierInmu.vChewing.vChewingPhraseEditor;
|
||||
|
@ -1513,7 +1513,7 @@
|
|||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 1952;
|
||||
CURRENT_PROJECT_VERSION = 1953;
|
||||
DEVELOPMENT_ASSET_PATHS = "";
|
||||
DEVELOPMENT_TEAM = "";
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
|
@ -1548,7 +1548,7 @@
|
|||
"@executable_path/../Frameworks",
|
||||
);
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.11.5;
|
||||
MARKETING_VERSION = 1.5.2;
|
||||
MARKETING_VERSION = 1.5.3;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.atelierInmu.inputmethod.vChewing;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
|
@ -1580,7 +1580,7 @@
|
|||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 1952;
|
||||
CURRENT_PROJECT_VERSION = 1953;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
DEVELOPMENT_ASSET_PATHS = "";
|
||||
DEVELOPMENT_TEAM = "";
|
||||
|
@ -1610,7 +1610,7 @@
|
|||
"@executable_path/../Frameworks",
|
||||
);
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.11.5;
|
||||
MARKETING_VERSION = 1.5.2;
|
||||
MARKETING_VERSION = 1.5.3;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.atelierInmu.inputmethod.vChewing;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
|
@ -1693,7 +1693,7 @@
|
|||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 1952;
|
||||
CURRENT_PROJECT_VERSION = 1953;
|
||||
DEVELOPMENT_TEAM = "";
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
|
@ -1718,7 +1718,7 @@
|
|||
"@executable_path/../Frameworks",
|
||||
);
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.11.5;
|
||||
MARKETING_VERSION = 1.5.2;
|
||||
MARKETING_VERSION = 1.5.3;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "org.atelierInmu.vChewing.${PRODUCT_NAME:rfc1034identifier}";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
|
@ -1745,7 +1745,7 @@
|
|||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 1952;
|
||||
CURRENT_PROJECT_VERSION = 1953;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
DEVELOPMENT_TEAM = "";
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
|
@ -1765,7 +1765,7 @@
|
|||
"@executable_path/../Frameworks",
|
||||
);
|
||||
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_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
|
|
Loading…
Reference in New Issue