Pre Merge pull request !20 from ShikiSuen/upd/1.4.7b

This commit is contained in:
ShikiSuen 2022-04-06 14:48:31 +00:00 committed by Gitee
commit 95b9155ede
29 changed files with 159 additions and 301 deletions

BIN
Installer/InstallerBg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 539 KiB

View File

@ -1,3 +1,4 @@
"vChewing Input Method" = "vChewing Input Method";
"Upgrade" = "Accept & Upgrade"; "Upgrade" = "Accept & Upgrade";
"Cancel" = "Cancel"; "Cancel" = "Cancel";
"Cannot activate the input method." = "Cannot activate the input method."; "Cannot activate the input method." = "Cannot activate the input method.";

View File

@ -1,3 +1,4 @@
"vChewing Input Method" = "威注音入力アプリ";
"Upgrade" = "承認と更新"; "Upgrade" = "承認と更新";
"Cancel" = "取消"; "Cancel" = "取消";
"Cannot activate the input method." = "入力アプリ、起動失敗。"; "Cannot activate the input method." = "入力アプリ、起動失敗。";

View File

@ -1,3 +1,4 @@
"vChewing Input Method" = "威注音输入法";
"Upgrade" = "接受并升级"; "Upgrade" = "接受并升级";
"Cancel" = "取消"; "Cancel" = "取消";
"Cannot activate the input method." = "无法启用输入法。"; "Cannot activate the input method." = "无法启用输入法。";

View File

@ -1,3 +1,4 @@
"vChewing Input Method" = "威注音輸入法";
"Upgrade" = "接受並升級"; "Upgrade" = "接受並升級";
"Cancel" = "取消"; "Cancel" = "取消";
"Cannot activate the input method." = "無法啟用輸入法。"; "Cannot activate the input method." = "無法啟用輸入法。";

View File

@ -1,18 +1,20 @@
#!/bin/sh #!/bin/sh
loggedInUser=$(stat -f%Su /dev/console)
TARGET='vChewing'
login_user=`/usr/bin/stat -f%Su /dev/console`
# First, copy the wrongfully installed contents to the right location: # First, copy the wrongfully installed contents to the right location:
cp -r /Library/Input\ Methods/vChewing.app /Users/$(stat -f%Su /dev/console)/Library/Input\ Methods/ || true cp -r /Library/Input\ Methods/"${TARGET}".app /Users/"${login_user}"/Library/Input\ Methods/ || true
cp -r /Library/Keyboard\ Layouts/vChewing* /Users/$(stat -f%Su /dev/console)/Library/Keyboard\ Layouts/ || true cp -r /Library/Keyboard\ Layouts/"${TARGET}"* /Users/"${login_user}"/Library/Keyboard\ Layouts/ || true
chown "$loggedInUser" /Users/$(stat -f%Su /dev/console)/Library/Input\ Methods/vChewing.app || true chown "${login_user}" /Users/"${login_user}"/Library/Input\ Methods/"${TARGET}".app || true
chown "$loggedInUser" /Users/$(stat -f%Su /dev/console)/Library/Keyboard\ Layouts/vChewing* || true chown "${login_user}" /Users/"${login_user}"/Library/Keyboard\ Layouts/"${TARGET}"* || true
sleep 1 sleep 1
# Second, clean the wrongfully installed contents: # Second, clean the wrongfully installed contents:
rm -rf /Library/Input\ Methods/vChewing.app || true rm -rf /Library/Input\ Methods/"${TARGET}".app || true
rm -rf /Library/Keyboard\ Layouts/vChewing* || true rm -rf /Library/Keyboard\ Layouts/"${TARGET}"* || true
sleep 1 sleep 1
# Finally, register the input method: # Finally, register the input method:
/Users/$(stat -f%Su /dev/console)/Library/Input\ Methods/vChewing.app/Contents/MacOS/vChewing install --all || true /Users/"${login_user}"/Library/Input\ Methods/"${TARGET}".app/Contents/MacOS/"${TARGET}" install --all || true

View File

@ -1,9 +1,8 @@
#!/bin/sh #!/bin/sh
loggedInUser=$(stat -f%Su /dev/console)
killall vChewing || true killall vChewing || true
if [ "$loggedInUser" = root ]; then if [ "${login_user}" = root ]; then
rm -rf /Library/Input\ Methods/vChewing.app || true rm -rf /Library/Input\ Methods/vChewing.app || true
rm -rf /Library/Keyboard\ Layouts/vChewingKeyLayout.bundle || true rm -rf /Library/Keyboard\ Layouts/vChewingKeyLayout.bundle || true
rm -rf /Library/Keyboard\ Layouts/vChewing\ Dachen.keylayout || true rm -rf /Library/Keyboard\ Layouts/vChewing\ Dachen.keylayout || true

View File

@ -1,9 +1,11 @@
注意事项: 注意事项:
一、macOS 10.x-11.x 系统有 Bug、令该安装程式无法自动将安装目标设为当前使用者资料夹。如果您在 macOS 12 Monterey 之前的系统安装该输入法的话,请务必「手动」将安装目的地设为当前使用者资料夹。否则,当您今后(在升级系统之后)升级输入法的时候,可能会出现各种混乱情况。下述 sudo 指令会将任何安装到错误位置的档案全部移除。如果不用 sudo 的话,反而会将安装到正确位置的输入法档案给移除掉,所以请认真使用:
一、macOS 10.x-11.x 系统有 Bug、令该安装程式无法自动将安装目标设为当前使用者资料夹。如果您在 macOS 12 Monterey 之前的系统安装该输入法的话,请务必「手动」将安装目的地设为当前使用者资料夹。否则,当您今后(在升级系统之后)升级输入法的时候,可能会出现各种混乱情况。下述终端指令可修复这类混乱情况: sudo /Users/$(stat -f%Su /dev/console)/Library/Input\ Methods/vChewing.app/Contents/MacOS/vChewing uninstall
sudo /Users/$(stat -f%Su /dev/console)/Library/Input\ Methods/vChewing.app/Contents/MacOS/vChewing uninstall
该指令会将任何安装到错误位置的档案全部删除。
二、安装完毕之后,如果输入法无法正常使用的话,请重新登入即可。 二、安装完毕之后,如果输入法无法正常使用的话,请重新登入即可。
三、终端部署指令(不限作业系统版本):
installer -pkg ~/Downloads/vChewing-macOS-?.?.?-unsigned.pkg -target CurrentUserHomeDirectory
顺颂时祺
威注音输入法

