调整文案及翻译
This commit is contained in:
@ -169,7 +169,7 @@
|
|||||||
9B16E5991F99FD0700E54DC5 /* icons8-Blind Filled-50.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icons8-Blind Filled-50.png"; sourceTree = "<group>"; };
|
9B16E5991F99FD0700E54DC5 /* icons8-Blind Filled-50.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icons8-Blind Filled-50.png"; sourceTree = "<group>"; };
|
||||||
9B172A601D0ADA5B00B87B9A /* genstrings.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = genstrings.py; sourceTree = "<group>"; };
|
9B172A601D0ADA5B00B87B9A /* genstrings.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = genstrings.py; sourceTree = "<group>"; };
|
||||||
9B172A6B1D0ADDDD00B87B9A /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Base; path = Base.lproj/Localizable.strings; sourceTree = "<group>"; };
|
9B172A6B1D0ADDDD00B87B9A /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Base; path = Base.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||||
9B172A6D1D0ADDE800B87B9A /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.strings"; sourceTree = "<group>"; };
|
9B172A6D1D0ADDE800B87B9A /* zh-Hans */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.strings"; sourceTree = "<group>"; };
|
||||||
9B2080482326AC460075386C /* kcptun.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = kcptun.sh; sourceTree = "<group>"; };
|
9B2080482326AC460075386C /* kcptun.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = kcptun.sh; sourceTree = "<group>"; };
|
||||||
9B2080492326AC460075386C /* client */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.executable"; path = client; sourceTree = "<group>"; };
|
9B2080492326AC460075386C /* client */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.executable"; path = client; sourceTree = "<group>"; };
|
||||||
9B2491B51D0ACC3A003BBECC /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/PreferencesWindowController.xib; sourceTree = "<group>"; };
|
9B2491B51D0ACC3A003BBECC /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/PreferencesWindowController.xib; sourceTree = "<group>"; };
|
||||||
@ -610,7 +610,6 @@
|
|||||||
developmentRegion = English;
|
developmentRegion = English;
|
||||||
hasScannedForEncodings = 0;
|
hasScannedForEncodings = 0;
|
||||||
knownRegions = (
|
knownRegions = (
|
||||||
English,
|
|
||||||
en,
|
en,
|
||||||
Base,
|
Base,
|
||||||
"zh-Hans",
|
"zh-Hans",
|
||||||
|
@ -404,7 +404,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserNotificationCenterDele
|
|||||||
|
|
||||||
@IBAction func exportDiagnosis(_ sender: NSMenuItem) {
|
@IBAction func exportDiagnosis(_ sender: NSMenuItem) {
|
||||||
let savePanel = NSSavePanel()
|
let savePanel = NSSavePanel()
|
||||||
savePanel.title = "Save All Server URLs To File".localized
|
savePanel.title = "Save Diagnosis to File".localized
|
||||||
savePanel.canCreateDirectories = true
|
savePanel.canCreateDirectories = true
|
||||||
savePanel.allowedFileTypes = ["txt"]
|
savePanel.allowedFileTypes = ["txt"]
|
||||||
savePanel.isExtensionHidden = false
|
savePanel.isExtensionHidden = false
|
||||||
@ -438,7 +438,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserNotificationCenterDele
|
|||||||
let defaults = UserDefaults.standard
|
let defaults = UserDefaults.standard
|
||||||
let mode = defaults.string(forKey: "ShadowsocksRunningMode")
|
let mode = defaults.string(forKey: "ShadowsocksRunningMode")
|
||||||
|
|
||||||
var serverMenuText = "Servers".localized
|
var serverMenuText = "Servers - (No Selected)".localized
|
||||||
|
|
||||||
let mgr = ServerProfileManager.instance
|
let mgr = ServerProfileManager.instance
|
||||||
for p in mgr.profiles {
|
for p in mgr.profiles {
|
||||||
@ -449,7 +449,8 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserNotificationCenterDele
|
|||||||
} else {
|
} else {
|
||||||
profileName = p.serverHost
|
profileName = p.serverHost
|
||||||
}
|
}
|
||||||
serverMenuText = "\(serverMenuText) - \(profileName)"
|
serverMenuText = "Servers".localized + " - \(profileName)"
|
||||||
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
serversMenuItem.title = serverMenuText
|
serversMenuItem.title = serverMenuText
|
||||||
@ -581,7 +582,9 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserNotificationCenterDele
|
|||||||
let urls: [URL] = userInfo["urls"] as! [URL]
|
let urls: [URL] = userInfo["urls"] as! [URL]
|
||||||
|
|
||||||
let mgr = ServerProfileManager.instance
|
let mgr = ServerProfileManager.instance
|
||||||
|
let addCount = mgr.addServerProfileByURL(urls: urls)
|
||||||
|
|
||||||
|
if addCount > 0 {
|
||||||
var subtitle: String = ""
|
var subtitle: String = ""
|
||||||
if userInfo["source"] as! String == "qrcode" {
|
if userInfo["source"] as! String == "qrcode" {
|
||||||
subtitle = "By scan QR Code".localized
|
subtitle = "By scan QR Code".localized
|
||||||
@ -591,12 +594,13 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserNotificationCenterDele
|
|||||||
subtitle = "By import from pasteboard".localized
|
subtitle = "By import from pasteboard".localized
|
||||||
}
|
}
|
||||||
|
|
||||||
let addCount = mgr.addServerProfileByURL(urls: urls)
|
|
||||||
|
|
||||||
if addCount > 0 {
|
|
||||||
sendNotify("Add \(addCount) Shadowsocks Server Profile".localized, subtitle, "")
|
sendNotify("Add \(addCount) Shadowsocks Server Profile".localized, subtitle, "")
|
||||||
} else {
|
} else {
|
||||||
sendNotify("", "", "Not found valid qrcode or url of shadowsocks profile".localized)
|
if userInfo["source"] as! String == "qrcode" {
|
||||||
|
sendNotify("", "", "Not found valid QRCode of shadowsocks profile".localized)
|
||||||
|
} else if userInfo["source"] as! String == "url" {
|
||||||
|
sendNotify("", "", "Not found valid URL of shadowsocks profile".localized)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,67 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* SHARED STRINGS
|
* SHARED STRINGS
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ./PACUtils.swift
|
* ./ShadowsocksX-NG/UserRulesController.swift
|
||||||
|
*/
|
||||||
|
|
||||||
|
"PAC has been updated by User Rules." = "PAC has been updated by User Rules.";
|
||||||
|
|
||||||
|
"It's failed to update PAC by User Rules." = "It's failed to update PAC by User Rules.";
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ./ShadowsocksX-NG/AppDelegate.swift
|
||||||
|
*/
|
||||||
|
|
||||||
|
"Global Mode" = "Global Mode";
|
||||||
|
|
||||||
|
"Manual Mode" = "Manual Mode";
|
||||||
|
|
||||||
|
"Auto Mode By PAC" = "Auto Mode By PAC";
|
||||||
|
|
||||||
|
"Shadowsocks: On" = "Shadowsocks: On";
|
||||||
|
|
||||||
|
"Shadowsocks: Off" = "Shadowsocks: Off";
|
||||||
|
|
||||||
|
"Export Command Copied." = "Export Command Copied.";
|
||||||
|
|
||||||
|
"Save Diagnosis to File" = "Save Diagnosis to File";
|
||||||
|
|
||||||
|
"Servers" = "Servers";
|
||||||
|
|
||||||
|
"Turn Shadowsocks Off" = "Turn Shadowsocks Off";
|
||||||
|
|
||||||
|
"Turn Shadowsocks On" = "Turn Shadowsocks On";
|
||||||
|
|
||||||
|
"By scan QR Code" = "By scan QR Code";
|
||||||
|
|
||||||
|
"By handle SS URL" = "By handle SS URL";
|
||||||
|
|
||||||
|
"By import from pasteboard" = "By import from pasteboard";
|
||||||
|
|
||||||
|
"Add \(addCount) Shadowsocks Server Profile" = "Add \(addCount) Shadowsocks Server Profile";
|
||||||
|
|
||||||
|
"Not found valid QRCode of shadowsocks profile" = "Not found valid QRCode of shadowsocks profile";
|
||||||
|
|
||||||
|
"Not found valid URL of shadowsocks profile" = "Not found valid URL of shadowsocks profile";
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ./ShadowsocksX-NG/ShareServerProfilesWindowController.swift
|
||||||
|
*/
|
||||||
|
|
||||||
|
"Save QRCode As File" = "Save QRCode As File";
|
||||||
|
|
||||||
|
"Save All Server URLs To File" = "Save All Server URLs To File";
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ./ShadowsocksX-NG/PACUtils.swift
|
||||||
*/
|
*/
|
||||||
|
|
||||||
"PAC has been updated by latest GFW List." = "PAC has been updated by latest GFW List.";
|
"PAC has been updated by latest GFW List." = "PAC has been updated by latest GFW List.";
|
||||||
@ -11,51 +69,16 @@
|
|||||||
"Failed to download latest GFW List." = "Failed to download latest GFW List.";
|
"Failed to download latest GFW List." = "Failed to download latest GFW List.";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ./PreferencesWindowController.swift
|
* ./ShadowsocksX-NG/ImportWindowController.swift
|
||||||
|
*/
|
||||||
|
|
||||||
|
"Success to add \(addCount) server." = "Success to add \(addCount) server.";
|
||||||
|
|
||||||
|
"Not found valid shadowsocks server urls." = "Not found valid shadowsocks server urls.";
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ./ShadowsocksX-NG/PreferencesWindowController.swift
|
||||||
*/
|
*/
|
||||||
|
|
||||||
"New Server" = "New Server";
|
"New Server" = "New Server";
|
||||||
|
|
||||||
/*
|
|
||||||
* ./AppDelegate.swift
|
|
||||||
*/
|
|
||||||
|
|
||||||
"Add \(addCount) Shadowsocks Server Profile" = "Add \(addCount) Shadowsocks Server Profile";
|
|
||||||
|
|
||||||
"Not found valid qrcode or url of shadowsocks profile" = "Not found valid qrcode or url of shadowsocks profile";
|
|
||||||
|
|
||||||
"By scan QR Code" = "By scan QR Code";
|
|
||||||
|
|
||||||
"By Handle SS URL" = "By Handle SS URL";
|
|
||||||
|
|
||||||
" Encryption Method: \(profile.method)" = " Encryption Method: \(profile.method)";
|
|
||||||
|
|
||||||
"Current server profile is not valid." = "Current server profile is not valid.";
|
|
||||||
|
|
||||||
"No current server profile." = "No current server profile.";
|
|
||||||
|
|
||||||
"Shadowsocks: On" = "Shadowsocks: On";
|
|
||||||
|
|
||||||
"Turn Shadowsocks Off" = "Turn Shadowsocks Off";
|
|
||||||
|
|
||||||
"Shadowsocks: Off" = "Shadowsocks: Off";
|
|
||||||
|
|
||||||
"Turn Shadowsocks On" = "Turn Shadowsocks On";
|
|
||||||
|
|
||||||
"Proxy - Auto By PAC" = "Proxy - Auto By PAC";
|
|
||||||
|
|
||||||
"Proxy - Global" = "Proxy - Global";
|
|
||||||
|
|
||||||
"Proxy - Manual" = "Proxy - Manual";
|
|
||||||
|
|
||||||
"Servers" = "Servers";
|
|
||||||
|
|
||||||
"Auto" = "PAC";
|
|
||||||
|
|
||||||
"Global" = "Global";
|
|
||||||
|
|
||||||
"Manual" = "Manual";
|
|
||||||
|
|
||||||
"Show Running Mode On Status Bar" = "Show Running Mode On Status Bar";
|
|
||||||
|
|
||||||
"Timeout" = "Timeout";
|
|
||||||
|
@ -72,7 +72,7 @@ class ShareServerProfilesWindowController: NSWindowController
|
|||||||
@IBAction func saveQRCodeAsFile(_ sender: NSButton) {
|
@IBAction func saveQRCodeAsFile(_ sender: NSButton) {
|
||||||
if let img = qrCodeImageView.image {
|
if let img = qrCodeImageView.image {
|
||||||
let savePanel = NSSavePanel()
|
let savePanel = NSSavePanel()
|
||||||
savePanel.title = "Save All Server URLs To File".localized
|
savePanel.title = "Save QRCode As File".localized
|
||||||
savePanel.canCreateDirectories = true
|
savePanel.canCreateDirectories = true
|
||||||
savePanel.allowedFileTypes = ["gif"]
|
savePanel.allowedFileTypes = ["gif"]
|
||||||
savePanel.isExtensionHidden = false
|
savePanel.isExtensionHidden = false
|
||||||
|
@ -10,7 +10,11 @@ import Foundation
|
|||||||
|
|
||||||
extension String {
|
extension String {
|
||||||
var localized: String {
|
var localized: String {
|
||||||
return NSLocalizedString(self, tableName: nil, bundle: Bundle.main, value: "", comment: "")
|
return NSLocalizedString(self, tableName: "Localizable", comment: "")
|
||||||
|
}
|
||||||
|
|
||||||
|
func localized(withComment:String) -> String {
|
||||||
|
return NSLocalizedString(self, tableName: "Localizable", comment: withComment)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* SHARED STRINGS
|
* SHARED STRINGS
|
||||||
*/
|
*/
|
||||||
@ -14,30 +12,28 @@
|
|||||||
|
|
||||||
"PAC has been updated by latest GFW List." = "已经使用最新的 GFW List 更新PAC";
|
"PAC has been updated by latest GFW List." = "已经使用最新的 GFW List 更新PAC";
|
||||||
|
|
||||||
"Failed to download latest GFW List." = "下载 GFW List 失败";
|
"It's failed to update PAC by User Rules." = "更新 PAC 失败";
|
||||||
|
|
||||||
/*
|
"Failed to download latest GFW List." = "下载最新的 GFW 列表失败";
|
||||||
* ./PreferencesWindowController.swift
|
|
||||||
*/
|
|
||||||
|
|
||||||
"New Server" = "新服务器";
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ./AppDelegate.swift
|
* ./AppDelegate.swift
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
"Save Diagnosis to File" = "保存诊断信息到文件";
|
||||||
|
|
||||||
|
"Global Mode" = "全局模式";
|
||||||
|
|
||||||
|
"Manual Mode" = "手动模式";
|
||||||
|
|
||||||
|
"Auto Mode By PAC" = "PAC自动模式";
|
||||||
|
|
||||||
"Add \(addCount) Shadowsocks Server Profile" = "已添加\(addCount)个Shadowsocks服务器配置";
|
"Add \(addCount) Shadowsocks Server Profile" = "已添加\(addCount)个Shadowsocks服务器配置";
|
||||||
|
|
||||||
"Not found valid qrcode or url of shadowsocks profile" = "没有找到有效的shadowsocks配置二维码或链接";
|
"Not found valid qrcode or url of shadowsocks profile" = "没有找到有效的shadowsocks配置二维码或链接";
|
||||||
|
|
||||||
"By scan QR Code" = "通过扫描二维码";
|
"By scan QR Code" = "通过扫描二维码";
|
||||||
|
|
||||||
" Encription Method: \(profile.method)" = " 加密方法: \(profile.method)";
|
|
||||||
|
|
||||||
"Current server profile is not valid." = "当前服务器配置无效";
|
|
||||||
|
|
||||||
"No current server profile." = "未设置当前服务器配置";
|
|
||||||
|
|
||||||
"Shadowsocks: On" = "Shadowsocks: On";
|
"Shadowsocks: On" = "Shadowsocks: On";
|
||||||
|
|
||||||
"Turn Shadowsocks Off" = "关闭 Shadowsocks";
|
"Turn Shadowsocks Off" = "关闭 Shadowsocks";
|
||||||
@ -46,21 +42,15 @@
|
|||||||
|
|
||||||
"Turn Shadowsocks On" = "打开 Shadowsocks";
|
"Turn Shadowsocks On" = "打开 Shadowsocks";
|
||||||
|
|
||||||
"Proxy - Auto By PAC" = "代理 - PAC自动(⌃⌘P)";
|
|
||||||
|
|
||||||
"Proxy - Global" = "代理 - 全局(⌃⌘P)";
|
|
||||||
|
|
||||||
"Proxy - Manual" = "代理 - 手动";
|
|
||||||
|
|
||||||
"Servers" = "服务器";
|
"Servers" = "服务器";
|
||||||
|
|
||||||
"Auto" = "自动";
|
"Servers - (No Selected)" = "服务器 - (未选择)";
|
||||||
|
|
||||||
"Global" = "全局";
|
"Add \(addCount) Shadowsocks Server Profile" = "新增 \(addCount) 个 Shadowsocks 服务器配置";
|
||||||
|
|
||||||
"Manual" = "手动";
|
"Not found valid QRCode of shadowsocks profile" = "未找到有效的 shadowsocks 二维码";
|
||||||
|
|
||||||
"Show Running Mode On Status Bar" = "在状态栏显示运行模式";
|
"Not found valid URL of shadowsocks profile" = "未找到有效的 shadowsocks 链接";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ./HTTPPreferencesWindowController.swift
|
* ./HTTPPreferencesWindowController.swift
|
||||||
@ -69,3 +59,27 @@
|
|||||||
"Export Command Copied." = "Export 命令已复制至剪贴板";
|
"Export Command Copied." = "Export 命令已复制至剪贴板";
|
||||||
|
|
||||||
"Timeout" = "超时";
|
"Timeout" = "超时";
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ./ShadowsocksX-NG/ShareServerProfilesWindowController.swift
|
||||||
|
*/
|
||||||
|
|
||||||
|
"Save All Server URLs To File" = "保存所有服务器 URL 到文件";
|
||||||
|
|
||||||
|
"Save QRCode As File" = "保存 QRCode 为文件";
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ./ShadowsocksX-NG/ImportWindowController.swift
|
||||||
|
*/
|
||||||
|
|
||||||
|
"Success to add \(addCount) server." = "成功添加 \(addCount) 个服务器";
|
||||||
|
|
||||||
|
"Not found valid shadowsocks server urls." = "未找到有效的shadowsocks服务器URL";
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ./ShadowsocksX-NG/PreferencesWindowController.swift
|
||||||
|
*/
|
||||||
|
|
||||||
|
"New Server" = "新建服务器";
|
||||||
|
|
||||||
|
|
||||||
|
@ -114,4 +114,4 @@
|
|||||||
"eNh-vY-utd.title" = "导出诊断信息...";
|
"eNh-vY-utd.title" = "导出诊断信息...";
|
||||||
|
|
||||||
/* Class = "NSMenuItem"; title = "Import Server URLs..."; ObjectID = "geG-dQ-OYl"; */
|
/* Class = "NSMenuItem"; title = "Import Server URLs..."; ObjectID = "geG-dQ-OYl"; */
|
||||||
"geG-dQ-OYl.title" = "导入服务器URLs...";
|
"geG-dQ-OYl.title" = "导入服务器URL...";
|
||||||
|
Reference in New Issue
Block a user