@@ -1,52 +1,77 @@ | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Collections.Generic; | |||
using System.Globalization; | |||
using System.IO; | |||
using Shadowsocks.Properties; | |||
using Shadowsocks.Util; | |||
using System.Windows.Forms; | |||
using Microsoft.VisualBasic.FileIO; | |||
namespace Shadowsocks.Controller | |||
{ | |||
using Shadowsocks.Properties; | |||
public static class I18N | |||
{ | |||
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() | |||
{ | |||
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) | |||
{ | |||
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"> | |||
<value>..\Data\default-abp-rule.js;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value> | |||
</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 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> | |||
@@ -160,10 +160,4 @@ | |||
<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> | |||
</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> |
@@ -1,4 +1,5 @@ | |||
using System; | |||
using Shadowsocks.Controller; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Drawing; | |||
using System.Drawing.Drawing2D; | |||
@@ -17,11 +18,21 @@ namespace Shadowsocks.Util | |||
{ | |||
return Enumerable.Empty<TControl>(); | |||
} | |||
var children = control.Controls.OfType<TControl>().ToList(); | |||
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 | |||
// https://stackoverflow.com/questions/579665/how-can-i-show-a-systray-tooltip-longer-than-63-chars | |||
public static void SetNotifyIconText(NotifyIcon ni, string text) | |||
@@ -74,7 +85,7 @@ namespace Shadowsocks.Util | |||
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); | |||
using (Graphics g = Graphics.FromImage(newBitmap)) | |||
@@ -1,10 +1,9 @@ | |||
using System; | |||
using System.Drawing; | |||
using System.Windows.Forms; | |||
using Shadowsocks.Controller; | |||
using Shadowsocks.Model; | |||
using Shadowsocks.Properties; | |||
using System; | |||
using System.Drawing; | |||
using System.Windows.Forms; | |||
namespace Shadowsocks.View | |||
{ | |||
@@ -40,30 +39,8 @@ namespace Shadowsocks.View | |||
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")); | |||
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() | |||
@@ -158,7 +135,7 @@ namespace Shadowsocks.View | |||
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; | |||
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.Linq; | |||
using System.Text; | |||
using System.Windows.Forms; | |||
using Shadowsocks.Controller; | |||
using Shadowsocks.Model; | |||
using Shadowsocks.Properties; | |||
using static Shadowsocks.Controller.HotkeyReg; | |||
namespace Shadowsocks.View | |||
@@ -33,18 +30,7 @@ namespace Shadowsocks.View | |||
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) | |||
@@ -33,6 +33,7 @@ | |||
this.btnCancel = new System.Windows.Forms.Button(); | |||
this.btnRegisterAll = new System.Windows.Forms.Button(); | |||
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); | |||
this.RegHotkeysAtStartupLabel = new System.Windows.Forms.Label(); | |||
this.SwitchSystemProxyLabel = new System.Windows.Forms.Label(); | |||
this.SwitchProxyModeLabel = new System.Windows.Forms.Label(); | |||
this.SwitchAllowLanLabel = new System.Windows.Forms.Label(); | |||
@@ -45,7 +46,6 @@ | |||
this.ShowLogsTextBox = new System.Windows.Forms.TextBox(); | |||
this.ServerMoveUpTextBox = 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(); | |||
flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel(); | |||
flowLayoutPanel1.SuspendLayout(); | |||
@@ -59,20 +59,21 @@ | |||
flowLayoutPanel1.Controls.Add(this.btnCancel); | |||
flowLayoutPanel1.Controls.Add(this.btnRegisterAll); | |||
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.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.Size = new System.Drawing.Size(475, 43); | |||
flowLayoutPanel1.Size = new System.Drawing.Size(594, 52); | |||
flowLayoutPanel1.TabIndex = 6; | |||
// | |||
// btnOK | |||
// | |||
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.Size = new System.Drawing.Size(123, 31); | |||
this.btnOK.Size = new System.Drawing.Size(154, 39); | |||
this.btnOK.TabIndex = 0; | |||
this.btnOK.Text = "OK"; | |||
this.btnOK.UseVisualStyleBackColor = true; | |||
@@ -81,9 +82,10 @@ | |||
// btnCancel | |||
// | |||
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.Size = new System.Drawing.Size(123, 31); | |||
this.btnCancel.Size = new System.Drawing.Size(154, 39); | |||
this.btnCancel.TabIndex = 1; | |||
this.btnCancel.Text = "Cancel"; | |||
this.btnCancel.UseVisualStyleBackColor = true; | |||
@@ -92,9 +94,10 @@ | |||
// btnRegisterAll | |||
// | |||
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.Size = new System.Drawing.Size(123, 31); | |||
this.btnRegisterAll.Size = new System.Drawing.Size(154, 39); | |||
this.btnRegisterAll.TabIndex = 2; | |||
this.btnRegisterAll.Text = "Reg All"; | |||
this.btnRegisterAll.UseVisualStyleBackColor = true; | |||
@@ -122,6 +125,7 @@ | |||
this.tableLayoutPanel1.Controls.Add(this.RegHotkeysAtStartupCheckBox, 1, 6); | |||
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; | |||
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.RowCount = 8; | |||
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.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.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; | |||
// | |||
// 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 | |||
// | |||
this.SwitchSystemProxyLabel.AutoSize = true; | |||
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.Size = new System.Drawing.Size(147, 31); | |||
this.SwitchSystemProxyLabel.Size = new System.Drawing.Size(176, 39); | |||
this.SwitchSystemProxyLabel.TabIndex = 0; | |||
this.SwitchSystemProxyLabel.Text = "Enable System Proxy"; | |||
this.SwitchSystemProxyLabel.Text = "Switch system proxy"; | |||
this.SwitchSystemProxyLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; | |||
// | |||
// SwitchProxyModeLabel | |||
// | |||
this.SwitchProxyModeLabel.AutoSize = true; | |||
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.Size = new System.Drawing.Size(189, 31); | |||
this.SwitchProxyModeLabel.Size = new System.Drawing.Size(229, 39); | |||
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; | |||
// | |||
// SwitchAllowLanLabel | |||
// | |||
this.SwitchAllowLanLabel.AutoSize = true; | |||
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.Size = new System.Drawing.Size(164, 31); | |||
this.SwitchAllowLanLabel.Size = new System.Drawing.Size(200, 39); | |||
this.SwitchAllowLanLabel.TabIndex = 3; | |||
this.SwitchAllowLanLabel.Text = "Allow Clients from LAN"; | |||
this.SwitchAllowLanLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; | |||
@@ -177,10 +193,10 @@ | |||
// | |||
this.ShowLogsLabel.AutoSize = true; | |||
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.Size = new System.Drawing.Size(90, 31); | |||
this.ShowLogsLabel.Size = new System.Drawing.Size(110, 39); | |||
this.ShowLogsLabel.TabIndex = 4; | |||
this.ShowLogsLabel.Text = "Show Logs..."; | |||
this.ShowLogsLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; | |||
@@ -189,34 +205,34 @@ | |||
// | |||
this.ServerMoveUpLabel.AutoSize = true; | |||
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.Size = new System.Drawing.Size(69, 32); | |||
this.ServerMoveUpLabel.Size = new System.Drawing.Size(214, 40); | |||
this.ServerMoveUpLabel.TabIndex = 4; | |||
this.ServerMoveUpLabel.Text = "Move up"; | |||
this.ServerMoveUpLabel.Text = "Switch to previous server"; | |||
this.ServerMoveUpLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; | |||
// | |||
// ServerMoveDownLabel | |||
// | |||
this.ServerMoveDownLabel.AutoSize = true; | |||
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.Size = new System.Drawing.Size(91, 31); | |||
this.ServerMoveDownLabel.Size = new System.Drawing.Size(179, 39); | |||
this.ServerMoveDownLabel.TabIndex = 4; | |||
this.ServerMoveDownLabel.Text = "Move Down"; | |||
this.ServerMoveDownLabel.Text = "Switch to next server"; | |||
this.ServerMoveDownLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; | |||
// | |||
// SwitchSystemProxyTextBox | |||
// | |||
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.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.KeyDown += new System.Windows.Forms.KeyEventHandler(this.HotkeyDown); | |||
this.SwitchSystemProxyTextBox.KeyUp += new System.Windows.Forms.KeyEventHandler(this.HotkeyUp); | |||
@@ -224,11 +240,11 @@ | |||
// SwitchProxyModeTextBox | |||
// | |||
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.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.KeyDown += new System.Windows.Forms.KeyEventHandler(this.HotkeyDown); | |||
this.SwitchProxyModeTextBox.KeyUp += new System.Windows.Forms.KeyEventHandler(this.HotkeyUp); | |||
@@ -236,11 +252,11 @@ | |||
// SwitchAllowLanTextBox | |||
// | |||
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.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.KeyDown += new System.Windows.Forms.KeyEventHandler(this.HotkeyDown); | |||
this.SwitchAllowLanTextBox.KeyUp += new System.Windows.Forms.KeyEventHandler(this.HotkeyUp); | |||
@@ -248,11 +264,11 @@ | |||
// ShowLogsTextBox | |||
// | |||
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.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.KeyDown += new System.Windows.Forms.KeyEventHandler(this.HotkeyDown); | |||
this.ShowLogsTextBox.KeyUp += new System.Windows.Forms.KeyEventHandler(this.HotkeyUp); | |||
@@ -260,11 +276,11 @@ | |||
// ServerMoveUpTextBox | |||
// | |||
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.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.KeyDown += new System.Windows.Forms.KeyEventHandler(this.HotkeyDown); | |||
this.ServerMoveUpTextBox.KeyUp += new System.Windows.Forms.KeyEventHandler(this.HotkeyUp); | |||
@@ -272,45 +288,33 @@ | |||
// ServerMoveDownTextBox | |||
// | |||
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.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.KeyDown += new System.Windows.Forms.KeyEventHandler(this.HotkeyDown); | |||
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 | |||
// | |||
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.Size = new System.Drawing.Size(15, 13); | |||
this.RegHotkeysAtStartupCheckBox.Size = new System.Drawing.Size(18, 17); | |||
this.RegHotkeysAtStartupCheckBox.TabIndex = 17; | |||
this.RegHotkeysAtStartupCheckBox.UseVisualStyleBackColor = true; | |||
// | |||
// 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.ClientSize = new System.Drawing.Size(491, 261); | |||
this.ClientSize = new System.Drawing.Size(614, 326); | |||
this.Controls.Add(this.tableLayoutPanel1); | |||
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.MinimizeBox = false; | |||
this.Name = "HotkeySettingsForm"; | |||
@@ -145,21 +145,7 @@ namespace Shadowsocks.View | |||
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["Outbound"].LegendText = I18N.GetString("Outbound"); | |||
} | |||
@@ -31,18 +31,7 @@ namespace Shadowsocks.View | |||
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) | |||
@@ -38,17 +38,7 @@ namespace Shadowsocks.View | |||
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) | |||
{ | |||
@@ -255,6 +255,7 @@ | |||
<None Include="app.manifest"> | |||
<SubType>Designer</SubType> | |||
</None> | |||
<None Include="Data\i18n.csv" /> | |||
<None Include="Data\libsscrypto.dll.gz" /> | |||
<None Include="Data\privoxy.exe.gz" /> | |||
</ItemGroup> | |||
@@ -270,9 +271,6 @@ | |||
<None Include="Resources\ssw128.png" /> | |||
<Content Include="Data\abp.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\user-rule.txt" /> | |||
<None Include="FodyWeavers.xml"> | |||