@@ -1,52 +1,77 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Collections.Generic; | |||||
using System.Globalization; | using System.Globalization; | ||||
using System.IO; | using System.IO; | ||||
using Shadowsocks.Properties; | |||||
using Shadowsocks.Util; | |||||
using System.Windows.Forms; | |||||
using Microsoft.VisualBasic.FileIO; | |||||
namespace Shadowsocks.Controller | namespace Shadowsocks.Controller | ||||
{ | { | ||||
using Shadowsocks.Properties; | |||||
public static class I18N | public static class I18N | ||||
{ | { | ||||
private static Dictionary<string, string> _strings = new Dictionary<string, string>(); | private static Dictionary<string, string> _strings = new Dictionary<string, string>(); | ||||
private static void Init(string res) | |||||
private static void Init(string res, string locale) | |||||
{ | { | ||||
using (var sr = new StringReader(res)) | |||||
using (TextFieldParser csvParser = new TextFieldParser(new StringReader(res))) | |||||
{ | { | ||||
foreach (var line in sr.NonWhiteSpaceLines()) | |||||
csvParser.SetDelimiters(","); | |||||
string[] localeNames = csvParser.ReadFields(); | |||||
int enIndex = 0; | |||||
int targetIndex = 0; | |||||
for (int i = 1; i < localeNames.Length; i++) | |||||
{ | { | ||||
if (line[0] == '#') | |||||
continue; | |||||
if (localeNames[i] == "en") | |||||
{ | |||||
} | |||||
var pos = line.IndexOf('='); | |||||
if (pos < 1) | |||||
continue; | |||||
_strings[line.Substring(0, pos)] = line.Substring(pos + 1); | |||||
if (localeNames[i] == locale) | |||||
{ | |||||
targetIndex = i; | |||||
} | |||||
} | |||||
while (!csvParser.EndOfData) | |||||
{ | |||||
string[] translations = csvParser.ReadFields(); | |||||
if (string.IsNullOrWhiteSpace(translations[0])) continue; | |||||
if (translations[0].TrimStart(' ')[0] == '#') continue; | |||||
_strings[translations[enIndex]] = translations[targetIndex]; | |||||
} | } | ||||
} | } | ||||
} | } | ||||
static I18N() | static I18N() | ||||
{ | { | ||||
string name = CultureInfo.CurrentCulture.EnglishName; | |||||
if (name.StartsWith("Chinese", StringComparison.OrdinalIgnoreCase)) | |||||
{ | |||||
// choose Traditional Chinese only if we get explicit indication | |||||
Init(name.Contains("Traditional") | |||||
? Resources.zh_TW | |||||
: Resources.zh_CN); | |||||
} | |||||
else if (name.StartsWith("Japan", StringComparison.OrdinalIgnoreCase)) | |||||
{ | |||||
Init(Resources.ja); | |||||
} | |||||
Init(Resources.i18n_csv, CultureInfo.CurrentCulture.IetfLanguageTag); | |||||
} | } | ||||
public static string GetString(string key, params object[] args) | public static string GetString(string key, params object[] args) | ||||
{ | { | ||||
return string.Format(_strings.TryGetValue(key, out var value) ? value : key, args); | return string.Format(_strings.TryGetValue(key, out var value) ? value : key, args); | ||||
} | } | ||||
public static void TranslateForm(Form c) | |||||
{ | |||||
c.Text = GetString(c.Text); | |||||
foreach (var item in ViewUtils.GetChildControls<Control>(c)) | |||||
{ | |||||
item.Text = GetString(item.Text); | |||||
} | |||||
TranslateMenu(c.Menu); | |||||
} | |||||
public static void TranslateMenu(Menu m) | |||||
{ | |||||
foreach (var item in ViewUtils.GetMenuItems(m)) | |||||
{ | |||||
item.Text = GetString(item.Text); | |||||
} | |||||
} | |||||
} | } | ||||
} | } |
@@ -0,0 +1,196 @@ | |||||
en,zh-CN,zh-TW,ja | |||||
,,, | |||||
Shadowsocks,Shadowsocks,Shadowsocks,Shadowsocks | |||||
,,, | |||||
System Proxy,系统代理,系統代理,システムプロキシ | |||||
Disable,禁用,禁用,無効 | |||||
PAC,PAC 模式,PAC 模式,PAC | |||||
Global,全局模式,全局模式,全般 | |||||
Servers,服务器,伺服器,サーバー | |||||
Edit Servers...,编辑服务器...,編輯伺服器...,サーバーの編集... | |||||
Statistics Config...,统计配置...,統計設定檔...,統計情報の設定... | |||||
Start on Boot,开机启动,開機啟動,システムと同時に起動 | |||||
Forward Proxy...,正向代理设置...,正向 Proxy 設定...,フォワードプロキシの設定... | |||||
Allow other Devices to connect,允许其他设备连入,允許其他裝置連入,他のデバイスからの接続を許可する | |||||
Local PAC,使用本地 PAC,使用本機 PAC,ローカル PAC | |||||
Online PAC,使用在线 PAC,使用線上 PAC,オンライン PAC | |||||
Edit Local PAC File...,编辑本地 PAC 文件...,編輯本機 PAC 檔案...,ローカル PAC ファイルの編集... | |||||
Update Local PAC from GFWList,从 GFWList 更新本地 PAC,從 GFWList 更新本機 PAC,GFWList からローカル PAC を更新 | |||||
Edit User Rule for GFWList...,编辑 GFWList 的用户规则...,編輯 GFWList 的使用者規則...,ユーザールールの編集... | |||||
Secure Local PAC,保护本地 PAC,安全本機 PAC,ローカル PAC を保護 | |||||
Copy Local PAC URL,复制本地 PAC 网址,複製本機 PAC 網址,ローカル PAC URL をコピー | |||||
Share Server Config...,分享服务器配置...,分享伺服器設定檔...,サーバーの設定を共有... | |||||
Scan QRCode from Screen...,扫描屏幕上的二维码...,掃描螢幕上的 QR 碼...,画面から QR コードをスキャン... | |||||
Import URL from Clipboard...,从剪贴板导入URL...,從剪貼簿匯入 URL...,クリップボードから URL をインポート... | |||||
Availability Statistics,统计可用性,統計可用性,可用性の統計 | |||||
Show Logs...,显示日志...,顯示記錄檔...,ログの表示... | |||||
Verbose Logging,详细记录日志,詳細資訊記錄,詳細なログを記録 | |||||
Updates...,更新...,更新...,更新... | |||||
Check for Updates...,检查更新,檢查更新,更新プログラムの確認... | |||||
Check for Updates at Startup,启动时检查更新,啟動時檢查更新,起動時に更新プログラムを確認 | |||||
Check Pre-release Version,检查测试版更新,檢查發行前版本更新,先行開発版も確認 | |||||
Edit Hotkeys...,编辑快捷键...,編輯快速鍵...,ホットキーの編集... | |||||
About...,关于...,關於...,Shadowsocks について... | |||||
Help,帮助,說明,ヘルプ | |||||
Quit,退出,結束,終了 | |||||
Edit Servers,编辑服务器,編輯伺服器,サーバーの編集 | |||||
Load Balance,负载均衡,負載平衡,負荷分散 | |||||
High Availability,高可用,高可用性,高可用性 | |||||
Choose by statistics,根据统计,根據統計,統計で選ぶ | |||||
,,, | |||||
# Config Form,,, | |||||
,,, | |||||
&Add,添加(&A),新增 (&A),新規 (&A) | |||||
&Delete,删除(&D),移除 (&D),削除 (&D) | |||||
Dupli&cate,复制(&C),複製 (&C),コピー (&C) | |||||
Server,服务器,伺服器,サーバー | |||||
Server IP,服务器地址,伺服器位址,サーバーアドレス | |||||
Server Port,服务器端口,伺服器連接埠,サーバーポート | |||||
Password,密码,密碼,パスワード | |||||
Show Password,显示密码,顯示密碼,パスワードを表示する | |||||
Encryption,加密,加密,暗号化 | |||||
Plugin Program,插件程序,外掛程式,プラグインプログラム | |||||
Plugin Options,插件选项,外掛程式選項,プラグインのオプション | |||||
Need Plugin Argument,需要命令行参数,, | |||||
Plugin Arguments,插件参数,外掛程式參數,プラグインの引数 | |||||
Proxy Port,代理端口,Proxy 連接埠,プロキシポート | |||||
Portable Mode,便携模式,便攜模式,ポータブルモード | |||||
Restart required,需要重新启动SS,需要重新啟動SS,再起動SSが必要 | |||||
Remarks,备注,註解,付記 | |||||
Timeout(Sec),超时(秒),逾時 (秒),タイムアウト (秒) | |||||
OK,确定,確定,OK | |||||
Cancel,取消,取消,キャンセル | |||||
Apply,应用,應用,適用 | |||||
New server,未配置的服务器,新伺服器,新規サーバー | |||||
Move &Up,上移(&U),上移 (&U),上に移動 (&U) | |||||
Move D&own,下移(&O),下移 (&O),下に移動 (&O) | |||||
,,, | |||||
#Statistics Config,,, | |||||
,,, | |||||
Enable Statistics,启用统计,, | |||||
Ping Test,Ping测试,, | |||||
packages everytime,个包/次,, | |||||
By hour of day,按照每天的小时数统计,, | |||||
Collect data per,收集数据每,, | |||||
Keep choice for,保持选择每,, | |||||
minutes,分钟,, | |||||
Final Score:,总分:,, | |||||
AverageLatency,平均延迟,, | |||||
MinLatency,最小延迟,, | |||||
MaxLatency,最大延迟,, | |||||
AverageInboundSpeed,平均入站速度,, | |||||
MinInboundSpeed,最小入站速度,, | |||||
MaxInboundSpeed,最大入站速度,, | |||||
AverageOutboundSpeed,平均出站速度,, | |||||
MinOutboundSpeed,最小出站速度,, | |||||
MaxOutboundSpeed,最大出站速度,, | |||||
AverageResponse,平均响应速度,, | |||||
MinResponse,最小响应速度,, | |||||
MaxResponse,最大响应速度,, | |||||
PackageLoss,丢包率,, | |||||
Speed,速度,, | |||||
Package Loss,丢包率,, | |||||
Ping,网络延迟,, | |||||
Chart Mode,图表模式,, | |||||
24h,24小时,, | |||||
all,全部,, | |||||
,,, | |||||
# Proxy Form,,, | |||||
,,, | |||||
Edit Proxy,代理设置,編輯 Proxy,プロキシの編集 | |||||
Use Proxy,使用代理,使用 Proxy,プロキシを利用する | |||||
Proxy Type,代理类型,Proxy 類型,プロキシの種類 | |||||
Proxy Addr,代理地址,Proxy 位址,プロキシアドレス | |||||
Proxy Port,代理端口,Proxy 連接埠,プロキシポート | |||||
"If server has a plugin, proxy will not be used",若服务器含有插件,代理将不被使用,若伺服器含有外掛程式,Proxy 將不被使用,サーバーにプラグインがある場合、プロキシは利用されません | |||||
Use Auth,使用认证,使用認證,認証を利用する | |||||
User Name,用户名,認證用戶,認証ユーザ | |||||
Auth Pwd,认证密码,認證口令,認証パスワード | |||||
,,, | |||||
# Log Form,,, | |||||
,,, | |||||
&File,文件(&F),檔案 (&F),ファイル (&F) | |||||
&Open Location,在资源管理器中打开(&O),在檔案總管中開啟 (&O),ファイルの場所を開く (&O) | |||||
E&xit,退出(&X),結束 (&X),終了 (&X) | |||||
&View,视图(&V),檢視 (&V),表示 (&V) | |||||
&Clear Logs,清空日志(&C),清除記錄檔 (&C),ログの削除 (&C) | |||||
Change &Font,设置字体(&F),變更字型 (&F),フォント (&F) | |||||
&Wrap Text,自动换行(&W),自動換行 (&W),右端で折り返す (&W) | |||||
&Top Most,置顶(&T),置頂 (&T),常に最前面に表示 (&T) | |||||
&Show Toolbar,显示工具栏(&S),顯示工具列 (&S),ツールバーの表示 (&S) | |||||
Log Viewer,日志查看器,記錄檔檢視器,ログビューア | |||||
Inbound,入站,輸入,受信 | |||||
Outbound,出站,輸出,送信 | |||||
,,, | |||||
# QRCode Form,,, | |||||
,,, | |||||
QRCode and URL,二维码与 URL,QR 碼與 URL,QR コードと URL | |||||
,,, | |||||
# PAC Url Form,,, | |||||
,,, | |||||
Edit Online PAC URL,编辑在线 PAC 网址,編輯線上 PAC 網址,オンライン PAC URL の編集 | |||||
Edit Online PAC URL...,编辑在线 PAC 网址...,編輯線上 PAC 網址...,オンライン PAC URL の編集... | |||||
Please input PAC Url,请输入 PAC 网址,請輸入 PAC 網址,PAC URLを入力して下さい | |||||
,,, | |||||
# HotkeySettings Form,,, | |||||
,,, | |||||
Switch system proxy,切换系统代理状态,切換系統 Proxy 狀態,システム プロキシの状態を切り替える | |||||
Switch system proxy mode,切换系统代理模式,切換系統 Proxy 模式,プロキシモードを切り替える | |||||
Allow Clients from LAN,切换局域网共享,切換區域網路共用,LAN からのアクセスの許可を切り替える | |||||
Show Logs...,显示日志,顯示記錄檔,ログの表示 | |||||
Switch to previous server,切换上个服务器,切換上一個伺服器,前のサーバーに切り替える | |||||
Switch to next server,切换下个服务器,切換下一個伺服器,次のサーバーに切り替える | |||||
Reg All,注册全部快捷键,註冊所有快速鍵,全部登録する | |||||
Reg Hotkeys At Startup,启动时注册快捷键,啟動時註冊快速鍵,起動時にホットキーを登録する | |||||
,,, | |||||
# Messages,,, | |||||
,,, | |||||
Shadowsocks Error: {0},Shadowsocks 错误: {0},Shadowsocks 錯誤: {0},Shadowsocks エラー: {0} | |||||
Port {0} already in use,端口 {0} 已被占用,連接埠號碼 {0} 已被使用,ポート番号 {0} は既に使用されています。 | |||||
Port {0} is reserved by system,端口 {0} 是系统保留端口,連接埠號碼 {0} 由系統保留, ポート番号 {0} はシステムによって予約されています | |||||
Invalid server address,非法服务器地址,無效伺服器位址,サーバーアドレスが無効です。 | |||||
Illegal port number format,非法端口格式,無效連接埠號碼格式,ポート番号のフォーマットが無効です。 | |||||
Illegal timeout format,非法超时格式,無效逾時格式,タイムアウト値のフォーマットが無効です。 | |||||
Server IP can not be blank,服务器 IP 不能为空,伺服器 IP 不能為空,サーバー IP が指定されていません。 | |||||
Password can not be blank,密码不能为空,密碼不能為空,パスワードが指定されていません。 | |||||
Port out of range,端口超出范围,連接埠號碼超出範圍,ポート番号は範囲外です。 | |||||
Port can't be 8123,端口不能为 8123,連接埠號碼不能為 8123,8123 番以外のポート番号を指定して下さい。 | |||||
Shadowsocks {0} Update Found,Shadowsocks {0} 更新,Shadowsocks {0} 更新,Shadowsocks バージョン {0} は利用できます。 | |||||
No update is available,没有可用的更新,沒有可用的更新,お使いのバージョンは最新です。 | |||||
Click here to update,点击这里升级,點按此處升級,クリックしてアップデートします。 | |||||
Shadowsocks is here,Shadowsocks 在这里,Shadowsocks 在這裡,Shadowsocks はここです。 | |||||
You can turn on/off Shadowsocks in the context menu,可以在右键菜单中开关 Shadowsocks,可以在右鍵選項單中開關 Shadowsocks,コンテキストメニューを使って、Shadowsocks を有効または無効にすることができます。 | |||||
System Proxy Enabled,系统代理已启用,系統 Proxy 已啟用,システム プロキシが有効です。 | |||||
System Proxy Disabled,系统代理未启用,系統 Proxy 未啟用,システム プロキシが無効です。 | |||||
Failed to update PAC file ,更新 PAC 文件失败,更新 PAC 檔案失敗,PAC の更新に失敗しました。 | |||||
PAC updated,更新 PAC 成功,更新 PAC 成功,PAC を更新しました。 | |||||
No updates found. Please report to GFWList if you have problems with it.,未发现更新。如有问题请提交给 GFWList。,未發現更新。如有問題請報告至 GFWList。,お使いのバージョンは最新です。問題がある場合は、GFWList に報告して下さい。 | |||||
No QRCode found. Try to zoom in or move it to the center of the screen.,未发现二维码,尝试把它放大或移动到靠近屏幕中间的位置,未發現 QR 碼,嘗試把它放大或移動到靠近熒幕中間的位置,QR コードが見つかりませんでした。コードを大きくするか、画面の中央に移動して下さい。 | |||||
Shadowsocks is already running.,Shadowsocks 已经在运行。,Shadowsocks 已經在執行。,Shadowsocks 実行中 | |||||
Find Shadowsocks icon in your notify tray.,请在任务栏里寻找 Shadowsocks 图标。,請在工作列裡尋找 Shadowsocks 圖示。,通知領域には Shadowsocks のアイコンがあります。 | |||||
"If you want to start multiple Shadowsocks, make a copy in another directory.",如果想同时启动多个,可以另外复制一份到别的目录。,如果想同時啟動多個,可以另外複製一份至別的目錄。,複数起動したい場合は、プログラムファイルを別のフォルダーにコピーしてから、もう一度実行して下さい。 | |||||
Failed to decode QRCode,无法解析二维码,QR 碼解碼失敗,QR コードの読み取りに失敗しました。 | |||||
Failed to update registry,无法修改注册表,無法修改登錄檔,レジストリの更新に失敗しました。 | |||||
System Proxy On: ,系统代理已启用:,系統 Proxy 已啟用:,システム プロキシが有効: | |||||
Running: Port {0},正在运行:端口 {0},正在執行:連接埠號碼 {0},実行中:ポート {0} | |||||
"Unexpected error, shadowsocks will exit. Please report to",非预期错误,Shadowsocks将退出。请提交此错误到,非預期錯誤,Shadowsocks 將結束。請報告此錯誤至,予想外のエラーが発生したため、Shadowsocks を終了します。詳しくは下記までお問い合わせ下さい: | |||||
"Unsupported operating system, use Windows Vista at least.",不支持的操作系统版本,最低需求为Windows Vista。,不支援的作業系統版本,最低需求為 Windows Vista。,お使いの OS はサポートされていません。Windows Vista 以降の OS で実行して下さい。 | |||||
"Unsupported .NET Framework, please update to 4.6.2 or later.",当前 .NET Framework 版本过低,请升级至4.6.2或更新版本。,目前 .NET Framework 版本過低,最低需求為4.6.2。,お使いの .NET Framework はサポートされていません。4.6.2 以降のバンジョーをインストールして下さい。 | |||||
Proxy request failed,代理请求失败,Proxy 要求失敗,プロキシ要求が失敗しました。 | |||||
Proxy handshake failed,代理握手失败,Proxy 交握失敗,プロキシ ハンドシェイクに失敗しました。 | |||||
Register hotkey failed,注册快捷键失败,註冊快速鍵失敗,ホットキーの登錄に失敗しました。 | |||||
Cannot parse hotkey: {0},解析快捷键失败: {0},剖析快速鍵失敗: {0},ホットキーを解析できません: {0} | |||||
"Timeout is invalid, it should not exceed {0}",超时无效,不应超过 {0},逾時無效,不應超過 {0},タイムアウト値が無効です。{0} 以下の値を指定して下さい。 | |||||
,,, | |||||
Operation failure,操作失败,, | |||||
Auto save failed,自动保存失败,, | |||||
Whether to discard unconfigured servers,是否丢弃未配置的服务器,, | |||||
"Invalid server address, Cannot automatically save or discard changes",非法服务器地址,无法自动保存,是否丢弃修改,, | |||||
"Illegal port number format, Cannot automatically save or discard changes",非法端口格式,无法自动保存,是否丢弃修改,, | |||||
"Password can not be blank, Cannot automatically save or discard changes",密码不能为空,无法自动保存,是否丢弃修改,, | |||||
"Illegal timeout format, Cannot automatically save or discard changes",非法超时格式,无法自动保存,是否丢弃修改,, | |||||
,,, | |||||
"Error occured when process proxy setting, do you want reset current setting and retry?",处理代理设置时发生错误,是否重置当前代理设置并重试?,, | |||||
"Unrecoverable proxy setting error occured, see log for detail",发生不可恢复的代理设置错误,查看日志以取得详情,, | |||||
Auth user can not be blank,认证用户不能为空,認證用戶不能為空,認証ユーザが指定されていません。 | |||||
Auth pwd can not be blank,认证密码不能为空,認證口令不能為空,認証パスワードが指定されていません。 |
@@ -1,156 +0,0 @@ | |||||
# translation for Japanese | |||||
Shadowsocks=Shadowsocks | |||||
# Menu items | |||||
System Proxy=システムプロキシ | |||||
Disable=無効 | |||||
PAC=PAC | |||||
Global=全般 | |||||
Servers=サーバー | |||||
Edit Servers...=サーバーの編集... | |||||
Statistics Config...=統計情報の設定... | |||||
Start on Boot=システムと同時に起動 | |||||
Forward Proxy...=フォワードプロキシの設定... | |||||
Allow other Devices to connect=他のデバイスからの接続を許可する | |||||
Local PAC=ローカル PAC | |||||
Online PAC=オンライン PAC | |||||
Edit Local PAC File...=ローカル PAC ファイルの編集... | |||||
Update Local PAC from GFWList=GFWList からローカル PAC を更新 | |||||
Edit User Rule for GFWList...=ユーザールールの編集... | |||||
Secure Local PAC=ローカル PAC を保護 | |||||
Copy Local PAC URL=ローカル PAC URL をコピー | |||||
Share Server Config...=サーバーの設定を共有... | |||||
Scan QRCode from Screen...=画面から QR コードをスキャン... | |||||
Import URL from Clipboard...=クリップボードから URL をインポート... | |||||
Availability Statistics=可用性の統計 | |||||
Show Logs...=ログの表示... | |||||
Verbose Logging=詳細なログを記録 | |||||
Updates...=更新... | |||||
Check for Updates...=更新プログラムの確認... | |||||
Check for Updates at Startup=起動時に更新プログラムを確認 | |||||
Check Pre-release Version=先行開発版も確認 | |||||
Edit Hotkeys...=ホットキーの編集... | |||||
About...=Shadowsocks について... | |||||
Help=ヘルプ | |||||
Quit=終了 | |||||
Edit Servers=サーバーの編集 | |||||
Load Balance=負荷分散 | |||||
High Availability=高可用性 | |||||
Choose by statistics=統計で選ぶ | |||||
# Config Form | |||||
&Add=新規 (&A) | |||||
&Delete=削除 (&D) | |||||
Dupli&cate=コピー (&C) | |||||
Server=サーバー | |||||
Server Addr=サーバーアドレス | |||||
Server Port=サーバーポート | |||||
Password=パスワード | |||||
Show Password=パスワードを表示する | |||||
Encryption=暗号化 | |||||
Plugin Program=プラグインプログラム | |||||
Plugin Options=プラグインのオプション | |||||
Plugin Arguments=プラグインの引数 | |||||
Proxy Port=プロキシポート | |||||
Portable Mode=ポータブルモード | |||||
Restart required=再起動SSが必要 | |||||
Remarks=付記 | |||||
Timeout(Sec)=タイムアウト (秒) | |||||
OK=OK | |||||
Cancel=キャンセル | |||||
Apply=適用 | |||||
New server=新規サーバー | |||||
Move &Up=上に移動 (&U) | |||||
Move D&own=下に移動 (&O) | |||||
# Proxy Form | |||||
Edit Proxy=プロキシの編集 | |||||
Use Proxy=プロキシを利用する | |||||
Proxy Type=プロキシの種類 | |||||
Proxy Addr=プロキシアドレス | |||||
Proxy Port=プロキシポート | |||||
If server has a plugin, proxy will not be used=サーバーにプラグインがある場合、プロキシは利用されません | |||||
Use Auth=認証を利用する | |||||
Auth User=認証ユーザ | |||||
Auth Pwd=認証パスワード | |||||
# Log Form | |||||
&File=ファイル (&F) | |||||
&Open Location=ファイルの場所を開く (&O) | |||||
E&xit=終了 (&X) | |||||
&View=表示 (&V) | |||||
&Clear Logs=ログの削除 (&C) | |||||
Change &Font=フォント (&F) | |||||
&Wrap Text=右端で折り返す (&W) | |||||
&Top Most=常に最前面に表示 (&T) | |||||
&Show Toolbar=ツールバーの表示 (&S) | |||||
Log Viewer=ログビューア | |||||
Inbound=受信 | |||||
Outbound=送信 | |||||
# QRCode Form | |||||
QRCode and URL=QR コードと URL | |||||
# PAC Url Form | |||||
Edit Online PAC URL=オンライン PAC URL の編集 | |||||
Edit Online PAC URL...=オンライン PAC URL の編集... | |||||
Please input PAC Url=PAC URLを入力して下さい | |||||
# HotkeySettings Form | |||||
Switch system proxy=システム プロキシの状態を切り替える | |||||
Switch system proxy mode=プロキシモードを切り替える | |||||
Switch share over LAN=LAN からのアクセスの許可を切り替える | |||||
Show Logs=ログの表示 | |||||
Switch to prev server=前のサーバーに切り替える | |||||
Switch to next server=次のサーバーに切り替える | |||||
Reg All=全部登録する | |||||
Reg Hotkeys At Startup=起動時にホットキーを登録する | |||||
# Messages | |||||
Shadowsocks Error: {0}=Shadowsocks エラー: {0} | |||||
Port {0} already in use=ポート番号 {0} は既に使用されています。 | |||||
Port {0} is reserved by system= ポート番号 {0} はシステムによって予約されています | |||||
Invalid server address=サーバーアドレスが無効です。 | |||||
Illegal port number format=ポート番号のフォーマットが無効です。 | |||||
Illegal timeout format=タイムアウト値のフォーマットが無効です。 | |||||
Server IP can not be blank=サーバー IP が指定されていません。 | |||||
Password can not be blank=パスワードが指定されていません。 | |||||
Port out of range=ポート番号は範囲外です。 | |||||
Port can't be 8123=8123 番以外のポート番号を指定して下さい。 | |||||
Shadowsocks {0} Update Found=Shadowsocks バージョン {0} は利用できます。 | |||||
No update is available=お使いのバージョンは最新です。 | |||||
Click here to update=クリックしてアップデートします。 | |||||
Shadowsocks is here=Shadowsocks はここです。 | |||||
You can turn on/off Shadowsocks in the context menu=コンテキストメニューを使って、Shadowsocks を有効または無効にすることができます。 | |||||
System Proxy Enabled=システム プロキシが有効です。 | |||||
System Proxy Disabled=システム プロキシが無効です。 | |||||
Failed to update PAC file =PAC の更新に失敗しました。 | |||||
PAC updated=PAC を更新しました。 | |||||
No updates found. Please report to GFWList if you have problems with it.=お使いのバージョンは最新です。問題がある場合は、GFWList に報告して下さい。 | |||||
No QRCode found. Try to zoom in or move it to the center of the screen.=QR コードが見つかりませんでした。コードを大きくするか、画面の中央に移動して下さい。 | |||||
Shadowsocks is already running.=Shadowsocks 実行中 | |||||
Find Shadowsocks icon in your notify tray.=通知領域には Shadowsocks のアイコンがあります。 | |||||
If you want to start multiple Shadowsocks, make a copy in another directory.=複数起動したい場合は、プログラムファイルを別のフォルダーにコピーしてから、もう一度実行して下さい。 | |||||
Failed to decode QRCode=QR コードの読み取りに失敗しました。 | |||||
Failed to update registry=レジストリの更新に失敗しました。 | |||||
System Proxy On: =システム プロキシが有効: | |||||
Running: Port {0}=実行中:ポート {0} | |||||
Unexpected error, shadowsocks will exit. Please report to=予想外のエラーが発生したため、Shadowsocks を終了します。詳しくは下記までお問い合わせ下さい: | |||||
Unsupported operating system, use Windows Vista at least.=お使いの OS はサポートされていません。Windows Vista 以降の OS で実行して下さい。 | |||||
Unsupported .NET Framework, please update to 4.6.2 or later.=お使いの .NET Framework はサポートされていません。4.6.2 以降のバンジョーをインストールして下さい。 | |||||
Proxy request failed=プロキシ要求が失敗しました。 | |||||
Proxy handshake failed=プロキシ ハンドシェイクに失敗しました。 | |||||
Register hotkey failed=ホットキーの登錄に失敗しました。 | |||||
Cannot parse hotkey: {0}=ホットキーを解析できません: {0} | |||||
Timeout is invalid, it should not exceed {0}=タイムアウト値が無効です。{0} 以下の値を指定して下さい。 | |||||
Auth user can not be blank=認証ユーザが指定されていません。 | |||||
Auth pwd can not be blank=認証パスワードが指定されていません。 |
@@ -1,198 +0,0 @@ | |||||
# translation for Simplified Chinese | |||||
Shadowsocks=Shadowsocks | |||||
# Menu items | |||||
System Proxy=系统代理 | |||||
Disable=禁用 | |||||
PAC=PAC 模式 | |||||
Global=全局模式 | |||||
Servers=服务器 | |||||
Edit Servers...=编辑服务器... | |||||
Statistics Config...=统计配置... | |||||
Start on Boot=开机启动 | |||||
Forward Proxy...=正向代理设置... | |||||
Allow other Devices to connect=允许其他设备连入 | |||||
Local PAC=使用本地 PAC | |||||
Online PAC=使用在线 PAC | |||||
Edit Local PAC File...=编辑本地 PAC 文件... | |||||
Update Local PAC from GFWList=从 GFWList 更新本地 PAC | |||||
Edit User Rule for GFWList...=编辑 GFWList 的用户规则... | |||||
Secure Local PAC=保护本地 PAC | |||||
Copy Local PAC URL=复制本地 PAC 网址 | |||||
Share Server Config...=分享服务器配置... | |||||
Scan QRCode from Screen...=扫描屏幕上的二维码... | |||||
Import URL from Clipboard...=从剪贴板导入URL... | |||||
Availability Statistics=统计可用性 | |||||
Show Logs...=显示日志... | |||||
Verbose Logging=详细记录日志 | |||||
Updates...=更新... | |||||
Check for Updates...=检查更新 | |||||
Check for Updates at Startup=启动时检查更新 | |||||
Check Pre-release Version=检查测试版更新 | |||||
Edit Hotkeys...=编辑快捷键... | |||||
About...=关于... | |||||
Help=帮助 | |||||
Quit=退出 | |||||
Edit Servers=编辑服务器 | |||||
Load Balance=负载均衡 | |||||
High Availability=高可用 | |||||
Choose by statistics=根据统计 | |||||
# Config Form | |||||
&Add=添加(&A) | |||||
&Delete=删除(&D) | |||||
Dupli&cate=复制(&C) | |||||
Server=服务器 | |||||
Server Addr=服务器地址 | |||||
Server Port=服务器端口 | |||||
Password=密码 | |||||
Show Password=显示密码 | |||||
Encryption=加密 | |||||
Plugin Program=插件程序 | |||||
Plugin Options=插件选项 | |||||
Need Plugin Argument=需要命令行参数 | |||||
Plugin Arguments=插件参数 | |||||
Proxy Port=代理端口 | |||||
Portable Mode=便携模式 | |||||
Restart required=需要重新启动SS | |||||
Remarks=备注 | |||||
Timeout(Sec)=超时(秒) | |||||
OK=确定 | |||||
Cancel=取消 | |||||
Apply=应用 | |||||
New server=未配置的服务器 | |||||
Move &Up=上移(&U) | |||||
Move D&own=下移(&O) | |||||
#Statistics Config | |||||
Enable Statistics=启用统计 | |||||
Ping Test=Ping测试 | |||||
packages everytime=个包/次 | |||||
By hour of day=按照每天的小时数统计 | |||||
Collect data per=收集数据每 | |||||
Keep choice for=保持选择每 | |||||
minutes=分钟 | |||||
Final Score:=总分: | |||||
AverageLatency=平均延迟 | |||||
MinLatency=最小延迟 | |||||
MaxLatency=最大延迟 | |||||
AverageInboundSpeed=平均入站速度 | |||||
MinInboundSpeed=最小入站速度 | |||||
MaxInboundSpeed=最大入站速度 | |||||
AverageOutboundSpeed=平均出站速度 | |||||
MinOutboundSpeed=最小出站速度 | |||||
MaxOutboundSpeed=最大出站速度 | |||||
AverageResponse=平均响应速度 | |||||
MinResponse=最小响应速度 | |||||
MaxResponse=最大响应速度 | |||||
PackageLoss=丢包率 | |||||
Speed=速度 | |||||
Package Loss=丢包率 | |||||
Ping=网络延迟 | |||||
Chart Mode=图表模式 | |||||
24h=24小时 | |||||
all=全部 | |||||
# Proxy Form | |||||
Edit Proxy=代理设置 | |||||
Use Proxy=使用代理 | |||||
Proxy Type=代理类型 | |||||
Proxy Addr=代理地址 | |||||
Proxy Port=代理端口 | |||||
If server has a plugin, proxy will not be used=若服务器含有插件,代理将不被使用 | |||||
Use Auth=使用认证 | |||||
Auth User=认证用户 | |||||
Auth Pwd=认证密码 | |||||
# Log Form | |||||
&File=文件(&F) | |||||
&Open Location=在资源管理器中打开(&O) | |||||
E&xit=退出(&X) | |||||
&View=视图(&V) | |||||
&Clear Logs=清空日志(&C) | |||||
Change &Font=设置字体(&F) | |||||
&Wrap Text=自动换行(&W) | |||||
&Top Most=置顶(&T) | |||||
&Show Toolbar=显示工具栏(&S) | |||||
Log Viewer=日志查看器 | |||||
Inbound=入站 | |||||
Outbound=出站 | |||||
# QRCode Form | |||||
QRCode and URL=二维码与 URL | |||||
# PAC Url Form | |||||
Edit Online PAC URL=编辑在线 PAC 网址 | |||||
Edit Online PAC URL...=编辑在线 PAC 网址... | |||||
Please input PAC Url=请输入 PAC 网址 | |||||
# HotkeySettings Form | |||||
Switch system proxy=切换系统代理状态 | |||||
Switch system proxy mode=切换系统代理模式 | |||||
Switch share over LAN=切换局域网共享 | |||||
Show Logs=显示日志 | |||||
Switch to prev server=切换上个服务器 | |||||
Switch to next server=切换下个服务器 | |||||
Reg All=注册全部快捷键 | |||||
Reg Hotkeys At Startup=启动时注册快捷键 | |||||
# Messages | |||||
Shadowsocks Error: {0}=Shadowsocks 错误: {0} | |||||
Port {0} already in use=端口 {0} 已被占用 | |||||
Port {0} is reserved by system=端口 {0} 是系统保留端口 | |||||
Invalid server address=非法服务器地址 | |||||
Illegal port number format=非法端口格式 | |||||
Illegal timeout format=非法超时格式 | |||||
Server IP can not be blank=服务器 IP 不能为空 | |||||
Password can not be blank=密码不能为空 | |||||
Port out of range=端口超出范围 | |||||
Port can't be 8123=端口不能为 8123 | |||||
Shadowsocks {0} Update Found=Shadowsocks {0} 更新 | |||||
No update is available=没有可用的更新 | |||||
Click here to update=点击这里升级 | |||||
Shadowsocks is here=Shadowsocks 在这里 | |||||
You can turn on/off Shadowsocks in the context menu=可以在右键菜单中开关 Shadowsocks | |||||
System Proxy Enabled=系统代理已启用 | |||||
System Proxy Disabled=系统代理未启用 | |||||
Failed to update PAC file =更新 PAC 文件失败 | |||||
PAC updated=更新 PAC 成功 | |||||
No updates found. Please report to GFWList if you have problems with it.=未发现更新。如有问题请提交给 GFWList。 | |||||
No QRCode found. Try to zoom in or move it to the center of the screen.=未发现二维码,尝试把它放大或移动到靠近屏幕中间的位置 | |||||
Shadowsocks is already running.=Shadowsocks 已经在运行。 | |||||
Find Shadowsocks icon in your notify tray.=请在任务栏里寻找 Shadowsocks 图标。 | |||||
If you want to start multiple Shadowsocks, make a copy in another directory.=如果想同时启动多个,可以另外复制一份到别的目录。 | |||||
Failed to decode QRCode=无法解析二维码 | |||||
Failed to update registry=无法修改注册表 | |||||
System Proxy On: =系统代理已启用: | |||||
Running: Port {0}=正在运行:端口 {0} | |||||
Unexpected error, shadowsocks will exit. Please report to=非预期错误,Shadowsocks将退出。请提交此错误到 | |||||
Unsupported operating system, use Windows Vista at least.=不支持的操作系统版本,最低需求为Windows Vista。 | |||||
Unsupported .NET Framework, please update to 4.6.2 or later.=当前 .NET Framework 版本过低,请升级至4.6.2或更新版本。 | |||||
Proxy request failed=代理请求失败 | |||||
Proxy handshake failed=代理握手失败 | |||||
Register hotkey failed=注册快捷键失败 | |||||
Cannot parse hotkey: {0}=解析快捷键失败: {0} | |||||
Timeout is invalid, it should not exceed {0}=超时无效,不应超过 {0} | |||||
Operation failure=操作失败 | |||||
Auto save failed=自动保存失败 | |||||
Whether to discard unconfigured servers=是否丢弃未配置的服务器 | |||||
Invalid server address, Cannot automatically save or discard changes=非法服务器地址,无法自动保存是否丢弃修改 | |||||
Illegal port number format, Cannot automatically save or discard changes=非法端口格式,无法自动保存是否丢弃修改 | |||||
Password can not be blank, Cannot automatically save or discard changes=密码不能为空,无法自动保存是否丢弃修改 | |||||
Illegal timeout format, Cannot automatically save or discard changes=非法超时格式,无法自动保存是否丢弃修改 | |||||
Error occured when process proxy setting, do you want reset current setting and retry?=处理代理设置时发生错误,是否重置当前代理设置并重试? | |||||
Unrecoverable proxy setting error occured, see log for detail=发生不可恢复的代理设置错误,查看日志以取得详情 | |||||
Auth user can not be blank=认证用户不能为空 | |||||
Auth pwd can not be blank=认证密码不能为空 |
@@ -1,156 +0,0 @@ | |||||
# translation for Traditional Chinese | |||||
Shadowsocks=Shadowsocks | |||||
# Menu items | |||||
System Proxy=系統代理 | |||||
Disable=禁用 | |||||
PAC=PAC 模式 | |||||
Global=全局模式 | |||||
Servers=伺服器 | |||||
Edit Servers...=編輯伺服器... | |||||
Statistics Config...=統計設定檔... | |||||
Start on Boot=開機啟動 | |||||
Forward Proxy...=正向 Proxy 設定... | |||||
Allow other Devices to connect=允許其他裝置連入 | |||||
Local PAC=使用本機 PAC | |||||
Online PAC=使用線上 PAC | |||||
Edit Local PAC File...=編輯本機 PAC 檔案... | |||||
Update Local PAC from GFWList=從 GFWList 更新本機 PAC | |||||
Edit User Rule for GFWList...=編輯 GFWList 的使用者規則... | |||||
Secure Local PAC=安全本機 PAC | |||||
Copy Local PAC URL=複製本機 PAC 網址 | |||||
Share Server Config...=分享伺服器設定檔... | |||||
Scan QRCode from Screen...=掃描螢幕上的 QR 碼... | |||||
Import URL from Clipboard...=從剪貼簿匯入 URL... | |||||
Availability Statistics=統計可用性 | |||||
Show Logs...=顯示記錄檔... | |||||
Verbose Logging=詳細資訊記錄 | |||||
Updates...=更新... | |||||
Check for Updates...=檢查更新 | |||||
Check for Updates at Startup=啟動時檢查更新 | |||||
Check Pre-release Version=檢查發行前版本更新 | |||||
Edit Hotkeys...=編輯快速鍵... | |||||
About...=關於... | |||||
Help=說明 | |||||
Quit=結束 | |||||
Edit Servers=編輯伺服器 | |||||
Load Balance=負載平衡 | |||||
High Availability=高可用性 | |||||
Choose by statistics=根據統計 | |||||
# Config Form | |||||
&Add=新增 (&A) | |||||
&Delete=移除 (&D) | |||||
Dupli&cate=複製 (&C) | |||||
Server=伺服器 | |||||
Server Addr=伺服器位址 | |||||
Server Port=伺服器連接埠 | |||||
Password=密碼 | |||||
Show Password=顯示密碼 | |||||
Encryption=加密 | |||||
Plugin Program=外掛程式 | |||||
Plugin Options=外掛程式選項 | |||||
Plugin Arguments=外掛程式參數 | |||||
Proxy Port=Proxy 連接埠 | |||||
Portable Mode=便攜模式 | |||||
Restart required=需要重新啟動SS | |||||
Remarks=註解 | |||||
Timeout(Sec)=逾時 (秒) | |||||
OK=確定 | |||||
Cancel=取消 | |||||
Apply=應用 | |||||
New server=新伺服器 | |||||
Move &Up=上移 (&U) | |||||
Move D&own=下移 (&O) | |||||
# Proxy Form | |||||
Edit Proxy=編輯 Proxy | |||||
Use Proxy=使用 Proxy | |||||
Proxy Type=Proxy 類型 | |||||
Proxy Addr=Proxy 位址 | |||||
Proxy Port=Proxy 連接埠 | |||||
If server has a plugin, proxy will not be used=若伺服器含有外掛程式,Proxy 將不被使用 | |||||
Use Auth=使用認證 | |||||
Auth User=認證用戶 | |||||
Auth Pwd=認證口令 | |||||
# Log Form | |||||
&File=檔案 (&F) | |||||
&Open Location=在檔案總管中開啟 (&O) | |||||
E&xit=結束 (&X) | |||||
&View=檢視 (&V) | |||||
&Clear Logs=清除記錄檔 (&C) | |||||
Change &Font=變更字型 (&F) | |||||
&Wrap Text=自動換行 (&W) | |||||
&Top Most=置頂 (&T) | |||||
&Show Toolbar=顯示工具列 (&S) | |||||
Log Viewer=記錄檔檢視器 | |||||
Inbound=輸入 | |||||
Outbound=輸出 | |||||
# QRCode Form | |||||
QRCode and URL=QR 碼與 URL | |||||
# PAC Url Form | |||||
Edit Online PAC URL=編輯線上 PAC 網址 | |||||
Edit Online PAC URL...=編輯線上 PAC 網址... | |||||
Please input PAC Url=請輸入 PAC 網址 | |||||
# HotkeySettings Form | |||||
Switch system proxy=切換系統 Proxy 狀態 | |||||
Switch system proxy mode=切換系統 Proxy 模式 | |||||
Switch share over LAN=切換區域網路共用 | |||||
Show Logs=顯示記錄檔 | |||||
Switch to prev server=切換上一個伺服器 | |||||
Switch to next server=切換下一個伺服器 | |||||
Reg All=註冊所有快速鍵 | |||||
Reg Hotkeys At Startup=啟動時註冊快速鍵 | |||||
# Messages | |||||
Shadowsocks Error: {0}=Shadowsocks 錯誤: {0} | |||||
Port {0} already in use=連接埠號碼 {0} 已被使用 | |||||
Port {0} is reserved by system=連接埠號碼 {0} 由系統保留 | |||||
Invalid server address=無效伺服器位址 | |||||
Illegal port number format=無效連接埠號碼格式 | |||||
Illegal timeout format=無效逾時格式 | |||||
Server IP can not be blank=伺服器 IP 不能為空 | |||||
Password can not be blank=密碼不能為空 | |||||
Port out of range=連接埠號碼超出範圍 | |||||
Port can't be 8123=連接埠號碼不能為 8123 | |||||
Shadowsocks {0} Update Found=Shadowsocks {0} 更新 | |||||
No update is available=沒有可用的更新 | |||||
Click here to update=點按此處升級 | |||||
Shadowsocks is here=Shadowsocks 在這裡 | |||||
You can turn on/off Shadowsocks in the context menu=可以在右鍵選項單中開關 Shadowsocks | |||||
System Proxy Enabled=系統 Proxy 已啟用 | |||||
System Proxy Disabled=系統 Proxy 未啟用 | |||||
Failed to update PAC file =更新 PAC 檔案失敗 | |||||
PAC updated=更新 PAC 成功 | |||||
No updates found. Please report to GFWList if you have problems with it.=未發現更新。如有問題請報告至 GFWList。 | |||||
No QRCode found. Try to zoom in or move it to the center of the screen.=未發現 QR 碼,嘗試把它放大或移動到靠近熒幕中間的位置 | |||||
Shadowsocks is already running.=Shadowsocks 已經在執行。 | |||||
Find Shadowsocks icon in your notify tray.=請在工作列裡尋找 Shadowsocks 圖示。 | |||||
If you want to start multiple Shadowsocks, make a copy in another directory.=如果想同時啟動多個,可以另外複製一份至別的目錄。 | |||||
Failed to decode QRCode=QR 碼解碼失敗 | |||||
Failed to update registry=無法修改登錄檔 | |||||
System Proxy On: =系統 Proxy 已啟用: | |||||
Running: Port {0}=正在執行:連接埠號碼 {0} | |||||
Unexpected error, shadowsocks will exit. Please report to=非預期錯誤,Shadowsocks 將結束。請報告此錯誤至 | |||||
Unsupported operating system, use Windows Vista at least.=不支援的作業系統版本,最低需求為 Windows Vista。 | |||||
Unsupported .NET Framework, please update to 4.6.2 or later.=目前 .NET Framework 版本過低,最低需求為4.6.2。 | |||||
Proxy request failed=Proxy 要求失敗 | |||||
Proxy handshake failed=Proxy 交握失敗 | |||||
Register hotkey failed=註冊快速鍵失敗 | |||||
Cannot parse hotkey: {0}=剖析快速鍵失敗: {0} | |||||
Timeout is invalid, it should not exceed {0}=逾時無效,不應超過 {0} | |||||
Auth user can not be blank=認證用戶不能為空 | |||||
Auth pwd can not be blank=認證口令不能為空 |
@@ -1,326 +1,259 @@ | |||||
//------------------------------------------------------------------------------ | |||||
// <auto-generated> | |||||
// 此代码由工具生成。 | |||||
// 运行时版本:4.0.30319.42000 | |||||
// | |||||
// 对此文件的更改可能会导致不正确的行为,并且如果 | |||||
// 重新生成代码,这些更改将会丢失。 | |||||
// </auto-generated> | |||||
//------------------------------------------------------------------------------ | |||||
namespace Shadowsocks.Properties { | |||||
using System; | |||||
/// <summary> | |||||
/// 一个强类型的资源类,用于查找本地化的字符串等。 | |||||
/// </summary> | |||||
// 此类是由 StronglyTypedResourceBuilder | |||||
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 | |||||
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen | |||||
// (以 /str 作为命令选项),或重新生成 VS 项目。 | |||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] | |||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] | |||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] | |||||
internal class Resources { | |||||
private static global::System.Resources.ResourceManager resourceMan; | |||||
private static global::System.Globalization.CultureInfo resourceCulture; | |||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] | |||||
internal Resources() { | |||||
} | |||||
/// <summary> | |||||
/// 返回此类使用的缓存的 ResourceManager 实例。 | |||||
/// </summary> | |||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] | |||||
internal static global::System.Resources.ResourceManager ResourceManager { | |||||
get { | |||||
if (object.ReferenceEquals(resourceMan, null)) { | |||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Shadowsocks.Properties.Resources", typeof(Resources).Assembly); | |||||
resourceMan = temp; | |||||
} | |||||
return resourceMan; | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 重写当前线程的 CurrentUICulture 属性 | |||||
/// 重写当前线程的 CurrentUICulture 属性。 | |||||
/// </summary> | |||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] | |||||
internal static global::System.Globalization.CultureInfo Culture { | |||||
get { | |||||
return resourceCulture; | |||||
} | |||||
set { | |||||
resourceCulture = value; | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 查找类似 /* eslint-disable */ | |||||
///// Was generated by gfwlist2pac in precise mode | |||||
///// https://github.com/clowwindy/gfwlist2pac | |||||
/// | |||||
///// 2019-10-06: More 'javascript' way to interaction with main program | |||||
///// 2019-02-08: Updated to support shadowsocks-windows user rules. | |||||
/// | |||||
///var proxy = __PROXY__; | |||||
///var userrules = __USERRULES__; | |||||
///var rules = __RULES__; | |||||
/// | |||||
////* | |||||
///* This file is part of Adblock Plus <http://adblockplus.org/>, | |||||
///* Copyright (C) 2006-2014 Eyeo GmbH | |||||
///* | |||||
///* Adblock Plus is free software: you can redistribute it and/or [字符串的其余部分被截断]"; 的本地化字符串。 | |||||
/// </summary> | |||||
internal static string abp_js { | |||||
get { | |||||
return ResourceManager.GetString("abp_js", resourceCulture); | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 查找类似 var __USERRULES__ = []; | |||||
///var __RULES__ = [ | |||||
/// "|http://85.17.73.31/", | |||||
/// "||agnesb.fr", | |||||
/// "||akiba-web.com", | |||||
/// "||altrec.com", | |||||
/// "||angela-merkel.de", | |||||
/// "||angola.org", | |||||
/// "||apartmentratings.com", | |||||
/// "||apartments.com", | |||||
/// "||arena.taipei", | |||||
/// "||asianspiss.com", | |||||
/// "||assimp.org", | |||||
/// "||athenaeizou.com", | |||||
/// "||azubu.tv", | |||||
/// "||bankmobilevibe.com", | |||||
/// "||banorte.com", | |||||
/// "||bash-hackers.org", | |||||
/// "||beeg.com", | |||||
/// "||global.bing.com", | |||||
/// "||bloombergview.com", | |||||
/// " [字符串的其余部分被截断]"; 的本地化字符串。 | |||||
/// </summary> | |||||
internal static string default_abp_rule { | |||||
get { | |||||
return ResourceManager.GetString("default_abp_rule", resourceCulture); | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 查找类似 # translation for Japanese | |||||
/// | |||||
///Shadowsocks=Shadowsocks | |||||
/// | |||||
///# Menu items | |||||
/// | |||||
///System Proxy=システムプロキシ | |||||
///Disable=無効 | |||||
///PAC=PAC | |||||
///Global=全般 | |||||
///Servers=サーバー | |||||
///Edit Servers...=サーバーの編集... | |||||
///Statistics Config...=統計情報の設定... | |||||
///Start on Boot=システムと同時に起動 | |||||
///Forward Proxy...=フォワードプロキシの設定... | |||||
///Allow other Devices to connect=他のデバイスからの接続を許可する | |||||
///Local PAC=ローカル PAC | |||||
///Online PAC=オンライン PAC | |||||
///Edit Local PAC File...=ローカル PAC ファイルの編集... | |||||
///Update Local PAC from GFWList=GFWList からローカル PAC を更新 | |||||
///Edit User Rule for GFWList...=ユーザールールの編集... | |||||
///Secure Local PA [字符串的其余部分被截断]"; 的本地化字符串。 | |||||
/// </summary> | |||||
internal static string ja { | |||||
get { | |||||
return ResourceManager.GetString("ja", resourceCulture); | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 查找 System.Byte[] 类型的本地化资源。 | |||||
/// </summary> | |||||
internal static byte[] libsscrypto_dll { | |||||
get { | |||||
object obj = ResourceManager.GetObject("libsscrypto_dll", resourceCulture); | |||||
return ((byte[])(obj)); | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 查找类似 listen-address __PRIVOXY_BIND_IP__:__PRIVOXY_BIND_PORT__ | |||||
///toggle 0 | |||||
///logfile ss_privoxy.log | |||||
///show-on-task-bar 0 | |||||
///activity-animation 0 | |||||
///forward-socks5 / __SOCKS_HOST__:__SOCKS_PORT__ . | |||||
///max-client-connections 2048 | |||||
///hide-console | |||||
/// 的本地化字符串。 | |||||
/// </summary> | |||||
internal static string privoxy_conf { | |||||
get { | |||||
return ResourceManager.GetString("privoxy_conf", resourceCulture); | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 查找 System.Byte[] 类型的本地化资源。 | |||||
/// </summary> | |||||
internal static byte[] privoxy_exe { | |||||
get { | |||||
object obj = ResourceManager.GetObject("privoxy_exe", resourceCulture); | |||||
return ((byte[])(obj)); | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 查找 System.Drawing.Bitmap 类型的本地化资源。 | |||||
/// </summary> | |||||
internal static System.Drawing.Bitmap ss32Fill { | |||||
get { | |||||
object obj = ResourceManager.GetObject("ss32Fill", resourceCulture); | |||||
return ((System.Drawing.Bitmap)(obj)); | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 查找 System.Drawing.Bitmap 类型的本地化资源。 | |||||
/// </summary> | |||||
internal static System.Drawing.Bitmap ss32In { | |||||
get { | |||||
object obj = ResourceManager.GetObject("ss32In", resourceCulture); | |||||
return ((System.Drawing.Bitmap)(obj)); | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 查找 System.Drawing.Bitmap 类型的本地化资源。 | |||||
/// </summary> | |||||
internal static System.Drawing.Bitmap ss32Out { | |||||
get { | |||||
object obj = ResourceManager.GetObject("ss32Out", resourceCulture); | |||||
return ((System.Drawing.Bitmap)(obj)); | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 查找 System.Drawing.Bitmap 类型的本地化资源。 | |||||
/// </summary> | |||||
internal static System.Drawing.Bitmap ss32Outline { | |||||
get { | |||||
object obj = ResourceManager.GetObject("ss32Outline", resourceCulture); | |||||
return ((System.Drawing.Bitmap)(obj)); | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 查找 System.Drawing.Bitmap 类型的本地化资源。 | |||||
/// </summary> | |||||
internal static System.Drawing.Bitmap ssw128 { | |||||
get { | |||||
object obj = ResourceManager.GetObject("ssw128", resourceCulture); | |||||
return ((System.Drawing.Bitmap)(obj)); | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 查找 System.Byte[] 类型的本地化资源。 | |||||
/// </summary> | |||||
internal static byte[] sysproxy_exe { | |||||
get { | |||||
object obj = ResourceManager.GetObject("sysproxy_exe", resourceCulture); | |||||
return ((byte[])(obj)); | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 查找 System.Byte[] 类型的本地化资源。 | |||||
/// </summary> | |||||
internal static byte[] sysproxy64_exe { | |||||
get { | |||||
object obj = ResourceManager.GetObject("sysproxy64_exe", resourceCulture); | |||||
return ((byte[])(obj)); | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 查找类似 ! Put user rules line by line in this file. | |||||
///! See https://adblockplus.org/en/filter-cheatsheet | |||||
/// 的本地化字符串。 | |||||
/// </summary> | |||||
internal static string user_rule { | |||||
get { | |||||
return ResourceManager.GetString("user_rule", resourceCulture); | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 查找类似 # translation for Simplified Chinese | |||||
/// | |||||
///Shadowsocks=Shadowsocks | |||||
/// | |||||
///# Menu items | |||||
/// | |||||
///System Proxy=系统代理 | |||||
///Disable=禁用 | |||||
///PAC=PAC 模式 | |||||
///Global=全局模式 | |||||
///Servers=服务器 | |||||
///Edit Servers...=编辑服务器... | |||||
///Statistics Config...=统计配置... | |||||
///Start on Boot=开机启动 | |||||
///Forward Proxy...=正向代理设置... | |||||
///Allow other Devices to connect=允许其他设备连入 | |||||
///Local PAC=使用本地 PAC | |||||
///Online PAC=使用在线 PAC | |||||
///Edit Local PAC File...=编辑本地 PAC 文件... | |||||
///Update Local PAC from GFWList=从 GFWList 更新本地 PAC | |||||
///Edit User Rule for GFWList...=编辑 GFWList 的用户规则... | |||||
///Secure Local PAC=保护本地 PAC | |||||
///Copy Lo [字符串的其余部分被截断]"; 的本地化字符串。 | |||||
/// </summary> | |||||
internal static string zh_CN { | |||||
get { | |||||
return ResourceManager.GetString("zh_CN", resourceCulture); | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 查找类似 # translation for Traditional Chinese | |||||
/// | |||||
///Shadowsocks=Shadowsocks | |||||
/// | |||||
///# Menu items | |||||
/// | |||||
///System Proxy=系統代理 | |||||
///Disable=禁用 | |||||
///PAC=PAC 模式 | |||||
///Global=全局模式 | |||||
///Servers=伺服器 | |||||
///Edit Servers...=編輯伺服器... | |||||
///Statistics Config...=統計設定檔... | |||||
///Start on Boot=開機啟動 | |||||
///Forward Proxy...=正向 Proxy 設定... | |||||
///Allow other Devices to connect=允許其他裝置連入 | |||||
///Local PAC=使用本機 PAC | |||||
///Online PAC=使用線上 PAC | |||||
///Edit Local PAC File...=編輯本機 PAC 檔案... | |||||
///Update Local PAC from GFWList=從 GFWList 更新本機 PAC | |||||
///Edit User Rule for GFWList...=編輯 GFWList 的使用者規則... | |||||
///Secure Local PAC=安全本機 PAC /// [字符串的其余部分被截断]"; 的本地化字符串。 | |||||
/// </summary> | |||||
internal static string zh_TW { | |||||
get { | |||||
return ResourceManager.GetString("zh_TW", resourceCulture); | |||||
} | |||||
} | |||||
} | |||||
} | |||||
//------------------------------------------------------------------------------ | |||||
// <auto-generated> | |||||
// 此代码由工具生成。 | |||||
// 运行时版本:4.0.30319.42000 | |||||
// | |||||
// 对此文件的更改可能会导致不正确的行为,并且如果 | |||||
// 重新生成代码,这些更改将会丢失。 | |||||
// </auto-generated> | |||||
//------------------------------------------------------------------------------ | |||||
namespace Shadowsocks.Properties { | |||||
using System; | |||||
/// <summary> | |||||
/// 一个强类型的资源类,用于查找本地化的字符串等。 | |||||
/// </summary> | |||||
// 此类是由 StronglyTypedResourceBuilder | |||||
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 | |||||
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen | |||||
// (以 /str 作为命令选项),或重新生成 VS 项目。 | |||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] | |||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] | |||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] | |||||
internal class Resources { | |||||
private static global::System.Resources.ResourceManager resourceMan; | |||||
private static global::System.Globalization.CultureInfo resourceCulture; | |||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] | |||||
internal Resources() { | |||||
} | |||||
/// <summary> | |||||
/// 返回此类使用的缓存的 ResourceManager 实例。 | |||||
/// </summary> | |||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] | |||||
internal static global::System.Resources.ResourceManager ResourceManager { | |||||
get { | |||||
if (object.ReferenceEquals(resourceMan, null)) { | |||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Shadowsocks.Properties.Resources", typeof(Resources).Assembly); | |||||
resourceMan = temp; | |||||
} | |||||
return resourceMan; | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 重写当前线程的 CurrentUICulture 属性 | |||||
/// 重写当前线程的 CurrentUICulture 属性。 | |||||
/// </summary> | |||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] | |||||
internal static global::System.Globalization.CultureInfo Culture { | |||||
get { | |||||
return resourceCulture; | |||||
} | |||||
set { | |||||
resourceCulture = value; | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 查找类似 /* eslint-disable */ | |||||
///// Was generated by gfwlist2pac in precise mode | |||||
///// https://github.com/clowwindy/gfwlist2pac | |||||
/// | |||||
///// 2019-10-06: More 'javascript' way to interaction with main program | |||||
///// 2019-02-08: Updated to support shadowsocks-windows user rules. | |||||
/// | |||||
///var proxy = __PROXY__; | |||||
///var userrules = __USERRULES__; | |||||
///var rules = __RULES__; | |||||
/// | |||||
////* | |||||
///* This file is part of Adblock Plus <http://adblockplus.org/>, | |||||
///* Copyright (C) 2006-2014 Eyeo GmbH | |||||
///* | |||||
///* Adblock Plus is free software: you can redistribute it and/or [字符串的其余部分被截断]"; 的本地化字符串。 | |||||
/// </summary> | |||||
internal static string abp_js { | |||||
get { | |||||
return ResourceManager.GetString("abp_js", resourceCulture); | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 查找类似 var __USERRULES__ = []; | |||||
///var __RULES__ = [ | |||||
/// "|http://85.17.73.31/", | |||||
/// "||agnesb.fr", | |||||
/// "||akiba-web.com", | |||||
/// "||altrec.com", | |||||
/// "||angela-merkel.de", | |||||
/// "||angola.org", | |||||
/// "||apartmentratings.com", | |||||
/// "||apartments.com", | |||||
/// "||arena.taipei", | |||||
/// "||asianspiss.com", | |||||
/// "||assimp.org", | |||||
/// "||athenaeizou.com", | |||||
/// "||azubu.tv", | |||||
/// "||bankmobilevibe.com", | |||||
/// "||banorte.com", | |||||
/// "||bash-hackers.org", | |||||
/// "||beeg.com", | |||||
/// "||global.bing.com", | |||||
/// "||bloombergview.com", | |||||
/// " [字符串的其余部分被截断]"; 的本地化字符串。 | |||||
/// </summary> | |||||
internal static string default_abp_rule { | |||||
get { | |||||
return ResourceManager.GetString("default_abp_rule", resourceCulture); | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 查找类似 en,zh-CN,zh-TW,ja | |||||
///,,, | |||||
///Shadowsocks,Shadowsocks,Shadowsocks,Shadowsocks | |||||
///,,, | |||||
///System Proxy,系统代理,系統代理,システムプロキシ | |||||
///Disable,禁用,禁用,無効 | |||||
///PAC,PAC 模式,PAC 模式,PAC | |||||
///Global,全局模式,全局模式,全般 | |||||
///Servers,服务器,伺服器,サーバー | |||||
///Edit Servers...,编辑服务器...,編輯伺服器...,サーバーの編集... | |||||
///Statistics Config...,统计配置...,統計設定檔...,統計情報の設定... | |||||
///Start on Boot,开机启动,開機啟動,システムと同時に起動 | |||||
///Forward Proxy...,正向代理设置...,正向 Proxy 設定...,フォワードプロキシの設定... | |||||
///Allow other Devices to connect,允许其他设备连入,允許其他裝置連入,他のデバイスからの接続を許可する | |||||
///Local PAC,使用本地 PAC,使用本機 PAC,ローカル PAC | |||||
///Online PAC,使用在线 PAC,使 [字符串的其余部分被截断]"; 的本地化字符串。 | |||||
/// </summary> | |||||
internal static string i18n_csv { | |||||
get { | |||||
return ResourceManager.GetString("i18n_csv", resourceCulture); | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 查找 System.Byte[] 类型的本地化资源。 | |||||
/// </summary> | |||||
internal static byte[] libsscrypto_dll { | |||||
get { | |||||
object obj = ResourceManager.GetObject("libsscrypto_dll", resourceCulture); | |||||
return ((byte[])(obj)); | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 查找类似 listen-address __PRIVOXY_BIND_IP__:__PRIVOXY_BIND_PORT__ | |||||
///toggle 0 | |||||
///logfile ss_privoxy.log | |||||
///show-on-task-bar 0 | |||||
///activity-animation 0 | |||||
///forward-socks5 / __SOCKS_HOST__:__SOCKS_PORT__ . | |||||
///max-client-connections 2048 | |||||
///hide-console | |||||
/// 的本地化字符串。 | |||||
/// </summary> | |||||
internal static string privoxy_conf { | |||||
get { | |||||
return ResourceManager.GetString("privoxy_conf", resourceCulture); | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 查找 System.Byte[] 类型的本地化资源。 | |||||
/// </summary> | |||||
internal static byte[] privoxy_exe { | |||||
get { | |||||
object obj = ResourceManager.GetObject("privoxy_exe", resourceCulture); | |||||
return ((byte[])(obj)); | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 查找 System.Drawing.Bitmap 类型的本地化资源。 | |||||
/// </summary> | |||||
internal static System.Drawing.Bitmap ss32Fill { | |||||
get { | |||||
object obj = ResourceManager.GetObject("ss32Fill", resourceCulture); | |||||
return ((System.Drawing.Bitmap)(obj)); | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 查找 System.Drawing.Bitmap 类型的本地化资源。 | |||||
/// </summary> | |||||
internal static System.Drawing.Bitmap ss32In { | |||||
get { | |||||
object obj = ResourceManager.GetObject("ss32In", resourceCulture); | |||||
return ((System.Drawing.Bitmap)(obj)); | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 查找 System.Drawing.Bitmap 类型的本地化资源。 | |||||
/// </summary> | |||||
internal static System.Drawing.Bitmap ss32Out { | |||||
get { | |||||
object obj = ResourceManager.GetObject("ss32Out", resourceCulture); | |||||
return ((System.Drawing.Bitmap)(obj)); | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 查找 System.Drawing.Bitmap 类型的本地化资源。 | |||||
/// </summary> | |||||
internal static System.Drawing.Bitmap ss32Outline { | |||||
get { | |||||
object obj = ResourceManager.GetObject("ss32Outline", resourceCulture); | |||||
return ((System.Drawing.Bitmap)(obj)); | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 查找 System.Drawing.Bitmap 类型的本地化资源。 | |||||
/// </summary> | |||||
internal static System.Drawing.Bitmap ssw128 { | |||||
get { | |||||
object obj = ResourceManager.GetObject("ssw128", resourceCulture); | |||||
return ((System.Drawing.Bitmap)(obj)); | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 查找 System.Byte[] 类型的本地化资源。 | |||||
/// </summary> | |||||
internal static byte[] sysproxy_exe { | |||||
get { | |||||
object obj = ResourceManager.GetObject("sysproxy_exe", resourceCulture); | |||||
return ((byte[])(obj)); | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 查找 System.Byte[] 类型的本地化资源。 | |||||
/// </summary> | |||||
internal static byte[] sysproxy64_exe { | |||||
get { | |||||
object obj = ResourceManager.GetObject("sysproxy64_exe", resourceCulture); | |||||
return ((byte[])(obj)); | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 查找类似 ! Put user rules line by line in this file. | |||||
///! See https://adblockplus.org/en/filter-cheatsheet | |||||
/// 的本地化字符串。 | |||||
/// </summary> | |||||
internal static string user_rule { | |||||
get { | |||||
return ResourceManager.GetString("user_rule", resourceCulture); | |||||
} | |||||
} | |||||
} | |||||
} |
@@ -124,8 +124,8 @@ | |||||
<data name="default_abp_rule" type="System.Resources.ResXFileRef, System.Windows.Forms"> | <data name="default_abp_rule" type="System.Resources.ResXFileRef, System.Windows.Forms"> | ||||
<value>..\Data\default-abp-rule.js;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value> | <value>..\Data\default-abp-rule.js;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value> | ||||
</data> | </data> | ||||
<data name="ja" type="System.Resources.ResXFileRef, System.Windows.Forms"> | |||||
<value>..\Data\ja.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value> | |||||
<data name="i18n_csv" type="System.Resources.ResXFileRef, System.Windows.Forms"> | |||||
<value>..\Data\i18n.csv;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value> | |||||
</data> | </data> | ||||
<data name="libsscrypto_dll" type="System.Resources.ResXFileRef, System.Windows.Forms"> | <data name="libsscrypto_dll" type="System.Resources.ResXFileRef, System.Windows.Forms"> | ||||
<value>..\Data\libsscrypto.dll.gz;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | <value>..\Data\libsscrypto.dll.gz;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | ||||
@@ -160,10 +160,4 @@ | |||||
<data name="user_rule" type="System.Resources.ResXFileRef, System.Windows.Forms"> | <data name="user_rule" type="System.Resources.ResXFileRef, System.Windows.Forms"> | ||||
<value>..\data\user-rule.txt;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value> | <value>..\data\user-rule.txt;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value> | ||||
</data> | </data> | ||||
<data name="zh_CN" type="System.Resources.ResXFileRef, System.Windows.Forms"> | |||||
<value>..\data\zh_CN.txt;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value> | |||||
</data> | |||||
<data name="zh_TW" type="System.Resources.ResXFileRef, System.Windows.Forms"> | |||||
<value>..\Data\zh_TW.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value> | |||||
</data> | |||||
</root> | </root> |
@@ -1,4 +1,5 @@ | |||||
using System; | |||||
using Shadowsocks.Controller; | |||||
using System; | |||||
using System.Collections.Generic; | using System.Collections.Generic; | ||||
using System.Drawing; | using System.Drawing; | ||||
using System.Drawing.Drawing2D; | using System.Drawing.Drawing2D; | ||||
@@ -17,11 +18,21 @@ namespace Shadowsocks.Util | |||||
{ | { | ||||
return Enumerable.Empty<TControl>(); | return Enumerable.Empty<TControl>(); | ||||
} | } | ||||
var children = control.Controls.OfType<TControl>().ToList(); | var children = control.Controls.OfType<TControl>().ToList(); | ||||
return children.SelectMany(GetChildControls<TControl>).Concat(children); | return children.SelectMany(GetChildControls<TControl>).Concat(children); | ||||
} | } | ||||
public static IEnumerable<MenuItem> GetMenuItems(Menu m) | |||||
{ | |||||
if (m?.MenuItems == null || m.MenuItems.Count == 0) return Enumerable.Empty<MenuItem>(); | |||||
var children = new List<MenuItem>(); | |||||
foreach (var item in m.MenuItems) | |||||
{ | |||||
children.Add((MenuItem)item); | |||||
} | |||||
return children.SelectMany(GetMenuItems).Concat(children); | |||||
} | |||||
// Workaround NotifyIcon's 63 chars limit | // Workaround NotifyIcon's 63 chars limit | ||||
// https://stackoverflow.com/questions/579665/how-can-i-show-a-systray-tooltip-longer-than-63-chars | // https://stackoverflow.com/questions/579665/how-can-i-show-a-systray-tooltip-longer-than-63-chars | ||||
public static void SetNotifyIconText(NotifyIcon ni, string text) | public static void SetNotifyIconText(NotifyIcon ni, string text) | ||||
@@ -74,7 +85,7 @@ namespace Shadowsocks.Util | |||||
return newBitmap; | return newBitmap; | ||||
} | } | ||||
public static Bitmap ResizeBitmap (Bitmap original, int width, int height) | |||||
public static Bitmap ResizeBitmap(Bitmap original, int width, int height) | |||||
{ | { | ||||
Bitmap newBitmap = new Bitmap(width, height); | Bitmap newBitmap = new Bitmap(width, height); | ||||
using (Graphics g = Graphics.FromImage(newBitmap)) | using (Graphics g = Graphics.FromImage(newBitmap)) | ||||
@@ -1,10 +1,9 @@ | |||||
using System; | |||||
using System.Drawing; | |||||
using System.Windows.Forms; | |||||
using Shadowsocks.Controller; | using Shadowsocks.Controller; | ||||
using Shadowsocks.Model; | using Shadowsocks.Model; | ||||
using Shadowsocks.Properties; | using Shadowsocks.Properties; | ||||
using System; | |||||
using System.Drawing; | |||||
using System.Windows.Forms; | |||||
namespace Shadowsocks.View | namespace Shadowsocks.View | ||||
{ | { | ||||
@@ -40,30 +39,8 @@ namespace Shadowsocks.View | |||||
private void UpdateTexts() | private void UpdateTexts() | ||||
{ | { | ||||
AddButton.Text = I18N.GetString("&Add"); | |||||
DeleteButton.Text = I18N.GetString("&Delete"); | |||||
DuplicateButton.Text = I18N.GetString("Dupli&cate"); | |||||
IPLabel.Text = I18N.GetString("Server Addr"); | |||||
ServerPortLabel.Text = I18N.GetString("Server Port"); | |||||
PasswordLabel.Text = I18N.GetString("Password"); | |||||
ShowPasswdCheckBox.Text = I18N.GetString("Show Password"); | |||||
EncryptionLabel.Text = I18N.GetString("Encryption"); | |||||
PluginLabel.Text = I18N.GetString("Plugin Program"); | |||||
PluginOptionsLabel.Text = I18N.GetString("Plugin Options"); | |||||
PluginArgumentsLabel.Text = I18N.GetString("Plugin Arguments"); | |||||
NeedPluginArgCheckBox.Text = I18N.GetString("Need Plugin Argument"); | |||||
ProxyPortLabel.Text = I18N.GetString("Proxy Port"); | |||||
PortableModeCheckBox.Text = I18N.GetString("Portable Mode"); | |||||
I18N.TranslateForm(this); | |||||
toolTip1.SetToolTip(PortableModeCheckBox, I18N.GetString("Restart required")); | toolTip1.SetToolTip(PortableModeCheckBox, I18N.GetString("Restart required")); | ||||
RemarksLabel.Text = I18N.GetString("Remarks"); | |||||
TimeoutLabel.Text = I18N.GetString("Timeout(Sec)"); | |||||
ServerGroupBox.Text = I18N.GetString("Server"); | |||||
OKButton.Text = I18N.GetString("OK"); | |||||
MyCancelButton.Text = I18N.GetString("Cancel"); | |||||
ApplyButton.Text = I18N.GetString("Apply"); | |||||
MoveUpButton.Text = I18N.GetString("Move &Up"); | |||||
MoveDownButton.Text = I18N.GetString("Move D&own"); | |||||
Text = I18N.GetString("Edit Servers"); | |||||
} | } | ||||
private void SetupValueChangedListeners() | private void SetupValueChangedListeners() | ||||
@@ -158,7 +135,7 @@ namespace Shadowsocks.View | |||||
LoadServerNameListToUI(_modifiedConfiguration); | LoadServerNameListToUI(_modifiedConfiguration); | ||||
_lastSelectedIndex = (ServersListBox.SelectedIndex = ( _lastSelectedIndex == ServersListBox.Items.Count ? lastIndex : lastIndex - 1)); | |||||
_lastSelectedIndex = (ServersListBox.SelectedIndex = (_lastSelectedIndex == ServersListBox.Items.Count ? lastIndex : lastIndex - 1)); | |||||
ServersListBox.SelectedIndexChanged += ServersListBox_SelectedIndexChanged; | ServersListBox.SelectedIndexChanged += ServersListBox_SelectedIndexChanged; | ||||
return true; | return true; | ||||
@@ -1,13 +1,10 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using Shadowsocks.Controller; | |||||
using Shadowsocks.Model; | |||||
using Shadowsocks.Properties; | |||||
using System; | |||||
using System.Drawing; | using System.Drawing; | ||||
using System.Linq; | |||||
using System.Text; | using System.Text; | ||||
using System.Windows.Forms; | using System.Windows.Forms; | ||||
using Shadowsocks.Controller; | |||||
using Shadowsocks.Model; | |||||
using Shadowsocks.Properties; | |||||
using static Shadowsocks.Controller.HotkeyReg; | using static Shadowsocks.Controller.HotkeyReg; | ||||
namespace Shadowsocks.View | namespace Shadowsocks.View | ||||
@@ -33,18 +30,7 @@ namespace Shadowsocks.View | |||||
private void UpdateTexts() | private void UpdateTexts() | ||||
{ | { | ||||
// I18N stuff | |||||
SwitchSystemProxyLabel.Text = I18N.GetString("Switch system proxy"); | |||||
SwitchProxyModeLabel.Text = I18N.GetString("Switch system proxy mode"); | |||||
SwitchAllowLanLabel.Text = I18N.GetString("Switch share over LAN"); | |||||
ShowLogsLabel.Text = I18N.GetString("Show Logs"); | |||||
ServerMoveUpLabel.Text = I18N.GetString("Switch to prev server"); | |||||
ServerMoveDownLabel.Text = I18N.GetString("Switch to next server"); | |||||
RegHotkeysAtStartupLabel.Text = I18N.GetString("Reg Hotkeys At Startup"); | |||||
btnOK.Text = I18N.GetString("OK"); | |||||
btnCancel.Text = I18N.GetString("Cancel"); | |||||
btnRegisterAll.Text = I18N.GetString("Reg All"); | |||||
this.Text = I18N.GetString("Edit Hotkeys..."); | |||||
I18N.TranslateForm(this); | |||||
} | } | ||||
private void controller_ConfigChanged(object sender, EventArgs e) | private void controller_ConfigChanged(object sender, EventArgs e) | ||||
@@ -33,6 +33,7 @@ | |||||
this.btnCancel = new System.Windows.Forms.Button(); | this.btnCancel = new System.Windows.Forms.Button(); | ||||
this.btnRegisterAll = new System.Windows.Forms.Button(); | this.btnRegisterAll = new System.Windows.Forms.Button(); | ||||
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); | this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); | ||||
this.RegHotkeysAtStartupLabel = new System.Windows.Forms.Label(); | |||||
this.SwitchSystemProxyLabel = new System.Windows.Forms.Label(); | this.SwitchSystemProxyLabel = new System.Windows.Forms.Label(); | ||||
this.SwitchProxyModeLabel = new System.Windows.Forms.Label(); | this.SwitchProxyModeLabel = new System.Windows.Forms.Label(); | ||||
this.SwitchAllowLanLabel = new System.Windows.Forms.Label(); | this.SwitchAllowLanLabel = new System.Windows.Forms.Label(); | ||||
@@ -45,7 +46,6 @@ | |||||
this.ShowLogsTextBox = new System.Windows.Forms.TextBox(); | this.ShowLogsTextBox = new System.Windows.Forms.TextBox(); | ||||
this.ServerMoveUpTextBox = new System.Windows.Forms.TextBox(); | this.ServerMoveUpTextBox = new System.Windows.Forms.TextBox(); | ||||
this.ServerMoveDownTextBox = new System.Windows.Forms.TextBox(); | this.ServerMoveDownTextBox = new System.Windows.Forms.TextBox(); | ||||
this.RegHotkeysAtStartupLabel = new System.Windows.Forms.Label(); | |||||
this.RegHotkeysAtStartupCheckBox = new System.Windows.Forms.CheckBox(); | this.RegHotkeysAtStartupCheckBox = new System.Windows.Forms.CheckBox(); | ||||
flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel(); | flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel(); | ||||
flowLayoutPanel1.SuspendLayout(); | flowLayoutPanel1.SuspendLayout(); | ||||
@@ -59,20 +59,21 @@ | |||||
flowLayoutPanel1.Controls.Add(this.btnCancel); | flowLayoutPanel1.Controls.Add(this.btnCancel); | ||||
flowLayoutPanel1.Controls.Add(this.btnRegisterAll); | flowLayoutPanel1.Controls.Add(this.btnRegisterAll); | ||||
flowLayoutPanel1.FlowDirection = System.Windows.Forms.FlowDirection.BottomUp; | flowLayoutPanel1.FlowDirection = System.Windows.Forms.FlowDirection.BottomUp; | ||||
flowLayoutPanel1.Location = new System.Drawing.Point(0, 218); | |||||
flowLayoutPanel1.Location = new System.Drawing.Point(0, 274); | |||||
flowLayoutPanel1.Margin = new System.Windows.Forms.Padding(0); | flowLayoutPanel1.Margin = new System.Windows.Forms.Padding(0); | ||||
flowLayoutPanel1.Name = "flowLayoutPanel1"; | flowLayoutPanel1.Name = "flowLayoutPanel1"; | ||||
flowLayoutPanel1.Padding = new System.Windows.Forms.Padding(0, 0, 16, 0); | |||||
flowLayoutPanel1.Padding = new System.Windows.Forms.Padding(0, 0, 20, 0); | |||||
flowLayoutPanel1.RightToLeft = System.Windows.Forms.RightToLeft.Yes; | flowLayoutPanel1.RightToLeft = System.Windows.Forms.RightToLeft.Yes; | ||||
flowLayoutPanel1.Size = new System.Drawing.Size(475, 43); | |||||
flowLayoutPanel1.Size = new System.Drawing.Size(594, 52); | |||||
flowLayoutPanel1.TabIndex = 6; | flowLayoutPanel1.TabIndex = 6; | ||||
// | // | ||||
// btnOK | // btnOK | ||||
// | // | ||||
this.btnOK.DialogResult = System.Windows.Forms.DialogResult.OK; | this.btnOK.DialogResult = System.Windows.Forms.DialogResult.OK; | ||||
this.btnOK.Location = new System.Drawing.Point(333, 9); | |||||
this.btnOK.Location = new System.Drawing.Point(416, 9); | |||||
this.btnOK.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); | |||||
this.btnOK.Name = "btnOK"; | this.btnOK.Name = "btnOK"; | ||||
this.btnOK.Size = new System.Drawing.Size(123, 31); | |||||
this.btnOK.Size = new System.Drawing.Size(154, 39); | |||||
this.btnOK.TabIndex = 0; | this.btnOK.TabIndex = 0; | ||||
this.btnOK.Text = "OK"; | this.btnOK.Text = "OK"; | ||||
this.btnOK.UseVisualStyleBackColor = true; | this.btnOK.UseVisualStyleBackColor = true; | ||||
@@ -81,9 +82,10 @@ | |||||
// btnCancel | // btnCancel | ||||
// | // | ||||
this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; | this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; | ||||
this.btnCancel.Location = new System.Drawing.Point(204, 9); | |||||
this.btnCancel.Location = new System.Drawing.Point(254, 9); | |||||
this.btnCancel.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); | |||||
this.btnCancel.Name = "btnCancel"; | this.btnCancel.Name = "btnCancel"; | ||||
this.btnCancel.Size = new System.Drawing.Size(123, 31); | |||||
this.btnCancel.Size = new System.Drawing.Size(154, 39); | |||||
this.btnCancel.TabIndex = 1; | this.btnCancel.TabIndex = 1; | ||||
this.btnCancel.Text = "Cancel"; | this.btnCancel.Text = "Cancel"; | ||||
this.btnCancel.UseVisualStyleBackColor = true; | this.btnCancel.UseVisualStyleBackColor = true; | ||||
@@ -92,9 +94,10 @@ | |||||
// btnRegisterAll | // btnRegisterAll | ||||
// | // | ||||
this.btnRegisterAll.DialogResult = System.Windows.Forms.DialogResult.Cancel; | this.btnRegisterAll.DialogResult = System.Windows.Forms.DialogResult.Cancel; | ||||
this.btnRegisterAll.Location = new System.Drawing.Point(75, 9); | |||||
this.btnRegisterAll.Location = new System.Drawing.Point(92, 9); | |||||
this.btnRegisterAll.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); | |||||
this.btnRegisterAll.Name = "btnRegisterAll"; | this.btnRegisterAll.Name = "btnRegisterAll"; | ||||
this.btnRegisterAll.Size = new System.Drawing.Size(123, 31); | |||||
this.btnRegisterAll.Size = new System.Drawing.Size(154, 39); | |||||
this.btnRegisterAll.TabIndex = 2; | this.btnRegisterAll.TabIndex = 2; | ||||
this.btnRegisterAll.Text = "Reg All"; | this.btnRegisterAll.Text = "Reg All"; | ||||
this.btnRegisterAll.UseVisualStyleBackColor = true; | this.btnRegisterAll.UseVisualStyleBackColor = true; | ||||
@@ -122,6 +125,7 @@ | |||||
this.tableLayoutPanel1.Controls.Add(this.RegHotkeysAtStartupCheckBox, 1, 6); | this.tableLayoutPanel1.Controls.Add(this.RegHotkeysAtStartupCheckBox, 1, 6); | ||||
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; | this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; | ||||
this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); | this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); | ||||
this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); | |||||
this.tableLayoutPanel1.Name = "tableLayoutPanel1"; | this.tableLayoutPanel1.Name = "tableLayoutPanel1"; | ||||
this.tableLayoutPanel1.RowCount = 8; | this.tableLayoutPanel1.RowCount = 8; | ||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.16726F)); | this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.16726F)); | ||||
@@ -131,44 +135,56 @@ | |||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.7784F)); | this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.7784F)); | ||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.38949F)); | this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.38949F)); | ||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.16309F)); | this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.16309F)); | ||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 40F)); | |||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); | |||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); | |||||
this.tableLayoutPanel1.Size = new System.Drawing.Size(491, 261); | |||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 50F)); | |||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25F)); | |||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25F)); | |||||
this.tableLayoutPanel1.Size = new System.Drawing.Size(614, 326); | |||||
this.tableLayoutPanel1.TabIndex = 0; | this.tableLayoutPanel1.TabIndex = 0; | ||||
// | // | ||||
// RegHotkeysAtStartupLabel | |||||
// | |||||
this.RegHotkeysAtStartupLabel.AutoSize = true; | |||||
this.RegHotkeysAtStartupLabel.Dock = System.Windows.Forms.DockStyle.Right; | |||||
this.RegHotkeysAtStartupLabel.Location = new System.Drawing.Point(40, 235); | |||||
this.RegHotkeysAtStartupLabel.Margin = new System.Windows.Forms.Padding(10, 0, 10, 0); | |||||
this.RegHotkeysAtStartupLabel.Name = "RegHotkeysAtStartupLabel"; | |||||
this.RegHotkeysAtStartupLabel.Size = new System.Drawing.Size(199, 39); | |||||
this.RegHotkeysAtStartupLabel.TabIndex = 16; | |||||
this.RegHotkeysAtStartupLabel.Text = "Reg Hotkeys At Startup"; | |||||
this.RegHotkeysAtStartupLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; | |||||
// | |||||
// SwitchSystemProxyLabel | // SwitchSystemProxyLabel | ||||
// | // | ||||
this.SwitchSystemProxyLabel.AutoSize = true; | this.SwitchSystemProxyLabel.AutoSize = true; | ||||
this.SwitchSystemProxyLabel.Dock = System.Windows.Forms.DockStyle.Right; | this.SwitchSystemProxyLabel.Dock = System.Windows.Forms.DockStyle.Right; | ||||
this.SwitchSystemProxyLabel.Location = new System.Drawing.Point(50, 0); | |||||
this.SwitchSystemProxyLabel.Margin = new System.Windows.Forms.Padding(8, 0, 8, 0); | |||||
this.SwitchSystemProxyLabel.Location = new System.Drawing.Point(63, 0); | |||||
this.SwitchSystemProxyLabel.Margin = new System.Windows.Forms.Padding(10, 0, 10, 0); | |||||
this.SwitchSystemProxyLabel.Name = "SwitchSystemProxyLabel"; | this.SwitchSystemProxyLabel.Name = "SwitchSystemProxyLabel"; | ||||
this.SwitchSystemProxyLabel.Size = new System.Drawing.Size(147, 31); | |||||
this.SwitchSystemProxyLabel.Size = new System.Drawing.Size(176, 39); | |||||
this.SwitchSystemProxyLabel.TabIndex = 0; | this.SwitchSystemProxyLabel.TabIndex = 0; | ||||
this.SwitchSystemProxyLabel.Text = "Enable System Proxy"; | |||||
this.SwitchSystemProxyLabel.Text = "Switch system proxy"; | |||||
this.SwitchSystemProxyLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; | this.SwitchSystemProxyLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; | ||||
// | // | ||||
// SwitchProxyModeLabel | // SwitchProxyModeLabel | ||||
// | // | ||||
this.SwitchProxyModeLabel.AutoSize = true; | this.SwitchProxyModeLabel.AutoSize = true; | ||||
this.SwitchProxyModeLabel.Dock = System.Windows.Forms.DockStyle.Right; | this.SwitchProxyModeLabel.Dock = System.Windows.Forms.DockStyle.Right; | ||||
this.SwitchProxyModeLabel.Location = new System.Drawing.Point(8, 31); | |||||
this.SwitchProxyModeLabel.Margin = new System.Windows.Forms.Padding(8, 0, 8, 0); | |||||
this.SwitchProxyModeLabel.Location = new System.Drawing.Point(10, 39); | |||||
this.SwitchProxyModeLabel.Margin = new System.Windows.Forms.Padding(10, 0, 10, 0); | |||||
this.SwitchProxyModeLabel.Name = "SwitchProxyModeLabel"; | this.SwitchProxyModeLabel.Name = "SwitchProxyModeLabel"; | ||||
this.SwitchProxyModeLabel.Size = new System.Drawing.Size(189, 31); | |||||
this.SwitchProxyModeLabel.Size = new System.Drawing.Size(229, 39); | |||||
this.SwitchProxyModeLabel.TabIndex = 1; | this.SwitchProxyModeLabel.TabIndex = 1; | ||||
this.SwitchProxyModeLabel.Text = "Switch System Proxy Mode"; | |||||
this.SwitchProxyModeLabel.Text = "Switch system proxy mode"; | |||||
this.SwitchProxyModeLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; | this.SwitchProxyModeLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; | ||||
// | // | ||||
// SwitchAllowLanLabel | // SwitchAllowLanLabel | ||||
// | // | ||||
this.SwitchAllowLanLabel.AutoSize = true; | this.SwitchAllowLanLabel.AutoSize = true; | ||||
this.SwitchAllowLanLabel.Dock = System.Windows.Forms.DockStyle.Right; | this.SwitchAllowLanLabel.Dock = System.Windows.Forms.DockStyle.Right; | ||||
this.SwitchAllowLanLabel.Location = new System.Drawing.Point(33, 62); | |||||
this.SwitchAllowLanLabel.Margin = new System.Windows.Forms.Padding(8, 0, 8, 0); | |||||
this.SwitchAllowLanLabel.Location = new System.Drawing.Point(39, 78); | |||||
this.SwitchAllowLanLabel.Margin = new System.Windows.Forms.Padding(10, 0, 10, 0); | |||||
this.SwitchAllowLanLabel.Name = "SwitchAllowLanLabel"; | this.SwitchAllowLanLabel.Name = "SwitchAllowLanLabel"; | ||||
this.SwitchAllowLanLabel.Size = new System.Drawing.Size(164, 31); | |||||
this.SwitchAllowLanLabel.Size = new System.Drawing.Size(200, 39); | |||||
this.SwitchAllowLanLabel.TabIndex = 3; | this.SwitchAllowLanLabel.TabIndex = 3; | ||||
this.SwitchAllowLanLabel.Text = "Allow Clients from LAN"; | this.SwitchAllowLanLabel.Text = "Allow Clients from LAN"; | ||||
this.SwitchAllowLanLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; | this.SwitchAllowLanLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; | ||||
@@ -177,10 +193,10 @@ | |||||
// | // | ||||
this.ShowLogsLabel.AutoSize = true; | this.ShowLogsLabel.AutoSize = true; | ||||
this.ShowLogsLabel.Dock = System.Windows.Forms.DockStyle.Right; | this.ShowLogsLabel.Dock = System.Windows.Forms.DockStyle.Right; | ||||
this.ShowLogsLabel.Location = new System.Drawing.Point(107, 93); | |||||
this.ShowLogsLabel.Margin = new System.Windows.Forms.Padding(8, 0, 8, 0); | |||||
this.ShowLogsLabel.Location = new System.Drawing.Point(129, 117); | |||||
this.ShowLogsLabel.Margin = new System.Windows.Forms.Padding(10, 0, 10, 0); | |||||
this.ShowLogsLabel.Name = "ShowLogsLabel"; | this.ShowLogsLabel.Name = "ShowLogsLabel"; | ||||
this.ShowLogsLabel.Size = new System.Drawing.Size(90, 31); | |||||
this.ShowLogsLabel.Size = new System.Drawing.Size(110, 39); | |||||
this.ShowLogsLabel.TabIndex = 4; | this.ShowLogsLabel.TabIndex = 4; | ||||
this.ShowLogsLabel.Text = "Show Logs..."; | this.ShowLogsLabel.Text = "Show Logs..."; | ||||
this.ShowLogsLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; | this.ShowLogsLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; | ||||
@@ -189,34 +205,34 @@ | |||||
// | // | ||||
this.ServerMoveUpLabel.AutoSize = true; | this.ServerMoveUpLabel.AutoSize = true; | ||||
this.ServerMoveUpLabel.Dock = System.Windows.Forms.DockStyle.Right; | this.ServerMoveUpLabel.Dock = System.Windows.Forms.DockStyle.Right; | ||||
this.ServerMoveUpLabel.Location = new System.Drawing.Point(128, 124); | |||||
this.ServerMoveUpLabel.Margin = new System.Windows.Forms.Padding(8, 0, 8, 0); | |||||
this.ServerMoveUpLabel.Location = new System.Drawing.Point(25, 156); | |||||
this.ServerMoveUpLabel.Margin = new System.Windows.Forms.Padding(10, 0, 10, 0); | |||||
this.ServerMoveUpLabel.Name = "ServerMoveUpLabel"; | this.ServerMoveUpLabel.Name = "ServerMoveUpLabel"; | ||||
this.ServerMoveUpLabel.Size = new System.Drawing.Size(69, 32); | |||||
this.ServerMoveUpLabel.Size = new System.Drawing.Size(214, 40); | |||||
this.ServerMoveUpLabel.TabIndex = 4; | this.ServerMoveUpLabel.TabIndex = 4; | ||||
this.ServerMoveUpLabel.Text = "Move up"; | |||||
this.ServerMoveUpLabel.Text = "Switch to previous server"; | |||||
this.ServerMoveUpLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; | this.ServerMoveUpLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; | ||||
// | // | ||||
// ServerMoveDownLabel | // ServerMoveDownLabel | ||||
// | // | ||||
this.ServerMoveDownLabel.AutoSize = true; | this.ServerMoveDownLabel.AutoSize = true; | ||||
this.ServerMoveDownLabel.Dock = System.Windows.Forms.DockStyle.Right; | this.ServerMoveDownLabel.Dock = System.Windows.Forms.DockStyle.Right; | ||||
this.ServerMoveDownLabel.Location = new System.Drawing.Point(106, 156); | |||||
this.ServerMoveDownLabel.Margin = new System.Windows.Forms.Padding(8, 0, 8, 0); | |||||
this.ServerMoveDownLabel.Location = new System.Drawing.Point(60, 196); | |||||
this.ServerMoveDownLabel.Margin = new System.Windows.Forms.Padding(10, 0, 10, 0); | |||||
this.ServerMoveDownLabel.Name = "ServerMoveDownLabel"; | this.ServerMoveDownLabel.Name = "ServerMoveDownLabel"; | ||||
this.ServerMoveDownLabel.Size = new System.Drawing.Size(91, 31); | |||||
this.ServerMoveDownLabel.Size = new System.Drawing.Size(179, 39); | |||||
this.ServerMoveDownLabel.TabIndex = 4; | this.ServerMoveDownLabel.TabIndex = 4; | ||||
this.ServerMoveDownLabel.Text = "Move Down"; | |||||
this.ServerMoveDownLabel.Text = "Switch to next server"; | |||||
this.ServerMoveDownLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; | this.ServerMoveDownLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; | ||||
// | // | ||||
// SwitchSystemProxyTextBox | // SwitchSystemProxyTextBox | ||||
// | // | ||||
this.SwitchSystemProxyTextBox.Dock = System.Windows.Forms.DockStyle.Fill; | this.SwitchSystemProxyTextBox.Dock = System.Windows.Forms.DockStyle.Fill; | ||||
this.SwitchSystemProxyTextBox.Location = new System.Drawing.Point(208, 3); | |||||
this.SwitchSystemProxyTextBox.Margin = new System.Windows.Forms.Padding(3, 3, 16, 3); | |||||
this.SwitchSystemProxyTextBox.Location = new System.Drawing.Point(253, 4); | |||||
this.SwitchSystemProxyTextBox.Margin = new System.Windows.Forms.Padding(4, 4, 20, 4); | |||||
this.SwitchSystemProxyTextBox.Name = "SwitchSystemProxyTextBox"; | this.SwitchSystemProxyTextBox.Name = "SwitchSystemProxyTextBox"; | ||||
this.SwitchSystemProxyTextBox.ReadOnly = true; | this.SwitchSystemProxyTextBox.ReadOnly = true; | ||||
this.SwitchSystemProxyTextBox.Size = new System.Drawing.Size(276, 25); | |||||
this.SwitchSystemProxyTextBox.Size = new System.Drawing.Size(344, 29); | |||||
this.SwitchSystemProxyTextBox.TabIndex = 7; | this.SwitchSystemProxyTextBox.TabIndex = 7; | ||||
this.SwitchSystemProxyTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.HotkeyDown); | this.SwitchSystemProxyTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.HotkeyDown); | ||||
this.SwitchSystemProxyTextBox.KeyUp += new System.Windows.Forms.KeyEventHandler(this.HotkeyUp); | this.SwitchSystemProxyTextBox.KeyUp += new System.Windows.Forms.KeyEventHandler(this.HotkeyUp); | ||||
@@ -224,11 +240,11 @@ | |||||
// SwitchProxyModeTextBox | // SwitchProxyModeTextBox | ||||
// | // | ||||
this.SwitchProxyModeTextBox.Dock = System.Windows.Forms.DockStyle.Fill; | this.SwitchProxyModeTextBox.Dock = System.Windows.Forms.DockStyle.Fill; | ||||
this.SwitchProxyModeTextBox.Location = new System.Drawing.Point(208, 34); | |||||
this.SwitchProxyModeTextBox.Margin = new System.Windows.Forms.Padding(3, 3, 16, 3); | |||||
this.SwitchProxyModeTextBox.Location = new System.Drawing.Point(253, 43); | |||||
this.SwitchProxyModeTextBox.Margin = new System.Windows.Forms.Padding(4, 4, 20, 4); | |||||
this.SwitchProxyModeTextBox.Name = "SwitchProxyModeTextBox"; | this.SwitchProxyModeTextBox.Name = "SwitchProxyModeTextBox"; | ||||
this.SwitchProxyModeTextBox.ReadOnly = true; | this.SwitchProxyModeTextBox.ReadOnly = true; | ||||
this.SwitchProxyModeTextBox.Size = new System.Drawing.Size(276, 25); | |||||
this.SwitchProxyModeTextBox.Size = new System.Drawing.Size(344, 29); | |||||
this.SwitchProxyModeTextBox.TabIndex = 8; | this.SwitchProxyModeTextBox.TabIndex = 8; | ||||
this.SwitchProxyModeTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.HotkeyDown); | this.SwitchProxyModeTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.HotkeyDown); | ||||
this.SwitchProxyModeTextBox.KeyUp += new System.Windows.Forms.KeyEventHandler(this.HotkeyUp); | this.SwitchProxyModeTextBox.KeyUp += new System.Windows.Forms.KeyEventHandler(this.HotkeyUp); | ||||
@@ -236,11 +252,11 @@ | |||||
// SwitchAllowLanTextBox | // SwitchAllowLanTextBox | ||||
// | // | ||||
this.SwitchAllowLanTextBox.Dock = System.Windows.Forms.DockStyle.Fill; | this.SwitchAllowLanTextBox.Dock = System.Windows.Forms.DockStyle.Fill; | ||||
this.SwitchAllowLanTextBox.Location = new System.Drawing.Point(208, 65); | |||||
this.SwitchAllowLanTextBox.Margin = new System.Windows.Forms.Padding(3, 3, 16, 3); | |||||
this.SwitchAllowLanTextBox.Location = new System.Drawing.Point(253, 82); | |||||
this.SwitchAllowLanTextBox.Margin = new System.Windows.Forms.Padding(4, 4, 20, 4); | |||||
this.SwitchAllowLanTextBox.Name = "SwitchAllowLanTextBox"; | this.SwitchAllowLanTextBox.Name = "SwitchAllowLanTextBox"; | ||||
this.SwitchAllowLanTextBox.ReadOnly = true; | this.SwitchAllowLanTextBox.ReadOnly = true; | ||||
this.SwitchAllowLanTextBox.Size = new System.Drawing.Size(276, 25); | |||||
this.SwitchAllowLanTextBox.Size = new System.Drawing.Size(344, 29); | |||||
this.SwitchAllowLanTextBox.TabIndex = 10; | this.SwitchAllowLanTextBox.TabIndex = 10; | ||||
this.SwitchAllowLanTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.HotkeyDown); | this.SwitchAllowLanTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.HotkeyDown); | ||||
this.SwitchAllowLanTextBox.KeyUp += new System.Windows.Forms.KeyEventHandler(this.HotkeyUp); | this.SwitchAllowLanTextBox.KeyUp += new System.Windows.Forms.KeyEventHandler(this.HotkeyUp); | ||||
@@ -248,11 +264,11 @@ | |||||
// ShowLogsTextBox | // ShowLogsTextBox | ||||
// | // | ||||
this.ShowLogsTextBox.Dock = System.Windows.Forms.DockStyle.Fill; | this.ShowLogsTextBox.Dock = System.Windows.Forms.DockStyle.Fill; | ||||
this.ShowLogsTextBox.Location = new System.Drawing.Point(208, 96); | |||||
this.ShowLogsTextBox.Margin = new System.Windows.Forms.Padding(3, 3, 16, 3); | |||||
this.ShowLogsTextBox.Location = new System.Drawing.Point(253, 121); | |||||
this.ShowLogsTextBox.Margin = new System.Windows.Forms.Padding(4, 4, 20, 4); | |||||
this.ShowLogsTextBox.Name = "ShowLogsTextBox"; | this.ShowLogsTextBox.Name = "ShowLogsTextBox"; | ||||
this.ShowLogsTextBox.ReadOnly = true; | this.ShowLogsTextBox.ReadOnly = true; | ||||
this.ShowLogsTextBox.Size = new System.Drawing.Size(276, 25); | |||||
this.ShowLogsTextBox.Size = new System.Drawing.Size(344, 29); | |||||
this.ShowLogsTextBox.TabIndex = 11; | this.ShowLogsTextBox.TabIndex = 11; | ||||
this.ShowLogsTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.HotkeyDown); | this.ShowLogsTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.HotkeyDown); | ||||
this.ShowLogsTextBox.KeyUp += new System.Windows.Forms.KeyEventHandler(this.HotkeyUp); | this.ShowLogsTextBox.KeyUp += new System.Windows.Forms.KeyEventHandler(this.HotkeyUp); | ||||
@@ -260,11 +276,11 @@ | |||||
// ServerMoveUpTextBox | // ServerMoveUpTextBox | ||||
// | // | ||||
this.ServerMoveUpTextBox.Dock = System.Windows.Forms.DockStyle.Fill; | this.ServerMoveUpTextBox.Dock = System.Windows.Forms.DockStyle.Fill; | ||||
this.ServerMoveUpTextBox.Location = new System.Drawing.Point(208, 127); | |||||
this.ServerMoveUpTextBox.Margin = new System.Windows.Forms.Padding(3, 3, 16, 3); | |||||
this.ServerMoveUpTextBox.Location = new System.Drawing.Point(253, 160); | |||||
this.ServerMoveUpTextBox.Margin = new System.Windows.Forms.Padding(4, 4, 20, 4); | |||||
this.ServerMoveUpTextBox.Name = "ServerMoveUpTextBox"; | this.ServerMoveUpTextBox.Name = "ServerMoveUpTextBox"; | ||||
this.ServerMoveUpTextBox.ReadOnly = true; | this.ServerMoveUpTextBox.ReadOnly = true; | ||||
this.ServerMoveUpTextBox.Size = new System.Drawing.Size(276, 25); | |||||
this.ServerMoveUpTextBox.Size = new System.Drawing.Size(344, 29); | |||||
this.ServerMoveUpTextBox.TabIndex = 12; | this.ServerMoveUpTextBox.TabIndex = 12; | ||||
this.ServerMoveUpTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.HotkeyDown); | this.ServerMoveUpTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.HotkeyDown); | ||||
this.ServerMoveUpTextBox.KeyUp += new System.Windows.Forms.KeyEventHandler(this.HotkeyUp); | this.ServerMoveUpTextBox.KeyUp += new System.Windows.Forms.KeyEventHandler(this.HotkeyUp); | ||||
@@ -272,45 +288,33 @@ | |||||
// ServerMoveDownTextBox | // ServerMoveDownTextBox | ||||
// | // | ||||
this.ServerMoveDownTextBox.Dock = System.Windows.Forms.DockStyle.Fill; | this.ServerMoveDownTextBox.Dock = System.Windows.Forms.DockStyle.Fill; | ||||
this.ServerMoveDownTextBox.Location = new System.Drawing.Point(208, 159); | |||||
this.ServerMoveDownTextBox.Margin = new System.Windows.Forms.Padding(3, 3, 16, 3); | |||||
this.ServerMoveDownTextBox.Location = new System.Drawing.Point(253, 200); | |||||
this.ServerMoveDownTextBox.Margin = new System.Windows.Forms.Padding(4, 4, 20, 4); | |||||
this.ServerMoveDownTextBox.Name = "ServerMoveDownTextBox"; | this.ServerMoveDownTextBox.Name = "ServerMoveDownTextBox"; | ||||
this.ServerMoveDownTextBox.ReadOnly = true; | this.ServerMoveDownTextBox.ReadOnly = true; | ||||
this.ServerMoveDownTextBox.Size = new System.Drawing.Size(276, 25); | |||||
this.ServerMoveDownTextBox.Size = new System.Drawing.Size(344, 29); | |||||
this.ServerMoveDownTextBox.TabIndex = 13; | this.ServerMoveDownTextBox.TabIndex = 13; | ||||
this.ServerMoveDownTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.HotkeyDown); | this.ServerMoveDownTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.HotkeyDown); | ||||
this.ServerMoveDownTextBox.KeyUp += new System.Windows.Forms.KeyEventHandler(this.HotkeyUp); | this.ServerMoveDownTextBox.KeyUp += new System.Windows.Forms.KeyEventHandler(this.HotkeyUp); | ||||
// | // | ||||
// RegHotkeysAtStartupLabel | |||||
// | |||||
this.RegHotkeysAtStartupLabel.AutoSize = true; | |||||
this.RegHotkeysAtStartupLabel.Dock = System.Windows.Forms.DockStyle.Right; | |||||
this.RegHotkeysAtStartupLabel.Location = new System.Drawing.Point(32, 187); | |||||
this.RegHotkeysAtStartupLabel.Margin = new System.Windows.Forms.Padding(8, 0, 8, 0); | |||||
this.RegHotkeysAtStartupLabel.Name = "RegHotkeysAtStartupLabel"; | |||||
this.RegHotkeysAtStartupLabel.Size = new System.Drawing.Size(165, 31); | |||||
this.RegHotkeysAtStartupLabel.TabIndex = 16; | |||||
this.RegHotkeysAtStartupLabel.Text = "Reg Hotkeys At Startup"; | |||||
this.RegHotkeysAtStartupLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; | |||||
// | |||||
// RegHotkeysAtStartupCheckBox | // RegHotkeysAtStartupCheckBox | ||||
// | // | ||||
this.RegHotkeysAtStartupCheckBox.AutoSize = true; | this.RegHotkeysAtStartupCheckBox.AutoSize = true; | ||||
this.RegHotkeysAtStartupCheckBox.Location = new System.Drawing.Point(208, 196); | |||||
this.RegHotkeysAtStartupCheckBox.Margin = new System.Windows.Forms.Padding(3, 9, 9, 9); | |||||
this.RegHotkeysAtStartupCheckBox.Location = new System.Drawing.Point(253, 246); | |||||
this.RegHotkeysAtStartupCheckBox.Margin = new System.Windows.Forms.Padding(4, 11, 11, 11); | |||||
this.RegHotkeysAtStartupCheckBox.Name = "RegHotkeysAtStartupCheckBox"; | this.RegHotkeysAtStartupCheckBox.Name = "RegHotkeysAtStartupCheckBox"; | ||||
this.RegHotkeysAtStartupCheckBox.Size = new System.Drawing.Size(15, 13); | |||||
this.RegHotkeysAtStartupCheckBox.Size = new System.Drawing.Size(18, 17); | |||||
this.RegHotkeysAtStartupCheckBox.TabIndex = 17; | this.RegHotkeysAtStartupCheckBox.TabIndex = 17; | ||||
this.RegHotkeysAtStartupCheckBox.UseVisualStyleBackColor = true; | this.RegHotkeysAtStartupCheckBox.UseVisualStyleBackColor = true; | ||||
// | // | ||||
// HotkeySettingsForm | // HotkeySettingsForm | ||||
// | // | ||||
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); | |||||
this.AutoScaleDimensions = new System.Drawing.SizeF(120F, 120F); | |||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; | ||||
this.ClientSize = new System.Drawing.Size(491, 261); | |||||
this.ClientSize = new System.Drawing.Size(614, 326); | |||||
this.Controls.Add(this.tableLayoutPanel1); | this.Controls.Add(this.tableLayoutPanel1); | ||||
this.Font = new System.Drawing.Font("微软雅黑", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); | this.Font = new System.Drawing.Font("微软雅黑", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); | ||||
this.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); | |||||
this.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); | |||||
this.MaximizeBox = false; | this.MaximizeBox = false; | ||||
this.MinimizeBox = false; | this.MinimizeBox = false; | ||||
this.Name = "HotkeySettingsForm"; | this.Name = "HotkeySettingsForm"; | ||||
@@ -145,21 +145,7 @@ namespace Shadowsocks.View | |||||
private void UpdateTexts() | private void UpdateTexts() | ||||
{ | { | ||||
FileMenuItem.Text = I18N.GetString("&File"); | |||||
OpenLocationMenuItem.Text = I18N.GetString("&Open Location"); | |||||
ExitMenuItem.Text = I18N.GetString("E&xit"); | |||||
ClearLogsButton.Text = I18N.GetString("&Clear Logs"); | |||||
ChangeFontButton.Text = I18N.GetString("Change &Font"); | |||||
WrapTextCheckBox.Text = I18N.GetString("&Wrap Text"); | |||||
TopMostCheckBox.Text = I18N.GetString("&Top Most"); | |||||
ViewMenuItem.Text = I18N.GetString("&View"); | |||||
ClearLogsMenuItem.Text = I18N.GetString("&Clear Logs"); | |||||
ChangeFontMenuItem.Text = I18N.GetString("Change &Font"); | |||||
WrapTextMenuItem.Text = I18N.GetString("&Wrap Text"); | |||||
TopMostMenuItem.Text = I18N.GetString("&Top Most"); | |||||
ShowToolbarMenuItem.Text = I18N.GetString("&Show Toolbar"); | |||||
Text = I18N.GetString("Log Viewer"); | |||||
// traffic chart | |||||
I18N.TranslateForm(this); | |||||
trafficChart.Series["Inbound"].LegendText = I18N.GetString("Inbound"); | trafficChart.Series["Inbound"].LegendText = I18N.GetString("Inbound"); | ||||
trafficChart.Series["Outbound"].LegendText = I18N.GetString("Outbound"); | trafficChart.Series["Outbound"].LegendText = I18N.GetString("Outbound"); | ||||
} | } | ||||
@@ -31,18 +31,7 @@ namespace Shadowsocks.View | |||||
private void UpdateTexts() | private void UpdateTexts() | ||||
{ | { | ||||
UseProxyCheckBox.Text = I18N.GetString("Use Proxy"); | |||||
ProxyTypeLabel.Text = I18N.GetString("Proxy Type"); | |||||
ProxyAddrLabel.Text = I18N.GetString("Proxy Addr"); | |||||
ProxyPortLabel.Text = I18N.GetString("Proxy Port"); | |||||
ProxyTimeoutLabel.Text = I18N.GetString("Timeout(Sec)"); | |||||
ProxyNotificationLabel.Text = I18N.GetString("If server has a plugin, proxy will not be used"); | |||||
UseAuthCheckBox.Text = I18N.GetString("Use Auth"); | |||||
AuthUserLabel.Text = I18N.GetString("Auth User"); | |||||
AuthPwdLabel.Text = I18N.GetString("Auth Pwd"); | |||||
OKButton.Text = I18N.GetString("OK"); | |||||
MyCancelButton.Text = I18N.GetString("Cancel"); | |||||
this.Text = I18N.GetString("Edit Proxy"); | |||||
I18N.TranslateForm(this); | |||||
} | } | ||||
private void controller_ConfigChanged(object sender, EventArgs e) | private void controller_ConfigChanged(object sender, EventArgs e) | ||||
@@ -38,17 +38,7 @@ namespace Shadowsocks.View | |||||
private void UpdateTexts() | private void UpdateTexts() | ||||
{ | { | ||||
Control[] controls = new Control[] | |||||
{ | |||||
StatisticsEnabledCheckBox,PingCheckBox,PackagePerPingLabel, | |||||
byHourOfDayCheckBox,CollectDataPerLabel,MinutesLabel1,KeepChoiceForLabel,MinutesLabel2, | |||||
FinalScoreLabel,chartModeSelector,dayMode,allMode, | |||||
OKButton,CancelButton | |||||
}; | |||||
foreach (var item in controls) | |||||
{ | |||||
item.Text = I18N.GetString(item.Text); | |||||
} | |||||
I18N.TranslateForm(this); | |||||
foreach (var item in StatisticsChart.Series) | foreach (var item in StatisticsChart.Series) | ||||
{ | { | ||||
@@ -255,6 +255,7 @@ | |||||
<None Include="app.manifest"> | <None Include="app.manifest"> | ||||
<SubType>Designer</SubType> | <SubType>Designer</SubType> | ||||
</None> | </None> | ||||
<None Include="Data\i18n.csv" /> | |||||
<None Include="Data\libsscrypto.dll.gz" /> | <None Include="Data\libsscrypto.dll.gz" /> | ||||
<None Include="Data\privoxy.exe.gz" /> | <None Include="Data\privoxy.exe.gz" /> | ||||
</ItemGroup> | </ItemGroup> | ||||
@@ -270,9 +271,6 @@ | |||||
<None Include="Resources\ssw128.png" /> | <None Include="Resources\ssw128.png" /> | ||||
<Content Include="Data\abp.js" /> | <Content Include="Data\abp.js" /> | ||||
<Content Include="Data\default-abp-rule.js" /> | <Content Include="Data\default-abp-rule.js" /> | ||||
<Content Include="Data\zh_CN.txt" /> | |||||
<Content Include="Data\zh_TW.txt" /> | |||||
<Content Include="Data\ja.txt" /> | |||||
<Content Include="Data\privoxy_conf.txt" /> | <Content Include="Data\privoxy_conf.txt" /> | ||||
<Content Include="Data\user-rule.txt" /> | <Content Include="Data\user-rule.txt" /> | ||||
<None Include="FodyWeavers.xml"> | <None Include="FodyWeavers.xml"> | ||||