diff --git a/ShadowsocksX-NG.xcodeproj/project.pbxproj b/ShadowsocksX-NG.xcodeproj/project.pbxproj index 3da3273..f4f1ca4 100644 --- a/ShadowsocksX-NG.xcodeproj/project.pbxproj +++ b/ShadowsocksX-NG.xcodeproj/project.pbxproj @@ -19,6 +19,8 @@ 9B0BFFEB1D0460A70040E62B /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9B0BFFEA1D0460A70040E62B /* Assets.xcassets */; }; 9B0BFFEE1D0460A70040E62B /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9B0BFFEC1D0460A70040E62B /* MainMenu.xib */; }; 9B0BFFF91D0460A70040E62B /* ShadowsocksX_NGTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B0BFFF81D0460A70040E62B /* ShadowsocksX_NGTests.swift */; }; + 9B2491B41D0ACC3A003BBECC /* PreferencesWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9B2491B61D0ACC3A003BBECC /* PreferencesWindowController.xib */; }; + 9B2491B71D0ACC3E003BBECC /* AdvPreferencesWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9B2491B91D0ACC3E003BBECC /* AdvPreferencesWindowController.xib */; }; 9B3FFF0D1D05FEB30019A709 /* Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B3FFF0C1D05FEB30019A709 /* Utils.swift */; }; 9B3FFF141D0705810019A709 /* Notifications.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B3FFF131D0705810019A709 /* Notifications.swift */; }; 9B3FFF171D072FDE0019A709 /* LaunchAtLoginController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B3FFF161D072FDE0019A709 /* LaunchAtLoginController.m */; }; @@ -44,10 +46,8 @@ 9BEEF06E1D04DCE400FC52B3 /* ServerProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BEEF06D1D04DCE400FC52B3 /* ServerProfile.swift */; }; 9BEEF0701D04DDB100FC52B3 /* ServerProfileManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BEEF06F1D04DDB100FC52B3 /* ServerProfileManager.swift */; }; 9BEEF0751D04EF3E00FC52B3 /* PreferencesWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BEEF0731D04EF3E00FC52B3 /* PreferencesWindowController.swift */; }; - 9BEEF0761D04EF3E00FC52B3 /* PreferencesWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9BEEF0741D04EF3E00FC52B3 /* PreferencesWindowController.xib */; }; 9BEEF0781D04FE8A00FC52B3 /* LaunchAgentUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BEEF0771D04FE8A00FC52B3 /* LaunchAgentUtils.swift */; }; 9BEEF07B1D05631500FC52B3 /* AdvPreferencesWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BEEF0791D05631500FC52B3 /* AdvPreferencesWindowController.swift */; }; - 9BEEF07C1D05631500FC52B3 /* AdvPreferencesWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9BEEF07A1D05631500FC52B3 /* AdvPreferencesWindowController.xib */; }; E0E57CCA7EB34B90F9D340F2 /* Pods_ShadowsocksX_NGTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 388120F062D7EB7DD0D8DDCA /* Pods_ShadowsocksX_NGTests.framework */; }; F0809FF1595BE2966343D3C7 /* libPods-proxy_conf_helper.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E7783AEDB4A3BDDC9FF16AC /* libPods-proxy_conf_helper.a */; }; /* End PBXBuildFile section */ @@ -114,6 +114,11 @@ 9B0BFFF81D0460A70040E62B /* ShadowsocksX_NGTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShadowsocksX_NGTests.swift; sourceTree = ""; }; 9B0BFFFA1D0460A70040E62B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 9B0BFFFF1D0460A70040E62B /* ShadowsocksX-NGUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "ShadowsocksX-NGUITests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; + 9B172A5D1D0ACEA100B87B9A /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/AdvPreferencesWindowController.strings"; sourceTree = ""; }; + 9B2491B51D0ACC3A003BBECC /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/PreferencesWindowController.xib; sourceTree = ""; }; + 9B2491B81D0ACC3E003BBECC /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/AdvPreferencesWindowController.xib; sourceTree = ""; }; + 9B2491BA1D0ACC49003BBECC /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/PreferencesWindowController.strings"; sourceTree = ""; }; + 9B2491BC1D0ACC49003BBECC /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/MainMenu.strings"; sourceTree = ""; }; 9B3FFF0C1D05FEB30019A709 /* Utils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Utils.swift; sourceTree = ""; }; 9B3FFF131D0705810019A709 /* Notifications.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Notifications.swift; sourceTree = ""; }; 9B3FFF151D072FDE0019A709 /* LaunchAtLoginController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LaunchAtLoginController.h; sourceTree = ""; }; @@ -146,10 +151,8 @@ 9BEEF06D1D04DCE400FC52B3 /* ServerProfile.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ServerProfile.swift; sourceTree = ""; }; 9BEEF06F1D04DDB100FC52B3 /* ServerProfileManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ServerProfileManager.swift; sourceTree = ""; }; 9BEEF0731D04EF3E00FC52B3 /* PreferencesWindowController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PreferencesWindowController.swift; sourceTree = ""; }; - 9BEEF0741D04EF3E00FC52B3 /* PreferencesWindowController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PreferencesWindowController.xib; sourceTree = ""; }; 9BEEF0771D04FE8A00FC52B3 /* LaunchAgentUtils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LaunchAgentUtils.swift; sourceTree = ""; }; 9BEEF0791D05631500FC52B3 /* AdvPreferencesWindowController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AdvPreferencesWindowController.swift; sourceTree = ""; }; - 9BEEF07A1D05631500FC52B3 /* AdvPreferencesWindowController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = AdvPreferencesWindowController.xib; sourceTree = ""; }; B4E6A97CA843F3943524B686 /* Pods-proxy_conf_helper.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-proxy_conf_helper.debug.xcconfig"; path = "Pods/Target Support Files/Pods-proxy_conf_helper/Pods-proxy_conf_helper.debug.xcconfig"; sourceTree = ""; }; E9E9FB3855DA55D0710EE7BD /* Pods-ShadowsocksX-NG.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ShadowsocksX-NG.release.xcconfig"; path = "Pods/Target Support Files/Pods-ShadowsocksX-NG/Pods-ShadowsocksX-NG.release.xcconfig"; sourceTree = ""; }; FE3237E9FB24D9B924A0E630 /* Pods-ShadowsocksX-NG.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ShadowsocksX-NG.debug.xcconfig"; path = "Pods/Target Support Files/Pods-ShadowsocksX-NG/Pods-ShadowsocksX-NG.debug.xcconfig"; sourceTree = ""; }; @@ -306,9 +309,9 @@ 9B3FFF301D08CEE40019A709 /* SWBQRCodeWindowController.h */, 9B3FFF311D08CEE40019A709 /* SWBQRCodeWindowController.m */, 9BEEF0731D04EF3E00FC52B3 /* PreferencesWindowController.swift */, - 9BEEF0741D04EF3E00FC52B3 /* PreferencesWindowController.xib */, + 9B2491B61D0ACC3A003BBECC /* PreferencesWindowController.xib */, 9BEEF0791D05631500FC52B3 /* AdvPreferencesWindowController.swift */, - 9BEEF07A1D05631500FC52B3 /* AdvPreferencesWindowController.xib */, + 9B2491B91D0ACC3E003BBECC /* AdvPreferencesWindowController.xib */, ); name = UI; sourceTree = ""; @@ -472,7 +475,7 @@ files = ( 9B3FFF541D09E2D10019A709 /* proxy_conf_helper in Resources */, 9BEEF0691D04D4D500FC52B3 /* install_ss_local.sh in Resources */, - 9BEEF0761D04EF3E00FC52B3 /* PreferencesWindowController.xib in Resources */, + 9B2491B41D0ACC3A003BBECC /* PreferencesWindowController.xib in Resources */, 9B3FFF291D08A1DF0019A709 /* user-rule.txt in Resources */, 9BEEF06A1D04D4D500FC52B3 /* start_ss_local.sh in Resources */, 9B3FFF391D08CF110019A709 /* qrcode.min.js in Resources */, @@ -483,7 +486,7 @@ 9B3FFF231D088E8D0019A709 /* abp.js in Resources */, 9B07EFAD1D048E880052D9DF /* menu_icon.png in Resources */, 9B0BFFEB1D0460A70040E62B /* Assets.xcassets in Resources */, - 9BEEF07C1D05631500FC52B3 /* AdvPreferencesWindowController.xib in Resources */, + 9B2491B71D0ACC3E003BBECC /* AdvPreferencesWindowController.xib in Resources */, 9B3FFF381D08CF110019A709 /* jquery.min.js in Resources */, 9B3FFF271D0898EB0019A709 /* gfwlist.txt in Resources */, 9B0BFFEE1D0460A70040E62B /* MainMenu.xib in Resources */, @@ -734,10 +737,29 @@ isa = PBXVariantGroup; children = ( 9B0BFFED1D0460A70040E62B /* Base */, + 9B2491BC1D0ACC49003BBECC /* zh-Hans */, ); name = MainMenu.xib; sourceTree = ""; }; + 9B2491B61D0ACC3A003BBECC /* PreferencesWindowController.xib */ = { + isa = PBXVariantGroup; + children = ( + 9B2491B51D0ACC3A003BBECC /* Base */, + 9B2491BA1D0ACC49003BBECC /* zh-Hans */, + ); + name = PreferencesWindowController.xib; + sourceTree = ""; + }; + 9B2491B91D0ACC3E003BBECC /* AdvPreferencesWindowController.xib */ = { + isa = PBXVariantGroup; + children = ( + 9B2491B81D0ACC3E003BBECC /* Base */, + 9B172A5D1D0ACEA100B87B9A /* zh-Hans */, + ); + name = AdvPreferencesWindowController.xib; + sourceTree = ""; + }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ diff --git a/ShadowsocksX-NG/AdvPreferencesWindowController.xib b/ShadowsocksX-NG/Base.lproj/AdvPreferencesWindowController.xib similarity index 95% rename from ShadowsocksX-NG/AdvPreferencesWindowController.xib rename to ShadowsocksX-NG/Base.lproj/AdvPreferencesWindowController.xib index d3c2b7b..cdb6c51 100644 --- a/ShadowsocksX-NG/AdvPreferencesWindowController.xib +++ b/ShadowsocksX-NG/Base.lproj/AdvPreferencesWindowController.xib @@ -126,6 +126,14 @@ + + + + + + + + diff --git a/ShadowsocksX-NG/PreferencesWindowController.xib b/ShadowsocksX-NG/Base.lproj/PreferencesWindowController.xib similarity index 99% rename from ShadowsocksX-NG/PreferencesWindowController.xib rename to ShadowsocksX-NG/Base.lproj/PreferencesWindowController.xib index abea142..71f96a5 100644 --- a/ShadowsocksX-NG/PreferencesWindowController.xib +++ b/ShadowsocksX-NG/Base.lproj/PreferencesWindowController.xib @@ -36,7 +36,7 @@ - + diff --git a/ShadowsocksX-NG/zh-Hans.lproj/AdvPreferencesWindowController.strings b/ShadowsocksX-NG/zh-Hans.lproj/AdvPreferencesWindowController.strings new file mode 100644 index 0000000..6c30cf1 --- /dev/null +++ b/ShadowsocksX-NG/zh-Hans.lproj/AdvPreferencesWindowController.strings @@ -0,0 +1,24 @@ + +/* Class = "NSButtonCell"; title = "启用 Udp Replay"; ObjectID = "1C3-4s-Apd"; */ +"1C3-4s-Apd.title" = "启用 Udp Replay"; + +/* Class = "NSWindow"; title = "高级设置"; ObjectID = "F0z-JX-Cv5"; */ +"F0z-JX-Cv5.title" = "高级设置"; + +/* Class = "NSTextFieldCell"; title = "Seconds"; ObjectID = "Gd3-Fm-sWh"; */ +"Gd3-Fm-sWh.title" = "秒"; + +/* Class = "NSBox"; title = "Box"; ObjectID = "ayu-Tb-kmf"; */ +"ayu-Tb-kmf.title" = "Box"; + +/* Class = "NSTextFieldCell"; title = "本地 Socks5 监听地址:"; ObjectID = "cwr-n0-zwn"; */ +"cwr-n0-zwn.title" = "本地 Socks5 监听地址:"; + +/* Class = "NSTextFieldCell"; title = "GFW List URL:"; ObjectID = "dg0-gS-z5V"; */ +"dg0-gS-z5V.title" = "GFW List URL:"; + +/* Class = "NSTextFieldCell"; title = "Timeout:"; ObjectID = "i4l-2S-gOQ"; */ +"i4l-2S-gOQ.title" = "超时:"; + +/* Class = "NSTextFieldCell"; title = "本地 Socks5 监听端口:"; ObjectID = "qRs-ow-vVB"; */ +"qRs-ow-vVB.title" = "本地 Socks5 监听端口:"; diff --git a/ShadowsocksX-NG/zh-Hans.lproj/MainMenu.strings b/ShadowsocksX-NG/zh-Hans.lproj/MainMenu.strings new file mode 100644 index 0000000..5bf8f13 --- /dev/null +++ b/ShadowsocksX-NG/zh-Hans.lproj/MainMenu.strings @@ -0,0 +1,42 @@ + +/* Class = "NSMenuItem"; title = "Global Mode"; ObjectID = "3Sa-e9-VXX"; */ +"3Sa-e9-VXX.title" = "全局模式"; + +/* Class = "NSMenu"; title = "Servers"; ObjectID = "9Y1-db-3HK"; */ +"9Y1-db-3HK.title" = "服务器"; + +/* Class = "NSMenuItem"; title = "Open ShadowsocksX"; ObjectID = "GSu-Tf-StS"; */ +"GSu-Tf-StS.title" = "打开 ShadowsocksX"; + +/* Class = "NSMenu"; title = "ShadowsocksX-NE"; ObjectID = "Hob-KD-bx9"; */ +"Hob-KD-bx9.title" = "ShadowsocksX-NE"; + +/* Class = "NSMenuItem"; title = "Server Preferences..."; ObjectID = "M5r-E7-44f"; */ +"M5r-E7-44f.title" = "服务器设置..."; + +/* Class = "NSMenuItem"; title = "Scan QR Code From Screen ..."; ObjectID = "Qe6-bF-paT"; */ +"Qe6-bF-paT.title" = "扫描屏幕上的二维码..."; + +/* Class = "NSMenuItem"; title = "Show QR Code For Current Server..."; ObjectID = "R6A-96-Zcb"; */ +"R6A-96-Zcb.title" = "显示当前服务器的二维码..."; + +/* Class = "NSMenuItem"; title = "Update PAC from GFW List"; ObjectID = "TFc-Ec-duM"; */ +"TFc-Ec-duM.title" = "从 GFW List 更新PAC"; + +/* Class = "NSMenuItem"; title = "Advance Preference ..."; ObjectID = "bZ3-fy-34d"; */ +"bZ3-fy-34d.title" = "高级设置..."; + +/* Class = "NSMenuItem"; title = "Launch At Login"; ObjectID = "eUq-p7-ICK"; */ +"eUq-p7-ICK.title" = "登录时自动启动"; + +/* Class = "NSMenuItem"; title = "Showsocks: On"; ObjectID = "fzk-mE-CEV"; */ +"fzk-mE-CEV.title" = "Showsocks: On"; + +/* Class = "NSMenuItem"; title = "Auto Mode By PAC"; ObjectID = "hOa-5N-3ik"; */ +"hOa-5N-3ik.title" = "PAC自动模式"; + +/* Class = "NSMenuItem"; title = "Servers"; ObjectID = "u5M-hQ-VSc"; */ +"u5M-hQ-VSc.title" = "服务器"; + +/* Class = "NSMenuItem"; title = "Quit"; ObjectID = "vJS-JW-byz"; */ +"vJS-JW-byz.title" = "退出"; diff --git a/ShadowsocksX-NG/zh-Hans.lproj/PreferencesWindowController.strings b/ShadowsocksX-NG/zh-Hans.lproj/PreferencesWindowController.strings new file mode 100644 index 0000000..4e47dcd --- /dev/null +++ b/ShadowsocksX-NG/zh-Hans.lproj/PreferencesWindowController.strings @@ -0,0 +1,33 @@ + +/* Class = "NSTextFieldCell"; title = "Text"; ObjectID = "COZ-Qr-bmU"; */ +"COZ-Qr-bmU.title" = "Text"; + +/* Class = "NSWindow"; title = "Server Preferences"; ObjectID = "F0z-JX-Cv5"; */ +"F0z-JX-Cv5.title" = "服务器设置"; + +/* Class = "NSBox"; title = "Box"; ObjectID = "Gqv-5O-Wwf"; */ +"Gqv-5O-Wwf.title" = "Box"; + +/* Class = "NSTextFieldCell"; title = ":"; ObjectID = "Ibr-Gs-5Js"; */ +"Ibr-Gs-5Js.title" = ":"; + +/* Class = "NSTextFieldCell"; title = "Remarks:"; ObjectID = "MiN-VE-FtC"; */ +"MiN-VE-FtC.title" = "备注:"; + +/* Class = "NSButtonCell"; title = "Cacnel"; ObjectID = "j03-9E-uHW"; */ +"j03-9E-uHW.title" = "取消"; + +/* Class = "NSTextFieldCell"; title = "Password:"; ObjectID = "kil-xC-HPD"; */ +"kil-xC-HPD.title" = "密码:"; + +/* Class = "NSTextFieldCell"; title = "Encryption:"; ObjectID = "mOh-nD-7EX"; */ +"mOh-nD-7EX.title" = "加密方法:"; + +/* Class = "NSButtonCell"; title = "Copy URL to Clipboard"; ObjectID = "t3T-Kd-5La"; */ +"t3T-Kd-5La.title" = "复制服务器URL到剪贴板"; + +/* Class = "NSTextFieldCell"; title = "Address:"; ObjectID = "yHs-XE-XEB"; */ +"yHs-XE-XEB.title" = "地址:"; + +/* Class = "NSButtonCell"; title = "OK"; ObjectID = "zPE-oD-PwK"; */ +"zPE-oD-PwK.title" = "确定";