Browse Source

TranslateForm method, csv translation file

tags/4.1.9.0
Student Main 4 years ago
parent
commit
a210888bd3
15 changed files with 611 additions and 1032 deletions
  1. +50
    -25
      shadowsocks-csharp/Controller/I18N.cs
  2. +196
    -0
      shadowsocks-csharp/Data/i18n.csv
  3. +0
    -156
      shadowsocks-csharp/Data/ja.txt
  4. +0
    -198
      shadowsocks-csharp/Data/zh_CN.txt
  5. +0
    -156
      shadowsocks-csharp/Data/zh_TW.txt
  6. +259
    -326
      shadowsocks-csharp/Properties/Resources.Designer.cs
  7. +2
    -8
      shadowsocks-csharp/Properties/Resources.resx
  8. +14
    -3
      shadowsocks-csharp/Util/ViewUtils.cs
  9. +5
    -28
      shadowsocks-csharp/View/ConfigForm.cs
  10. +5
    -19
      shadowsocks-csharp/View/HotkeySettingsForm.cs
  11. +76
    -72
      shadowsocks-csharp/View/HotkeySettingsForm.designer.cs
  12. +1
    -15
      shadowsocks-csharp/View/LogForm.cs
  13. +1
    -12
      shadowsocks-csharp/View/ProxyForm.cs
  14. +1
    -11
      shadowsocks-csharp/View/StatisticsStrategyConfigurationForm.cs
  15. +1
    -3
      shadowsocks-csharp/shadowsocks-csharp.csproj

+ 50
- 25
shadowsocks-csharp/Controller/I18N.cs View File

@@ -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);
}
}
} }
} }

+ 196
- 0
shadowsocks-csharp/Data/i18n.csv View File

@@ -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,认证密码不能为空,認證口令不能為空,認証パスワードが指定されていません。

+ 0
- 156
shadowsocks-csharp/Data/ja.txt View File

@@ -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=認証パスワードが指定されていません。

+ 0
- 198
shadowsocks-csharp/Data/zh_CN.txt View File

@@ -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=认证密码不能为空

+ 0
- 156
shadowsocks-csharp/Data/zh_TW.txt View File

@@ -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=認證口令不能為空

+ 259
- 326
shadowsocks-csharp/Properties/Resources.Designer.cs View File

@@ -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 &apos;javascript&apos; 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 &lt;http://adblockplus.org/&gt;,
///* Copyright (C) 2006-2014 Eyeo GmbH
///*
///* Adblock Plus is free software: you can redistribute it and/or [字符串的其余部分被截断]&quot;; 的本地化字符串。
/// </summary>
internal static string abp_js {
get {
return ResourceManager.GetString("abp_js", resourceCulture);
}
}
/// <summary>
/// 查找类似 var __USERRULES__ = [];
///var __RULES__ = [
/// &quot;|http://85.17.73.31/&quot;,
/// &quot;||agnesb.fr&quot;,
/// &quot;||akiba-web.com&quot;,
/// &quot;||altrec.com&quot;,
/// &quot;||angela-merkel.de&quot;,
/// &quot;||angola.org&quot;,
/// &quot;||apartmentratings.com&quot;,
/// &quot;||apartments.com&quot;,
/// &quot;||arena.taipei&quot;,
/// &quot;||asianspiss.com&quot;,
/// &quot;||assimp.org&quot;,
/// &quot;||athenaeizou.com&quot;,
/// &quot;||azubu.tv&quot;,
/// &quot;||bankmobilevibe.com&quot;,
/// &quot;||banorte.com&quot;,
/// &quot;||bash-hackers.org&quot;,
/// &quot;||beeg.com&quot;,
/// &quot;||global.bing.com&quot;,
/// &quot;||bloombergview.com&quot;,
/// &quot; [字符串的其余部分被截断]&quot;; 的本地化字符串。
/// </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 [字符串的其余部分被截断]&quot;; 的本地化字符串。
/// </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 [字符串的其余部分被截断]&quot;; 的本地化字符串。
/// </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 /// [字符串的其余部分被截断]&quot;; 的本地化字符串。
/// </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 &apos;javascript&apos; 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 &lt;http://adblockplus.org/&gt;,
///* Copyright (C) 2006-2014 Eyeo GmbH
///*
///* Adblock Plus is free software: you can redistribute it and/or [字符串的其余部分被截断]&quot;; 的本地化字符串。
/// </summary>
internal static string abp_js {
get {
return ResourceManager.GetString("abp_js", resourceCulture);
}
}
/// <summary>
/// 查找类似 var __USERRULES__ = [];
///var __RULES__ = [
/// &quot;|http://85.17.73.31/&quot;,
/// &quot;||agnesb.fr&quot;,
/// &quot;||akiba-web.com&quot;,
/// &quot;||altrec.com&quot;,
/// &quot;||angela-merkel.de&quot;,
/// &quot;||angola.org&quot;,
/// &quot;||apartmentratings.com&quot;,
/// &quot;||apartments.com&quot;,
/// &quot;||arena.taipei&quot;,
/// &quot;||asianspiss.com&quot;,
/// &quot;||assimp.org&quot;,
/// &quot;||athenaeizou.com&quot;,
/// &quot;||azubu.tv&quot;,
/// &quot;||bankmobilevibe.com&quot;,
/// &quot;||banorte.com&quot;,
/// &quot;||bash-hackers.org&quot;,
/// &quot;||beeg.com&quot;,
/// &quot;||global.bing.com&quot;,
/// &quot;||bloombergview.com&quot;,
/// &quot; [字符串的其余部分被截断]&quot;; 的本地化字符串。
/// </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,使 [字符串的其余部分被截断]&quot;; 的本地化字符串。
/// </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);
}
}
}
}

+ 2
- 8
shadowsocks-csharp/Properties/Resources.resx View File

@@ -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>

+ 14
- 3
shadowsocks-csharp/Util/ViewUtils.cs View File

@@ -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))


+ 5
- 28
shadowsocks-csharp/View/ConfigForm.cs View File

@@ -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;


+ 5
- 19
shadowsocks-csharp/View/HotkeySettingsForm.cs View File

@@ -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)


+ 76
- 72
shadowsocks-csharp/View/HotkeySettingsForm.designer.cs View File

@@ -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";


+ 1
- 15
shadowsocks-csharp/View/LogForm.cs View File

@@ -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");
} }


+ 1
- 12
shadowsocks-csharp/View/ProxyForm.cs View File

@@ -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)


+ 1
- 11
shadowsocks-csharp/View/StatisticsStrategyConfigurationForm.cs View File

@@ -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)
{ {


+ 1
- 3
shadowsocks-csharp/shadowsocks-csharp.csproj View File

@@ -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">


Loading…
Cancel
Save