View File

@ -1,9 +1,11 @@
注意事項: 注意事項:
一、macOS 10.x-11.x 系統有 Bug、令該安裝程式無法自動將安裝目標設為當前使用者資料夾。如果您在 macOS 12 Monterey 之前的系統安裝該輸入法的話,請務必「手動」將安裝目的地設為當前使用者資料夾。否則,當您今後(在升級系統之後)升級輸入法的時候,可能會出現各種混亂情況。下述 sudo 指令會將任何安裝到錯誤位置的檔案全部移除。如果不用 sudo 的話,反而會將安裝到正確位置的輸入法檔案給移除掉,所以請認真使用:
一、macOS 10.x-11.x 系統有 Bug、令該安裝程式無法自動將安裝目標設為當前使用者資料夾。如果您在 macOS 12 Monterey 之前的系統安裝該輸入法的話,請務必「手動」將安裝目的地設為當前使用者資料夾。否則,當您今後(在升級系統之後)升級輸入法的時候,可能會出現各種混亂情況。下述終端指令可修復這類混亂情況: sudo /Users/$(stat -f%Su /dev/console)/Library/Input\ Methods/vChewing.app/Contents/MacOS/vChewing uninstall
sudo /Users/$(stat -f%Su /dev/console)/Library/Input\ Methods/vChewing.app/Contents/MacOS/vChewing uninstall
該指令會將任何安裝到錯誤位置的檔案全部刪除。
二、安裝完畢之後,如果輸入法無法正常使用的話,請重新登入即可。 二、安裝完畢之後,如果輸入法無法正常使用的話,請重新登入即可。
三、終端部署指令(不限作業系統版本):
installer -pkg ~/Downloads/vChewing-macOS-?.?.?-unsigned.pkg -target CurrentUserHomeDirectory
順頌時祺
威注音輸入法

View File

@ -1,9 +1,11 @@
Notice: Notice:
1. Due to a bug in macOS 10.x and 11.x, if you are trying to install this input method on macOS releases earlier than macOS 12 Monterey, PLEASE manually choose the install target to the user folder. Otherwise, there will be problems when you are trying to install this input method to later versions when your OS gets upgraded to macOS 12 Monterey or later. The following terminal command can solve such probelems by removing all incorrectly-installed files (must use sudo to avoid the removal of the correctly-installled files):
sudo /Users/$(stat -f%Su /dev/console)/Library/Input\ Methods/vChewing.app/Contents/MacOS/vChewing uninstall
Due to a bug in macOS 10.x and 11.x, if you are trying to install this input method on macOS releases earlier than macOS 12 Monterey, PLEASE manually choose the install target to the user folder. Otherwise, there will be problems when you are trying to install this input method to later versions when your OS gets upgraded to macOS 12 Monterey or later. 2. Feel free to logout and re-login if the input method doesn't work after installation.
The following terminal command can solve such probelems by removing all incorrectly-installed files: 3. IT maintainers can also use this terminal deploy command, regardless the macOS version:
installer -pkg ~/Downloads/vChewing-macOS-?.?.?-unsigned.pkg -target CurrentUserHomeDirectory
sudo /Users/$(stat -f%Su /dev/console)/Library/Input\ Methods/vChewing.app/Contents/MacOS/vChewing uninstall Warm Regards,
vChewing Input Method
Also, feel free to logout and re-login if the input method doesn't work after installation.

View File

@ -1,11 +1,12 @@
ご注意: ご注意:
 macOS 12 Monterey 以前の OSmacOS 10.x-11.xのバグのため、macOS 10.x-11.x でインストールする場合、この入力アプリ必ずご自分でユーザーフォルダをインストール先と設定してください。然もないと、いずれ macOS 12 にアップデートし、この入力アプリのもっと新しいバージョンをインストールする時に、予測できない支障が生ずる恐れがあります。下記のターミナル指令を(必ず下記のまま sudo で)実行すれば、この様な支障を解決することができます:
sudo /Users/$(stat -f%Su /dev/console)/Library/Input\ Methods/vChewing.app/Contents/MacOS/vChewing uninstall
⚠︎ 間違ったところへ実装したファイルだけは消されますが、もし sudo 使わずに実行すると、逆に正しく実装されたファイルは消されます。
macOS 12 Monterey 以前の OSmacOS 10.x-11.xのバグのため、macOS 10.x-11.x でインストールする場合、この入力アプリ必ずご自分でユーザーフォルダをインストール先と設定してください。然もないと、いずれ macOS 12 にアップデートし、この入力アプリのもっと新しいバージョンをインストールする時に、予測できない支障が生ずる恐れがあります。下記のターミナル指令を実行すれば、この様な支障を解決することができます: ● そして、インストール直後、入力アプリがうまく使えない場合、再ログインすれば済ませることです。
sudo /Users/$(stat -f%Su /dev/console)/Library/Input\ Methods/vChewing.app/Contents/MacOS/vChewing uninstall  あと、IT 担当者は、Terminal で実装したい場合、OS バージョンを問わずに、下記の指令をご参考ください:
installer -pkg ~/Downloads/vChewing-macOS-?.?.?-unsigned.pkg -target CurrentUserHomeDirectory
これで、間違ったところへ実装したファイルだけは消されます。
そして、インストール直後、入力アプリがうまく使えない場合、再ログインすれば済ませることです。
よろしくお願いいたします。 よろしくお願いいたします。
威注音入力アプリ

@ -1 +1 @@
Subproject commit 2c734867fe31b592c69a5b8f30008c4902800233 Subproject commit 29182ac2c5088e36842adc3b32a3ccbfbb2ae762

View File

