From 72f1507a56f1854c9bd03725f40e3dc831a0ad01 Mon Sep 17 00:00:00 2001 From: Seia-Soto Date: Fri, 27 Mar 2020 02:27:32 +0900 Subject: [PATCH 1/5] Update i18n.csv --- shadowsocks-csharp/Data/i18n.csv | 420 +++++++++++++++---------------- 1 file changed, 210 insertions(+), 210 deletions(-) diff --git a/shadowsocks-csharp/Data/i18n.csv b/shadowsocks-csharp/Data/i18n.csv index 3b50567f4..d526b2dc6 100644 --- a/shadowsocks-csharp/Data/i18n.csv +++ b/shadowsocks-csharp/Data/i18n.csv @@ -1,210 +1,210 @@ -en,ru-RU,zh-CN,zh-TW,ja -#Restart program to apply translation,,,, -#This is comment line,,,, -#Always keep language name at head of file,,,, -#Language name is output in log,,,, -"#You can find it by search ""Current language is:""",,,, -#Please use UTF-8 with BOM encoding so we can edit it in Excel,,,, -,,,, -Shadowsocks,Shadowsocks,Shadowsocks,Shadowsocks,Shadowsocks -,,,, -#Menu,,,, -,,,, -System Proxy,Системный прокси-сервер,系统代理,系統代理,システムプロキシ -Disable,Отключен,禁用,禁用,無効 -PAC,Сценарий настройки (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,ローカル PAC -Online PAC,Удаленный PAC,使用在线 PAC,使用線上 PAC,オンライン PAC -Edit Local PAC File...,Редактировать локальный PAC…,编辑本地 PAC 文件...,編輯本機 PAC 檔案...,ローカル PAC ファイルの編集... -Update Local PAC from GFWList,Обновить локальный PAC из GFWList,从 GFWList 更新本地 PAC,從 GFWList 更新本機 PAC,GFWList からローカル PAC を更新 -Edit User Rule for GFWList...,Редактировать свои правила для GFWList,编辑 GFWList 的用户规则...,編輯 GFWList 的使用者規則...,ユーザールールの編集... -Secure Local PAC,Безопасный URL локального PAC,保护本地 PAC,安全本機 PAC,ローカル PAC を保護 -Copy Local PAC URL,Копировать URL локального PAC,复制本地 PAC 网址,複製本機 PAC 網址,ローカル PAC URL をコピー -Share Server Config...,Поделиться конфигурацией сервера…,分享服务器配置...,分享伺服器設定檔...,サーバーの設定を共有... -Scan QRCode from Screen...,Сканировать QRCode с экрана…,扫描屏幕上的二维码...,掃描螢幕上的 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,На основе статистики,根据统计,根據統計,統計で選ぶ -Show Plugin Output,События плагинов в журнале,显示插件输出,, -Write translation template,Создать шаблон для перевода,写入翻译模板,, -,,,, -# Config Form,,,, -,,,, -Statistics configuration,Настройки статистики,统计配置,, -&Add,Добавить,添加(&A),新增 (&A),新規 (&A) -&Delete,Удалить,删除(&D),移除 (&D),削除 (&D) -Dupli&cate,Дублир-ть,复制(&C),複製 (&C),コピー (&C) -Server,Сервер,服务器,伺服器,サーバー -Server IP,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) -deprecated,Устаревшее,不推荐,不推薦,非推奨 -"Encryption method {0} not exist, will replace with {1}",,"加密方法{0}不存在,将使用{1}代替",, -,,,, -#Statistics Config,,,, -,,,, -Enable Statistics,Включить сбор статистики,启用统计,, -Ping Test,Проверка связи (Ping),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,Ping,网络延迟,, -Chart Mode,График,图表模式,, -24h,24ч,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,QRCode и URL,二维码与 URL,QR 碼與 URL,QR コードと URL -,,,, -# PAC Url Form,,,, -,,,, -Edit Online PAC URL,Изменение URL удаленного PAC,编辑在线 PAC 网址,編輯線上 PAC 網址,オンライン PAC URL の編集 -Edit Online PAC URL...,Редактировать URL удаленного PAC…,编辑在线 PAC 网址...,編輯線上 PAC 網址...,オンライン PAC URL の編集... -Please input PAC Url,Введите URL адрес для PAC-файла,请输入 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},Shadowsocks エラー: {0} -Port {0} already in use,Порт {0} уже используется,端口 {0} 已被占用,連接埠號碼 {0} 已被使用,ポート番号 {0} は既に使用されています。 -Port {0} is reserved by system,Порт {0} зарезервирован системой,端口 {0} 是系统保留端口,連接埠號碼 {0} 由系統保留, ポート番号 {0} はシステムによって予約されています -Invalid server address,Неверный адрес сервера,非法服务器地址,無效伺服器位址,サーバーアドレスが無効です。 -Illegal port number format,Неверный числовой формат порта,非法端口格式,無效連接埠號碼格式,ポート番号のフォーマットが無効です。 -Illegal timeout format,Неверный формат таймаута,非法超时格式,無效逾時格式,タイムアウト値のフォーマットが無効です。 -Server IP can not be blank,IP-адрес сервера не может быть пустым,服务器 IP 不能为空,伺服器 IP 不能為空,サーバー IP が指定されていません。 -Password can not be blank,Пароль не может быть пустым,密码不能为空,密碼不能為空,パスワードが指定されていません。 -Port out of range,Порт выходит за допустимый диапазон,端口超出范围,連接埠號碼超出範圍,ポート番号は範囲外です。 -Port can't be 8123,Адрес порта 8123 не может быть использован,端口不能为 8123,連接埠號碼不能為 8123,8123 番以外のポート番号を指定して下さい。 -Shadowsocks {0} Update Found,Обнаружена новая версия Shadowsocks: {0},Shadowsocks {0} 更新,Shadowsocks {0} 更新,Shadowsocks バージョン {0} は利用できます。 -No update is available,Обновлений не обнаружено,没有可用的更新,沒有可用的更新,お使いのバージョンは最新です。 -Click here to update,Нажмите сюда для обновления,点击这里升级,點按此處升級,クリックしてアップデートします。 -Shadowsocks is here,Shadowsocks находится здесь,Shadowsocks 在这里,Shadowsocks 在這裡,Shadowsocks はここです。 -You can turn on/off Shadowsocks in the context menu,Вы можете управлять Shadowsocks из контекстного меню,可以在右键菜单中开关 Shadowsocks,可以在右鍵選項單中開關 Shadowsocks,コンテキストメニューを使って、Shadowsocks を有効または無効にすることができます。 -System Proxy Enabled,Системный прокси включен,系统代理已启用,系統 Proxy 已啟用,システム プロキシが有効です。 -System Proxy Disabled,Системный прокси отключен,系统代理未启用,系統 Proxy 未啟用,システム プロキシが無効です。 -Failed to update PAC file ,Не удалось обновить PAC файл,更新 PAC 文件失败,更新 PAC 檔案失敗,PAC の更新に失敗しました。 -PAC updated,PAC файл обновлен,更新 PAC 成功,更新 PAC 成功,PAC を更新しました。 -No updates found. Please report to GFWList if you have problems with it.,Обновлений не найдено. Сообщите авторам GFWList если у вас возникли проблемы.,未发现更新。如有问题请提交给 GFWList。,未發現更新。如有問題請報告至 GFWList。,お使いのバージョンは最新です。問題がある場合は、GFWList に報告して下さい。 -No QRCode found. Try to zoom in or move it to the center of the screen.,QRCode не обнаружен. Попробуйте увеличить изображение или переместить его в центр экрана.,未发现二维码,尝试把它放大或移动到靠近屏幕中间的位置,未發現 QR 碼,嘗試把它放大或移動到靠近熒幕中間的位置,QR コードが見つかりませんでした。コードを大きくするか、画面の中央に移動して下さい。 -Shadowsocks is already running.,Shadowsocks уже запущен.,Shadowsocks 已经在运行。,Shadowsocks 已經在執行。,Shadowsocks 実行中 -Find Shadowsocks icon in your notify tray.,Значок Shadowsocks можно найти в области уведомлений.,请在任务栏里寻找 Shadowsocks 图标。,請在工作列裡尋找 Shadowsocks 圖示。,通知領域には Shadowsocks のアイコンがあります。 -"If you want to start multiple Shadowsocks, make a copy in another directory.","Если вы хотите запустить несколько копий Shadowsocks одновременно, создайте отдельную папку на каждую копию.",如果想同时启动多个,可以另外复制一份到别的目录。,如果想同時啟動多個,可以另外複製一份至別的目錄。,複数起動したい場合は、プログラムファイルを別のフォルダーにコピーしてから、もう一度実行して下さい。 -Failed to decode QRCode,Не удалось распознать QRCode,无法解析二维码,QR 碼解碼失敗,QR コードの読み取りに失敗しました。 -Failed to update registry,Не удалось обновить запись в реестре,无法修改注册表,無法修改登錄檔,レジストリの更新に失敗しました。 -System Proxy On: ,Системный прокси:,系统代理已启用:,系統 Proxy 已啟用:,システム プロキシが有効: -Running: Port {0},Запущен на порту {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。,不支援的作業系統版本,最低需求為 Windows Vista。,お使いの OS はサポートされていません。Windows Vista 以降の OS で実行して下さい。 -"Unsupported .NET Framework, please update to {0} or later.","Версия .NET Framework не поддерживается, минимальные системные требования: {0} или выше.",当前 .NET Framework 版本过低,请升级至{0}或更新版本。,目前 .NET Framework 版本過低,最低需求為{0}。,お使いの .NET Framework はサポートされていません。{0} 以降のバンジョーをインストールして下さい。 -Proxy request failed,Не удалось выполнить запрос,代理请求失败,Proxy 要求失敗,プロキシ要求が失敗しました。 -Proxy handshake failed,Не удалось выполнить хэндшейк,代理握手失败,Proxy 交握失敗,プロキシ ハンドシェイクに失敗しました。 -Register hotkey failed,Не удалось применить настройки горячих клавиш,注册快捷键失败,註冊快速鍵失敗,ホットキーの登錄に失敗しました。 -Cannot parse hotkey: {0},Не удалось распознать следующие горячие клавиши: {0},解析快捷键失败: {0},剖析快速鍵失敗: {0},ホットキーを解析できません: {0} -"Timeout is invalid, it should not exceed {0}",Таймаут не может превышать значение {0},超时无效,不应超过 {0},逾時無效,不應超過 {0},タイムアウト値が無効です。{0} 以下の値を指定して下さい。 -Cannot find the plugin program file,Файл плагина не найден,找不到插件程序文件,找不到外掛程式文件, -,,,, -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,Пароль не может быть пустым,认证密码不能为空,認證口令不能為空,認証パスワードが指定されていません。 +en,ru-RU,zh-CN,zh-TW,ja,ko +#Restart program to apply translation,,,,, +#This is comment line,,,,, +#Always keep language name at head of file,,,,, +#Language name is output in log,,,,, +"#You can find it by search ""Current language is:""",,,,, +#Please use UTF-8 with BOM encoding so we can edit it in Excel,,,,, +,,,,, +Shadowsocks,Shadowsocks,Shadowsocks,Shadowsocks,Shadowsocks,Shadowsocks +,,,,, +#Menu,,,,, +,,,,, +System Proxy,Системный прокси-сервер,系统代理,系統代理,システムプロキシ,시스템 프록시 +Disable,Отключен,禁用,禁用,無効,비활성화 +PAC,Сценарий настройки (PAC),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,ローカル PAC,로컬 PAC +Online PAC,Удаленный PAC,使用在线 PAC,使用線上 PAC,オンライン PAC,온라인 PAC +Edit Local PAC File...,Редактировать локальный PAC…,编辑本地 PAC 文件...,編輯本機 PAC 檔案...,ローカル PAC ファイルの編集...,로컬 PAC 파일 수정 +Update Local PAC from GFWList,Обновить локальный PAC из GFWList,从 GFWList 更新本地 PAC,從 GFWList 更新本機 PAC,GFWList からローカル PAC を更新,GFWList에서 로컬 PAC 파일 업데이트 +Edit User Rule for GFWList...,Редактировать свои правила для GFWList,编辑 GFWList 的用户规则...,編輯 GFWList 的使用者規則...,ユーザールールの編集...,GFWList 사용자 수정 +Secure Local PAC,Безопасный URL локального PAC,保护本地 PAC,安全本機 PAC,ローカル PAC を保護,로컬 PAC 암호화 +Copy Local PAC URL,Копировать URL локального PAC,复制本地 PAC 网址,複製本機 PAC 網址,ローカル PAC URL をコピー,로컬 PAC 파일 URL 복사 +Share Server Config...,Поделиться конфигурацией сервера…,分享服务器配置...,分享伺服器設定檔...,サーバーの設定を共有...,서버 설정 공유 +Scan QRCode from Screen...,Сканировать QRCode с экрана…,扫描屏幕上的二维码...,掃描螢幕上的 QR 碼...,画面から QR コードをスキャン...,화면에서 QR코드 스캔 +Import URL from Clipboard...,Импорт адреса из буфера обмена…,从剪贴板导入URL...,從剪貼簿匯入 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,На основе статистики,根据统计,根據統計,統計で選ぶ,통계 기반 +Show Plugin Output,События плагинов в журнале,显示插件输出,,,플러그인 출력 보이기 +Write translation template,Создать шаблон для перевода,写入翻译模板,,,번역 템플릿 쓰기 +,,,,, +# Config Form,,,,, +,,,,, +Statistics configuration,Настройки статистики,统计配置,,,통계 설정 +&Add,Добавить,添加(&A),新增 (&A),新規 (&A),추가 (&A) +&Delete,Удалить,删除(&D),移除 (&D),削除 (&D),삭제 (&D) +Dupli&cate,Дублир-ть,复制(&C),複製 (&C),コピー (&C),복제 (&C) +Server,Сервер,服务器,伺服器,サーバー,서버 +Server IP,IP-адрес,服务器地址,伺服器位址,サーバーアドレス,서버 IP +Server Port,Порт,服务器端口,伺服器連接埠,サーバーポート,서버 포트 +Password,Пароль,密码,密碼,パスワード,비밀번호 +Show Password,Показать пароль,显示密码,顯示密碼,パスワードを表示する,비밀번호 보이기 +Encryption,Шифрование,加密,加密,暗号化,암호화 +Plugin Program,Плагин,插件程序,外掛程式,プラグインプログラム,플러그인 프로그램 +Plugin Options,Опции плагина,插件选项,外掛程式選項,プラグインのオプション,플러그인 설정 +Need Plugin Argument,Требуются аргументы,需要命令行参数,,,플러그인 인자가 필요함 +Plugin Arguments,Аргументы,插件参数,外掛程式參數,プラグインの引数,플러그인 인자 +Proxy Port,Порт прокси,代理端口,Proxy 連接埠,プロキシポート,프록시 포트 +Portable Mode,Переносимый режим,便携模式,便攜模式,ポータブルモード,포터블(Portable) 모드 +Restart required,Требуется перезапуск программы,需要重新启动SS,需要重新啟動SS,再起動SSが必要,재시작 필요함 +Remarks,Примечания,备注,註解,付記,알림 +Timeout(Sec),Таймаут(сек),超时(秒),逾時 (秒),タイムアウト (秒),시간초과(Timeout) (초) +OK,ОК,确定,確定,OK,확인 +Cancel,Отмена,取消,取消,キャンセル,취소 +Apply,Применить,应用,應用,適用,적용 +New server,Новый сервер,未配置的服务器,新伺服器,新規サーバー,새 서버 +Move &Up,Выше,上移(&U),上移 (&U),上に移動 (&U),위로 (&U) +Move D&own,Ниже,下移(&O),下移 (&O),下に移動 (&O),아래로 (&O) +deprecated,Устаревшее,不推荐,不推薦,非推奨,폐기됨(deprecated) +"Encryption method {0} not exist, will replace with {1}",,加密方法{0}不存在,将使用{1}代替,,,{0} 암호화 방식이 존재하지 않으므로 {1}로 대체될 것입니다. +,,,,, +#Statistics Config,,,,, +,,,,, +Enable Statistics,Включить сбор статистики,启用统计,,,통계 활성화 +Ping Test,Проверка связи (Ping),Ping测试,,,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,Ping,网络延迟,,,Ping +Chart Mode,График,图表模式,,,차트 모드 +24h,24ч,24小时,,,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,Требуется авторизация,使用认证,使用認證,認証を利用する,서버 증명(Auth) 사용 +User Name,Пользователь,用户名,認證用戶,認証ユーザ,사용자 이름 +Auth Pwd,Пароль,认证密码,認證口令,認証パスワード,비밀번호 +,,,,, +# Log Form,,,,, +,,,,, +&File,Файл,文件(&F),檔案 (&F),ファイル (&F),파일 (&F) +&Open Location,Расположение файла,在资源管理器中打开(&O),在檔案總管中開啟 (&O),ファイルの場所を開く (&O),위치 열기 (&O) +E&xit,Выход,退出(&X),結束 (&X),終了 (&X),종료 (&X) +&View,Вид,视图(&V),檢視 (&V),表示 (&V),보기 (&V) +&Clear Logs,Очистить журнал,清空日志(&C),清除記錄檔 (&C),ログの削除 (&C),로그 초기화 (&C) +Change &Font,Шрифт…,设置字体(&F),變更字型 (&F),フォント (&F),글꼴 변경 (&F) +&Wrap Text,Перенос строк,自动换行(&W),自動換行 (&W),右端で折り返す (&W),텍스트 감싸기 (&W) +&Top Most,Поверх всех окон,置顶(&T),置頂 (&T),常に最前面に表示 (&T),상단 우선 (Top Most) (&T) +&Show Toolbar,Панель инструментов,显示工具栏(&S),顯示工具列 (&S),ツールバーの表示 (&S),툴바 보여주기 (&S) +Log Viewer,Просмотр журнала,日志查看器,記錄檔檢視器,ログビューア,로그 뷰어 +Inbound,Входящая,入站,輸入,受信,"인바운드 (Rx, 다운로드)" +Outbound,Исходящая,出站,輸出,送信,"아웃바운드 (Tx, 업로드)" +,,,,, +# QRCode Form,,,,, +,,,,, +QRCode and URL,QRCode и URL,二维码与 URL,QR 碼與 URL,QR コードと URL,QR코드와 URL +,,,,, +# PAC Url Form,,,,, +,,,,, +Edit Online PAC URL,Изменение URL удаленного PAC,编辑在线 PAC 网址,編輯線上 PAC 網址,オンライン PAC URL の編集,온라인 PAC URL 수정 +Edit Online PAC URL...,Редактировать URL удаленного PAC…,编辑在线 PAC 网址...,編輯線上 PAC 網址...,オンライン PAC URL の編集...,온라인 PAC URL 수정… +Please input PAC Url,Введите URL адрес для PAC-файла,请输入 PAC 网址,請輸入 PAC 網址,PAC URLを入力して下さい,PAC URL을 입력하세요 +,,,,, +# HotkeySettings Form,,,,, +,,,,, +Switch system proxy,ВКЛ/ВЫКЛ системный прокси-сервер,切换系统代理状态,切換系統 Proxy 狀態,システム プロキシの状態を切り替える,시스템 프록시 전환 +Switch system proxy mode,Переключение режима прокси-сервера,切换系统代理模式,切換系統 Proxy 模式,プロキシモードを切り替える,시스템 프록시 모드 전환 +Allow Clients from LAN,Общий доступ к подключению,切换局域网共享,切換區域網路共用,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},Shadowsocks エラー: {0},Shadowsocks 오류: {0} +Port {0} already in use,Порт {0} уже используется,端口 {0} 已被占用,連接埠號碼 {0} 已被使用,ポート番号 {0} は既に使用されています。,{0}번 포트는 이미 사용 중입니다. +Port {0} is reserved by system,Порт {0} зарезервирован системой,端口 {0} 是系统保留端口,連接埠號碼 {0} 由系統保留, ポート番号 {0} はシステムによって予約されています,{0}번 포트는 시스템에서 사용 중입니다. +Invalid server address,Неверный адрес сервера,非法服务器地址,無效伺服器位址,サーバーアドレスが無効です。,올바르지 않은 서버 주소입니다. +Illegal port number format,Неверный числовой формат порта,非法端口格式,無效連接埠號碼格式,ポート番号のフォーマットが無効です。,올바르지 않은 포트 번호 형식입니다. +Illegal timeout format,Неверный формат таймаута,非法超时格式,無效逾時格式,タイムアウト値のフォーマットが無効です。,올바르지 않은 시간초과(Timeout) 형식입니다. +Server IP can not be blank,IP-адрес сервера не может быть пустым,服务器 IP 不能为空,伺服器 IP 不能為空,サーバー IP が指定されていません。,서버 IP는 비어있으면 안됩니다. +Password can not be blank,Пароль не может быть пустым,密码不能为空,密碼不能為空,パスワードが指定されていません。,비밀번호는 비어있으면 안됩니다. +Port out of range,Порт выходит за допустимый диапазон,端口超出范围,連接埠號碼超出範圍,ポート番号は範囲外です。,올바른 포트 범위가 아닙니다. +Port can't be 8123,Адрес порта 8123 не может быть использован,端口不能为 8123,連接埠號碼不能為 8123,8123 番以外のポート番号を指定して下さい。,8123번 포트는 사용할 수 없습니다. +Shadowsocks {0} Update Found,Обнаружена новая версия Shadowsocks: {0},Shadowsocks {0} 更新,Shadowsocks {0} 更新,Shadowsocks バージョン {0} は利用できます。,Shadowsocks {0} 업데이트가 있습니다. +No update is available,Обновлений не обнаружено,没有可用的更新,沒有可用的更新,お使いのバージョンは最新です。,사용 가능한 업데이트가 없습니다. +Click here to update,Нажмите сюда для обновления,点击这里升级,點按此處升級,クリックしてアップデートします。,여기를 클릭하여 업데이트 +Shadowsocks is here,Shadowsocks находится здесь,Shadowsocks 在这里,Shadowsocks 在這裡,Shadowsocks はここです。,Shadowsocks는 여기에 있습니다 +You can turn on/off Shadowsocks in the context menu,Вы можете управлять Shadowsocks из контекстного меню,可以在右键菜单中开关 Shadowsocks,可以在右鍵選項單中開關 Shadowsocks,コンテキストメニューを使って、Shadowsocks を有効または無効にすることができます。,프로그램 메뉴에서 Shadowsocks를 끄고 켤 수 있습니다. +System Proxy Enabled,Системный прокси включен,系统代理已启用,系統 Proxy 已啟用,システム プロキシが有効です。,시스템 프록시가 활성화되었습니다. +System Proxy Disabled,Системный прокси отключен,系统代理未启用,系統 Proxy 未啟用,システム プロキシが無効です。,시스템 프록시가 비활성화되었습니다. +Failed to update PAC file ,Не удалось обновить PAC файл,更新 PAC 文件失败,更新 PAC 檔案失敗,PAC の更新に失敗しました。,PAC 파일을 업데이트하는데 실패했습니다. +PAC updated,PAC файл обновлен,更新 PAC 成功,更新 PAC 成功,PAC を更新しました。,PAC 파일이 업데이트되었습니다. +No updates found. Please report to GFWList if you have problems with it.,Обновлений не найдено. Сообщите авторам GFWList если у вас возникли проблемы.,未发现更新。如有问题请提交给 GFWList。,未發現更新。如有問題請報告至 GFWList。,お使いのバージョンは最新です。問題がある場合は、GFWList に報告して下さい。,사용 가능한 업데이트를 찾지 못했습니다. 문제가 있다면 GFWList로 전송해주세요. +No QRCode found. Try to zoom in or move it to the center of the screen.,QRCode не обнаружен. Попробуйте увеличить изображение или переместить его в центр экрана.,未发现二维码,尝试把它放大或移动到靠近屏幕中间的位置,未發現 QR 碼,嘗試把它放大或移動到靠近熒幕中間的位置,QR コードが見つかりませんでした。コードを大きくするか、画面の中央に移動して下さい。,QR코드를 찾을 수 없습니다. 가운데로 화면을 이동시키거나 확대해보세요. +Shadowsocks is already running.,Shadowsocks уже запущен.,Shadowsocks 已经在运行。,Shadowsocks 已經在執行。,Shadowsocks 実行中,Shadowsocks가 이미 실행 중입니다. +Find Shadowsocks icon in your notify tray.,Значок Shadowsocks можно найти в области уведомлений.,请在任务栏里寻找 Shadowsocks 图标。,請在工作列裡尋找 Shadowsocks 圖示。,通知領域には Shadowsocks のアイコンがあります。,트레이에서 Shadowsocks를 찾아주세요. +"If you want to start multiple Shadowsocks, make a copy in another directory.","Если вы хотите запустить несколько копий Shadowsocks одновременно, создайте отдельную папку на каждую копию.",如果想同时启动多个,可以另外复制一份到别的目录。,如果想同時啟動多個,可以另外複製一份至別的目錄。,複数起動したい場合は、プログラムファイルを別のフォルダーにコピーしてから、もう一度実行して下さい。,"만약 여러 개의 Shadowsocks를 사용하고 싶으시다면, 파일을 다른 곳에 복사해주세요." +Failed to decode QRCode,Не удалось распознать QRCode,无法解析二维码,QR 碼解碼失敗,QR コードの読み取りに失敗しました。,QR코드를 해석하는데에 실패했습니다. +Failed to update registry,Не удалось обновить запись в реестре,无法修改注册表,無法修改登錄檔,レジストリの更新に失敗しました。,레지스트리를 업데이트하는데에 실패했습니다. +System Proxy On: ,Системный прокси:,系统代理已启用:,系統 Proxy 已啟用:,システム プロキシが有効:,시스템 프록시 활성화됨: +Running: Port {0},Запущен на порту {0},正在运行:端口 {0},正在執行:連接埠號碼 {0},実行中:ポート {0},실행 중: 포트 {0}번 +"Unexpected error, shadowsocks will exit. Please report to","Непредвиденная ошибка, пожалуйста сообщите на",非预期错误,Shadowsocks将退出。请提交此错误到,非預期錯誤,Shadowsocks 將結束。請報告此錯誤至,予想外のエラーが発生したため、Shadowsocks を終了します。詳しくは下記までお問い合わせ下さい:,알 수 없는 오류로 Shadowsocks가 종료될 것입니다. 오류를 제보해주세요: +"Unsupported operating system, use Windows Vista at least.","Операционная система не поддерживается, минимальные системные требования: Windows Vista или выше.",不支持的操作系统版本,最低需求为Windows Vista。,不支援的作業系統版本,最低需求為 Windows Vista。,お使いの OS はサポートされていません。Windows Vista 以降の OS で実行して下さい。,"지원하지 않는 운영체제입니다, 최소한 Windows Vista가 필요합니다." +"Unsupported .NET Framework, please update to {0} or later.","Версия .NET Framework не поддерживается, минимальные системные требования: {0} или выше.",当前 .NET Framework 版本过低,请升级至{0}或更新版本。,目前 .NET Framework 版本過低,最低需求為{0}。,お使いの .NET Framework はサポートされていません。{0} 以降のバンジョーをインストールして下さい。,"지원하지 않는 .NET 프레임워크입니다, {0} 또는 상위 버전으로 업데이트해주세요." +Proxy request failed,Не удалось выполнить запрос,代理请求失败,Proxy 要求失敗,プロキシ要求が失敗しました。,프록시 요청에 실패했습니다. +Proxy handshake failed,Не удалось выполнить хэндшейк,代理握手失败,Proxy 交握失敗,プロキシ ハンドシェイクに失敗しました。,프록시 핸드쉐이크에 실패했습니다. +Register hotkey failed,Не удалось применить настройки горячих клавиш,注册快捷键失败,註冊快速鍵失敗,ホットキーの登錄に失敗しました。,단축키 등록에 실패했습니다. +Cannot parse hotkey: {0},Не удалось распознать следующие горячие клавиши: {0},解析快捷键失败: {0},剖析快速鍵失敗: {0},ホットキーを解析できません: {0},단축키를 해석할 수 없습니다: {0} +"Timeout is invalid, it should not exceed {0}",Таймаут не может превышать значение {0},超时无效,不应超过 {0},逾時無效,不應超過 {0},タイムアウト値が無効です。{0} 以下の値を指定して下さい。,"올바르지 않은 시간초과(Timeout) 설정입니다, {0}을 초과하지 않아야 합니다." +Cannot find the plugin program file,Файл плагина не найден,找不到插件程序文件,找不到外掛程式文件,,플러그인 프로그램 파일을 찾을 수 없습니다. +,,,,, +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",Неверный формат таймаута. Невозможно сохранить или отменить изменения,非法超时格式,无法自动保存,是否丢弃修改,,,"시간초과(Timeout) 형식이 올바르지 않아 자동저장할 수 없습니다, 변경 사항을 폐기하시겠습니까?" +,,,,, +"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,Пароль не может быть пустым,认证密码不能为空,認證口令不能為空,認証パスワードが指定されていません。,증명 정보의 비밀번호는 비어있을 수 없습니다. From 5bc4a0b1cc595b83f81149bf656de48f93758296 Mon Sep 17 00:00:00 2001 From: celeron533 Date: Sat, 4 Apr 2020 12:03:38 +0800 Subject: [PATCH 2/5] Fix autostart issue #2841 --- shadowsocks-csharp/Program.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/shadowsocks-csharp/Program.cs b/shadowsocks-csharp/Program.cs index e24ab322a..5b723acd6 100755 --- a/shadowsocks-csharp/Program.cs +++ b/shadowsocks-csharp/Program.cs @@ -26,6 +26,7 @@ static class Program [STAThread] static void Main(string[] args) { + Directory.SetCurrentDirectory(Application.StartupPath); // todo: initialize the NLog configuartion Model.NLogConfig.TouchAndApplyNLogConfig(); From b1acc757962688d2c6731c6507f86b392ef604d8 Mon Sep 17 00:00:00 2001 From: Rolf Kristensen Date: Sun, 5 Apr 2020 10:55:21 +0200 Subject: [PATCH 3/5] NLogConfig - TouchAndApplyNLogConfig with Exception handler --- shadowsocks-csharp/Model/NlogConfig.cs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/shadowsocks-csharp/Model/NlogConfig.cs b/shadowsocks-csharp/Model/NlogConfig.cs index 11d6d858e..27c930155 100644 --- a/shadowsocks-csharp/Model/NlogConfig.cs +++ b/shadowsocks-csharp/Model/NlogConfig.cs @@ -108,11 +108,20 @@ private static XmlNode SelectSingleNode(XmlDocument doc, string xpath) /// public static void TouchAndApplyNLogConfig() { - if (!File.Exists(NLOG_CONFIG_FILE_NAME)) + try { + if (File.Exists(NLOG_CONFIG_FILE_NAME)) + return; // NLog.config exists, and has already been loaded + File.WriteAllText(NLOG_CONFIG_FILE_NAME, Properties.Resources.NLog_config); - LogManager.LoadConfiguration(NLOG_CONFIG_FILE_NAME); } + catch (Exception ex) + { + NLog.Common.InternalLogger.Error(ex, "[shadowsocks] Failed to setup default NLog.config: {0}", NLOG_CONFIG_FILE_NAME); + return; + } + + LoadConfiguration(); // Load the new config-file } /// From 23ce58aa34103051e514b38834a9f3dc84331e88 Mon Sep 17 00:00:00 2001 From: Student Main Date: Wed, 8 Apr 2020 21:47:01 +0800 Subject: [PATCH 4/5] Tweak debug message out levels --- .../Controller/Service/TCPRelay.cs | 8 +++--- .../Controller/Service/UpdateChecker.cs | 6 ++-- .../Encryption/AEAD/AEADEncryptor.cs | 28 +++++++++---------- shadowsocks-csharp/Model/Configuration.cs | 11 ++++++-- shadowsocks-csharp/Proxy/HttpProxy.cs | 2 +- 5 files changed, 31 insertions(+), 24 deletions(-) diff --git a/shadowsocks-csharp/Controller/Service/TCPRelay.cs b/shadowsocks-csharp/Controller/Service/TCPRelay.cs index 8327bda90..23cfcba49 100644 --- a/shadowsocks-csharp/Controller/Service/TCPRelay.cs +++ b/shadowsocks-csharp/Controller/Service/TCPRelay.cs @@ -221,7 +221,7 @@ public void CreateRemote() this._server = server; /* prepare address buffer length for AEAD */ - Logger.Debug($"_addrBufLength={_addrBufLength}"); + Logger.Trace($"_addrBufLength={_addrBufLength}"); _encryptor.AddrBufLength = _addrBufLength; } @@ -798,7 +798,7 @@ private void StartPipe(AsyncSession session) PipeRemoteReceiveCallback, session); TryReadAvailableData(); - Logger.Debug($"_firstPacketLength = {_firstPacketLength}"); + Logger.Trace($"_firstPacketLength = {_firstPacketLength}"); SendToServer(_firstPacketLength, session); } catch (Exception e) @@ -837,12 +837,12 @@ private void PipeRemoteReceiveCallback(IAsyncResult ar) if (bytesToSend == 0) { // need more to decrypt - Logger.Debug("Need more to decrypt"); + Logger.Trace("Need more to decrypt"); session.Remote.BeginReceive(_remoteRecvBuffer, 0, RecvSize, SocketFlags.None, PipeRemoteReceiveCallback, session); return; } - Logger.Debug($"start sending {bytesToSend}"); + Logger.Trace($"start sending {bytesToSend}"); _connection.BeginSend(_remoteSendBuffer, 0, bytesToSend, SocketFlags.None, PipeConnectionSendCallback, new object[] { session, bytesToSend }); IStrategy strategy = _controller.GetCurrentStrategy(); diff --git a/shadowsocks-csharp/Controller/Service/UpdateChecker.cs b/shadowsocks-csharp/Controller/Service/UpdateChecker.cs index bfbc460eb..e5ed5fcaa 100644 --- a/shadowsocks-csharp/Controller/Service/UpdateChecker.cs +++ b/shadowsocks-csharp/Controller/Service/UpdateChecker.cs @@ -62,7 +62,7 @@ public void CheckUpdate(Configuration config) try { - logger.Debug("Checking updates..."); + logger.Info("Checking updates..."); WebClient http = CreateWebClient(); http.DownloadStringCompleted += http_DownloadStringCompleted; http.DownloadStringAsync(new Uri(UpdateURL)); @@ -119,7 +119,7 @@ private void http_DownloadStringCompleted(object sender, DownloadStringCompleted } else { - logger.Debug("No update is available"); + logger.Info("No update is available"); if (CheckUpdateCompleted != null) { CheckUpdateCompleted(this, new EventArgs()); @@ -156,7 +156,7 @@ private void Http_DownloadFileCompleted(object sender, System.ComponentModel.Asy logger.LogUsefulException(e.Error); return; } - logger.Debug($"New version {LatestVersionNumber}{LatestVersionSuffix} found: {LatestVersionLocalName}"); + logger.Info($"New version {LatestVersionNumber}{LatestVersionSuffix} found: {LatestVersionLocalName}"); if (CheckUpdateCompleted != null) { CheckUpdateCompleted(this, new EventArgs()); diff --git a/shadowsocks-csharp/Encryption/AEAD/AEADEncryptor.cs b/shadowsocks-csharp/Encryption/AEAD/AEADEncryptor.cs index 2acd54bde..47fe58651 100644 --- a/shadowsocks-csharp/Encryption/AEAD/AEADEncryptor.cs +++ b/shadowsocks-csharp/Encryption/AEAD/AEADEncryptor.cs @@ -141,7 +141,7 @@ public override void Encrypt(byte[] buf, int length, byte[] outbuf, out int outl _encCircularBuffer.Put(buf, 0, length); outlength = 0; - logger.Debug("---Start Encryption"); + logger.Trace("---Start Encryption"); if (! _encryptSaltSent) { _encryptSaltSent = true; // Generate salt @@ -150,7 +150,7 @@ public override void Encrypt(byte[] buf, int length, byte[] outbuf, out int outl InitCipher(saltBytes, true, false); Array.Copy(saltBytes, 0, outbuf, 0, saltLen); outlength = saltLen; - logger.Debug($"_encryptSaltSent outlength {outlength}"); + logger.Trace($"_encryptSaltSent outlength {outlength}"); } if (! _tcpRequestSent) { @@ -163,7 +163,7 @@ public override void Encrypt(byte[] buf, int length, byte[] outbuf, out int outl Debug.Assert(encAddrBufLength == AddrBufLength + tagLen * 2 + CHUNK_LEN_BYTES); Array.Copy(encAddrBufBytes, 0, outbuf, outlength, encAddrBufLength); outlength += encAddrBufLength; - logger.Debug($"_tcpRequestSent outlength {outlength}"); + logger.Trace($"_tcpRequestSent outlength {outlength}"); } // handle other chunks @@ -178,15 +178,15 @@ public override void Encrypt(byte[] buf, int length, byte[] outbuf, out int outl Debug.Assert(encChunkLength == chunklength + tagLen * 2 + CHUNK_LEN_BYTES); Buffer.BlockCopy(encChunkBytes, 0, outbuf, outlength, encChunkLength); outlength += encChunkLength; - logger.Debug("chunks enc outlength " + outlength); + logger.Trace("chunks enc outlength " + outlength); // check if we have enough space for outbuf if (outlength + TCPHandler.ChunkOverheadSize > TCPHandler.BufferSize) { - logger.Debug("enc outbuf almost full, giving up"); + logger.Trace("enc outbuf almost full, giving up"); return; } bufSize = (uint)_encCircularBuffer.Size; if (bufSize <= 0) { - logger.Debug("No more data to encrypt, leaving"); + logger.Trace("No more data to encrypt, leaving"); return; } } @@ -201,7 +201,7 @@ public override void Decrypt(byte[] buf, int length, byte[] outbuf, out int outl // drop all into buffer _decCircularBuffer.Put(buf, 0, length); - logger.Debug("---Start Decryption"); + logger.Trace("---Start Decryption"); if (! _decryptSaltReceived) { bufSize = _decCircularBuffer.Size; // check if we get the leading salt @@ -212,7 +212,7 @@ public override void Decrypt(byte[] buf, int length, byte[] outbuf, out int outl _decryptSaltReceived = true; byte[] salt = _decCircularBuffer.Get(saltLen); InitCipher(salt, false, false); - logger.Debug("get salt len " + saltLen); + logger.Trace("get salt len " + saltLen); } // handle chunks @@ -220,7 +220,7 @@ public override void Decrypt(byte[] buf, int length, byte[] outbuf, out int outl bufSize = _decCircularBuffer.Size; // check if we have any data if (bufSize <= 0) { - logger.Debug("No data in _decCircularBuffer"); + logger.Trace("No data in _decCircularBuffer"); return; } @@ -246,10 +246,10 @@ public override void Decrypt(byte[] buf, int length, byte[] outbuf, out int outl logger.Error($"Invalid chunk length: {chunkLen}"); throw new CryptoErrorException(); } - logger.Debug("Get the real chunk len:" + chunkLen); + logger.Trace("Get the real chunk len:" + chunkLen); bufSize = _decCircularBuffer.Size; if (bufSize < CHUNK_LEN_BYTES + tagLen /* we haven't remove them */+ chunkLen + tagLen) { - logger.Debug("No more data to decrypt one chunk"); + logger.Trace("No more data to decrypt one chunk"); return; } IncrementNonce(false); @@ -269,16 +269,16 @@ public override void Decrypt(byte[] buf, int length, byte[] outbuf, out int outl // output to outbuf Buffer.BlockCopy(decChunkBytes, 0, outbuf, outlength, (int) decChunkLen); outlength += (int)decChunkLen; - logger.Debug("aead dec outlength " + outlength); + logger.Trace("aead dec outlength " + outlength); if (outlength + 100 > TCPHandler.BufferSize) { - logger.Debug("dec outbuf almost full, giving up"); + logger.Trace("dec outbuf almost full, giving up"); return; } bufSize = _decCircularBuffer.Size; // check if we already done all of them if (bufSize <= 0) { - logger.Debug("No data in _decCircularBuffer, already all done"); + logger.Trace("No data in _decCircularBuffer, already all done"); return; } } diff --git a/shadowsocks-csharp/Model/Configuration.cs b/shadowsocks-csharp/Model/Configuration.cs index 9eb50a092..d7d596a7e 100644 --- a/shadowsocks-csharp/Model/Configuration.cs +++ b/shadowsocks-csharp/Model/Configuration.cs @@ -45,6 +45,13 @@ public class Configuration NLogConfig nLogConfig; private static readonly string CONFIG_FILE = "gui-config.json"; + private static readonly NLogConfig.LogLevel verboseLogLevel = +#if DEBUG + NLogConfig.LogLevel.Trace; +#else + NLogConfig.LogLevel.Debug; +#endif + [JsonIgnore] public bool updated = false; @@ -185,10 +192,10 @@ public static void Save(Configuration config) try { // apply changs to NLog.config - config.nLogConfig.SetLogLevel(config.isVerboseLogging? NLogConfig.LogLevel.Trace: NLogConfig.LogLevel.Info); + config.nLogConfig.SetLogLevel(config.isVerboseLogging? verboseLogLevel : NLogConfig.LogLevel.Info); NLogConfig.SaveXML(config.nLogConfig); } - catch(Exception e) + catch (Exception e) { logger.Error(e, "Cannot set the log level to NLog config file. Please check if the nlog config file exists with corresponding XML nodes."); } diff --git a/shadowsocks-csharp/Proxy/HttpProxy.cs b/shadowsocks-csharp/Proxy/HttpProxy.cs index ecf7dc898..c1fb63b1f 100644 --- a/shadowsocks-csharp/Proxy/HttpProxy.cs +++ b/shadowsocks-csharp/Proxy/HttpProxy.cs @@ -182,7 +182,7 @@ private void OnException(Exception ex, object state) private bool OnLineRead(string line, object state) { - logger.Debug(line); + logger.Trace(line); if (_respondLineCount == 0) { From d8c9a7c85f8a7871e4b4a4085e1a7c52ef9d3751 Mon Sep 17 00:00:00 2001 From: celeron533 Date: Sat, 11 Apr 2020 14:13:20 +0800 Subject: [PATCH 5/5] Update CHANGES and bump version --- CHANGES | 4 ++++ shadowsocks-csharp/Controller/Service/UpdateChecker.cs | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index bb1655544..7e02ec123 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,7 @@ +4.1.10.0 2020-4-11 +- Fix NLog config file issue (#2841, #2846) +- Tweak log level + 4.1.9.3 2020-03-31 - Set default method to chacha20-ietf-poly1305 - Using hash in PAC URL (#2759) diff --git a/shadowsocks-csharp/Controller/Service/UpdateChecker.cs b/shadowsocks-csharp/Controller/Service/UpdateChecker.cs index e5ed5fcaa..307806ce4 100644 --- a/shadowsocks-csharp/Controller/Service/UpdateChecker.cs +++ b/shadowsocks-csharp/Controller/Service/UpdateChecker.cs @@ -26,7 +26,7 @@ public class UpdateChecker public string LatestVersionLocalName; public event EventHandler CheckUpdateCompleted; - public const string Version = "4.1.9.3"; + public const string Version = "4.1.10.0"; private class CheckUpdateTimer : System.Timers.Timer {