diff --git a/src/main/utils/template.ts b/src/main/utils/template.ts index 1d7669e..e76fde4 100644 --- a/src/main/utils/template.ts +++ b/src/main/utils/template.ts @@ -2,6 +2,10 @@ export const defaultConfig: IAppConfig = { core: 'mihomo', silentStart: false, appTheme: 'system', + disableLoopbackDetector: false, + skipSafePathCheck: false, + disableEmbedCA: false, + disableSystemCA: false, useWindowFrame: false, proxyInTray: true, maxLogDays: 7, @@ -62,7 +66,7 @@ export const defaultControledMihomoConfig: Partial = { 'auto-route': true, 'auto-redirect': false, 'auto-detect-interface': true, - 'dns-hijack': ['any:53'], + 'dns-hijack': ['any:53', 'tcp://any:53'], 'route-exclude-address': [], mtu: 1500 }, @@ -85,11 +89,14 @@ export const defaultControledMihomoConfig: Partial = { 'override-destination': false, sniff: { HTTP: { - ports: [80, 443], + ports: [80, '8080-8880'], 'override-destination': false }, TLS: { - ports: [443] + ports: [443, 8443] + }, + QUIC: { + ports: [443, 8443] } }, 'skip-domain': ['+.push.apple.com'], diff --git a/src/renderer/src/components/settings/general-config.tsx b/src/renderer/src/components/settings/general-config.tsx index 297c755..73a9414 100644 --- a/src/renderer/src/components/settings/general-config.tsx +++ b/src/renderer/src/components/settings/general-config.tsx @@ -86,13 +86,14 @@ const GeneralConfig: React.FC = () => { selectedKeys={[language]} aria-label={t('settings.language')} onSelectionChange={async (v) => { - const newLang = Array.from(v)[0] as 'zh-CN' | 'en-US' + const newLang = Array.from(v)[0] as 'zh-CN' | 'en-US' | 'ru-RU' await patchAppConfig({ language: newLang }) i18n.changeLanguage(newLang) }} > 中文简体 English + Русский diff --git a/src/renderer/src/locales/ru-RU.json b/src/renderer/src/locales/ru-RU.json new file mode 100644 index 0000000..91fda40 --- /dev/null +++ b/src/renderer/src/locales/ru-RU.json @@ -0,0 +1,498 @@ +{ + "common.settings": "Настройки", + "common.profiles": "Профили", + "common.proxies": "Прокси", + "common.connections": "Соединения", + "common.dns": "DNS", + "common.tun": "TUN", + "common.save": "Сохранить", + "common.cancel": "Отмена", + "common.edit": "Изменить", + "common.delete": "Удалить", + "common.seconds": "секунд", + "common.confirm": "Подтвердить", + "common.auto": "Авто", + "common.default": "По умолчанию", + "common.close": "Закрыть", + "common.pinWindow": "Закрепить окно", + "common.enterRootPassword": "Введите пароль root", + "common.next": "Далее", + "common.prev": "Назад", + "common.done": "Готово", + "common.notification.restartRequired": "Требуется перезапуск для применения изменений", + "common.error.appCrash": "Приложение завершилось аварийно :( Пожалуйста, отправьте следующую информацию разработчику для устранения проблемы", + "common.error.copyErrorMessage": "Копировать сообщение об ошибке", + "common.error.invalidCron": "Неверное выражение Cron", + "common.error.getBackupListFailed": "Не удалось получить список резервных копий: {{error}}", + "common.error.restoreFailed": "Не удалось восстановить: {{error}}", + "common.error.deleteFailed": "Не удалось удалить: {{error}}", + "common.error.shortcutRegistrationFailed": "Не удалось зарегистрировать сочетание клавиш", + "common.error.shortcutRegistrationFailedWithError": "Не удалось зарегистрировать сочетание клавиш: {{error}}", + "common.error.adminRequired": "Для первого запуска требуются права администратора", + "common.error.initFailed": "Не удалось инициализировать приложение", + "common.updater.versionReady": "Версия v{{version}} готова", + "common.updater.goToDownload": "Перейти к загрузке", + "common.updater.update": "Обновить", + "settings.general": "Общие настройки", + "settings.mihomo": "Настройки Mihomo", + "settings.language": "Язык", + "settings.theme": "Тема", + "settings.darkMode": "Тёмная тема", + "settings.lightMode": "Светлая тема", + "settings.autoStart": "Автозапуск", + "settings.autoCheckUpdate": "Автоматическая проверка обновлений", + "settings.silentStart": "Тихий запуск", + "settings.autoQuitWithoutCore": "Автоматический облегчённый режим", + "settings.autoQuitWithoutCoreTooltip": "Автоматически переходить в облегчённый режим после закрытия окна", + "settings.autoQuitWithoutCoreDelay": "Задержка включения облегчённого режима", + "settings.envType": "Тип переменных окружения", + "settings.showFloatingWindow": "Показывать плавающее окно", + "settings.spinFloatingIcon": "Анимация иконки при активности сети", + "settings.disableTray": "Отключить значок в трее", + "settings.proxyInTray": "Показывать информацию о прокси в трее", + "settings.showTraffic_windows": "Показывать скорость в панели задач", + "settings.showTraffic_mac": "Показывать скорость в строке состояния", + "settings.showDockIcon": "Показывать значок в доке", + "settings.useWindowFrame": "Использовать системную рамку окна", + "settings.backgroundColor": "Цвет фона", + "settings.backgroundAuto": "Авто", + "settings.backgroundDark": "Тёмный", + "settings.backgroundLight": "Светлый", + "settings.fetchTheme": "Загрузить тему", + "settings.importTheme": "Импортировать тему", + "settings.editTheme": "Редактировать тему", + "settings.selectTheme": "Выбрать тему", + "settings.links.docs": "Документация", + "settings.links.github": "GitHub репозиторий", + "settings.links.telegram": "Telegram группа", + "settings.title": "Настройки приложения", + "mihomo.title": "Настройки ядра", + "mihomo.restart": "Перезапустить ядро", + "mihomo.memory": "Использование памяти", + "mihomo.userAgent": "User Agent подписки", + "mihomo.userAgentPlaceholder": "По умолчанию: clash.meta", + "mihomo.delayTest.url": "URL теста задержки", + "mihomo.delayTest.urlPlaceholder": "По умолчанию: http://www.gstatic.com/generate_204", + "mihomo.delayTest.concurrency": "Параллельность теста задержки", + "mihomo.delayTest.concurrencyPlaceholder": "По умолчанию: 50", + "mihomo.delayTest.timeout": "Таймаут теста задержки", + "mihomo.delayTest.timeoutPlaceholder": "По умолчанию: 5000", + "mihomo.gist.title": "Синхронизация конфигурации в Gist", + "mihomo.gist.copyUrl": "Копировать URL Gist", + "mihomo.gist.token": "GitHub токен", + "mihomo.proxyColumns.title": "Колонки отображения прокси", + "mihomo.proxyColumns.auto": "Авто", + "mihomo.proxyColumns.one": "Одна колонка", + "mihomo.proxyColumns.two": "Две колонки", + "mihomo.proxyColumns.three": "Три колонки", + "mihomo.proxyColumns.four": "Четыре колонки", + "mihomo.cpuPriority.title": "Приоритет процесса ядра", + "mihomo.cpuPriority.realtime": "Реального времени", + "mihomo.cpuPriority.high": "Высокий", + "mihomo.cpuPriority.aboveNormal": "Выше среднего", + "mihomo.cpuPriority.normal": "Нормальный", + "mihomo.cpuPriority.belowNormal": "Ниже среднего", + "mihomo.cpuPriority.low": "Низкий", + "mihomo.workDir.title": "Отдельные рабочие каталоги для разных подписок", + "mihomo.workDir.tooltip": "Включите для избежания конфликтов при наличии групп прокси с одинаковыми именами в разных подписках", + "mihomo.controlDns": "Управление настройками DNS", + "mihomo.controlSniff": "Управление сниффингом доменов", + "mihomo.autoCloseConnection": "Автозакрытие соединений", + "mihomo.pauseSSID.title": "Прямое подключение для определённых WiFi SSID", + "mihomo.pauseSSID.placeholder": "Введите SSID", + "mihomo.coreVersion": "Версия ядра", + "mihomo.upgradeCore": "Обновить ядро", + "mihomo.coreAuthLost": "Потеряна авторизация ядра", + "mihomo.coreUpgradeSuccess": "Ядро успешно обновлено. Если вы хотите использовать виртуальную сетевую карту (Tun), пожалуйста, перейдите на страницу виртуальной сетевой карты для повторной авторизации ядра", + "mihomo.alreadyLatestVersion": "Уже последняя версия", + "mihomo.selectCoreVersion": "Выберите версию ядра", + "mihomo.stableVersion": "Стабильная", + "mihomo.alphaVersion": "Альфа", + "mihomo.mixedPort": "Смешанный порт", + "mihomo.confirm": "Подтвердить", + "mihomo.socksPort": "Порт Socks", + "mihomo.httpPort": "Порт Http", + "mihomo.redirPort": "Порт Redir", + "mihomo.externalController": "Адрес внешнего контроллера", + "mihomo.externalControllerSecret": "Секрет внешнего контроллера", + "mihomo.ipv6": "IPv6", + "mihomo.allowLanConnection": "Разрешить LAN подключения", + "mihomo.allowedIpSegments": "Разрешённые IP сегменты", + "mihomo.disallowedIpSegments": "Запрещённые IP сегменты", + "mihomo.userVerification": "Проверка пользователя", + "mihomo.skipAuthPrefixes": "Пропускать проверку для IP сегментов", + "mihomo.useRttDelayTest": "Использовать 1-RTT тест задержки", + "mihomo.tcpConcurrent": "TCP параллельность", + "mihomo.storeSelectedNode": "Сохранять выбранный узел", + "mihomo.storeFakeIp": "Сохранять Fake IP", + "mihomo.disableLoopbackDetector": "Отключить определение петли", + "mihomo.skipSafePathCheck": "Пропускать проверку безопасного пути", + "mihomo.disableEmbedCA": "Отключить встроенный CA", + "mihomo.disableSystemCA": "Отключить системный CA", + "mihomo.logRetentionDays": "Дни хранения логов", + "mihomo.logLevel": "Уровень логирования", + "mihomo.selectLogLevel": "Выберите уровень логирования", + "mihomo.silent": "Тихий", + "mihomo.error": "Ошибка", + "mihomo.warning": "Предупреждение", + "mihomo.info": "Информация", + "mihomo.debug": "Отладка", + "mihomo.error.coreStartFailed": "Ошибка запуска ядра", + "mihomo.error.profileCheckFailed": "Проверка профиля не удалась", + "mihomo.findProcess": "Поиск процесса", + "mihomo.selectFindProcessMode": "Выберите режим поиска процесса", + "mihomo.strict": "Авто", + "mihomo.off": "Выкл", + "mihomo.always": "Всегда", + "mihomo.username.placeholder": "Имя пользователя", + "mihomo.password.placeholder": "Пароль", + "mihomo.ipSegment.placeholder": "IP сегмент", + "mihomo.interface.title": "Сетевая информация", + "substore.title": "Sub-Store", + "substore.checkUpdate": "Проверить обновления", + "substore.updating": "Sub-Store обновляется...", + "substore.updateCompleted": "Обновление Sub-Store завершено", + "substore.updateFailed": "Не удалось обновить Sub-Store", + "substore.downloadFailed": "Не удалось загрузить файл Sub-Store", + "substore.openInBrowser": "Открыть в браузере", + "substore.enable": "Включить Sub-Store", + "substore.allowLan": "Разрешить доступ по LAN", + "substore.useCustomBackend": "Использовать собственный бэкенд Sub-Store", + "substore.customBackendUrl.title": "URL собственного бэкенда Sub-Store", + "substore.customBackendUrl.placeholder": "Должен включать протокол", + "substore.useProxy": "Включить прокси для всех запросов Sub-Store", + "substore.sync.title": "Расписание синхронизации подписок/файлов", + "substore.sync.placeholder": "Cron выражение", + "substore.restore.title": "Расписание восстановления конфигурации", + "substore.restore.placeholder": "Cron выражение", + "substore.backup.title": "Расписание резервного копирования", + "substore.backup.placeholder": "Cron выражение", + "webdav.title": "Резервное копирование WebDAV", + "webdav.url": "URL WebDAV", + "webdav.dir": "Каталог резервных копий WebDAV", + "webdav.username": "Имя пользователя WebDAV", + "webdav.password": "Пароль WebDAV", + "webdav.backup": "Резервное копирование", + "webdav.restore.title": "Восстановление резервной копии", + "webdav.restore.noBackups": "Нет доступных резервных копий", + "webdav.notification.backupSuccess.title": "Резервное копирование успешно", + "webdav.notification.backupSuccess.body": "Файл резервной копии загружен на WebDAV", + "shortcuts.title": "Горячие клавиши", + "shortcuts.toggleWindow": "Показать/скрыть окно", + "shortcuts.toggleFloatingWindow": "Показать/скрыть плавающее окно", + "shortcuts.toggleSystemProxy": "Включить/выключить системный прокси", + "shortcuts.toggleTun": "Включить/выключить TUN", + "shortcuts.toggleRuleMode": "Переключить режим правил", + "shortcuts.toggleGlobalMode": "Переключить глобальный режим", + "shortcuts.toggleDirectMode": "Переключить прямое подключение", + "shortcuts.toggleLightMode": "Переключить облегченный режим", + "shortcuts.restartApp": "Перезапустить приложение", + "shortcuts.input.placeholder": "Нажмите для ввода комбинации", + "sider.title": "Настройки боковой панели", + "sider.cards.systemProxy": "Системный прокси", + "sider.cards.tun": "TUN", + "sider.cards.profiles": "Профили", + "sider.cards.proxies": "Прокси группы", + "sider.cards.rules": "Правила", + "sider.cards.resources": "Внешние ресурсы", + "sider.cards.override": "Переопределения", + "sider.cards.connections": "Подключения", + "sider.cards.core": "Настройки ядра", + "sider.cards.dns": "DNS", + "sider.cards.sniff": "Анализ трафика", + "sider.cards.logs": "Журналы", + "sider.cards.substore": "Sub-Store", + "sider.cards.config": "Конфигурация", + "sider.cards.emptyProfile": "Пустой профиль", + "sider.cards.viewRuntimeConfig": "Просмотр текущей конфигурации", + "sider.cards.remote": "Удаленный", + "sider.cards.local": "Локальный", + "sider.cards.trafficUsage": "Использование трафика", + "sider.cards.neverExpire": "Бессрочно", + "sider.cards.outbound.title": "Режим исходящего трафика", + "sider.cards.outbound.rule": "По правилам", + "sider.cards.outbound.global": "Глобальный", + "sider.cards.outbound.direct": "Прямой", + "sider.size.large": "Большой", + "sider.size.small": "Маленький", + "sider.size.hidden": "Скрытый", + "actions.guide.title": "Открыть руководство", + "actions.guide.button": "Открыть руководство", + "actions.update.title": "Проверить обновления", + "actions.update.button": "Проверить обновления", + "actions.update.upToDate.title": "Актуальная версия", + "actions.update.upToDate.body": "Нет доступных обновлений", + "actions.reset.title": "Сбросить приложение", + "actions.reset.button": "Сбросить приложение", + "actions.reset.tooltip": "Удалить все настройки и вернуть приложение к исходному состоянию", + "actions.heapSnapshot.title": "Создать снимок кучи", + "actions.heapSnapshot.button": "Создать снимок кучи", + "actions.heapSnapshot.tooltip": "Создать снимок кучи основного процесса для отладки проблем с памятью", + "actions.lightMode.title": "Облегченный режим", + "actions.lightMode.button": "Облегченный режим", + "actions.lightMode.tooltip": "Полностью закрыть приложение, оставив только процесс ядра", + "actions.restartApp": "Перезапустить приложение", + "actions.quit.title": "Выйти", + "actions.quit.button": "Выйти", + "actions.version.title": "Версия приложения", + "theme.editor.title": "Редактор темы", + "proxies.title": "Прокси группы и узлы", + "proxies.card.title": "Прокси группы", + "proxies.delay.test": "Тест", + "proxies.delay.timeout": "Таймаут", + "proxies.unpin": "Открепить", + "proxies.order.default": "По умолчанию", + "proxies.order.delay": "По задержке", + "proxies.order.name": "По имени", + "proxies.mode.full": "Подробная информация", + "proxies.mode.simple": "Краткая информация", + "proxies.mode.direct": "Прямое подключение", + "proxies.search.placeholder": "Поиск прокси", + "proxies.locate": "Найти текущий прокси", + "sniffer.title": "Настройки анализа доменов", + "sniffer.parsePureIP": "Анализировать немаппированные IP-адреса", + "sniffer.forceDNSMapping": "Анализировать реальные IP-маппинги", + "sniffer.overrideDestination": "Переопределить адрес подключения", + "sniffer.sniff.title": "Анализ HTTP портов", + "sniffer.sniff.tls": "Анализ TLS портов", + "sniffer.sniff.quic": "Анализ QUIC портов", + "sniffer.sniff.ports.placeholder": "Номера портов, разделенные запятыми", + "sniffer.skipDomain.title": "Пропустить анализ доменов", + "sniffer.skipDomain.placeholder": "Пример: +.push.apple.com", + "sniffer.forceDomain.title": "Принудительный анализ доменов", + "sniffer.forceDomain.placeholder": "Пример: v2ex.com", + "sniffer.skipDstAddress.title": "Пропустить анализ адресов назначения", + "sniffer.skipDstAddress.placeholder": "Пример: 1.1.1.1/32", + "sniffer.skipSrcAddress.title": "Пропустить анализ исходных адресов", + "sniffer.skipSrcAddress.placeholder": "Пример: 192.168.1.1/24", + "sysproxy.title": "Системный прокси", + "sysproxy.host.title": "Хост прокси", + "sysproxy.host.placeholder": "По умолчанию 127.0.0.1, не изменяйте без необходимости", + "sysproxy.mode.title": "Режим прокси", + "sysproxy.mode.manual": "Ручной", + "sysproxy.mode.pac": "PAC", + "sysproxy.uwp.title": "Инструмент UWP", + "sysproxy.uwp.open": "Открыть инструмент UWP", + "sysproxy.pac.edit": "Редактировать PAC скрипт", + "sysproxy.bypass.title": "Исключения прокси", + "sysproxy.bypass.addDefault": "Добавить стандартные исключения", + "sysproxy.bypass.placeholder": "Пример: *.baidu.com", + "tun.title": "TUN", + "tun.firewall.title": "Сбросить брандмауэр", + "tun.firewall.reset": "Сбросить брандмауэр", + "tun.core.title": "Ручная авторизация", + "tun.core.auth": "Авторизовать ядро", + "tun.dns.autoSet": "Автоматическая настройка DNS", + "tun.stack.title": "Стек режима Tun", + "tun.device.title": "Имя устройства Tun", + "tun.strictRoute": "Строгая маршрутизация", + "tun.autoRoute": "Автоматическая глобальная маршрутизация", + "tun.autoRedirect": "Автоматическое перенаправление TCP", + "tun.autoDetectInterface": "Автоопределение интерфейса", + "tun.dnsHijack": "Перехват DNS", + "tun.excludeAddress.title": "Исключить пользовательские сети", + "tun.excludeAddress.placeholder": "Пример: 172.20.0.0/16", + "tun.notifications.coreAuthSuccess": "Авторизация ядра успешна", + "tun.notifications.firewallResetSuccess": "Брандмауэр успешно сброшен", + "tun.error.tunPermissionDenied": "Ошибка запуска TUN, попробуйте вручную предоставить разрешения ядру", + "dns.title": "Настройки DNS", + "dns.enhancedMode.title": "Режим маппинга доменов", + "dns.enhancedMode.fakeIp": "Фиктивный IP", + "dns.enhancedMode.redirHost": "Реальный IP", + "dns.enhancedMode.normal": "Без маппинга", + "dns.fakeIp.range": "Диапазон ответов", + "dns.fakeIp.rangePlaceholder": "Пример: 198.18.0.1/16", + "dns.fakeIp.filter": "Ответ реального IP", + "dns.fakeIp.filterPlaceholder": "Пример: +.lan", + "dns.respectRules": "Соблюдать правила", + "dns.defaultNameserver": "Разрешение доменов DNS сервера", + "dns.defaultNameserverPlaceholder": "Пример: 223.5.5.5, только IP", + "dns.proxyServerNameserver": "Разрешение доменов прокси-сервера", + "dns.proxyServerNameserverPlaceholder": "Пример: tls://dns.alidns.com", + "dns.nameserver": "Сервер разрешения по умолчанию", + "dns.nameserverPlaceholder": "Пример: tls://dns.alidns.com", + "dns.directNameserver": "Сервер прямого разрешения", + "dns.directNameserverPlaceholder": "Пример: tls://dns.alidns.com", + "dns.nameserverPolicy.title": "Переопределение политики DNS", + "dns.nameserverPolicy.list": "Список политик DNS", + "dns.nameserverPolicy.domainPlaceholder": "Домен", + "dns.nameserverPolicy.serverPlaceholder": "DNS сервер", + "dns.systemHosts.title": "Использовать системный Hosts", + "dns.customHosts.title": "Пользовательский Hosts", + "dns.customHosts.list": "Список Hosts", + "dns.customHosts.domainPlaceholder": "Домен", + "dns.customHosts.valuePlaceholder": "Домен или IP", + "profiles.title": "Управление профилями", + "profiles.updateAll": "Обновить все профили", + "profiles.useProxy": "Прокси", + "profiles.import": "Импорт", + "profiles.open": "Открыть", + "profiles.new": "Создать", + "profiles.newProfile": "Новый профиль", + "profiles.substore.visit": "Посетить Sub-Store", + "profiles.error.unsupportedFileType": "Неподдерживаемый тип файла", + "profiles.error.urlParamMissing": "Отсутствует параметр: url", + "profiles.error.importFailed": "Ошибка импорта подписки", + "profiles.emptyProfile": "Пустой профиль", + "profiles.viewRuntimeConfig": "Просмотр текущей конфигурации", + "profiles.neverExpire": "Бессрочно", + "profiles.remote": "Удаленный", + "profiles.local": "Локальный", + "profiles.trafficUsage": "Использование трафика", + "profiles.traffic.usage": "{{used}}/{{total}}", + "profiles.traffic.unlimited": "Безлимитный", + "profiles.traffic.expired": "Истек", + "profiles.traffic.remainingDays": "{{days}} дней", + "profiles.traffic.lastUpdate": "Последнее обновление: {{time}}", + "profiles.editInfo.title": "Редактировать информацию", + "profiles.editInfo.name": "Имя", + "profiles.editInfo.url": "URL подписки", + "profiles.editInfo.useProxy": "Использовать прокси для обновления", + "profiles.editInfo.interval": "Интервал обн. (мин)", + "profiles.editInfo.override.title": "Переопределение", + "profiles.editInfo.override.global": "Глобальный", + "profiles.editInfo.override.noAvailable": "Нет доступных переопределений", + "profiles.editInfo.override.add": "Добавить переопределение", + "profiles.editFile.title": "Редактировать профиль", + "profiles.editFile.notice": "Примечание: Изменения, сделанные здесь, будут сброшены после обновления профиля. Для пользовательских настроек используйте", + "profiles.editFile.override": "Переопределение", + "profiles.editFile.feature": "функцию", + "profiles.openFile": "Открыть файл", + "profiles.home": "Главная", + "profiles.notification.importSuccess": "Подписка успешно импортирована", + "resources.proxyProviders.title": "Провайдеры прокси", + "resources.proxyProviders.updateAll": "Обновить все", + "resources.ruleProviders.title": "Провайдеры правил", + "resources.ruleProviders.updateAll": "Обновить все", + "outbound.title": "Режим исходящего трафика", + "outbound.modes.rule": "Правило", + "outbound.modes.global": "Глобальный", + "outbound.modes.direct": "Прямой", + "rules.title": "Правила", + "rules.filter": "Фильтр правил", + "override.title": "Переопределение", + "override.import": "Импорт", + "override.docs": "Документация", + "override.repository": "Репозиторий переопределений", + "override.unsupportedFileType": "Неподдерживаемый тип файла", + "override.actions.open": "Открыть", + "override.actions.newYaml": "Новый YAML", + "override.actions.newJs": "Новый JavaScript", + "override.defaultContent.yaml": "# https://mihomo.party/docs/guide/override/yaml", + "override.defaultContent.js": "// https://mihomo.party/docs/guide/override/javascript\nfunction main(config) {\n return config\n}", + "override.newFile.yaml": "Новый YAML", + "override.newFile.js": "Новый JS", + "override.editInfo.title": "Редактировать информацию", + "override.editInfo.name": "Имя", + "override.editInfo.url": "URL", + "override.editInfo.global": "Глобальное включение", + "override.editFile.title": "Редактировать переопределение {{type}}", + "override.editFile.script": "Скрипт", + "override.editFile.config": "Конфигурация", + "override.execLog.title": "Журнал выполнения", + "override.execLog.close": "Закрыть", + "override.menuItems.editInfo": "Редактировать информацию", + "override.menuItems.editFile": "Редактировать файл", + "override.menuItems.openFile": "Открыть файл", + "override.menuItems.execLog": "Журнал выполнения", + "override.menuItems.delete": "Удалить", + "override.labels.global": "Глобальный", + "connections.title": "Подключения", + "connections.upload": "Загрузка", + "connections.download": "Скачивание", + "connections.closeAll": "Закрыть все подключения", + "connections.active": "Активные", + "connections.closed": "Закрытые", + "connections.filter": "Фильтр", + "connections.orderBy": "Сортировать по", + "connections.time": "Время", + "connections.uploadAmount": "Объем загрузки", + "connections.downloadAmount": "Объем скачивания", + "connections.uploadSpeed": "Скорость загрузки", + "connections.downloadSpeed": "Скорость скачивания", + "connections.detail.title": "Детали подключения", + "connections.detail.establishTime": "Время установления", + "connections.detail.rule": "Правило", + "connections.detail.proxyChain": "Цепочка прокси", + "connections.detail.connectionType": "Тип подключения", + "connections.detail.host": "Хост", + "connections.detail.sniffHost": "Определенный хост", + "connections.detail.processName": "Имя процесса", + "connections.detail.processPath": "Путь процесса", + "connections.detail.sourceIP": "IP источника", + "connections.detail.sourceGeoIP": "GeoIP источника", + "connections.detail.sourceASN": "ASN источника", + "connections.detail.destinationIP": "IP назначения", + "connections.detail.destinationGeoIP": "GeoIP назначения", + "connections.detail.destinationASN": "ASN назначения", + "connections.detail.sourcePort": "Порт источника", + "connections.detail.destinationPort": "Порт назначения", + "connections.detail.inboundIP": "Входящий IP", + "connections.detail.inboundPort": "Входящий порт", + "connections.detail.copyRule": "Копировать правило", + "connections.detail.inboundName": "Имя входящего", + "connections.detail.inboundUser": "Пользователь входящего", + "connections.detail.dscp": "DSCP", + "connections.detail.remoteDestination": "Удаленное назначение", + "connections.detail.dnsMode": "Режим DNS", + "connections.detail.specialProxy": "Специальный прокси", + "connections.detail.specialRules": "Специальные правила", + "connections.detail.close": "Закрыть", + "resources.geoData.geoip": "База данных GeoIP", + "resources.geoData.geosite": "База данных GeoSite", + "resources.geoData.mmdb": "База данных MMDB", + "resources.geoData.asn": "База данных ASN", + "resources.geoData.mode": "Режим GeoData", + "resources.geoData.autoUpdate": "Автообновление", + "resources.geoData.updateInterval": "Интервал обновления (часы)", + "resources.geoData.updateSuccess": "GeoData успешно обновлена", + "logs.title": "Журнал в реальном времени", + "logs.filter": "Фильтр логов", + "logs.clear": "Очистить логи", + "logs.autoScroll": "Автопрокрутка", + "tray.showWindow": "Показать окно", + "tray.showFloatingWindow": "Показать плавающее окно", + "tray.hideFloatingWindow": "Скрыть плавающее окно", + "tray.ruleMode": "Режим правил", + "tray.globalMode": "Глобальный режим", + "tray.directMode": "Прямой режим", + "tray.systemProxy": "Системный прокси", + "tray.tun": "TUN", + "tray.profiles": "Профили", + "tray.openDirectories.title": "Открыть директории", + "tray.openDirectories.appDir": "Директория приложения", + "tray.openDirectories.workDir": "Рабочая директория", + "tray.openDirectories.coreDir": "Директория ядра", + "tray.openDirectories.logDir": "Директория логов", + "tray.copyEnv": "Копировать переменные среды", + "guide.welcome.title": "Добро пожаловать в Mihomo Party", + "guide.welcome.description": "Это интерактивное руководство. Если вы уже знакомы с программой, вы можете закрыть его, нажав кнопку в правом верхнем углу. Вы всегда можете открыть это руководство снова в настройках.", + "guide.sider.title": "Панель навигации", + "guide.sider.description": "Слева находится навигационная панель приложения, которая также служит панелью управления. Здесь вы можете переключаться между различными страницами и получать обзор часто используемой информации о состоянии.", + "guide.card.title": "Карточки", + "guide.card.description": "Нажмите на карточки в навигационной панели, чтобы перейти к соответствующей странице. Вы также можете перетаскивать карточки, чтобы расположить их по своему усмотрению.", + "guide.main.title": "Основная область", + "guide.main.description": "Правая сторона - это основная область приложения, отображающая содержимое выбранной страницы из навигационной панели.", + "guide.profile.title": "Управление профилями", + "guide.profile.description": "Карточка управления профилями показывает информацию о текущей конфигурации подписки. Нажмите, чтобы перейти на страницу управления профилями, где вы можете управлять конфигурациями подписок.", + "guide.import.title": "Импорт подписки", + "guide.import.description": "Mihomo Party поддерживает различные методы импорта подписок. Введите здесь ссылку на вашу подписку и нажмите импорт. Если для обновления подписки требуется прокси, отметьте опцию 'Прокси' перед импортом (для этого необходимо иметь уже работающую подписку).", + "guide.substore.title": "Sub-Store", + "guide.substore.description": "Mihomo Party глубоко интегрирован с Sub-Store. Вы можете нажать эту кнопку, чтобы войти в Sub-Store или напрямую импортировать подписки, управляемые через Sub-Store. Mihomo Party по умолчанию использует встроенный бэкенд Sub-Store. Если у вас есть собственный бэкенд Sub-Store, вы можете настроить его на странице настроек. Если вы не используете Sub-Store, вы также можете отключить его в настройках.", + "guide.localProfile.title": "Локальный профиль", + "guide.localProfile.description": "Нажмите '+', чтобы импортировать локальный файл или создать новую пустую конфигурацию для редактирования.", + "guide.sysproxy.title": "Системный прокси", + "guide.sysproxy.description": "После импорта подписки ядро запущено и прослушивает указанный порт. Теперь вы можете использовать прокси через указанный порт. Если вы хотите, чтобы большинство приложений автоматически использовали этот прокси-порт, вам нужно включить переключатель системного прокси.", + "guide.sysproxySetting.title": "Настройки системного прокси", + "guide.sysproxySetting.description": "Здесь вы можете настроить параметры системного прокси и выбрать режим прокси. Для приложений Windows, которые не следуют системному прокси, вы можете использовать 'UWP Tool' для снятия ограничений локальной петли. О различиях между 'Ручным режимом прокси' и 'Режимом прокси PAC' можно узнать в интернете.", + "guide.tun.title": "Виртуальная сетевая карта", + "guide.tun.description": "Виртуальная сетевая карта, известная как 'Режим Tun' в аналогичном программном обеспечении, позволяет ядру контролировать весь трафик для приложений, которые не следуют настройкам системного прокси.", + "guide.tunSetting.title": "Настройки виртуальной сетевой карты", + "guide.tunSetting.description": "Здесь вы можете изменить настройки виртуальной сетевой карты. Mihomo Party теоретически решил все проблемы с разрешениями. Если ваша виртуальная сетевая карта все еще не работает, попробуйте сбросить брандмауэр (Windows) или вручную авторизовать ядро (MacOS/Linux), а затем перезапустить ядро.", + "guide.override.title": "Переопределение", + "guide.override.description": "Mihomo Party предоставляет мощную функцию переопределения для настройки импортированных конфигураций подписки, таких как добавление правил и настройка групп прокси. Вы можете напрямую импортировать файлы переопределения, написанные другими, или написать свои собственные. Не забудьте включить файл переопределения для подписки, которую вы хотите переопределить. Синтаксис файла переопределения см. в официальной документации.", + "guide.dns.title": "DNS", + "guide.dns.description": "По умолчанию программа контролирует настройки DNS ядра. Если вам нужно использовать настройки DNS из конфигурации подписки, вы можете отключить 'Контроль настроек DNS' в настройках приложения. То же самое относится к сниффингу доменов.", + "guide.end.title": "Руководство завершено", + "guide.end.description": "Теперь, когда вы понимаете основы использования программы, импортируйте свою подписку и начните использовать ее. Приятного использования!\nВы также можете присоединиться к нашей официальной группе Telegram для получения последних новостей." +} diff --git a/src/shared/i18n.ts b/src/shared/i18n.ts index 8734a7f..b1b52cb 100644 --- a/src/shared/i18n.ts +++ b/src/shared/i18n.ts @@ -1,6 +1,7 @@ import i18next from 'i18next' import enUS from '../renderer/src/locales/en-US.json' import zhCN from '../renderer/src/locales/zh-CN.json' +import ruRU from '../renderer/src/locales/ru-RU.json' export const resources = { 'en-US': { @@ -8,6 +9,9 @@ export const resources = { }, 'zh-CN': { translation: zhCN + }, + 'ru-RU': { + translation: ruRU } } @@ -28,4 +32,4 @@ export const initI18n = async (options = {}): Promise => { return i18next } -export default i18next \ No newline at end of file +export default i18next diff --git a/src/shared/types.d.ts b/src/shared/types.d.ts index 2c5d50f..317eb97 100644 --- a/src/shared/types.d.ts +++ b/src/shared/types.d.ts @@ -295,7 +295,7 @@ interface IAppConfig { directModeShortcut?: string restartAppShortcut?: string quitWithoutCoreShortcut?: string - language?: 'zh-CN' | 'en-US' + language?: 'zh-CN' | 'en-US' | 'ru-RU' } interface IMihomoTunConfig {