@ -28,33 +28,66 @@ import Cocoa
// Use KeyCodes as much as possible since its recognition won't be affected by macOS Base Keyboard Layouts. // Use KeyCodes as much as possible since its recognition won't be affected by macOS Base Keyboard Layouts.
// KeyCodes: https://eastmanreference.com/complete-list-of-applescript-key-codes // KeyCodes: https://eastmanreference.com/complete-list-of-applescript-key-codes
// Also: HIToolbox.framework/Versions/A/Headers/Events.h
@objc enum KeyCode: UInt16 { @objc enum KeyCode: UInt16 {
case none = 0 case kNone = 0
case space = 49 case kCarriageReturn = 36 // Renamed from "kReturn" to avoid nomenclatural confusions.
case backSpace = 51 case kTab = 48
case esc = 53 case kSpace = 49
case tab = 48 case kSymbolMenuPhysicalKey = 50 // vChewing Specific
case enterLF = 76 case kBackSpace = 51 // Renamed from "kDelete" to avoid nomenclatural confusions.
case enterCR = 36 case kEscape = 53
case up = 126 case kCommand = 55
case down = 125 case kShift = 56
case left = 123 case kCapsLock = 57
case right = 124 case kOption = 58
case pageUp = 116 case kControl = 59
case pageDown = 121 case kRightShift = 60
case home = 115 case kRightOption = 61
case end = 119 case kRightControl = 62
case delete = 117 case kFunction = 63
case leftShift = 56 case kF17 = 64
case rightShift = 60 case kVolumeUp = 72
case capsLock = 57 case kVolumeDown = 73
case symbolMenuPhysicalKey = 50 case kMute = 74
case kLineFeed = 76 // Another keyCode to identify the Enter Key.
case kF18 = 79
case kF19 = 80
case kF20 = 90
case kF5 = 96
case kF6 = 97
case kF7 = 98
case kF3 = 99
case kF8 = 100
case kF9 = 101
case kF11 = 103
case kF13 = 105
case kF16 = 106
case kF14 = 107
case kF10 = 109
case kF12 = 111
case kF15 = 113
case kHelp = 114
case kHome = 115
case kPageUp = 116
case kWindowDelete = 117 // Renamed from "kForwardDelete" to avoid nomenclatural confusions.
case kF4 = 118
case kEnd = 119
case kF2 = 120
case kPageDown = 121
case kF1 = 122
case kLeftArrow = 123
case kRightArrow = 124
case kDownArrow = 125
case kUpArrow = 126
} }
// CharCodes: https://theasciicode.com.ar/ascii-control-characters/horizontal-tab-ascii-code-9.html // CharCodes: https://theasciicode.com.ar/ascii-control-characters/horizontal-tab-ascii-code-9.html
enum CharCode: UInt /*16*/ { enum CharCode: UInt /*16*/ {
case yajuusenpai = 1_145_141_919_810_893 case yajuusenpai = 114_514_19_19_810_893
// - CharCode is not reliable at all. KeyCode is the most accurate. KeyCode doesn't give a phuque about the character sent through macOS keyboard layouts but only focuses on which physical key is pressed. // CharCode is not reliable at all. KeyCode is the most appropriate choice due to its accuracy.
// KeyCode doesn't give a phuque about the character sent through macOS keyboard layouts ...
// ... but only focuses on which physical key is pressed.
} }
class keyParser: NSObject { class keyParser: NSObject {
@ -82,19 +115,20 @@ class keyParser: NSObject {
inputTextIgnoringModifiers ?? inputText) inputTextIgnoringModifiers ?? inputText)
self.inputText = inputText self.inputText = inputText
self.inputTextIgnoringModifiers = inputTextIgnoringModifiers self.inputTextIgnoringModifiers = inputTextIgnoringModifiers
self.keyCode = keyCode
self.charCode = AppleKeyboardConverter.cnvApple2ABC(charCode)
self.flags = flags self.flags = flags
self.isFlagChanged = false self.isFlagChanged = false
useVerticalMode = isVerticalMode useVerticalMode = isVerticalMode
self.keyCode = keyCode
self.charCode = AppleKeyboardConverter.cnvApple2ABC(charCode)
emacsKey = EmacsKeyHelper.detect( emacsKey = EmacsKeyHelper.detect(
charCode: AppleKeyboardConverter.cnvApple2ABC(charCode), flags: flags) charCode: AppleKeyboardConverter.cnvApple2ABC(charCode), flags: flags)
cursorForwardKey = useVerticalMode ? .down : .right // Define Arrow Keys
cursorBackwardKey = useVerticalMode ? .up : .left cursorForwardKey = useVerticalMode ? .kDownArrow : .kRightArrow
extraChooseCandidateKey = useVerticalMode ? .left : .down cursorBackwardKey = useVerticalMode ? .kUpArrow : .kLeftArrow
extraChooseCandidateKeyReverse = useVerticalMode ? .right : .up extraChooseCandidateKey = useVerticalMode ? .kLeftArrow : .kDownArrow
absorbedArrowKey = useVerticalMode ? .right : .up extraChooseCandidateKeyReverse = useVerticalMode ? .kRightArrow : .kUpArrow
verticalModeOnlyChooseCandidateKey = useVerticalMode ? absorbedArrowKey : .none absorbedArrowKey = useVerticalMode ? .kRightArrow : .kUpArrow
verticalModeOnlyChooseCandidateKey = useVerticalMode ? absorbedArrowKey : .kNone
super.init() super.init()
} }
@ -115,13 +149,14 @@ class keyParser: NSObject {
}() }()
self.charCode = AppleKeyboardConverter.cnvApple2ABC(charCode) self.charCode = AppleKeyboardConverter.cnvApple2ABC(charCode)
emacsKey = EmacsKeyHelper.detect( emacsKey = EmacsKeyHelper.detect(
charCode: AppleKeyboardConverter.cnvApple2ABC(charCode), flags: event.modifierFlags) charCode: AppleKeyboardConverter.cnvApple2ABC(charCode), flags: flags)
cursorForwardKey = useVerticalMode ? .down : .right // Define Arrow Keys in the same way above.
cursorBackwardKey = useVerticalMode ? .up : .left cursorForwardKey = useVerticalMode ? .kDownArrow : .kRightArrow
extraChooseCandidateKey = useVerticalMode ? .left : .down cursorBackwardKey = useVerticalMode ? .kUpArrow : .kLeftArrow
extraChooseCandidateKeyReverse = useVerticalMode ? .right : .up extraChooseCandidateKey = useVerticalMode ? .kLeftArrow : .kDownArrow
absorbedArrowKey = useVerticalMode ? .right : .up extraChooseCandidateKeyReverse = useVerticalMode ? .kRightArrow : .kUpArrow
verticalModeOnlyChooseCandidateKey = useVerticalMode ? absorbedArrowKey : .none absorbedArrowKey = useVerticalMode ? .kRightArrow : .kUpArrow
verticalModeOnlyChooseCandidateKey = useVerticalMode ? absorbedArrowKey : .kNone
super.init() super.init()
} }
@ -174,64 +209,64 @@ class keyParser: NSObject {
guard let code = KeyCode(rawValue: keyCode) else { guard let code = KeyCode(rawValue: keyCode) else {
return false return false
} }
return code.rawValue != KeyCode.none.rawValue return code.rawValue != KeyCode.kNone.rawValue
} }
@objc var isTab: Bool { @objc var isTab: Bool {
KeyCode(rawValue: keyCode) == KeyCode.tab KeyCode(rawValue: keyCode) == KeyCode.kTab
} }
@objc var isEnter: Bool { @objc var isEnter: Bool {
(KeyCode(rawValue: keyCode) == KeyCode.enterCR) (KeyCode(rawValue: keyCode) == KeyCode.kCarriageReturn)
|| (KeyCode(rawValue: keyCode) == KeyCode.enterLF) || (KeyCode(rawValue: keyCode) == KeyCode.kLineFeed)
} }
@objc var isUp: Bool { @objc var isUp: Bool {
KeyCode(rawValue: keyCode) == KeyCode.up KeyCode(rawValue: keyCode) == KeyCode.kUpArrow
} }
@objc var isDown: Bool { @objc var isDown: Bool {
KeyCode(rawValue: keyCode) == KeyCode.down KeyCode(rawValue: keyCode) == KeyCode.kDownArrow
} }
@objc var isLeft: Bool { @objc var isLeft: Bool {
KeyCode(rawValue: keyCode) == KeyCode.left KeyCode(rawValue: keyCode) == KeyCode.kLeftArrow
} }
@objc var isRight: Bool { @objc var isRight: Bool {
KeyCode(rawValue: keyCode) == KeyCode.right KeyCode(rawValue: keyCode) == KeyCode.kRightArrow
} }
@objc var isPageUp: Bool { @objc var isPageUp: Bool {
KeyCode(rawValue: keyCode) == KeyCode.pageUp KeyCode(rawValue: keyCode) == KeyCode.kPageUp
} }
@objc var isPageDown: Bool { @objc var isPageDown: Bool {
KeyCode(rawValue: keyCode) == KeyCode.pageDown KeyCode(rawValue: keyCode) == KeyCode.kPageDown
} }
@objc var isSpace: Bool { @objc var isSpace: Bool {
KeyCode(rawValue: keyCode) == KeyCode.space KeyCode(rawValue: keyCode) == KeyCode.kSpace
} }
@objc var isBackSpace: Bool { @objc var isBackSpace: Bool {
KeyCode(rawValue: keyCode) == KeyCode.backSpace KeyCode(rawValue: keyCode) == KeyCode.kBackSpace
} }
@objc var isESC: Bool { @objc var isESC: Bool {
KeyCode(rawValue: keyCode) == KeyCode.esc KeyCode(rawValue: keyCode) == KeyCode.kEscape
} }
@objc var isHome: Bool { @objc var isHome: Bool {
KeyCode(rawValue: keyCode) == KeyCode.home KeyCode(rawValue: keyCode) == KeyCode.kHome
} }
@objc var isEnd: Bool { @objc var isEnd: Bool {
KeyCode(rawValue: keyCode) == KeyCode.end KeyCode(rawValue: keyCode) == KeyCode.kEnd
} }
@objc var isDelete: Bool { @objc var isDelete: Bool {
KeyCode(rawValue: keyCode) == KeyCode.delete KeyCode(rawValue: keyCode) == KeyCode.kWindowDelete
} }
@objc var isCursorBackward: Bool { @objc var isCursorBackward: Bool {
@ -266,7 +301,7 @@ class keyParser: NSObject {
@objc var isSymbolMenuPhysicalKey: Bool { @objc var isSymbolMenuPhysicalKey: Bool {
// KeyCode macOS Apple // KeyCode macOS Apple
// ![input isShift] 使 Shift // ![input isShift] 使 Shift
KeyCode(rawValue: keyCode) == KeyCode.symbolMenuPhysicalKey KeyCode(rawValue: keyCode) == KeyCode.kSymbolMenuPhysicalKey
} }
} }

View File

@ -51,8 +51,8 @@
"zh-Hant" = "Traditional Chinese"; "zh-Hant" = "Traditional Chinese";
"ja" = "Japanese"; "ja" = "Japanese";
"Alphanumerical Input Mode" = "Alphanumerical Input Mode"; "Alphanumerical Input Mode" = "Alphanumerical Input Mode";
"Apple Zhuyin Bopomofo" = "Apple Zhuyin Bopomofo (Standard)"; "Apple Zhuyin Bopomofo (Dachen)" = "Apple Zhuyin Bopomofo (Standard)";
"Apple Zhuyin Eten" = "Apple Zhuyin Eten"; "Apple Zhuyin Eten (Traditional)" = "Apple Zhuyin Eten (Traditional)";
"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.";

View File

@ -51,8 +51,8 @@
"zh-Hant" = "Traditional Chinese"; "zh-Hant" = "Traditional Chinese";
"ja" = "Japanese"; "ja" = "Japanese";
"Alphanumerical Input Mode" = "Alphanumerical Input Mode"; "Alphanumerical Input Mode" = "Alphanumerical Input Mode";
"Apple Zhuyin Bopomofo" = "Apple Zhuyin Bopomofo (Standard)"; "Apple Zhuyin Bopomofo (Dachen)" = "Apple Zhuyin Bopomofo (Standard)";
"Apple Zhuyin Eten" = "Apple Zhuyin Eten"; "Apple Zhuyin Eten (Traditional)" = "Apple Zhuyin Eten (Traditional)";
"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.";

View File

@ -51,8 +51,8 @@
"zh-Hant" = "繁體中国語"; "zh-Hant" = "繁體中国語";
"ja" = "和語"; "ja" = "和語";
"Alphanumerical Input Mode" = "英数入力モード"; "Alphanumerical Input Mode" = "英数入力モード";
"Apple Zhuyin Bopomofo" = "Apple 注音ボポモフォ(大千標準)"; "Apple Zhuyin Bopomofo (Dachen)" = "Apple 注音ボポモフォ(大千標準)";
"Apple Zhuyin Eten" = "Apple 注音ボポモフォ(倚天伝統)"; "Apple Zhuyin Eten (Traditional)" = "Apple 注音ボポモフォ(倚天伝統)";
"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." = "欲しがるユーザー辞書フォルダをお選びください。";

View File

@ -51,8 +51,8 @@
"zh-Hant" = "繁体中文"; "zh-Hant" = "繁体中文";
"ja" = "和文"; "ja" = "和文";
"Alphanumerical Input Mode" = "原生英数输入模式"; "Alphanumerical Input Mode" = "原生英数输入模式";
"Apple Zhuyin Bopomofo" = "Apple 标准注音键盘布局"; "Apple Zhuyin Bopomofo (Dachen)" = "Apple 标准注音键盘布局 (大千)";
"Apple Zhuyin Eten" = "Apple 倚天注音键盘布局"; "Apple Zhuyin Eten (Traditional)" = "Apple 倚天注音键盘布局 (传统)";
"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." = "请选择您想指定的使用者语汇档案目录。";

View File

@ -51,8 +51,8 @@
"zh-Hant" = "繁體中文"; "zh-Hant" = "繁體中文";
"ja" = "和文"; "ja" = "和文";
"Alphanumerical Input Mode" = "原生英數輸入模式"; "Alphanumerical Input Mode" = "原生英數輸入模式";
"Apple Zhuyin Bopomofo" = "Apple 標準注音鍵盤佈局"; "Apple Zhuyin Bopomofo (Dachen)" = "Apple 標準注音鍵盤佈局 (大千)";
"Apple Zhuyin Eten" = "Apple 倚天注音鍵盤佈局"; "Apple Zhuyin Eten (Traditional)" = "Apple 倚天注音鍵盤佈局 (傳統)";
"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." = "請選擇您想指定的使用者語彙檔案目錄。";

View File

@ -89,14 +89,14 @@ extension RangeReplaceableCollection where Element: Hashable {
let itmAppleZhuyinBopomofo = NSMenuItem() let itmAppleZhuyinBopomofo = NSMenuItem()
itmAppleZhuyinBopomofo.title = String( itmAppleZhuyinBopomofo.title = String(
format: NSLocalizedString("Apple Zhuyin Bopomofo", comment: "")) format: NSLocalizedString("Apple Zhuyin Bopomofo (Dachen)", comment: ""))
itmAppleZhuyinBopomofo.representedObject = String( itmAppleZhuyinBopomofo.representedObject = String(
"com.apple.keylayout.ZhuyinBopomofo") "com.apple.keylayout.ZhuyinBopomofo")
basisKeyboardLayoutButton.menu?.addItem(itmAppleZhuyinBopomofo) basisKeyboardLayoutButton.menu?.addItem(itmAppleZhuyinBopomofo)
let itmAppleZhuyinEten = NSMenuItem() let itmAppleZhuyinEten = NSMenuItem()
itmAppleZhuyinEten.title = String( itmAppleZhuyinEten.title = String(
format: NSLocalizedString("Apple Zhuyin Eten", comment: "")) format: NSLocalizedString("Apple Zhuyin Eten (Traditional)", comment: ""))
itmAppleZhuyinEten.representedObject = String("com.apple.keylayout.ZhuyinEten") itmAppleZhuyinEten.representedObject = String("com.apple.keylayout.ZhuyinEten")
basisKeyboardLayoutButton.menu?.addItem(itmAppleZhuyinEten) basisKeyboardLayoutButton.menu?.addItem(itmAppleZhuyinEten)

View File

@ -1,189 +0,0 @@
/* Class = "NSWindow"; title = "vChewing Preferences"; ObjectID = "1"; */
"1.title" = "vChewing Preferences";
/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "5"; */
"5.title" = "OtherViews";
/* Class = "NSMenuItem"; title = "Standard"; ObjectID = "6"; */
"6.title" = "Standard";
/* Class = "NSMenuItem"; title = "ETen"; ObjectID = "7"; */
"7.title" = "ETen";
/* Class = "NSMenuItem"; title = "Hsu"; ObjectID = "8"; */
"8.title" = "Hsu";
/* Class = "NSMenuItem"; title = "ETen26"; ObjectID = "9"; */
"9.title" = "ETen26";
/* Class = "NSMenuItem"; title = "Hanyu Pinyin"; ObjectID = "10"; */
"10.title" = "Hanyu Pinyin";
/* Class = "NSTextFieldCell"; title = "Bopomofo:"; ObjectID = "12"; */
"12.title" = "Bopomofo:";
/* 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 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 = "Radio"; ObjectID = "18"; */
"18.title" = "Radio";
/* Class = "NSButtonCell"; title = "Radio"; ObjectID = "20"; */
"20.title" = "Radio";
/* Class = "NSButtonCell"; title = "Horizontal"; ObjectID = "21"; */
"21.title" = "Horizontal";
/* Class = "NSButtonCell"; title = "Vertical"; ObjectID = "22"; */
"22.title" = "Vertical";
/* Class = "NSTextFieldCell"; title = "Candidate List Layout:"; ObjectID = "24"; */
"24.title" = "Candidate List Layout:";
/* Class = "NSTextFieldCell"; title = "Candidate UI font size:"; ObjectID = "29"; */
"29.title" = "Candidate UI font size:";
/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "92"; */
"92.title" = "OtherViews";
/* Class = "NSMenuItem"; title = "12"; ObjectID = "93"; */
"93.title" = "12";
/* Class = "NSMenuItem"; title = "14"; ObjectID = "94"; */
"94.title" = "14";
/* Class = "NSMenuItem"; title = "16"; ObjectID = "95"; */
"95.title" = "16";
/* Class = "NSMenuItem"; title = "18"; ObjectID = "96"; */
"96.title" = "18";
/* Class = "NSMenuItem"; title = "24"; ObjectID = "98"; */
"98.title" = "24";
/* Class = "NSMenuItem"; title = "32"; ObjectID = "99"; */
"99.title" = "32";
/* Class = "NSMenuItem"; title = "64"; ObjectID = "100"; */
"100.title" = "64";
/* Class = "NSMenuItem"; title = "96"; ObjectID = "101"; */
"101.title" = "96";
/* Class = "NSButtonCell"; title = "Enable SPACE key for calling candidate window"; ObjectID = "110"; */
"110.title" = "Enable SPACE key for calling candidate window";
/* Class = "NSTextFieldCell"; title = "Alphanumeric:"; ObjectID = "126"; */
"126.title" = "Alphanumeric:";
/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "128"; */
"128.title" = "OtherViews";
/* Class = "NSMenuItem"; title = "IBM"; ObjectID = "137"; */
"137.title" = "IBM";
/* Class = "NSTabViewItem"; label = "Keyboard"; ObjectID = "1AW-xf-c2f"; */
"1AW-xf-c2f.label" = "Keyboard";
/* Class = "NSBox"; title = "General Settings"; ObjectID = "2Y6-Am-WM1"; */
"2Y6-Am-WM1.title" = "General Settings";
/* Class = "NSTextFieldCell"; title = "Choose which keys you prefer for selecting candidates."; ObjectID = "2pS-nv-te4"; */
"2pS-nv-te4.title" = "Choose which keys you prefer for selecting candidates.";
/* Class = "NSButtonCell"; title = "Stop farting (when typed phonetic combination is invalid, etc.)"; ObjectID = "62u-jY-BRh"; */
"62u-jY-BRh.title" = "Stop farting (when typed phonetic combination is invalid, etc.)";
/* Class = "NSTextFieldCell"; title = "UI language setting:"; ObjectID = "9DS-Rc-TXq"; */
"9DS-Rc-TXq.title" = "UI language setting:";
/* Class = "NSButtonCell"; title = "Emulating select-candidate-per-character mode"; ObjectID = "ArK-Vk-OoT"; */
"ArK-Vk-OoT.title" = "Emulating select-candidate-per-character mode";
/* Class = "NSButtonCell"; title = "Auto-convert traditional Chinese glyphs to KangXi characters"; ObjectID = "BSK-bH-Gct"; */
"BSK-bH-Gct.title" = "Auto-convert traditional Chinese glyphs to KangXi characters";
/* Class = "NSBox"; title = "Advanced Settings"; ObjectID = "E1l-m8-xgb"; */
"E1l-m8-xgb.title" = "Advanced Settings";
/* Class = "NSMenuItem"; title = "English"; ObjectID = "FSG-lN-CJO"; */
"FSG-lN-CJO.title" = "English";
/* Class = "NSTextFieldCell"; title = "Selection Keys:"; ObjectID = "FnD-oH-El5"; */
"FnD-oH-El5.title" = "Selection Keys:";
/* Class = "NSMenuItem"; title = "Auto-Select"; ObjectID = "GlJ-Ns-9eE"; */
"GlJ-Ns-9eE.title" = "Auto-Select";
/* Class = "NSButtonCell"; title = "Sort entries when reloading user phrases and excluded phrases list"; ObjectID = "Li3-Yg-SOC"; */
"Li3-Yg-SOC.title" = "Sort entries when reloading user phrases and excluded phrases list";
/* Class = "NSTabViewItem"; label = "General"; ObjectID = "QUQ-oY-4Hc"; */
"QUQ-oY-4Hc.label" = "General";
/* Class = "NSTextFieldCell"; title = "Choose your preferred keyboard layout."; ObjectID = "RQ6-MS-m4C"; */
"RQ6-MS-m4C.title" = "Choose your preferred keyboard layout.";
/* Class = "NSMenuItem"; title = "Traditional Chinese"; ObjectID = "TXr-FF-ehw"; */
"TXr-FF-ehw.title" = "Traditional Chinese";
/* Class = "NSBox"; title = "Output Settings"; ObjectID = "Uyz-xL-TVN"; */
"Uyz-xL-TVN.title" = "Output Settings";
/* Class = "NSButtonCell"; title = "Enable CNS11643 Support (2022-01-07)"; ObjectID = "W24-T4-cg0"; */
"W24-T4-cg0.title" = "Enable CNS11643 Support (2022-01-07)";
/* Class = "NSBox"; title = "Keyboard Layout"; ObjectID = "Wvt-HE-LOv"; */
"Wvt-HE-LOv.title" = "Keyboard Layout";
/* Class = "NSButtonCell"; title = "Check for updates automatically"; ObjectID = "Z9t-P0-BLF"; */
"Z9t-P0-BLF.title" = "Check for updates automatically";
/* Class = "NSTextFieldCell"; title = "Change user interface language (will reboot the IME)."; ObjectID = "ZEv-Q2-mYL"; */
"ZEv-Q2-mYL.title" = "Change user interface language (will reboot the IME).";
/* Class = "NSMenuItem"; title = "Simplified Chinese"; ObjectID = "akC-2g-ybz"; */
"akC-2g-ybz.title" = "Simplified Chinese";
/* Class = "NSButtonCell"; title = "Use ESC key to clear entire input buffer"; ObjectID = "f2j-xD-4xK"; */
"f2j-xD-4xK.title" = "Use ESC key to clear entire input buffer";
/* Class = "NSButtonCell"; title = "Automatically reload user data files if changes detected"; ObjectID = "f8i-69-zxm"; */
"f8i-69-zxm.title" = "Automatically reload user data files if changes detected";
/* Class = "NSTextFieldCell"; title = "Change UI font size of candidate window for a better visual clarity."; ObjectID = "iRg-wx-Nx2"; */
"iRg-wx-Nx2.title" = "Change UI font size of candidate window for a better visual clarity.";
/* Class = "NSTextFieldCell"; title = "Define your preferred action when user data files reload."; ObjectID = "j48-5a-cEs"; */
"j48-5a-cEs.title" = "Define your preferred action when user data files reload.";
/* Class = "NSComboBoxCell"; jQC-12-UuK.ibShadowedObjectValues[0] = "Item 1"; ObjectID = "jQC-12-UuK"; */
"jQC-12-UuK.ibShadowedObjectValues[0]" = "Item 1";
/* Class = "NSComboBoxCell"; jQC-12-UuK.ibShadowedObjectValues[1] = "Item 2"; ObjectID = "jQC-12-UuK"; */
"jQC-12-UuK.ibShadowedObjectValues[1]" = "Item 2";
/* Class = "NSComboBoxCell"; jQC-12-UuK.ibShadowedObjectValues[2] = "Item 3"; ObjectID = "jQC-12-UuK"; */
"jQC-12-UuK.ibShadowedObjectValues[2]" = "Item 3";
/* Class = "NSButtonCell"; title = "Sort entries when reloading the phrase replacement map"; ObjectID = "o60-vW-i1B"; */
"o60-vW-i1B.title" = "Sort entries when reloading the phrase replacement map";
/* Class = "NSMenuItem"; title = "Japanese"; ObjectID = "rVQ-Hx-cGi"; */
"rVQ-Hx-cGi.title" = "Japanese";
/* Class = "NSBox"; title = "Dictionary Settings"; ObjectID = "s4r-ji-vbr"; */
"s4r-ji-vbr.title" = "Dictionary Settings";
/* Class = "NSTextFieldCell"; title = "Choose your preferred layout of the candidate window."; ObjectID = "xC5-yV-1W1"; */
"xC5-yV-1W1.title" = "Choose your preferred layout of the candidate window.";
/* Class = "NSTabViewItem"; label = "Advanced"; ObjectID = "xrE-8T-WKO"; */
"xrE-8T-WKO.label" = "Advanced";

View File

@ -747,7 +747,7 @@
<key>BACKGROUND</key> <key>BACKGROUND</key>
<dict> <dict>
<key>ALIGNMENT</key> <key>ALIGNMENT</key>
<integer>6</integer> <integer>0</integer>
<key>APPAREANCES</key> <key>APPAREANCES</key>
<dict> <dict>
<key>DARK_AQUA</key> <key>DARK_AQUA</key>
@ -771,11 +771,11 @@
<key>LIGHT_AQUA</key> <key>LIGHT_AQUA</key>
<dict> <dict>
<key>ALIGNMENT</key> <key>ALIGNMENT</key>
<integer>6</integer> <integer>0</integer>
<key>BACKGROUND_PATH</key> <key>BACKGROUND_PATH</key>
<dict> <dict>
<key>PATH</key> <key>PATH</key>
<string>Source/Resources/Images/Images.xcassets/AppIcon.appiconset/128X128.png</string> <string>Installer/InstallerBg.png</string>
<key>PATH_TYPE</key> <key>PATH_TYPE</key>
<integer>1</integer> <integer>1</integer>
</dict> </dict>
@ -784,13 +784,13 @@
<key>LAYOUT_DIRECTION</key> <key>LAYOUT_DIRECTION</key>
<integer>0</integer> <integer>0</integer>
<key>SCALING</key> <key>SCALING</key>
<integer>2</integer> <integer>1</integer>
</dict> </dict>
</dict> </dict>
<key>BACKGROUND_PATH</key> <key>BACKGROUND_PATH</key>
<dict> <dict>
<key>PATH</key> <key>PATH</key>
<string>Source/Resources/Images/Images.xcassets/AppIcon.appiconset/128X128.png</string> <string>Installer/InstallerBg.png</string>
<key>PATH_TYPE</key> <key>PATH_TYPE</key>
<integer>1</integer> <integer>1</integer>
</dict> </dict>
@ -799,7 +799,7 @@
<key>LAYOUT_DIRECTION</key> <key>LAYOUT_DIRECTION</key>
<integer>0</integer> <integer>0</integer>
<key>SCALING</key> <key>SCALING</key>
<integer>2</integer> <integer>1</integer>
<key>SHARED_SETTINGS_FOR_ALL_APPAREANCES</key> <key>SHARED_SETTINGS_FOR_ALL_APPAREANCES</key>
<true/> <true/>
</dict> </dict>

View File

@ -132,7 +132,7 @@
5B04305627B529D800CB65BC /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/InfoPlist.strings"; sourceTree = "<group>"; }; 5B04305627B529D800CB65BC /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/InfoPlist.strings"; sourceTree = "<group>"; };
5B04305727B529D800CB65BC /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.strings"; sourceTree = "<group>"; }; 5B04305727B529D800CB65BC /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.strings"; sourceTree = "<group>"; };
5B04305827B529D800CB65BC /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/frmAboutWindow.strings"; sourceTree = "<group>"; }; 5B04305827B529D800CB65BC /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/frmAboutWindow.strings"; sourceTree = "<group>"; };
5B04305927B529D800CB65BC /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "Source/WindowNIBs/zh-Hans.lproj/frmPrefWindow.strings"; sourceTree = "<group>"; }; 5B04305927B529D800CB65BC /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = ja.lproj/frmPrefWindow.strings; sourceTree = "<group>"; };
5B04305B27B529D900CB65BC /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/frmAboutWindow.strings"; sourceTree = "<group>"; }; 5B04305B27B529D900CB65BC /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/frmAboutWindow.strings"; sourceTree = "<group>"; };
5B04305C27B529D900CB65BC /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/InfoPlist.strings"; sourceTree = "<group>"; }; 5B04305C27B529D900CB65BC /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/InfoPlist.strings"; sourceTree = "<group>"; };
5B04305D27B529D900CB65BC /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Main.strings"; sourceTree = "<group>"; }; 5B04305D27B529D900CB65BC /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Main.strings"; sourceTree = "<group>"; };
@ -142,7 +142,7 @@
5B04306127B5312E00CB65BC /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/InfoPlist.strings; sourceTree = "<group>"; }; 5B04306127B5312E00CB65BC /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/InfoPlist.strings; sourceTree = "<group>"; };
5B04306227B5312E00CB65BC /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Localizable.strings; sourceTree = "<group>"; }; 5B04306227B5312E00CB65BC /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Localizable.strings; sourceTree = "<group>"; };
5B04306327B5312E00CB65BC /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/frmAboutWindow.strings; sourceTree = "<group>"; }; 5B04306327B5312E00CB65BC /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/frmAboutWindow.strings; sourceTree = "<group>"; };
5B04306427B5312E00CB65BC /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = Source/WindowNIBs/ja.lproj/frmPrefWindow.strings; sourceTree = "<group>"; }; 5B04306427B5312E00CB65BC /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = "zh-Hans.lproj/frmPrefWindow.strings"; sourceTree = "<group>"; };
5B04306527B5312E00CB65BC /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/frmAboutWindow.strings; sourceTree = "<group>"; }; 5B04306527B5312E00CB65BC /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/frmAboutWindow.strings; sourceTree = "<group>"; };
5B04306627B5312E00CB65BC /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/InfoPlist.strings; sourceTree = "<group>"; }; 5B04306627B5312E00CB65BC /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/InfoPlist.strings; sourceTree = "<group>"; };
5B04306727B5312E00CB65BC /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Main.strings; sourceTree = "<group>"; }; 5B04306727B5312E00CB65BC /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Main.strings; sourceTree = "<group>"; };
@ -185,8 +185,8 @@
5B7111C727DEF9FF00444310 /* UserSymbolLM.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UserSymbolLM.h; sourceTree = "<group>"; }; 5B7111C727DEF9FF00444310 /* UserSymbolLM.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UserSymbolLM.h; sourceTree = "<group>"; };
5B73FB5427B2BD6900E9BF49 /* PhraseEditor-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "PhraseEditor-Info.plist"; path = "UserPhraseEditor/PhraseEditor-Info.plist"; sourceTree = SOURCE_ROOT; }; 5B73FB5427B2BD6900E9BF49 /* PhraseEditor-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "PhraseEditor-Info.plist"; path = "UserPhraseEditor/PhraseEditor-Info.plist"; sourceTree = SOURCE_ROOT; };
5B73FB5F27B2BE1300E9BF49 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; }; 5B73FB5F27B2BE1300E9BF49 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
5B7BC4AF27AFFBE800F66C24 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Source/WindowNIBs/Base.lproj/frmPrefWindow.xib; sourceTree = "<group>"; }; 5B7BC4AF27AFFBE800F66C24 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/frmPrefWindow.xib; sourceTree = "<group>"; };
5B7BC4B227AFFC0B00F66C24 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = Source/WindowNIBs/en.lproj/frmPrefWindow.strings; sourceTree = "<group>"; }; 5B7BC4B227AFFC0B00F66C24 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/frmPrefWindow.strings; sourceTree = "<group>"; };
5B8F43ED27C9BC220069AC27 /* SymbolLM.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SymbolLM.h; sourceTree = "<group>"; }; 5B8F43ED27C9BC220069AC27 /* SymbolLM.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SymbolLM.h; sourceTree = "<group>"; };
5BB802D927FABA8300CF1C19 /* ctlInputMethod_Menu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ctlInputMethod_Menu.swift; sourceTree = "<group>"; }; 5BB802D927FABA8300CF1C19 /* ctlInputMethod_Menu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ctlInputMethod_Menu.swift; sourceTree = "<group>"; };
5BBBB75D27AED54C0023B93A /* Beep.m4a */ = {isa = PBXFileReference; lastKnownFileType = file; path = Beep.m4a; sourceTree = "<group>"; }; 5BBBB75D27AED54C0023B93A /* Beep.m4a */ = {isa = PBXFileReference; lastKnownFileType = file; path = Beep.m4a; sourceTree = "<group>"; };
@ -214,7 +214,7 @@
5BD05C6527B2BBEF004C4F1D /* ViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; }; 5BD05C6527B2BBEF004C4F1D /* ViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
5BDCBB4227B4F6C600D0CC59 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/MainMenu.strings"; sourceTree = "<group>"; }; 5BDCBB4227B4F6C600D0CC59 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/MainMenu.strings"; sourceTree = "<group>"; };
5BDCBB4327B4F6C600D0CC59 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/frmAboutWindow.strings"; sourceTree = "<group>"; }; 5BDCBB4327B4F6C600D0CC59 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/frmAboutWindow.strings"; sourceTree = "<group>"; };
5BDCBB4527B4F6C600D0CC59 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "Source/WindowNIBs/zh-Hant.lproj/frmPrefWindow.strings"; sourceTree = "<group>"; }; 5BDCBB4527B4F6C600D0CC59 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/frmPrefWindow.strings"; sourceTree = "<group>"; };
5BDCBB4727B4F6C600D0CC59 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/InfoPlist.strings"; sourceTree = "<group>"; }; 5BDCBB4727B4F6C600D0CC59 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/InfoPlist.strings"; sourceTree = "<group>"; };
5BDCBB4827B4F6C600D0CC59 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/Localizable.strings"; sourceTree = "<group>"; }; 5BDCBB4827B4F6C600D0CC59 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/Localizable.strings"; sourceTree = "<group>"; };
5BDCBB4927B4F6C700D0CC59 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/InfoPlist.strings"; sourceTree = "<group>"; }; 5BDCBB4927B4F6C700D0CC59 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/InfoPlist.strings"; sourceTree = "<group>"; };
@ -412,6 +412,7 @@
children = ( children = (
D4A13D5927A59D5C003BE359 /* ctlInputMethod.swift */, D4A13D5927A59D5C003BE359 /* ctlInputMethod.swift */,
5BB802D927FABA8300CF1C19 /* ctlInputMethod_Menu.swift */, 5BB802D927FABA8300CF1C19 /* ctlInputMethod_Menu.swift */,
5B5E535127EF261400C6AA1E /* IME.swift */,
5B62A33127AE792F00A19448 /* InputSourceHelper.swift */, 5B62A33127AE792F00A19448 /* InputSourceHelper.swift */,
5B62A33527AE795800A19448 /* mgrPrefs.swift */, 5B62A33527AE795800A19448 /* mgrPrefs.swift */,
); );
@ -680,7 +681,6 @@
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
D427F76B278CA1BA004A2160 /* AppDelegate.swift */, D427F76B278CA1BA004A2160 /* AppDelegate.swift */,
5B5E535127EF261400C6AA1E /* IME.swift */,
D47B92BF27972AC800458394 /* main.swift */, D47B92BF27972AC800458394 /* main.swift */,
5B62A31F27AE74E900A19448 /* ControllerModules */, 5B62A31F27AE74E900A19448 /* ControllerModules */,
5B62A32127AE755D00A19448 /* FileHandlers */, 5B62A32127AE755D00A19448 /* FileHandlers */,