Merge branch 'develop' into fix
This commit is contained in:
15
README.md
15
README.md
@ -1,6 +1,6 @@
|
||||
# ShadowsocksX-NG
|
||||
|
||||
Current version is 1.3
|
||||
Current version is 1.4
|
||||
|
||||
[](https://travis-ci.org/shadowsocks/ShadowsocksX-NG)
|
||||
|
||||
@ -24,7 +24,7 @@ Then I will rewrite the GUI code in Swift.
|
||||
|
||||
### Building
|
||||
|
||||
- XCode 8.0+
|
||||
- XCode 8.2.1+
|
||||
- cocoapod 1.0.1+
|
||||
|
||||
## Download
|
||||
@ -33,13 +33,16 @@ From [here](https://github.com/shadowsocks/ShadowsocksX-NG/releases/)
|
||||
|
||||
## Fetures
|
||||
|
||||
- Use ss-local from shadowsocks-libev 2.4.6
|
||||
- Update PAC by download GFW List from GitHub.
|
||||
- Use ss-local from shadowsocks-libev 2.5.6
|
||||
- Could Update PAC by download GFW List from GitHub.
|
||||
- Show QRCode for current server profile.
|
||||
- Scan QRCode from screen.
|
||||
- Auto launch at login.
|
||||
- User rules for PAC.
|
||||
- Support OTA
|
||||
- HTTP Proxy by [privoxy](http://www.privoxy.org/)
|
||||
- Over [kcptun](https://github.com/xtaci/kcptun)
|
||||
- Export/Import configure file.
|
||||
- An advanced preferences panel to configure:
|
||||
- Local socks5 listen address.
|
||||
- Local socks5 listen port.
|
||||
@ -65,10 +68,6 @@ Contributions must be available on a separately named branch based on the latest
|
||||
|
||||
ref: [GitFlow](http://nvie.com/posts/a-successful-git-branching-model/)
|
||||
|
||||
## TODO List
|
||||
|
||||
- [x] Embed the http proxy server [privoxy](http://www.privoxy.org/), [get it](https://homebrew.bintray.com/bottles/privoxy-3.0.26.sierra.bottle.tar.gz).
|
||||
|
||||
## License
|
||||
|
||||
The project is released under the terms of the GPLv3.
|
||||
|
@ -144,7 +144,6 @@
|
||||
9B0BFFF41D0460A70040E62B /* ShadowsocksX-NGTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "ShadowsocksX-NGTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
9B0BFFF81D0460A70040E62B /* ShadowsocksX_NGTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShadowsocksX_NGTests.swift; sourceTree = "<group>"; };
|
||||
9B0BFFFA1D0460A70040E62B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
9B0D55451D2CC1B800A4A8E2 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/MainMenu.strings"; sourceTree = "<group>"; };
|
||||
9B0D554A1D2CC85E00A4A8E2 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/ProxyPreferencesController.strings"; sourceTree = "<group>"; };
|
||||
9B0D554B1D2CC87400A4A8E2 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/ProxyPreferencesController.xib; sourceTree = "<group>"; };
|
||||
9B172A5D1D0ACEA100B87B9A /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/AdvPreferencesWindowController.strings"; sourceTree = "<group>"; };
|
||||
@ -782,7 +781,6 @@
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
9B0BFFED1D0460A70040E62B /* Base */,
|
||||
9B0D55451D2CC1B800A4A8E2 /* zh-Hans */,
|
||||
C6E28E9B1DA79FB9004F8330 /* zh-Hans */,
|
||||
);
|
||||
name = MainMenu.xib;
|
||||
|
@ -30,7 +30,6 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserNotificationCenterDele
|
||||
|
||||
@IBOutlet weak var runningStatusMenuItem: NSMenuItem!
|
||||
@IBOutlet weak var toggleRunningMenuItem: NSMenuItem!
|
||||
@IBOutlet weak var proxyMenuItem: NSMenuItem!
|
||||
@IBOutlet weak var autoModeMenuItem: NSMenuItem!
|
||||
@IBOutlet weak var globalModeMenuItem: NSMenuItem!
|
||||
@IBOutlet weak var manualModeMenuItem: NSMenuItem!
|
||||
@ -58,6 +57,8 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserNotificationCenterDele
|
||||
let kHudCornerRadius: CGFloat = 18.0
|
||||
let kHudHorizontalMargin: CGFloat = 30
|
||||
let kHudHeight: CGFloat = 90.0
|
||||
|
||||
let kProfileMenuItemIndexBase = 100
|
||||
|
||||
var timerToFadeOut: Timer? = nil
|
||||
var fadingOut: Bool = false
|
||||
@ -438,7 +439,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserNotificationCenterDele
|
||||
}
|
||||
|
||||
@IBAction func selectServer(_ sender: NSMenuItem) {
|
||||
let index = sender.tag
|
||||
let index = sender.tag - kProfileMenuItemIndexBase
|
||||
let spMgr = ServerProfileManager.instance
|
||||
let newProfile = spMgr.profiles[index]
|
||||
if newProfile.uuid != spMgr.activeProfileId {
|
||||
@ -507,17 +508,14 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserNotificationCenterDele
|
||||
serversMenuItem.title = serverMenuText
|
||||
|
||||
if mode == "auto" {
|
||||
proxyMenuItem.title = "Proxy - Auto By PAC".localized
|
||||
autoModeMenuItem.state = 1
|
||||
globalModeMenuItem.state = 0
|
||||
manualModeMenuItem.state = 0
|
||||
} else if mode == "global" {
|
||||
proxyMenuItem.title = "Proxy - Global".localized
|
||||
autoModeMenuItem.state = 0
|
||||
globalModeMenuItem.state = 1
|
||||
manualModeMenuItem.state = 0
|
||||
} else if mode == "manual" {
|
||||
proxyMenuItem.title = "Proxy - Manual".localized
|
||||
autoModeMenuItem.state = 0
|
||||
globalModeMenuItem.state = 0
|
||||
manualModeMenuItem.state = 1
|
||||
@ -564,17 +562,18 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserNotificationCenterDele
|
||||
func updateServersMenu() {
|
||||
let mgr = ServerProfileManager.instance
|
||||
serversMenuItem.submenu?.removeAllItems()
|
||||
let showQRItem = showQRCodeMenuItem
|
||||
let scanQRItem = scanQRCodeMenuItem
|
||||
let preferencesItem = serversPreferencesMenuItem
|
||||
let showBunch = showBunchJsonExampleFileItem
|
||||
let importBuntch = importBunchJsonFileItem
|
||||
let exportAllServer = exportAllServerProfileItem
|
||||
|
||||
serversMenuItem.submenu?.addItem(preferencesItem!)
|
||||
serversMenuItem.submenu?.addItem(NSMenuItem.separator())
|
||||
|
||||
var i = 0
|
||||
for p in mgr.profiles {
|
||||
let item = NSMenuItem()
|
||||
item.tag = i
|
||||
item.tag = i + kProfileMenuItemIndexBase
|
||||
if p.remark.isEmpty {
|
||||
item.title = "\(p.serverHost):\(p.serverPort)"
|
||||
} else {
|
||||
@ -594,13 +593,10 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserNotificationCenterDele
|
||||
if !mgr.profiles.isEmpty {
|
||||
serversMenuItem.submenu?.addItem(NSMenuItem.separator())
|
||||
}
|
||||
serversMenuItem.submenu?.addItem(showQRItem!)
|
||||
serversMenuItem.submenu?.addItem(scanQRItem!)
|
||||
|
||||
serversMenuItem.submenu?.addItem(showBunch!)
|
||||
serversMenuItem.submenu?.addItem(importBuntch!)
|
||||
serversMenuItem.submenu?.addItem(exportAllServer!)
|
||||
serversMenuItem.submenu?.addItem(NSMenuItem.separator())
|
||||
serversMenuItem.submenu?.addItem(preferencesItem!)
|
||||
}
|
||||
|
||||
func handleURLEvent(_ event: NSAppleEventDescriptor, withReplyEvent replyEvent: NSAppleEventDescriptor) {
|
||||
|
@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11542" systemVersion="16B2555" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11762" systemVersion="16C67" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11542"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11762"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@ -18,13 +18,12 @@
|
||||
<outlet property="autoModeMenuItem" destination="r07-Gu-aEz" id="9aH-pQ-Rgi"/>
|
||||
<outlet property="exportAllServerProfileItem" destination="6k0-gn-DQv" id="W2x-96-ISj"/>
|
||||
<outlet property="globalModeMenuItem" destination="Mw3-Jm-eXA" id="ar5-Yx-3ze"/>
|
||||
<outlet property="importBunchJsonFileItem" destination="T9g-gy-gvv" id="vua-jg-YWe"/>
|
||||
<outlet property="lanchAtLoginMenuItem" destination="eUq-p7-ICK" id="q3D-7x-0db"/>
|
||||
<outlet property="hudWindow" destination="QWV-F6-ac1" id="K6D-a4-oqE"/>
|
||||
<outlet property="importBunchJsonFileItem" destination="T9g-gy-gvv" id="vua-jg-YWe"/>
|
||||
<outlet property="isNameTextField" destination="rUN-Nq-HDb" id="ayK-aM-rSa"/>
|
||||
<outlet property="lanchAtLoginMenuItem" destination="eUq-p7-ICK" id="q3D-7x-0db"/>
|
||||
<outlet property="manualModeMenuItem" destination="8PR-gs-c5N" id="9qz-mU-5kt"/>
|
||||
<outlet property="panelView" destination="rai-SH-9tZ" id="5aU-ld-rWb"/>
|
||||
<outlet property="proxyMenuItem" destination="diI-fB-Rss" id="Qjk-9U-3Qy"/>
|
||||
<outlet property="runningStatusMenuItem" destination="fzk-mE-CEV" id="Vwm-Rg-Ykn"/>
|
||||
<outlet property="scanQRCodeMenuItem" destination="Qe6-bF-paT" id="XHa-pa-nCa"/>
|
||||
<outlet property="serversMenuItem" destination="u5M-hQ-VSc" id="8gp-SY-Y4U"/>
|
||||
@ -49,73 +48,39 @@
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="LXP-yK-yQu"/>
|
||||
<menuItem title="Proxy" id="diI-fB-Rss">
|
||||
<menuItem title="Switch By ⌃ + ⌘ + P" enabled="NO" id="f0u-mr-pez">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Proxy" id="YZp-bf-L40">
|
||||
<items>
|
||||
<menuItem title="Auto Mode By PAC" id="r07-Gu-aEz">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="selectPACMode:" target="Voe-Tx-rLC" id="l36-cd-xl7"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Global Mode" id="Mw3-Jm-eXA">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="selectGlobalMode:" target="Voe-Tx-rLC" id="7QH-HB-B2e"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Manual Mode" id="8PR-gs-c5N">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="selectManualMode:" target="Voe-Tx-rLC" id="Xxb-28-6fi"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="V92-VH-Agn"/>
|
||||
<menuItem title="Update PAC from GFW List" id="TFc-Ec-duM">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="updateGFWList:" target="Voe-Tx-rLC" id="Ztt-PS-F3T"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Edit User Rules For PAC..." id="rms-p0-CvB">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="editUserRulesForPAC:" target="Voe-Tx-rLC" id="ZtK-2d-Pcl"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="bMX-qn-Qwi"/>
|
||||
<menuItem title="Show Running Mode In Status Bar" id="CCV-hX-fVA">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="showRunningMode:" target="Voe-Tx-rLC" id="PxO-ut-PEx"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Advanced Proxy Preferences..." id="sbx-yz-3lO">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="editProxyPreferences:" target="Voe-Tx-rLC" id="Jji-Ea-Sy8"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Auto Mode By PAC" id="r07-Gu-aEz">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="selectPACMode:" target="Voe-Tx-rLC" id="l36-cd-xl7"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Global Mode" id="Mw3-Jm-eXA">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="selectGlobalMode:" target="Voe-Tx-rLC" id="7QH-HB-B2e"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Manual Mode" id="8PR-gs-c5N">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="selectManualMode:" target="Voe-Tx-rLC" id="Xxb-28-6fi"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="BMf-0T-UcX"/>
|
||||
<menuItem title="Servers" id="u5M-hQ-VSc">
|
||||
<modifierMask key="keyEquivalentModifierMask" shift="YES"/>
|
||||
<menu key="submenu" title="Servers" id="9Y1-db-3HK">
|
||||
<items>
|
||||
<menuItem title="Show QR Code For Current Server..." id="R6A-96-Zcb">
|
||||
<menuItem title="Server Preferences..." id="M5r-E7-44f">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="showQRCodeForCurrentServer:" target="Voe-Tx-rLC" id="t45-Zk-cai"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Scan QR Code From Screen ..." id="Qe6-bF-paT">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="scanQRCodeFromScreen:" target="Voe-Tx-rLC" id="zQZ-IT-H4a"/>
|
||||
<action selector="editServerPreferences:" target="Voe-Tx-rLC" id="6Lv-6i-Neb"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="4iN-w2-but"/>
|
||||
<menuItem title="Show Bunch Json Example File..." id="pdy-JE-50Q">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
@ -134,34 +99,74 @@
|
||||
<action selector="exportAllServerProfileWithSender:" target="Voe-Tx-rLC" id="0ip-dJ-juc"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="6sL-A4-S7N"/>
|
||||
<menuItem title="Server Preferences..." id="M5r-E7-44f">
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="vwY-hQ-ZIz"/>
|
||||
<menuItem title="Scan QR Code From Screen ..." id="Qe6-bF-paT">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="scanQRCodeFromScreen:" target="Voe-Tx-rLC" id="zQZ-IT-H4a"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Show QR Code For Current Server..." id="R6A-96-Zcb">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="showQRCodeForCurrentServer:" target="Voe-Tx-rLC" id="t45-Zk-cai"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="u7F-RD-aTA"/>
|
||||
<menuItem title="Preferences" id="iVn-LD-Ynd">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Preferences" id="kXL-sZ-jT9">
|
||||
<items>
|
||||
<menuItem title="Update PAC from GFW List" id="TFc-Ec-duM">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="editServerPreferences:" target="Voe-Tx-rLC" id="6Lv-6i-Neb"/>
|
||||
<action selector="updateGFWList:" target="Voe-Tx-rLC" id="Ztt-PS-F3T"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Edit User Rules For PAC..." id="rms-p0-CvB">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="editUserRulesForPAC:" target="Voe-Tx-rLC" id="ZtK-2d-Pcl"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="bMX-qn-Qwi"/>
|
||||
<menuItem title="Advanced Preferences ..." id="bZ3-fy-34d">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="editAdvPreferences:" target="Voe-Tx-rLC" id="mEF-XS-HJE"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="HTTP Proxy Preferences ..." id="uEp-Gz-cu0">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="editHTTPPreferences:" target="Voe-Tx-rLC" id="tkC-e3-PH9"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Advanced PAC Proxy Preferences..." id="sbx-yz-3lO">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="editProxyPreferences:" target="Voe-Tx-rLC" id="Jji-Ea-Sy8"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="ZrT-7B-OmN"/>
|
||||
<menuItem title="Launch At Login" id="eUq-p7-ICK">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="toggleLaunghAtLoginWithSender:" target="Voe-Tx-rLC" id="eFB-1Q-AOT"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Show Running Mode In Status Bar" id="CCV-hX-fVA">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="showRunningMode:" target="Voe-Tx-rLC" id="PxO-ut-PEx"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Advanced Preferences ..." id="bZ3-fy-34d">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="editAdvPreferences:" target="Voe-Tx-rLC" id="mEF-XS-HJE"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="HTTP Proxy Preferences ..." id="uEp-Gz-cu0">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="editHTTPPreferences:" target="Voe-Tx-rLC" id="tkC-e3-PH9"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Launch At Login" id="eUq-p7-ICK">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="toggleLaunghAtLoginWithSender:" target="Voe-Tx-rLC" id="eFB-1Q-AOT"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="DTJ-NF-Wxr"/>
|
||||
<menuItem title="Show Logs..." id="Jfy-sf-Fhl">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -41,7 +41,7 @@
|
||||
/* Class = "NSMenu"; title = "代理"; ObjectID = "YZp-bf-L40"; */
|
||||
"YZp-bf-L40.title" = "代理";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "高级设置..."; ObjectID = "bZ3-fy-34d"; */
|
||||
/* Class = "NSMenuItem"; title = "Advanced Preferences ..."; ObjectID = "bZ3-fy-34d"; */
|
||||
"bZ3-fy-34d.title" = "高级设置...";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "代理"; ObjectID = "diI-fB-Rss"; */
|
||||
@ -59,8 +59,8 @@
|
||||
/* Class = "NSMenuItem"; title = "编辑PAC用户自定规则..."; ObjectID = "rms-p0-CvB"; */
|
||||
"rms-p0-CvB.title" = "编辑PAC用户自定规则...";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "高级设置..."; ObjectID = "sbx-yz-3lO"; */
|
||||
"sbx-yz-3lO.title" = "高级设置...";
|
||||
/* Class = "NSMenuItem"; title = "Advanced PAC Proxy Preferences..."; ObjectID = "sbx-yz-3lO"; */
|
||||
"sbx-yz-3lO.title" = "高级PAC代理设置...";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "服务器"; ObjectID = "u5M-hQ-VSc"; */
|
||||
"u5M-hQ-VSc.title" = "服务器";
|
||||
@ -88,3 +88,8 @@
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Export All Server To Json..."; ObjectID = "6k0-gn-DQv"; */
|
||||
"6k0-gn-DQv.title" = "导出全部服务器配置...";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Preferences"; ObjectID = "iVn-LD-Ynd"; */
|
||||
"iVn-LD-Ynd.title" = "偏好设置";
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user