diff --git a/Source/AppDelegate.m b/Source/AppDelegate.m
index 46d1ed3f..5e9369c0 100644
--- a/Source/AppDelegate.m
+++ b/Source/AppDelegate.m
@@ -35,6 +35,7 @@
#import "AppDelegate.h"
#import "OVNonModalAlertWindowController.h"
#import "PreferencesWindowController.h"
+#import "frmAboutWindow.h"
extern void LTLoadLanguageModel(void);
@@ -273,4 +274,9 @@ static const NSTimeInterval kTimeoutInterval = 60.0;
return YES;
}
+- (IBAction) about:(id)sender {
+ // Show the window:
+ [[frmAboutWindow defaultController].window orderFront:self];
+}
+
@end
diff --git a/Source/Base.lproj/MainMenu.xib b/Source/Base.lproj/MainMenu.xib
index 4c79f2b9..b834ac49 100644
--- a/Source/Base.lproj/MainMenu.xib
+++ b/Source/Base.lproj/MainMenu.xib
@@ -20,7 +20,7 @@
+
diff --git a/Source/zh-Hans.lproj/frmAboutWindow.strings b/Source/zh-Hans.lproj/frmAboutWindow.strings
new file mode 100644
index 00000000..017c4e33
--- /dev/null
+++ b/Source/zh-Hans.lproj/frmAboutWindow.strings
@@ -0,0 +1,27 @@
+
+/* Class = "NSTextFieldCell"; title = "MIT License:"; ObjectID = "lblMITLicense"; */
+"lblMITLicense.title" = "麻理许可协议 (MIT License):";
+
+/* Class = "NSTextFieldCell"; title = "version"; ObjectID = "lblVersionString"; */
+// "lblVersionString.title" = "版本";
+
+/* Class = "NSWindow"; title = "About vChewing for macOS"; ObjectID = "ttlAboutWindow"; */
+"ttlAboutWindow.title" = "关于 macOS 版「威注音输入法」";
+
+/* Class = "NSTextFieldCell"; title = "Derived from OpenVanilla McBopopmofo Project."; ObjectID = "lblProjectDescription"; */
+"lblProjectDescription.title" = "该专案由 OpenVanilla 小麦注音专案衍生而来。";
+
+/* Class = "NSButtonCell"; title = "OK"; ObjectID = "btnConfirm"; */
+"btnConfirm.title" = "确定";
+
+/* Class = "NSTextFieldCell"; title = "vChewing for macOS"; ObjectID = "lblAppTitle"; */
+"lblAppTitle.title" = "vChewing for macOS";
+
+/* Class = "NSTextFieldCell"; title = "DISCLAIMER: The vChewing project is not responsible for the phrase database shipped in the original McBopomofo project. Everything in the vChewing phrase database has been confirmed lawful to the Anti-Secession Law and the National Security Law of the PRC."; ObjectID = "lblDisclaimer"; */
+"lblDisclaimer.title" = "免责声明:威注音专案对小麦注音官方专案内赠的小麦注音原版词库内容不负任何责任。威注音输入法专用的威注音词库已依照《中华人民共和国国家安全法》与《中华人民共和国反分裂国家法》做过合规处理。";
+
+/* Class = "NSTextFieldCell"; title = "© 2011-2022 OpenVanilla Project & © 2021-2022 vChewing Project."; ObjectID = "lblCopyright"; */
+// "lblCopyright.title" = "© 2011-2022 OpenVanilla Project & © 2021-2022 vChewing Project.";
+
+/* Class = "NSTextFieldCell"; title = "McBopomofo Engine by Mengjuei Hsieh, Lukhnos Liu, Zonble Yang, et al.\nvChewing macOS Development Reinforced by Hiraku Wang.
vChewing Phrase Database Maintained by Shiki Suen."; ObjectID = "lblCredits"; */
+"lblCredits.title" = "小麦注音引擎研发:Mengjuei Hsieh, Lukhnos Liu, Zonble Yang (Zonble), 等。\n威注音 macOS 程式研发协力:Hiraku Wang。\n威注音词库维护:孙志贵 (Shiki Suen)。";
diff --git a/Source/zh-Hant.lproj/InfoPlist.strings b/Source/zh-Hant.lproj/InfoPlist.strings
index 512bfd97..770cbb8a 100644
--- a/Source/zh-Hant.lproj/InfoPlist.strings
+++ b/Source/zh-Hant.lproj/InfoPlist.strings
@@ -1,5 +1,6 @@
CFBundleName = "威注音";
CFBundleDisplayName = "威注音";
-NSHumanReadableCopyright = "Copyright © 2011-2021 Mengjuei Hsieh et al.\nAll Rights Reserved.";
+NSHumanReadableCopyright = "© 2011-2022 OpenVanilla Project & © 2021-2022 vChewing Project.";
"org.openvanilla.inputmethod.vChewing.Bopomofo" = "威註音";
"org.openvanilla.inputmethod.vChewing.SimpBopomofo" = "威注音";
+CFEULAContent = "軟體的著作權利人依此麻理授權條款,將其對於軟體的著作權利授權釋出,只要使用者踐履以下二項麻理授權條款敘明的義務性規定,其即享有對此軟體程式及其相關說明文檔自由不受限制地進行利用的權利,範圍包括「使用、重製、修改、合併、出版、散布、再授權、及販售程式重製作品」等諸多方面的應用,而散布程式之人、更可將上述權利傳遞予其後收受程式的後手,倘若其後收受程式之人亦服膺以下二項麻理授權條款的義務性規定,則其對程式亦享有與前手運用範圍相同的同一權利。\n\n散布此一軟體程式者,須將本條款其上的「著作權聲明」及以下的「免責聲明」,內嵌於軟體程式及其重製作品的實體之中。\n\n因麻理軟體程式的授權模式乃是無償提供,是以在現行法律的架構下可以主張合理的免除擔保責任。麻理軟體的著作權人或任何的後續散布者,對於其所散布的麻理軟體程式皆不負任何形式上實質上的擔保責任,明示亦或隱喻、商業利用性亦或特定目的使用性,這些均不在保障之列。利用麻理軟體程式的所有風險均由使用者自行擔負。假如所使用的麻理程式發生缺陷性問題,使用者需自行擔負修正、改正及必要的服務支出。麻理軟體程式的著作權人不負任何形式上實質上的擔保責任,無論任何一般的、特殊的、偶發的、因果關係式的損害,或是麻理軟體程式的不適用性,均須由使用者自行負擔。";
diff --git a/Source/zh-Hant.lproj/MITLicense.txt b/Source/zh-Hant.lproj/MITLicense.txt
new file mode 100644
index 00000000..403c8887
--- /dev/null
+++ b/Source/zh-Hant.lproj/MITLicense.txt
@@ -0,0 +1,5 @@
+软件的著作权利人依此麻理授权条款,将其对于软件的著作权利授权释出,只要使用者践履以下二项麻理授权条款叙明的义务性规定,其即享有对此软件程式及其相关说明文档自由不受限制地进行利用的权利,范围包括「使用、重制、修改、合并、出版、散布、再授权、及贩售程式重制作品」等诸多方面的应用,而散布程式之人、更可将上述权利传递予其后收受程式的后手,倘若其后收受程式之人亦服膺以下二项麻理授权条款的义务性规定,则其对程式亦享有与前手运用范围相同的同一权利。
+
+散布此一软件程序者,须将本条款其上的「著作权声明」及以下的「免责声明」,内嵌于软件程序及其重制作品的实体之中。
+
+因麻理软件程序的授权模式乃是无偿提供,是以在现行法律的架构下可以主张合理的免除担保责任。麻理软件的著作权人或任何的后续散布者,对于其所散布的麻理软件程序皆不负任何形式上实质上的担保责任,明示亦或隐喻、商业利用性亦或特定目的使用性,这些均不在保障之列。利用麻理软件程序的所有风险均由使用者自行担负。假如所使用的麻理程序发生缺陷性问题,使用者需自行担负修正、改正及必要的服务支出。麻理软件程序的著作权人不负任何形式上实质上的担保责任,无论任何一般的、特殊的、偶发的、因果关系式的损害,或是麻理软件程序的不适用性,均须由使用者自行负担。
diff --git a/Source/zh-Hant.lproj/frmAboutWindow.strings b/Source/zh-Hant.lproj/frmAboutWindow.strings
new file mode 100644
index 00000000..2d49020b
--- /dev/null
+++ b/Source/zh-Hant.lproj/frmAboutWindow.strings
@@ -0,0 +1,27 @@
+
+/* Class = "NSTextFieldCell"; title = "MIT License:"; ObjectID = "lblMITLicense"; */
+"lblMITLicense.title" = "麻理授權合約 (MIT License):";
+
+/* Class = "NSTextFieldCell"; title = "version"; ObjectID = "lblVersionString"; */
+// "lblVersionString.title" = "版本";
+
+/* Class = "NSWindow"; title = "About vChewing for macOS"; ObjectID = "ttlAboutWindow"; */
+"ttlAboutWindow.title" = "關於 macOS 版「威注音輸入法」";
+
+/* Class = "NSTextFieldCell"; title = "Derived from OpenVanilla McBopopmofo Project."; ObjectID = "lblProjectDescription"; */
+"lblProjectDescription.title" = "該專案由 OpenVanilla 小麥注音專案衍生而來。";
+
+/* Class = "NSButtonCell"; title = "OK"; ObjectID = "btnConfirm"; */
+"btnConfirm.title" = "確定";
+
+/* Class = "NSTextFieldCell"; title = "vChewing for macOS"; ObjectID = "lblAppTitle"; */
+"lblAppTitle.title" = "vChewing for macOS";
+
+/* Class = "NSTextFieldCell"; title = "DISCLAIMER: The vChewing project is not responsible for the phrase database shipped in the original McBopomofo project. Everything in the vChewing phrase database has been confirmed lawful to the Anti-Secession Law and the National Security Law of the PRC."; ObjectID = "lblDisclaimer"; */
+"lblDisclaimer.title" = "免責聲明:威注音專案對小麥注音官方專案內贈的小麥注音原版詞庫內容不負任何責任。威注音輸入法專用的威注音詞庫已依照《中華人民共和國國家安全法》與《中華人民共和國反分裂國家法》做過合規處理。";
+
+/* Class = "NSTextFieldCell"; title = "© 2011-2022 OpenVanilla Project & © 2021-2022 vChewing Project."; ObjectID = "lblCopyright"; */
+// "lblCopyright.title" = "© 2011-2022 OpenVanilla Project & © 2021-2022 vChewing Project.";
+
+/* Class = "NSTextFieldCell"; title = "McBopomofo Engine by Mengjuei Hsieh, Lukhnos Liu, Zonble Yang, et al.\nvChewing macOS Development Reinforced by Hiraku Wang.
vChewing Phrase Database Maintained by Shiki Suen."; ObjectID = "lblCredits"; */
+"lblCredits.title" = "小麥注音引擎研發:Mengjuei Hsieh, Lukhnos Liu, Zonble Yang (Zonble), 等。\n威注音 macOS 程式研發協力:Hiraku Wang。\n威注音詞庫維護:孫志貴 (Shiki Suen)。";
diff --git a/vChewing.xcodeproj/project.pbxproj b/vChewing.xcodeproj/project.pbxproj
index c9317aeb..3e064140 100644
--- a/vChewing.xcodeproj/project.pbxproj
+++ b/vChewing.xcodeproj/project.pbxproj
@@ -9,7 +9,11 @@
/* Begin PBXBuildFile section */
5B000FC3278495AD004F02AC /* SimpBopomofo.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 5B000FC1278495AD004F02AC /* SimpBopomofo.tiff */; };
5B000FC4278495AD004F02AC /* SimpBopomofo@2x.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 5B000FC2278495AD004F02AC /* SimpBopomofo@2x.tiff */; };
+ 5B42B64027876FDC00BB9B9F /* UserOverrideModel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5B42B63E27876FDC00BB9B9F /* UserOverrideModel.cpp */; };
+ 5B58E87F278413E7003EA2AD /* MITLicense.txt in Resources */ = {isa = PBXBuildFile; fileRef = 5B58E87D278413E7003EA2AD /* MITLicense.txt */; };
5BC3FB83278492DE0022E99A /* data-chs.txt in Resources */ = {isa = PBXBuildFile; fileRef = 5BC3FB82278492DE0022E99A /* data-chs.txt */; };
+ 5BF4A6FE27844738007DC6E7 /* frmAboutWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BF4A6FC27844738007DC6E7 /* frmAboutWindow.m */; };
+ 5BF4A70027844DC5007DC6E7 /* frmAboutWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BF4A70227844DC5007DC6E7 /* frmAboutWindow.xib */; };
6A0421A815FEF3F50061ED63 /* FastLM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6A0421A615FEF3F50061ED63 /* FastLM.cpp */; };
6A0D4EA715FC0D2D00ABF4B3 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A0D4EA615FC0D2D00ABF4B3 /* Cocoa.framework */; };
6A0D4ED015FC0D6400ABF4B3 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A0D4EC415FC0D6400ABF4B3 /* AppDelegate.m */; };
@@ -87,6 +91,12 @@
5B9781D82763850700897999 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "Source/zh-Hans.lproj/Localizable.strings"; sourceTree = ""; };
5B9781D92763850700897999 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = "zh-Hans"; path = "zh-Hans.lproj/MainMenu.xib"; sourceTree = ""; };
5BC3FB82278492DE0022E99A /* data-chs.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "data-chs.txt"; sourceTree = ""; };
+ 5BF4A6FB27844738007DC6E7 /* frmAboutWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = frmAboutWindow.h; sourceTree = ""; };
+ 5BF4A6FC27844738007DC6E7 /* frmAboutWindow.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = frmAboutWindow.m; sourceTree = ""; };
+ 5BF4A70327844DD0007DC6E7 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/frmAboutWindow.xib; sourceTree = ""; };
+ 5BF4A70527844DD2007DC6E7 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/frmAboutWindow.strings; sourceTree = ""; };
+ 5BF4A70727844DD3007DC6E7 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/frmAboutWindow.strings"; sourceTree = ""; };
+ 5BF4A70A278451A6007DC6E7 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/frmAboutWindow.strings"; sourceTree = ""; };
6A0421A615FEF3F50061ED63 /* FastLM.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FastLM.cpp; sourceTree = ""; };
6A0421A715FEF3F50061ED63 /* FastLM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FastLM.h; sourceTree = ""; };
6A0D4EA215FC0D2D00ABF4B3 /* vChewing.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = vChewing.app; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -268,6 +278,7 @@
6A0D4EC215FC0D3C00ABF4B3 /* Source */ = {
isa = PBXGroup;
children = (
+ 5B58E87D278413E7003EA2AD /* MITLicense.txt */,
6A0D4ED815FC0DA600ABF4B3 /* CandidateUI */,
6A38BBDD15FC115800A8A51F /* Data */,
6A0D4F1215FC0EB100ABF4B3 /* Engine */,
@@ -275,6 +286,8 @@
6A0D4F4715FC0EB900ABF4B3 /* Resources */,
6A0D4EC315FC0D6400ABF4B3 /* AppDelegate.h */,
6A0D4EC415FC0D6400ABF4B3 /* AppDelegate.m */,
+ 5BF4A6FB27844738007DC6E7 /* frmAboutWindow.h */,
+ 5BF4A6FC27844738007DC6E7 /* frmAboutWindow.m */,
6A0D4EC615FC0D6400ABF4B3 /* InputMethodController.h */,
6A0D4EC715FC0D6400ABF4B3 /* InputMethodController.mm */,
6A0D4EC815FC0D6400ABF4B3 /* main.m */,
@@ -287,8 +300,8 @@
6A0D4ECC15FC0D6400ABF4B3 /* PreferencesWindowController.m */,
D427A9C025ED28CC005D43E0 /* OpenCCBridge.swift */,
D427A9BF25ED28CC005D43E0 /* vChewing-Bridging-Header.h */,
- 6AE30A471F7F40B7008735BD /* UserOverrideModel.cpp */,
- 6AE30A481F7F40B7008735BD /* UserOverrideModel.h */,
+ 5B42B63E27876FDC00BB9B9F /* UserOverrideModel.cpp */,
+ 5B42B63F27876FDC00BB9B9F /* UserOverrideModel.h */,
);
path = Source;
sourceTree = "";
@@ -405,6 +418,7 @@
6A0D4F4715FC0EB900ABF4B3 /* Resources */ = {
isa = PBXGroup;
children = (
+ 5BF4A70227844DC5007DC6E7 /* frmAboutWindow.xib */,
6AFF97F0253B299E007F1C49 /* OVNonModalAlertWindowController.xib */,
6A0D4EEE15FC0DA600ABF4B3 /* Images */,
6A0D4EF515FC0DA600ABF4B3 /* vChewing-Info.plist */,
@@ -581,7 +595,9 @@
6A2E40F6253A69DA00D1AE1D /* Images.xcassets in Resources */,
6A38BC1515FC117A00A8A51F /* data.txt in Resources */,
6AFF97F2253B299E007F1C49 /* OVNonModalAlertWindowController.xib in Resources */,
+ 5B58E87F278413E7003EA2AD /* MITLicense.txt in Resources */,
6A187E2616004C5900466B2E /* MainMenu.xib in Resources */,
+ 5BF4A70027844DC5007DC6E7 /* frmAboutWindow.xib in Resources */,
5BC3FB83278492DE0022E99A /* data-chs.txt in Resources */,
5B000FC4278495AD004F02AC /* SimpBopomofo@2x.tiff in Resources */,
);
@@ -631,7 +647,9 @@
6A0D4ED015FC0D6400ABF4B3 /* AppDelegate.m in Sources */,
6A0D4ED215FC0D6400ABF4B3 /* InputMethodController.mm in Sources */,
6A0D4ED315FC0D6400ABF4B3 /* main.m in Sources */,
+ 5BF4A6FE27844738007DC6E7 /* frmAboutWindow.m in Sources */,
6A0D4ED415FC0D6400ABF4B3 /* OVInputSourceHelper.m in Sources */,
+ 5B42B64027876FDC00BB9B9F /* UserOverrideModel.cpp in Sources */,
6A0D4ED515FC0D6400ABF4B3 /* PreferencesWindowController.m in Sources */,
6A0D4EFE15FC0DA600ABF4B3 /* VTCandidateController.m in Sources */,
6A0D4EFF15FC0DA600ABF4B3 /* VTHorizontalCandidateController.m in Sources */,
@@ -673,6 +691,27 @@
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
+ 5B58E87D278413E7003EA2AD /* MITLicense.txt */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 5B58E87E278413E7003EA2AD /* en */,
+ 5B58E880278413EF003EA2AD /* zh-Hans */,
+ 5B58E881278413F1003EA2AD /* zh-Hant */,
+ );
+ name = MITLicense.txt;
+ sourceTree = "";
+ };
+ 5BF4A70227844DC5007DC6E7 /* frmAboutWindow.xib */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 5BF4A70327844DD0007DC6E7 /* Base */,
+ 5BF4A70527844DD2007DC6E7 /* en */,
+ 5BF4A70727844DD3007DC6E7 /* zh-Hant */,
+ 5BF4A70A278451A6007DC6E7 /* zh-Hans */,
+ );
+ name = frmAboutWindow.xib;
+ sourceTree = "";
+ };
6A0D4F4815FC0EE100ABF4B3 /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
@@ -781,6 +820,7 @@
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_MISSING_PROPERTY_SYNTHESIS = YES;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
@@ -821,6 +861,7 @@
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_MISSING_PROPERTY_SYNTHESIS = YES;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;