From f8d746526121270e50f010f712903fca8cc3881f Mon Sep 17 00:00:00 2001 From: Slinetrac Date: Tue, 4 Nov 2025 14:26:00 +0800 Subject: [PATCH] chore(i18n): restructure root-level locale keys into namespaces --- .../profile/groups-editor-viewer.tsx | 41 +++- .../profile/rules-editor-viewer.tsx | 51 ++-- .../setting/mods/clash-core-viewer.tsx | 14 +- .../setting/mods/controller-viewer.tsx | 4 +- .../setting/mods/external-controller-cors.tsx | 4 +- src/hooks/use-system-state.ts | 6 +- src/hooks/useServiceInstaller.ts | 18 +- src/hooks/useServiceUninstaller.ts | 20 +- src/locales/ar.json | 230 +++++++----------- src/locales/de.json | 230 +++++++----------- src/locales/en.json | 230 +++++++----------- src/locales/es.json | 230 +++++++----------- src/locales/fa.json | 230 +++++++----------- src/locales/id.json | 230 +++++++----------- src/locales/jp.json | 230 +++++++----------- src/locales/ko.json | 230 +++++++----------- src/locales/ru.json | 230 +++++++----------- src/locales/tr.json | 230 +++++++----------- src/locales/tt.json | 230 +++++++----------- src/locales/zh.json | 230 +++++++----------- src/locales/zhtw.json | 230 +++++++----------- src/pages/_layout/notificationHandlers.ts | 47 ++-- src/pages/profiles.tsx | 6 +- src/pages/unlock.tsx | 15 +- 24 files changed, 1374 insertions(+), 1842 deletions(-) diff --git a/src/components/profile/groups-editor-viewer.tsx b/src/components/profile/groups-editor-viewer.tsx index abbb3706..461672c2 100644 --- a/src/components/profile/groups-editor-viewer.tsx +++ b/src/components/profile/groups-editor-viewer.tsx @@ -73,6 +73,23 @@ interface Props { const builtinProxyPolicies = ["DIRECT", "REJECT", "REJECT-DROP", "PASS"]; +const PROXY_STRATEGY_LABEL_KEYS: Record = { + select: "proxy.strategies.select", + "url-test": "proxy.strategies.url-test", + fallback: "proxy.strategies.fallback", + "load-balance": "proxy.strategies.load-balance", + relay: "proxy.strategies.relay", +}; + +const PROXY_POLICY_LABEL_KEYS: Record = + builtinProxyPolicies.reduce( + (acc, policy) => { + acc[policy] = `proxy.policies.${policy}`; + return acc; + }, + {} as Record, + ); + const normalizeDeleteSeq = (input?: unknown): string[] => { if (!Array.isArray(input)) { return []; @@ -121,6 +138,20 @@ export const GroupsEditorViewer = (props: Props) => { const { mergeUid, proxiesUid, profileUid, property, open, onClose, onSave } = props; const { t } = useTranslation(); + const translateStrategy = useCallback( + (value: string) => + PROXY_STRATEGY_LABEL_KEYS[value] + ? t(PROXY_STRATEGY_LABEL_KEYS[value]) + : value, + [t], + ); + const translatePolicy = useCallback( + (value: string) => + PROXY_POLICY_LABEL_KEYS[value] + ? t(PROXY_POLICY_LABEL_KEYS[value]) + : value, + [t], + ); const themeMode = useThemeMode(); const [prevData, setPrevData] = useState(""); const [currData, setCurrData] = useState(""); @@ -452,9 +483,10 @@ export const GroupsEditorViewer = (props: Props) => { "relay", ]} value={field.value} + getOptionLabel={translateStrategy} renderOption={(props, option) => ( -
  • - {option} +
  • + {translateStrategy(option)}
  • )} onChange={(_, value) => value && field.onChange(value)} @@ -518,10 +550,11 @@ export const GroupsEditorViewer = (props: Props) => { onChange={(_, value) => value && field.onChange(value)} renderInput={(params) => } renderOption={(props, option) => ( -
  • - {option} +
  • + {translatePolicy(option)}
  • )} + getOptionLabel={translatePolicy} /> )} diff --git a/src/components/profile/rules-editor-viewer.tsx b/src/components/profile/rules-editor-viewer.tsx index 12aeb92b..5708b25c 100644 --- a/src/components/profile/rules-editor-viewer.tsx +++ b/src/components/profile/rules-editor-viewer.tsx @@ -240,8 +240,21 @@ const rules: { }, ]; +const RULE_TYPE_LABEL_KEYS: Record = Object.fromEntries( + rules.map((rule) => [rule.name, `ruleEditor.ruleTypes.${rule.name}`]), +); + const builtinProxyPolicies = ["DIRECT", "REJECT", "REJECT-DROP", "PASS"]; +const PROXY_POLICY_LABEL_KEYS: Record = + builtinProxyPolicies.reduce( + (acc, policy) => { + acc[policy] = `proxy.policies.${policy}`; + return acc; + }, + {} as Record, + ); + export const RulesEditorViewer = (props: Props) => { const { groupsUid, mergeUid, profileUid, property, open, onClose, onSave } = props; @@ -527,15 +540,19 @@ export const RulesEditorViewer = (props: Props) => { renderInput={(params) => } options={rules} value={ruleType} - getOptionLabel={(option) => option.name} - renderOption={(props, option) => ( -
  • - {option.name} -
  • - )} + getOptionLabel={(option) => + t(RULE_TYPE_LABEL_KEYS[option.name] ?? option.name) + } + renderOption={(props, option) => { + const label = t( + RULE_TYPE_LABEL_KEYS[option.name] ?? option.name, + ); + return ( +
  • + {label} +
  • + ); + }} onChange={(_, value) => value && setRuleType(value)} /> @@ -588,11 +605,17 @@ export const RulesEditorViewer = (props: Props) => { renderInput={(params) => } options={proxyPolicyList} value={proxyPolicy} - renderOption={(props, option) => ( -
  • - {option} -
  • - )} + getOptionLabel={(option) => + t(PROXY_POLICY_LABEL_KEYS[option] ?? option) + } + renderOption={(props, option) => { + const label = t(PROXY_POLICY_LABEL_KEYS[option] ?? option); + return ( +
  • + {label} +
  • + ); + }} onChange={(_, value) => value && setProxyPolicy(value)} /> diff --git a/src/components/setting/mods/clash-core-viewer.tsx b/src/components/setting/mods/clash-core-viewer.tsx index 596162c5..786a756b 100644 --- a/src/components/setting/mods/clash-core-viewer.tsx +++ b/src/components/setting/mods/clash-core-viewer.tsx @@ -24,8 +24,16 @@ import { changeClashCore, restartCore } from "@/services/cmds"; import { showNotice } from "@/services/noticeService"; const VALID_CORE = [ - { name: "Mihomo", core: "verge-mihomo", chip: "Release Version" }, - { name: "Mihomo Alpha", core: "verge-mihomo-alpha", chip: "Alpha Version" }, + { + name: "Mihomo", + core: "verge-mihomo", + chipKey: "system.labels.releaseVersion", + }, + { + name: "Mihomo Alpha", + core: "verge-mihomo-alpha", + chipKey: "system.labels.alphaVersion", + }, ]; export function ClashCoreViewer({ ref }: { ref?: Ref }) { @@ -157,7 +165,7 @@ export function ClashCoreViewer({ ref }: { ref?: Ref }) { {changingCore === each.core ? ( ) : ( - + )} ))} diff --git a/src/components/setting/mods/controller-viewer.tsx b/src/components/setting/mods/controller-viewer.tsx index af6c5bdd..d2beb958 100644 --- a/src/components/setting/mods/controller-viewer.tsx +++ b/src/components/setting/mods/controller-viewer.tsx @@ -75,10 +75,10 @@ export function ControllerViewer({ ref }: { ref?: Ref }) { await patchInfo({ "external-controller": "" }); } - showNotice.success("Configuration saved successfully"); + showNotice.success("settings.common.notifications.saveSuccess"); setOpen(false); } catch (err) { - showNotice.error("Failed to save configuration", err, 4000); + showNotice.error("settings.common.notifications.saveFailed", err, 4000); } finally { setIsSaving(false); } diff --git a/src/components/setting/mods/external-controller-cors.tsx b/src/components/setting/mods/external-controller-cors.tsx index e2f38517..48090e6a 100644 --- a/src/components/setting/mods/external-controller-cors.tsx +++ b/src/components/setting/mods/external-controller-cors.tsx @@ -140,10 +140,10 @@ export const HeaderConfiguration = forwardRef( manual: true, onSuccess: () => { setOpen(false); - showNotice.success("Configuration saved successfully"); + showNotice.success("settings.common.notifications.saveSuccess"); }, onError: () => { - showNotice.error("Failed to save configuration"); + showNotice.error("settings.common.notifications.saveFailed"); }, }, ); diff --git a/src/hooks/use-system-state.ts b/src/hooks/use-system-state.ts index 844ad236..e2670578 100644 --- a/src/hooks/use-system-state.ts +++ b/src/hooks/use-system-state.ts @@ -65,13 +65,11 @@ export function useSystemState() { disablingTunMode = true; patchVerge({ enable_tun_mode: false }) .then(() => { - showNotice.info( - "TUN Mode automatically disabled due to service unavailable", - ); + showNotice.info("system.notifications.tunMode.autoDisabled"); }) .catch((err) => { console.error("[useVerge] 自动关闭TUN模式失败:", err); - showNotice.error("Failed to disable TUN Mode automatically"); + showNotice.error("system.notifications.tunMode.autoDisableFailed"); }) .finally(() => { const tid = setTimeout(() => { diff --git a/src/hooks/useServiceInstaller.ts b/src/hooks/useServiceInstaller.ts index 6f325254..9b6a50d7 100644 --- a/src/hooks/useServiceInstaller.ts +++ b/src/hooks/useServiceInstaller.ts @@ -7,14 +7,14 @@ import { useSystemState } from "./use-system-state"; const executeWithErrorHandling = async ( operation: () => Promise, - loadingMessage: string, - successMessage?: string, + loadingKey: string, + successKey?: string, ) => { try { - showNotice.info(loadingMessage); + showNotice.info(loadingKey); await operation(); - if (successMessage) { - showNotice.success(successMessage); + if (successKey) { + showNotice.success(successKey); } } catch (err) { showNotice.error(err); @@ -28,14 +28,14 @@ export const useServiceInstaller = () => { const installServiceAndRestartCore = useCallback(async () => { await executeWithErrorHandling( () => installService(), - "Installing Service...", - "Service Installed Successfully", + "service.status.installing", + "service.notifications.installSuccess", ); await executeWithErrorHandling( () => restartCore(), - "Restarting Core...", - "Clash Core Restarted", + "core.status.restarting", + "settings.clash.notifications.restartSuccess", ); await mutateSystemState(); diff --git a/src/hooks/useServiceUninstaller.ts b/src/hooks/useServiceUninstaller.ts index 10418da6..a85be404 100644 --- a/src/hooks/useServiceUninstaller.ts +++ b/src/hooks/useServiceUninstaller.ts @@ -7,14 +7,14 @@ import { useSystemState } from "./use-system-state"; const executeWithErrorHandling = async ( operation: () => Promise, - loadingMessage: string, - successMessage?: string, + loadingKey: string, + successKey?: string, ) => { try { - showNotice.info(loadingMessage); + showNotice.info(loadingKey); await operation(); - if (successMessage) { - showNotice.success(successMessage); + if (successKey) { + showNotice.success(successKey); } } catch (err) { showNotice.error(err); @@ -27,18 +27,18 @@ export const useServiceUninstaller = () => { const uninstallServiceAndRestartCore = useCallback(async () => { try { - await executeWithErrorHandling(() => stopCore(), "Stopping Core..."); + await executeWithErrorHandling(() => stopCore(), "core.status.stopping"); await executeWithErrorHandling( () => uninstallService(), - "Uninstalling Service...", - "Service Uninstalled Successfully", + "service.status.uninstalling", + "service.notifications.uninstallSuccess", ); } catch (ignore) { } finally { await executeWithErrorHandling( () => restartCore(), - "Restarting Core...", - "Clash Core Restarted", + "core.status.restarting", + "settings.clash.notifications.restartSuccess", ); await mutateSystemState(); } diff --git a/src/locales/ar.json b/src/locales/ar.json index 7b9088ba..26a32141 100644 --- a/src/locales/ar.json +++ b/src/locales/ar.json @@ -1,139 +1,4 @@ { - "Proxies": "الوكلاء", - "rule": "قاعدة", - "global": "عالمي", - "direct": "مباشر", - "script": "سكريبت", - "DOMAIN": "مطابقة اسم المجال الكامل", - "DOMAIN-SUFFIX": "مطابقة لاحقة المجال", - "DOMAIN-KEYWORD": "مطابقة كلمة مفتاحية في المجال", - "DOMAIN-REGEX": "مطابقة المجال باستخدام التعبيرات العادية", - "GEOSITE": "مطابقة المجالات ضمن Geosite", - "GEOIP": "مطابقة رمز البلد لعنوان IP", - "SRC-GEOIP": "مطابقة رمز البلد لعنوان IP المصدر", - "IP-ASN": "مطابقة ASN لعنوان IP", - "SRC-IP-ASN": "مطابقة ASN لعنوان IP المصدر", - "IP-CIDR": "مطابقة نطاق عنوان IP", - "IP-CIDR6": "مطابقة نطاق عناوين IPv6", - "SRC-IP-CIDR": "مطابقة نطاق عنوان IP المصدر", - "IP-SUFFIX": "مطابقة لاحقة عنوان IP", - "SRC-IP-SUFFIX": "مطابقة لاحقة عنوان IP المصدر", - "SRC-PORT": "مطابقة نطاق المنفذ المصدر", - "DST-PORT": "مطابقة نطاق المنفذ الوجهة", - "IN-PORT": "مطابقة المنفذ الوارد", - "DSCP": "علامة DSCP (لـ tproxy على UDP فقط)", - "PROCESS-NAME": "مطابقة اسم العملية (اسم حزمة Android)", - "PROCESS-PATH": "مطابقة المسار الكامل للعملية", - "PROCESS-NAME-REGEX": "مطابقة اسم العملية باستخدام التعبيرات العادية (اسم حزمة Android)", - "PROCESS-PATH-REGEX": "مطابقة المسار الكامل للعملية باستخدام التعبيرات العادية", - "NETWORK": "مطابقة بروتوكول النقل (TCP/UDP)", - "UID": "مطابقة معرف المستخدم في Linux", - "IN-TYPE": "مطابقة نوع الإدخال", - "IN-USER": "مطابقة اسم المستخدم للإدخال", - "IN-NAME": "مطابقة اسم الإدخال", - "SUB-RULE": "قاعدة فرعية", - "RULE-SET": "مطابقة مجموعة القواعد", - "AND": "منطقي AND", - "OR": "منطقي OR", - "NOT": "منطقي NOT", - "MATCH": "مطابقة جميع الطلبات", - "DIRECT": "البيانات تخرج مباشرة", - "REJECT": "رفض الطلبات", - "REJECT-DROP": "تجاهل الطلبات", - "PASS": "تخطي هذه القاعدة عند المطابقة", - "select": "اختيار الوكيل يدويًا", - "url-test": "اختيار الوكيل بناءً على تأخير اختبار الرابط", - "fallback": "التبديل إلى وكيل آخر عند حدوث خطأ", - "load-balance": "توزيع التحميل بين الوكلاء", - "relay": "التمرير عبر سلسلة الوكلاء المحددة", - "Timeout": "مهلة", - "Type": "النوع", - "Close All Connections": "Close All Connections", - "Rule": "قاعدة", - "TUN Mode automatically disabled due to service unavailable": "TUN Mode automatically disabled due to service unavailable", - "Failed to disable TUN Mode automatically": "Failed to disable TUN Mode automatically", - "active": "نشط", - "unknown": "غير معروف", - "Install": "تثبيت", - "Uninstall": "إلغاء التثبيت", - "System Proxy": "وكيل النظام", - "Release Version": "إصدار مستقر", - "Alpha Version": "إصدار ألفا", - "theme.light": "سمة فاتحة", - "theme.dark": "سمة داكنة", - "theme.system": "سمة النظام", - "Exit": "خروج", - "Profile Imported Successfully": "تم استيراد الملف الشخصي بنجاح", - "Stopping Core...": "Stopping Core...", - "Restarting Core...": "Restarting Core...", - "Installing Service...": "جاري تثبيت الخدمة...", - "Uninstalling Service...": "Uninstalling Service...", - "Service Installed Successfully": "تم تثبيت الخدمة بنجاح", - "Service Uninstalled Successfully": "تم إلغاء تثبيت الخدمة بنجاح", - "Import Subscription Successful": "تم استيراد الاشتراك بنجاح", - "Profile": "الملف الشخصي", - "Dashboard": "لوحة التحكم", - "Restart App": "إعادة تشغيل التطبيق", - "Restart Clash Core": "إعادة تشغيل نواة Clash", - "TUN Mode": "وضع TUN", - "Copy Env": "نسخ البيئة", - "Conf Dir": "مجلد الإعدادات", - "Core Dir": "مجلد النواة", - "Logs Dir": "مجلد السجلات", - "Open Dir": "فتح المجلد", - "More": "المزيد", - "LightWeight Mode": "وضع الأداء الخفيف", - "Config Validation Failed": "فشل التحقق من تكوين الاشتراك، يرجى فحص ملف التكوين، تم التراجع عن التغييرات، تفاصيل الخطأ:", - "Boot Config Validation Failed": "فشل التحقق من التكوين عند الإقلاع، تم استخدام التكوين الافتراضي، يرجى فحص ملف التكوين، تفاصيل الخطأ:", - "Core Change Config Validation Failed": "فشل التحقق من التكوين عند تغيير النواة، تم استخدام التكوين الافتراضي، يرجى فحص ملف التكوين، تفاصيل الخطأ:", - "Config Validation Process Terminated": "تم إنهاء عملية التحقق", - "Script Syntax Error": "خطأ في بناء جملة السكريبت، تم التراجع عن التغييرات", - "Script Missing Main": "خطأ في السكريبت، تم التراجع عن التغييرات", - "File Not Found": "الملف غير موجود، تم التراجع عن التغييرات", - "Script File Error": "خطأ في ملف السكريبت، تم التراجع عن التغييرات", - "Core Changed Successfully": "تم تغيير النواة بنجاح", - "Failed to Change Core": "فشل تغيير النواة", - "YAML Syntax Error": "YAML syntax error, changes reverted", - "YAML Read Error": "YAML read error, changes reverted", - "YAML Mapping Error": "YAML mapping error, changes reverted", - "YAML Key Error": "YAML key error, changes reverted", - "YAML Error": "YAML error, changes reverted", - "Merge File Syntax Error": "Merge file syntax error, changes reverted", - "Merge File Mapping Error": "Merge file mapping error, changes reverted", - "Merge File Key Error": "Merge file key error, changes reverted", - "Merge File Error": "Merge file error, changes reverted", - "Service Administrator Prompt": "يتطلب Clash Verge امتيازات المسؤول لإعادة تثبيت خدمة النظام", - "Update with Clash proxy successfully": "Update with Clash proxy successfully", - "Update failed even with Clash proxy": "Update failed even with Clash proxy", - "Profile Imported with Clash proxy": "Profile Imported with Clash proxy", - "Pending": "Pending", - "Yes": "Yes", - "No": "No", - "Failed": "Failed", - "Completed": "Completed", - "Disallowed ISP": "Disallowed ISP", - "Originals Only": "Originals Only", - "No (IP Banned By Disney+)": "No (IP Banned By Disney+)", - "Unsupported Country/Region": "Unsupported Country/Region", - "Failed (Network Connection)": "Failed (Network Connection)", - "DashboardToggledTitle": "Dashboard Toggled", - "DashboardToggledBody": "Dashboard visibility toggled by hotkey", - "ClashModeChangedTitle": "Clash Mode Changed", - "ClashModeChangedBody": "Switched to {mode} mode", - "SystemProxyToggledTitle": "System Proxy Toggled", - "SystemProxyToggledBody": "System proxy state toggled by hotkey", - "TunModeToggledTitle": "TUN Mode Toggled", - "TunModeToggledBody": "TUN mode toggled by hotkey", - "LightweightModeEnteredTitle": "Lightweight Mode", - "LightweightModeEnteredBody": "Entered lightweight mode by hotkey", - "AppQuitTitle": "APP Quit", - "AppQuitBody": "APP quit by hotkey", - "AppHiddenTitle": "APP Hidden", - "AppHiddenBody": "APP window hidden by hotkey", - "Configuration saved successfully": "Configuration saved successfully", - "Failed to save configuration": "Failed to save configuration", - "Open App Log": "Open App Log", - "Open Core Log": "Open Core Log", "common": { "editorModes": { "visualization": "تصور", @@ -856,7 +721,9 @@ }, "common": { "notifications": { - "copySuccess": "تم النسخ بنجاح" + "copySuccess": "تم النسخ بنجاح", + "saveSuccess": "Configuration saved successfully", + "saveFailed": "Failed to save configuration" } }, "misc": { @@ -1122,6 +989,18 @@ "testAll": "اختبار الكل", "new": "جديد" } + }, + "statuses": { + "pending": "Pending", + "yes": "Yes", + "no": "No", + "failed": "Failed", + "completed": "Completed", + "disallowedIsp": "Disallowed ISP", + "originalsOnly": "Originals Only", + "noDisney": "No (IP Banned By Disney+)", + "unsupportedRegion": "Unsupported Country/Region", + "failedNetwork": "Failed (Network Connection)" } }, "proxies": { @@ -1237,6 +1116,11 @@ "forceRefreshCompleted": "Force refresh completed", "emergencyRefreshFailed": "Emergency refresh failed: {{message}}" } + }, + "notifications": { + "importSuccess": "تم استيراد الملف الشخصي بنجاح", + "importSubscriptionSuccess": "تم استيراد الاشتراك بنجاح", + "importWithClashProxy": "Profile Imported with Clash proxy" } }, "connections": { @@ -1292,5 +1176,79 @@ "memoryUsage": "استهلاك الذاكرة" } } + }, + "proxy": { + "strategies": { + "select": "اختيار الوكيل يدويًا", + "url-test": "اختيار الوكيل بناءً على تأخير اختبار الرابط", + "fallback": "التبديل إلى وكيل آخر عند حدوث خطأ", + "load-balance": "توزيع التحميل بين الوكلاء", + "relay": "التمرير عبر سلسلة الوكلاء المحددة" + } + }, + "system": { + "notifications": { + "tunMode": { + "autoDisabled": "TUN Mode automatically disabled due to service unavailable", + "autoDisableFailed": "Failed to disable TUN Mode automatically" + } + }, + "labels": { + "releaseVersion": "إصدار مستقر", + "alphaVersion": "إصدار ألفا" + } + }, + "core": { + "status": { + "stopping": "Stopping Core...", + "restarting": "Restarting Core..." + }, + "notifications": { + "changeSuccess": "تم تغيير النواة بنجاح", + "changeFailed": "فشل تغيير النواة" + } + }, + "service": { + "status": { + "installing": "جاري تثبيت الخدمة...", + "uninstalling": "Uninstalling Service..." + }, + "notifications": { + "installSuccess": "تم تثبيت الخدمة بنجاح", + "uninstallSuccess": "تم إلغاء تثبيت الخدمة بنجاح" + } + }, + "validation": { + "config": { + "failed": "فشل التحقق من تكوين الاشتراك، يرجى فحص ملف التكوين، تم التراجع عن التغييرات، تفاصيل الخطأ:", + "bootFailed": "فشل التحقق من التكوين عند الإقلاع، تم استخدام التكوين الافتراضي، يرجى فحص ملف التكوين، تفاصيل الخطأ:", + "coreChangeFailed": "فشل التحقق من التكوين عند تغيير النواة، تم استخدام التكوين الافتراضي، يرجى فحص ملف التكوين، تفاصيل الخطأ:", + "processTerminated": "تم إنهاء عملية التحقق" + }, + "script": { + "syntaxError": "خطأ في بناء جملة السكريبت، تم التراجع عن التغييرات", + "missingMain": "خطأ في السكريبت، تم التراجع عن التغييرات", + "fileNotFound": "الملف غير موجود، تم التراجع عن التغييرات", + "fileError": "خطأ في ملف السكريبت، تم التراجع عن التغييرات" + }, + "yaml": { + "syntaxError": "YAML syntax error, changes reverted", + "readError": "YAML read error, changes reverted", + "mappingError": "YAML mapping error, changes reverted", + "keyError": "YAML key error, changes reverted", + "generalError": "YAML error, changes reverted" + }, + "merge": { + "syntaxError": "Merge file syntax error, changes reverted", + "mappingError": "Merge file mapping error, changes reverted", + "keyError": "Merge file key error, changes reverted", + "generalError": "Merge file error, changes reverted" + } + }, + "updates": { + "notifications": { + "withClashProxySuccess": "Update with Clash proxy successfully", + "withClashProxyFailed": "Update failed even with Clash proxy" + } } } diff --git a/src/locales/de.json b/src/locales/de.json index ef610839..466cf025 100644 --- a/src/locales/de.json +++ b/src/locales/de.json @@ -1,139 +1,4 @@ { - "Proxies": "Proxies", - "rule": "Regel", - "global": "Global", - "direct": "Direktverbindung", - "script": "Skript", - "DOMAIN": "Vollständigen Domainnamen übereinstimmen", - "DOMAIN-SUFFIX": "Domain-Suffix übereinstimmen", - "DOMAIN-KEYWORD": "Domain-Schlüsselwort übereinstimmen", - "DOMAIN-REGEX": "Domain-Regulärer Ausdruck übereinstimmen", - "GEOSITE": "Domainnamen in Geosite übereinstimmen", - "GEOIP": "IP-Ländercode übereinstimmen", - "SRC-GEOIP": "Quell-IP-Ländercode übereinstimmen", - "IP-ASN": "IP-ASN übereinstimmen", - "SRC-IP-ASN": "Quell-IP-ASN übereinstimmen", - "IP-CIDR": "IP-Adressbereich übereinstimmen", - "IP-CIDR6": "IP-Adressbereich übereinstimmen", - "SRC-IP-CIDR": "Quell-IP-Adressbereich übereinstimmen", - "IP-SUFFIX": "IP-Suffix-Bereich übereinstimmen", - "SRC-IP-SUFFIX": "Quell-IP-Suffix-Bereich übereinstimmen", - "SRC-PORT": "Quellportbereich der Anfrage übereinstimmen", - "DST-PORT": "Zielportbereich der Anfrage übereinstimmen", - "IN-PORT": "Eingangsport übereinstimmen", - "DSCP": "DSCP-Markierung (nur für TPROXY UDP-Eingang)", - "PROCESS-NAME": "Prozessnamen übereinstimmen (Android-Paketname)", - "PROCESS-PATH": "Vollständigen Prozesspfad übereinstimmen", - "PROCESS-NAME-REGEX": "Regulärer Ausdruck für vollständigen Prozessnamen übereinstimmen (Android-Paketname)", - "PROCESS-PATH-REGEX": "Regulärer Ausdruck für vollständigen Prozesspfad übereinstimmen", - "NETWORK": "Übertragungsprotokoll übereinstimmen (TCP/UDP)", - "UID": "Linux-USER-ID übereinstimmen", - "IN-TYPE": "Eingangstyp übereinstimmen", - "IN-USER": "Eingangsbenutzername übereinstimmen", - "IN-NAME": "Eingangsname übereinstimmen", - "SUB-RULE": "Unterregel", - "RULE-SET": "Regelsatz übereinstimmen", - "AND": "Logisches UND", - "OR": "Logisches ODER", - "NOT": "Logisches NICHT", - "MATCH": "Alle Anfragen übereinstimmen", - "DIRECT": "Direktverbindung", - "REJECT": "Anfrage ablehnen", - "REJECT-DROP": "Anfrage verwerfen", - "PASS": "Diese Regel überspringen", - "select": "Proxy manuell auswählen", - "url-test": "Proxy basierend auf URL-Latenztest auswählen", - "fallback": "Bei Nichtverfügbarkeit zu einem anderen Proxy wechseln", - "load-balance": "Proxy basierend auf Lastverteilung zuweisen", - "relay": "Basierend auf definiertem Proxy-Kette weiterleiten", - "Timeout": "Timeout", - "Type": "Typ", - "Close All Connections": "Close All Connections", - "Rule": "Regel", - "TUN Mode automatically disabled due to service unavailable": "TUN Mode automatically disabled due to service unavailable", - "Failed to disable TUN Mode automatically": "Failed to disable TUN Mode automatically", - "active": "Aktiviert", - "unknown": "Unbekannt", - "Install": "Installieren", - "Uninstall": "Deinstallieren", - "System Proxy": "Systemproxy", - "Release Version": "Stabile Version", - "Alpha Version": "Vorschauversion", - "theme.light": "Light", - "theme.dark": "Dark", - "theme.system": "System", - "Exit": "Beenden", - "Profile Imported Successfully": "Abonnement erfolgreich importiert", - "Stopping Core...": "Kern wird gestoppt...", - "Restarting Core...": "Kern wird neu gestartet...", - "Installing Service...": "Service wird installiert...", - "Uninstalling Service...": "Service wird deinstalliert...", - "Service Installed Successfully": "Service erfolgreich installiert", - "Service Uninstalled Successfully": "Service erfolgreich deinstalliert", - "Import Subscription Successful": "Abonnement erfolgreich importiert", - "Profile": "Konfiguration", - "Dashboard": "Dashboard", - "Restart App": "App neu starten", - "Restart Clash Core": "Clash-Kern neu starten", - "TUN Mode": "TUN-Modus", - "Copy Env": "Umgebungsvariablen kopieren", - "Conf Dir": "Konfigurationsverzeichnis", - "Core Dir": "Kernverzeichnis", - "Logs Dir": "Protokollverzeichnis", - "Open Dir": "Verzeichnis öffnen", - "More": "Mehr", - "LightWeight Mode": "Leichtgewichtiger Modus", - "Config Validation Failed": "Abonnement-Konfigurationsüberprüfung fehlgeschlagen. Bitte überprüfen Sie die Abonnement-Konfigurationsdatei. Die Änderungen wurden rückgängig gemacht. Fehlerdetails: ", - "Boot Config Validation Failed": "Start-Abonnement-Konfigurationsüberprüfung fehlgeschlagen. Die Standardkonfiguration wurde verwendet, um die App zu starten. Bitte überprüfen Sie die Abonnement-Konfigurationsdatei. Fehlerdetails: ", - "Core Change Config Validation Failed": "Konfigurationsüberprüfung beim Wechsel des Kerns fehlgeschlagen. Die Standardkonfiguration wurde verwendet, um die App zu starten. Bitte überprüfen Sie die Abonnement-Konfigurationsdatei. Fehlerdetails: ", - "Config Validation Process Terminated": "Validierungsprozess abgebrochen", - "Script Syntax Error": "Skript-Syntaxfehler. Die Änderungen wurden rückgängig gemacht.", - "Script Missing Main": "Skriptfehler. Die Änderungen wurden rückgängig gemacht.", - "File Not Found": "Datei nicht gefunden. Die Änderungen wurden rückgängig gemacht.", - "Script File Error": "Skript-Dateifehler. Die Änderungen wurden rückgängig gemacht.", - "Core Changed Successfully": "Kern erfolgreich gewechselt", - "Failed to Change Core": "Kernwechsel fehlgeschlagen", - "YAML Syntax Error": "YAML-Syntaxfehler. Die Änderungen wurden rückgängig gemacht.", - "YAML Read Error": "YAML-Lesefehler. Die Änderungen wurden rückgängig gemacht.", - "YAML Mapping Error": "YAML-Mappingfehler. Die Änderungen wurden rückgängig gemacht.", - "YAML Key Error": "YAML-Schlüsselfehler. Die Änderungen wurden rückgängig gemacht.", - "YAML Error": "YAML-Fehler. Die Änderungen wurden rückgängig gemacht.", - "Merge File Syntax Error": "Syntaxfehler in der Überdeckungsdatei. Die Änderungen wurden rückgängig gemacht.", - "Merge File Mapping Error": "Mappingfehler in der Überdeckungsdatei. Die Änderungen wurden rückgängig gemacht.", - "Merge File Key Error": "Schlüsselfehler in der Überdeckungsdatei. Die Änderungen wurden rückgängig gemacht.", - "Merge File Error": "Fehler in der Überdeckungsdatei. Die Änderungen wurden rückgängig gemacht.", - "Service Administrator Prompt": "Clash Verge benötigt Administratorrechte, um den Systemdienst zu installieren.", - "Update with Clash proxy successfully": "Aktualisierung mit Clash-Proxy erfolgreich", - "Update failed even with Clash proxy": "Aktualisierung auch mit Clash-Proxy fehlgeschlagen", - "Profile Imported with Clash proxy": "Abonnement mit Clash-Proxy importiert", - "Pending": "Wartend auf Prüfung", - "Yes": "Unterstützt", - "No": "Nicht unterstützt", - "Failed": "Test fehlgeschlagen", - "Completed": "Prüfung abgeschlossen", - "Disallowed ISP": "Nicht zugelassener Internetdienstanbieter", - "Originals Only": "Nur Original", - "No (IP Banned By Disney+)": "No (IP Banned By Disney+)", - "Unsupported Country/Region": "Nicht unterstütztes Land/Region", - "Failed (Network Connection)": "Failed (Network Connection)", - "DashboardToggledTitle": "Dashboard Toggled", - "DashboardToggledBody": "Dashboard visibility toggled by hotkey", - "ClashModeChangedTitle": "Clash Mode Changed", - "ClashModeChangedBody": "Switched to {mode} mode", - "SystemProxyToggledTitle": "System Proxy Toggled", - "SystemProxyToggledBody": "System proxy state toggled by hotkey", - "TunModeToggledTitle": "TUN Mode Toggled", - "TunModeToggledBody": "TUN mode toggled by hotkey", - "LightweightModeEnteredTitle": "Lightweight Mode", - "LightweightModeEnteredBody": "Entered lightweight mode by hotkey", - "AppQuitTitle": "APP Quit", - "AppQuitBody": "APP quit by hotkey", - "AppHiddenTitle": "APP Hidden", - "AppHiddenBody": "APP window hidden by hotkey", - "Configuration saved successfully": "Zufalls-Konfiguration erfolgreich gespeichert", - "Failed to save configuration": "Failed to save configuration", - "Open App Log": "Open App Log", - "Open Core Log": "Open Core Log", "common": { "editorModes": { "visualization": "Visualisierung", @@ -856,7 +721,9 @@ }, "common": { "notifications": { - "copySuccess": "Kopieren erfolgreich" + "copySuccess": "Kopieren erfolgreich", + "saveSuccess": "Zufalls-Konfiguration erfolgreich gespeichert", + "saveFailed": "Failed to save configuration" } }, "misc": { @@ -1122,6 +989,18 @@ "testAll": "Alle testen", "new": "Neu" } + }, + "statuses": { + "pending": "Wartend auf Prüfung", + "yes": "Unterstützt", + "no": "Nicht unterstützt", + "failed": "Test fehlgeschlagen", + "completed": "Prüfung abgeschlossen", + "disallowedIsp": "Nicht zugelassener Internetdienstanbieter", + "originalsOnly": "Nur Original", + "noDisney": "No (IP Banned By Disney+)", + "unsupportedRegion": "Nicht unterstütztes Land/Region", + "failedNetwork": "Failed (Network Connection)" } }, "proxies": { @@ -1237,6 +1116,11 @@ "forceRefreshCompleted": "Force refresh completed", "emergencyRefreshFailed": "Emergency refresh failed: {{message}}" } + }, + "notifications": { + "importSuccess": "Abonnement erfolgreich importiert", + "importSubscriptionSuccess": "Abonnement erfolgreich importiert", + "importWithClashProxy": "Abonnement mit Clash-Proxy importiert" } }, "connections": { @@ -1292,5 +1176,79 @@ "memoryUsage": "Kern-Speichernutzung" } } + }, + "proxy": { + "strategies": { + "select": "Proxy manuell auswählen", + "url-test": "Proxy basierend auf URL-Latenztest auswählen", + "fallback": "Bei Nichtverfügbarkeit zu einem anderen Proxy wechseln", + "load-balance": "Proxy basierend auf Lastverteilung zuweisen", + "relay": "Basierend auf definiertem Proxy-Kette weiterleiten" + } + }, + "system": { + "notifications": { + "tunMode": { + "autoDisabled": "TUN Mode automatically disabled due to service unavailable", + "autoDisableFailed": "Failed to disable TUN Mode automatically" + } + }, + "labels": { + "releaseVersion": "Stabile Version", + "alphaVersion": "Vorschauversion" + } + }, + "core": { + "status": { + "stopping": "Kern wird gestoppt...", + "restarting": "Kern wird neu gestartet..." + }, + "notifications": { + "changeSuccess": "Kern erfolgreich gewechselt", + "changeFailed": "Kernwechsel fehlgeschlagen" + } + }, + "service": { + "status": { + "installing": "Service wird installiert...", + "uninstalling": "Service wird deinstalliert..." + }, + "notifications": { + "installSuccess": "Service erfolgreich installiert", + "uninstallSuccess": "Service erfolgreich deinstalliert" + } + }, + "validation": { + "config": { + "failed": "Abonnement-Konfigurationsüberprüfung fehlgeschlagen. Bitte überprüfen Sie die Abonnement-Konfigurationsdatei. Die Änderungen wurden rückgängig gemacht. Fehlerdetails: ", + "bootFailed": "Start-Abonnement-Konfigurationsüberprüfung fehlgeschlagen. Die Standardkonfiguration wurde verwendet, um die App zu starten. Bitte überprüfen Sie die Abonnement-Konfigurationsdatei. Fehlerdetails: ", + "coreChangeFailed": "Konfigurationsüberprüfung beim Wechsel des Kerns fehlgeschlagen. Die Standardkonfiguration wurde verwendet, um die App zu starten. Bitte überprüfen Sie die Abonnement-Konfigurationsdatei. Fehlerdetails: ", + "processTerminated": "Validierungsprozess abgebrochen" + }, + "script": { + "syntaxError": "Skript-Syntaxfehler. Die Änderungen wurden rückgängig gemacht.", + "missingMain": "Skriptfehler. Die Änderungen wurden rückgängig gemacht.", + "fileNotFound": "Datei nicht gefunden. Die Änderungen wurden rückgängig gemacht.", + "fileError": "Skript-Dateifehler. Die Änderungen wurden rückgängig gemacht." + }, + "yaml": { + "syntaxError": "YAML-Syntaxfehler. Die Änderungen wurden rückgängig gemacht.", + "readError": "YAML-Lesefehler. Die Änderungen wurden rückgängig gemacht.", + "mappingError": "YAML-Mappingfehler. Die Änderungen wurden rückgängig gemacht.", + "keyError": "YAML-Schlüsselfehler. Die Änderungen wurden rückgängig gemacht.", + "generalError": "YAML-Fehler. Die Änderungen wurden rückgängig gemacht." + }, + "merge": { + "syntaxError": "Syntaxfehler in der Überdeckungsdatei. Die Änderungen wurden rückgängig gemacht.", + "mappingError": "Mappingfehler in der Überdeckungsdatei. Die Änderungen wurden rückgängig gemacht.", + "keyError": "Schlüsselfehler in der Überdeckungsdatei. Die Änderungen wurden rückgängig gemacht.", + "generalError": "Fehler in der Überdeckungsdatei. Die Änderungen wurden rückgängig gemacht." + } + }, + "updates": { + "notifications": { + "withClashProxySuccess": "Aktualisierung mit Clash-Proxy erfolgreich", + "withClashProxyFailed": "Aktualisierung auch mit Clash-Proxy fehlgeschlagen" + } } } diff --git a/src/locales/en.json b/src/locales/en.json index d7119229..6ac4a616 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -1,139 +1,4 @@ { - "Proxies": "Proxies", - "rule": "rule", - "global": "global", - "direct": "direct", - "script": "script", - "DOMAIN": "Matches the full domain name", - "DOMAIN-SUFFIX": "Matches the domain suffix", - "DOMAIN-KEYWORD": "Matches the domain keyword", - "DOMAIN-REGEX": "Matches the domain using regular expressions", - "GEOSITE": "Matches domains within the Geosite", - "GEOIP": "Matches the country code of the IP address", - "SRC-GEOIP": "Matches the country code of the source IP address", - "IP-ASN": "Matches the IP address's ASN", - "SRC-IP-ASN": "Matches the source IP address's ASN", - "IP-CIDR": "Matches the IP address range", - "IP-CIDR6": "Matches the IPv6 address range", - "SRC-IP-CIDR": "Matches the source IP address range", - "IP-SUFFIX": "Matches the IP address suffix range", - "SRC-IP-SUFFIX": "Matches the source IP address suffix range", - "SRC-PORT": "Matches the source port range", - "DST-PORT": "Matches the destination port range", - "IN-PORT": "Matches the inbound port", - "DSCP": "DSCP marking (only for tproxy UDP inbound)", - "PROCESS-NAME": "Matches the process name (Android package name)", - "PROCESS-PATH": "Matches the full process path", - "PROCESS-NAME-REGEX": "Matches the full process name using regular expressions (Android package name)", - "PROCESS-PATH-REGEX": "Matches the full process path using regular expressions", - "NETWORK": "Matches the transport protocol (tcp/udp)", - "UID": "Matches the Linux USER ID", - "IN-TYPE": "Matches the inbound type", - "IN-USER": "Matches the inbound username", - "IN-NAME": "Matches the inbound name", - "SUB-RULE": "Sub-rule", - "RULE-SET": "Matches the rule set", - "AND": "Logical AND", - "OR": "Logical OR", - "NOT": "Logical NOT", - "MATCH": "Matches all requests", - "DIRECT": "Data goes directly outbound", - "REJECT": "Intercepts requests", - "REJECT-DROP": "Discards requests", - "PASS": "Skips this rule when matched", - "select": "Select proxy manually", - "url-test": "Select proxy based on URL test delay", - "fallback": "Switch to another proxy on error", - "load-balance": "Distribute proxy based on load balancing", - "relay": "Pass through the defined proxy chain", - "Timeout": "Timeout", - "Type": "Type", - "Close All Connections": "Close All Connections", - "Rule": "Rule", - "TUN Mode automatically disabled due to service unavailable": "TUN Mode automatically disabled due to service unavailable", - "Failed to disable TUN Mode automatically": "Failed to disable TUN Mode automatically", - "active": "active", - "unknown": "unknown", - "Install": "Install", - "Uninstall": "Uninstall", - "System Proxy": "System Proxy", - "Release Version": "Release Version", - "Alpha Version": "Alpha Version", - "theme.light": "Light", - "theme.dark": "Dark", - "theme.system": "System", - "Exit": "Exit", - "Profile Imported Successfully": "Profile Imported Successfully", - "Stopping Core...": "Stopping Core...", - "Restarting Core...": "Restarting Core...", - "Installing Service...": "Installing Service...", - "Uninstalling Service...": "Uninstalling Service...", - "Service Installed Successfully": "Service Installed Successfully", - "Service Uninstalled Successfully": "Service Uninstalled Successfully", - "Import Subscription Successful": "Import subscription successful", - "Profile": "Profile", - "Dashboard": "Dashboard", - "Restart App": "Restart App", - "Restart Clash Core": "Restart Clash Core", - "TUN Mode": "TUN Mode", - "Copy Env": "Copy Env", - "Conf Dir": "Conf Dir", - "Core Dir": "Core Dir", - "Logs Dir": "Logs Dir", - "Open Dir": "Open Dir", - "More": "More", - "LightWeight Mode": "Lightweight Mode", - "Config Validation Failed": "Subscription configuration validation failed. Please check the subscription configuration file; modifications have been rolled back.", - "Boot Config Validation Failed": "Boot subscription configuration validation failed. Started with the default configuration; please check the subscription configuration file.", - "Core Change Config Validation Failed": "Configuration validation failed when switching the kernel. Started with the default configuration; please check the subscription configuration file.", - "Config Validation Process Terminated": "The validation process has been terminated.", - "Script Syntax Error": "Script syntax error, changes reverted", - "Script Missing Main": "Script error, changes reverted", - "File Not Found": "File missing, changes reverted", - "Script File Error": "Script file error, changes reverted", - "Core Changed Successfully": "Core changed successfully", - "Failed to Change Core": "Failed to change core", - "YAML Syntax Error": "YAML syntax error, changes reverted", - "YAML Read Error": "YAML read error, changes reverted", - "YAML Mapping Error": "YAML mapping error, changes reverted", - "YAML Key Error": "YAML key error, changes reverted", - "YAML Error": "YAML error, changes reverted", - "Merge File Syntax Error": "Merge file syntax error, changes reverted", - "Merge File Mapping Error": "Merge file mapping error, changes reverted", - "Merge File Key Error": "Merge file key error, changes reverted", - "Merge File Error": "Merge file error, changes reverted", - "Service Administrator Prompt": "Clash Verge requires administrator privileges to reinstall the system service", - "Update with Clash proxy successfully": "Update with Clash proxy successfully", - "Update failed even with Clash proxy": "Update failed even with Clash proxy", - "Profile Imported with Clash proxy": "Profile Imported with Clash proxy", - "Pending": "Pending", - "Yes": "Yes", - "No": "No", - "Failed": "Failed", - "Completed": "Completed", - "Disallowed ISP": "Disallowed ISP", - "Originals Only": "Originals Only", - "No (IP Banned By Disney+)": "No (IP Banned By Disney+)", - "Unsupported Country/Region": "Unsupported Country/Region", - "Failed (Network Connection)": "Failed (Network Connection)", - "DashboardToggledTitle": "Dashboard Toggled", - "DashboardToggledBody": "Dashboard visibility toggled by hotkey", - "ClashModeChangedTitle": "Clash Mode Changed", - "ClashModeChangedBody": "Switched to {mode} mode", - "SystemProxyToggledTitle": "System Proxy Toggled", - "SystemProxyToggledBody": "System proxy state toggled by hotkey", - "TunModeToggledTitle": "TUN Mode Toggled", - "TunModeToggledBody": "TUN mode toggled by hotkey", - "LightweightModeEnteredTitle": "Lightweight Mode", - "LightweightModeEnteredBody": "Entered lightweight mode by hotkey", - "AppQuitTitle": "APP Quit", - "AppQuitBody": "APP quit by hotkey", - "AppHiddenTitle": "APP Hidden", - "AppHiddenBody": "APP window hidden by hotkey", - "Configuration saved successfully": "Configuration saved successfully", - "Failed to save configuration": "Failed to save configuration", - "Open App Log": "Open App Log", - "Open Core Log": "Open Core Log", "common": { "editorModes": { "visualization": "Visualization", @@ -856,7 +721,9 @@ }, "common": { "notifications": { - "copySuccess": "Copy Success" + "copySuccess": "Copy Success", + "saveSuccess": "Configuration saved successfully", + "saveFailed": "Failed to save configuration" } }, "misc": { @@ -1122,6 +989,18 @@ "testAll": "Test All", "new": "New" } + }, + "statuses": { + "pending": "Pending", + "yes": "Yes", + "no": "No", + "failed": "Failed", + "completed": "Completed", + "disallowedIsp": "Disallowed ISP", + "originalsOnly": "Originals Only", + "noDisney": "No (IP Banned By Disney+)", + "unsupportedRegion": "Unsupported Country/Region", + "failedNetwork": "Failed (Network Connection)" } }, "proxies": { @@ -1237,6 +1116,11 @@ "forceRefreshCompleted": "Force refresh completed", "emergencyRefreshFailed": "Emergency refresh failed: {{message}}" } + }, + "notifications": { + "importSuccess": "Profile Imported Successfully", + "importSubscriptionSuccess": "Import subscription successful", + "importWithClashProxy": "Profile Imported with Clash proxy" } }, "connections": { @@ -1292,5 +1176,79 @@ "memoryUsage": "Memory Usage" } } + }, + "proxy": { + "strategies": { + "select": "Select proxy manually", + "url-test": "Select proxy based on URL test delay", + "fallback": "Switch to another proxy on error", + "load-balance": "Distribute proxy based on load balancing", + "relay": "Pass through the defined proxy chain" + } + }, + "system": { + "notifications": { + "tunMode": { + "autoDisabled": "TUN Mode automatically disabled due to service unavailable", + "autoDisableFailed": "Failed to disable TUN Mode automatically" + } + }, + "labels": { + "releaseVersion": "Release Version", + "alphaVersion": "Alpha Version" + } + }, + "core": { + "status": { + "stopping": "Stopping Core...", + "restarting": "Restarting Core..." + }, + "notifications": { + "changeSuccess": "Core changed successfully", + "changeFailed": "Failed to change core" + } + }, + "service": { + "status": { + "installing": "Installing Service...", + "uninstalling": "Uninstalling Service..." + }, + "notifications": { + "installSuccess": "Service Installed Successfully", + "uninstallSuccess": "Service Uninstalled Successfully" + } + }, + "validation": { + "config": { + "failed": "Subscription configuration validation failed. Please check the subscription configuration file; modifications have been rolled back.", + "bootFailed": "Boot subscription configuration validation failed. Started with the default configuration; please check the subscription configuration file.", + "coreChangeFailed": "Configuration validation failed when switching the kernel. Started with the default configuration; please check the subscription configuration file.", + "processTerminated": "The validation process has been terminated." + }, + "script": { + "syntaxError": "Script syntax error, changes reverted", + "missingMain": "Script error, changes reverted", + "fileNotFound": "File missing, changes reverted", + "fileError": "Script file error, changes reverted" + }, + "yaml": { + "syntaxError": "YAML syntax error, changes reverted", + "readError": "YAML read error, changes reverted", + "mappingError": "YAML mapping error, changes reverted", + "keyError": "YAML key error, changes reverted", + "generalError": "YAML error, changes reverted" + }, + "merge": { + "syntaxError": "Merge file syntax error, changes reverted", + "mappingError": "Merge file mapping error, changes reverted", + "keyError": "Merge file key error, changes reverted", + "generalError": "Merge file error, changes reverted" + } + }, + "updates": { + "notifications": { + "withClashProxySuccess": "Update with Clash proxy successfully", + "withClashProxyFailed": "Update failed even with Clash proxy" + } } } diff --git a/src/locales/es.json b/src/locales/es.json index 137a36e0..f614c50a 100644 --- a/src/locales/es.json +++ b/src/locales/es.json @@ -1,139 +1,4 @@ { - "Proxies": "Proxies", - "rule": "Regla", - "global": "Global", - "direct": "Conexión directa", - "script": "Script", - "DOMAIN": "Coincidir con el nombre de dominio completo", - "DOMAIN-SUFFIX": "Coincidir con el sufijo del nombre de dominio", - "DOMAIN-KEYWORD": "Coincidir con la palabra clave del nombre de dominio", - "DOMAIN-REGEX": "Coincidir con la expresión regular del nombre de dominio", - "GEOSITE": "Coincidir con los nombres de dominio en Geosite", - "GEOIP": "Coincidir con el código de país del IP", - "SRC-GEOIP": "Coincidir con el código de país del IP de origen", - "IP-ASN": "Coincidir con el ASN del IP", - "SRC-IP-ASN": "Coincidir con el ASN del IP de origen", - "IP-CIDR": "Coincidir con el rango de direcciones IP", - "IP-CIDR6": "Coincidir con el rango de direcciones IP", - "SRC-IP-CIDR": "Coincidir con el rango de direcciones IP de origen", - "IP-SUFFIX": "Coincidir con el rango de sufijos de IP", - "SRC-IP-SUFFIX": "Coincidir con el rango de sufijos de IP de origen", - "SRC-PORT": "Coincidir con el rango de puertos de origen de la solicitud", - "DST-PORT": "Coincidir con el rango de puertos de destino de la solicitud", - "IN-PORT": "Coincidir con el puerto de entrada", - "DSCP": "Etiqueta DSCP (solo para entradas UDP TPROXY)", - "PROCESS-NAME": "Coincidir con el nombre del proceso (nombre del paquete de Android)", - "PROCESS-PATH": "Coincidir con la ruta completa del proceso", - "PROCESS-NAME-REGEX": "Coincidir con el nombre completo del proceso mediante expresiones regulares (nombre del paquete de Android)", - "PROCESS-PATH-REGEX": "Coincidir con la ruta completa del proceso mediante expresiones regulares", - "NETWORK": "Coincidir con el protocolo de transporte (TCP/UDP)", - "UID": "Coincidir con el ID de usuario de Linux", - "IN-TYPE": "Coincidir con el tipo de entrada", - "IN-USER": "Coincidir con el nombre de usuario de entrada", - "IN-NAME": "Coincidir con el nombre de entrada", - "SUB-RULE": "Subregla", - "RULE-SET": "Coincidir con el conjunto de reglas", - "AND": "Y lógico", - "OR": "O lógico", - "NOT": "No lógico", - "MATCH": "Coincidir con todas las solicitudes", - "DIRECT": "Conexión directa", - "REJECT": "Rechazar solicitud", - "REJECT-DROP": "Descartar solicitud", - "PASS": "Saltar esta regla", - "select": "Seleccionar proxy manualmente", - "url-test": "Seleccionar proxy según la prueba de latencia de la URL", - "fallback": "Cambiar a otro proxy cuando no esté disponible", - "load-balance": "Asignar proxy según el equilibrio de carga", - "relay": "Transferir según la cadena de proxy definida", - "Timeout": "Tiempo de espera", - "Type": "Tipo", - "Close All Connections": "Close All Connections", - "Rule": "Regla", - "TUN Mode automatically disabled due to service unavailable": "TUN Mode automatically disabled due to service unavailable", - "Failed to disable TUN Mode automatically": "Failed to disable TUN Mode automatically", - "active": "Activado", - "unknown": "Desconocido", - "Install": "Instalar", - "Uninstall": "Desinstalar", - "System Proxy": "Proxy del sistema", - "Release Version": "Versión estable", - "Alpha Version": "Versión de vista previa", - "theme.light": "Light", - "theme.dark": "Dark", - "theme.system": "System", - "Exit": "Salir", - "Profile Imported Successfully": "Suscripción importada con éxito", - "Stopping Core...": "Deteniendo núcleo...", - "Restarting Core...": "Reiniciando núcleo...", - "Installing Service...": "Instalando servicio...", - "Uninstalling Service...": "Desinstalando servicio...", - "Service Installed Successfully": "Servicio instalado con éxito", - "Service Uninstalled Successfully": "Servicio desinstalado con éxito", - "Import Subscription Successful": "Suscripción importada con éxito", - "Profile": "Configuración", - "Dashboard": "Panel de control", - "Restart App": "Reiniciar aplicación", - "Restart Clash Core": "Reiniciar el núcleo de Clash", - "TUN Mode": "Modo TUN", - "Copy Env": "Copiar variables de entorno", - "Conf Dir": "Directorio de configuración", - "Core Dir": "Directorio del núcleo", - "Logs Dir": "Directorio de registros", - "Open Dir": "Abrir directorio", - "More": "Más", - "LightWeight Mode": "Modo ligero", - "Config Validation Failed": "Error de validación de la configuración de la suscripción. Compruebe el archivo de configuración de la suscripción. Los cambios se han deshecho. Detalles del error: ", - "Boot Config Validation Failed": "Error de validación de la configuración de la suscripción de arranque. Se ha iniciado con la configuración predeterminada. Compruebe el archivo de configuración de la suscripción. Detalles del error: ", - "Core Change Config Validation Failed": "Error de validación de la configuración al cambiar el núcleo. Se ha iniciado con la configuración predeterminada. Compruebe el archivo de configuración de la suscripción. Detalles del error: ", - "Config Validation Process Terminated": "Proceso de validación terminado", - "Script Syntax Error": "Error de sintaxis en el script. Los cambios se han deshecho", - "Script Missing Main": "Error en el script. Los cambios se han deshecho", - "File Not Found": "Archivo no encontrado. Los cambios se han deshecho", - "Script File Error": "Error en el archivo de script. Los cambios se han deshecho", - "Core Changed Successfully": "Núcleo cambiado con éxito", - "Failed to Change Core": "No se pudo cambiar el núcleo", - "YAML Syntax Error": "Error de sintaxis YAML. Los cambios se han deshecho", - "YAML Read Error": "Error al leer el archivo YAML. Los cambios se han deshecho", - "YAML Mapping Error": "Error de mapeo YAML. Los cambios se han deshecho", - "YAML Key Error": "Error de clave YAML. Los cambios se han deshecho", - "YAML Error": "Error YAML. Los cambios se han deshecho", - "Merge File Syntax Error": "Error de sintaxis en el archivo de sobrescritura. Los cambios se han deshecho", - "Merge File Mapping Error": "Error de mapeo en el archivo de sobrescritura. Los cambios se han deshecho", - "Merge File Key Error": "Error de clave en el archivo de sobrescritura. Los cambios se han deshecho", - "Merge File Error": "Error en el archivo de sobrescritura. Los cambios se han deshecho", - "Service Administrator Prompt": "Clash Verge requiere permisos de administrador para instalar el servicio del sistema", - "Update with Clash proxy successfully": "Actualización con el proxy de Clash exitosa", - "Update failed even with Clash proxy": "Error al actualizar incluso con el proxy de Clash", - "Profile Imported with Clash proxy": "Suscripción importada con el proxy de Clash", - "Pending": "Pendiente de detección", - "Yes": "Soportado", - "No": "No soportado", - "Failed": "Prueba fallida", - "Completed": "Detección completada", - "Disallowed ISP": "Proveedor de servicios de Internet no permitido", - "Originals Only": "Solo originales", - "No (IP Banned By Disney+)": "No (IP Banned By Disney+)", - "Unsupported Country/Region": "País/región no soportado", - "Failed (Network Connection)": "Failed (Network Connection)", - "DashboardToggledTitle": "Dashboard Toggled", - "DashboardToggledBody": "Dashboard visibility toggled by hotkey", - "ClashModeChangedTitle": "Clash Mode Changed", - "ClashModeChangedBody": "Switched to {mode} mode", - "SystemProxyToggledTitle": "System Proxy Toggled", - "SystemProxyToggledBody": "System proxy state toggled by hotkey", - "TunModeToggledTitle": "TUN Mode Toggled", - "TunModeToggledBody": "TUN mode toggled by hotkey", - "LightweightModeEnteredTitle": "Lightweight Mode", - "LightweightModeEnteredBody": "Entered lightweight mode by hotkey", - "AppQuitTitle": "APP Quit", - "AppQuitBody": "APP quit by hotkey", - "AppHiddenTitle": "APP Hidden", - "AppHiddenBody": "APP window hidden by hotkey", - "Configuration saved successfully": "Configuración aleatoria guardada correctamente", - "Failed to save configuration": "Failed to save configuration", - "Open App Log": "Open App Log", - "Open Core Log": "Open Core Log", "common": { "editorModes": { "visualization": "Visualización", @@ -856,7 +721,9 @@ }, "common": { "notifications": { - "copySuccess": "Copia exitosa" + "copySuccess": "Copia exitosa", + "saveSuccess": "Configuración aleatoria guardada correctamente", + "saveFailed": "Failed to save configuration" } }, "misc": { @@ -1122,6 +989,18 @@ "testAll": "Probar todo", "new": "Nuevo" } + }, + "statuses": { + "pending": "Pendiente de detección", + "yes": "Soportado", + "no": "No soportado", + "failed": "Prueba fallida", + "completed": "Detección completada", + "disallowedIsp": "Proveedor de servicios de Internet no permitido", + "originalsOnly": "Solo originales", + "noDisney": "No (IP Banned By Disney+)", + "unsupportedRegion": "País/región no soportado", + "failedNetwork": "Failed (Network Connection)" } }, "proxies": { @@ -1237,6 +1116,11 @@ "forceRefreshCompleted": "Force refresh completed", "emergencyRefreshFailed": "Emergency refresh failed: {{message}}" } + }, + "notifications": { + "importSuccess": "Suscripción importada con éxito", + "importSubscriptionSuccess": "Suscripción importada con éxito", + "importWithClashProxy": "Suscripción importada con el proxy de Clash" } }, "connections": { @@ -1292,5 +1176,79 @@ "memoryUsage": "Uso de memoria del núcleo" } } + }, + "proxy": { + "strategies": { + "select": "Seleccionar proxy manualmente", + "url-test": "Seleccionar proxy según la prueba de latencia de la URL", + "fallback": "Cambiar a otro proxy cuando no esté disponible", + "load-balance": "Asignar proxy según el equilibrio de carga", + "relay": "Transferir según la cadena de proxy definida" + } + }, + "system": { + "notifications": { + "tunMode": { + "autoDisabled": "TUN Mode automatically disabled due to service unavailable", + "autoDisableFailed": "Failed to disable TUN Mode automatically" + } + }, + "labels": { + "releaseVersion": "Versión estable", + "alphaVersion": "Versión de vista previa" + } + }, + "core": { + "status": { + "stopping": "Deteniendo núcleo...", + "restarting": "Reiniciando núcleo..." + }, + "notifications": { + "changeSuccess": "Núcleo cambiado con éxito", + "changeFailed": "No se pudo cambiar el núcleo" + } + }, + "service": { + "status": { + "installing": "Instalando servicio...", + "uninstalling": "Desinstalando servicio..." + }, + "notifications": { + "installSuccess": "Servicio instalado con éxito", + "uninstallSuccess": "Servicio desinstalado con éxito" + } + }, + "validation": { + "config": { + "failed": "Error de validación de la configuración de la suscripción. Compruebe el archivo de configuración de la suscripción. Los cambios se han deshecho. Detalles del error: ", + "bootFailed": "Error de validación de la configuración de la suscripción de arranque. Se ha iniciado con la configuración predeterminada. Compruebe el archivo de configuración de la suscripción. Detalles del error: ", + "coreChangeFailed": "Error de validación de la configuración al cambiar el núcleo. Se ha iniciado con la configuración predeterminada. Compruebe el archivo de configuración de la suscripción. Detalles del error: ", + "processTerminated": "Proceso de validación terminado" + }, + "script": { + "syntaxError": "Error de sintaxis en el script. Los cambios se han deshecho", + "missingMain": "Error en el script. Los cambios se han deshecho", + "fileNotFound": "Archivo no encontrado. Los cambios se han deshecho", + "fileError": "Error en el archivo de script. Los cambios se han deshecho" + }, + "yaml": { + "syntaxError": "Error de sintaxis YAML. Los cambios se han deshecho", + "readError": "Error al leer el archivo YAML. Los cambios se han deshecho", + "mappingError": "Error de mapeo YAML. Los cambios se han deshecho", + "keyError": "Error de clave YAML. Los cambios se han deshecho", + "generalError": "Error YAML. Los cambios se han deshecho" + }, + "merge": { + "syntaxError": "Error de sintaxis en el archivo de sobrescritura. Los cambios se han deshecho", + "mappingError": "Error de mapeo en el archivo de sobrescritura. Los cambios se han deshecho", + "keyError": "Error de clave en el archivo de sobrescritura. Los cambios se han deshecho", + "generalError": "Error en el archivo de sobrescritura. Los cambios se han deshecho" + } + }, + "updates": { + "notifications": { + "withClashProxySuccess": "Actualización con el proxy de Clash exitosa", + "withClashProxyFailed": "Error al actualizar incluso con el proxy de Clash" + } } } diff --git a/src/locales/fa.json b/src/locales/fa.json index 12266afb..849b489d 100644 --- a/src/locales/fa.json +++ b/src/locales/fa.json @@ -1,139 +1,4 @@ { - "Proxies": "پراکسی‌ها", - "rule": "قانون", - "global": "جهانی", - "direct": "مستقیم", - "script": "اسکریپت", - "DOMAIN": "مطابقت با نام کامل دامنه", - "DOMAIN-SUFFIX": "مطابقت با پسوند دامنه", - "DOMAIN-KEYWORD": "مطابقت با کلمه کلیدی دامنه", - "DOMAIN-REGEX": "مطابقت با دامنه با استفاده از عبارات منظم", - "GEOSITE": "مطابقت با دامنه‌های درون Geosite", - "GEOIP": "مطابقت با کد کشور IP", - "SRC-GEOIP": "مطابقت با کد کشور IP مبدا", - "IP-ASN": "مطابقت با ASN آدرس IP", - "SRC-IP-ASN": "مطابقت با ASN آدرس IP مبدا", - "IP-CIDR": "مطابقت با محدوده آدرس IP", - "IP-CIDR6": "مطابقت با محدوده آدرس IPv6", - "SRC-IP-CIDR": "مطابقت با محدوده آدرس IP مبدا", - "IP-SUFFIX": "مطابقت با محدوده پسوند آدرس IP", - "SRC-IP-SUFFIX": "مطابقت با محدوده پسوند آدرس IP مبدا", - "SRC-PORT": "مطابقت با محدوده پورت مبدا", - "DST-PORT": "مطابقت با محدوده پورت مقصد", - "IN-PORT": "مطابقت با پورت ورودی", - "DSCP": "علامت‌گذاری DSCP (فقط برای tproxy UDP ورودی)", - "PROCESS-NAME": "مطابقت با نام فرآیند (نام بسته Android)", - "PROCESS-PATH": "مطابقت با مسیر کامل فرآیند", - "PROCESS-NAME-REGEX": "مطابقت با نام فرآیند با استفاده از عبارات منظم (نام بسته Android)", - "PROCESS-PATH-REGEX": "مطابقت با مسیر کامل فرآیند با استفاده از عبارات منظم", - "NETWORK": "مطابقت با پروتکل انتقال (tcp/udp)", - "UID": "مطابقت با شناسه کاربری Linux", - "IN-TYPE": "مطابقت با نوع ورودی", - "IN-USER": "مطابقت با نام کاربری ورودی", - "IN-NAME": "مطابقت با نام ورودی", - "SUB-RULE": "قانون فرعی", - "RULE-SET": "مطابقت با مجموعه قوانین", - "AND": "منطق AND", - "OR": "منطق OR", - "NOT": "منطق NOT", - "MATCH": "مطابقت با تمام درخواست‌ها", - "DIRECT": "داده‌ها به صورت مستقیم خروجی می‌شوند", - "REJECT": "درخواست‌ها را متوقف می‌کند", - "REJECT-DROP": "درخواست‌ها را نادیده می‌گیرد", - "PASS": "این قانون را در صورت تطابق نادیده می‌گیرد", - "select": "انتخاب پروکسی به صورت دستی", - "url-test": "انتخاب پروکسی بر اساس تأخیر آزمایش URL", - "fallback": "تعویض به پروکسی دیگر در صورت بروز خطا", - "load-balance": "توزیع پراکسی بر اساس توازن بار", - "relay": "عبور از زنجیره پروکسی تعریف شده", - "Timeout": "زمان قطع", - "Type": "نوع", - "Close All Connections": "Close All Connections", - "Rule": "قانون", - "TUN Mode automatically disabled due to service unavailable": "TUN Mode automatically disabled due to service unavailable", - "Failed to disable TUN Mode automatically": "Failed to disable TUN Mode automatically", - "active": "فعال", - "unknown": "ناشناخته", - "Install": "نصب", - "Uninstall": "حذف نصب", - "System Proxy": "پراکسی سیستم", - "Release Version": "نسخه نهایی", - "Alpha Version": "نسخه آلفا", - "theme.light": "روشن", - "theme.dark": "تاریک", - "theme.system": "سیستم", - "Exit": "خروج", - "Profile Imported Successfully": "پروفایل با موفقیت وارد شد", - "Stopping Core...": "Stopping Core...", - "Restarting Core...": "Restarting Core...", - "Installing Service...": "در حال نصب سرویس...", - "Uninstalling Service...": "Uninstalling Service...", - "Service Installed Successfully": "سرویس با موفقیت نصب شد", - "Service Uninstalled Successfully": "سرویس با موفقیت حذف نصب شد", - "Import Subscription Successful": "وارد کردن اشتراک با موفقیت انجام شد", - "Profile": "پروفایل", - "Dashboard": "داشبورد", - "Restart App": "راه‌اندازی مجدد برنامه", - "Restart Clash Core": "راه‌اندازی مجدد هسته Clash", - "TUN Mode": "حالت TUN", - "Copy Env": "کپی متغیرهای محیطی", - "Conf Dir": "پوشه پیکربندی", - "Core Dir": "پوشه هسته", - "Logs Dir": "پوشه لاگ‌ها", - "Open Dir": "باز کردن پوشه", - "More": "بیشتر", - "LightWeight Mode": "در فارسی", - "Config Validation Failed": "اعتبارسنجی پیکربندی اشتراک ناموفق بود، فایل پیکربندی را بررسی کنید، تغییرات برگشت داده شد، جزئیات خطا:", - "Boot Config Validation Failed": "اعتبارسنجی پیکربندی هنگام راه‌اندازی ناموفق بود، پیکربندی پیش‌فرض استفاده شد، فایل پیکربندی را بررسی کنید، جزئیات خطا:", - "Core Change Config Validation Failed": "اعتبارسنجی پیکربندی هنگام تغییر هسته ناموفق بود، پیکربندی پیش‌فرض استفاده شد، فایل پیکربندی را بررسی کنید، جزئیات خطا:", - "Config Validation Process Terminated": "فرآیند اعتبارسنجی متوقف شد", - "Script Syntax Error": "خطای نحوی اسکریپت، تغییرات برگشت داده شد", - "Script Missing Main": "خطای اسکریپت، تغییرات برگشت داده شد", - "File Not Found": "فایل یافت نشد، تغییرات برگشت داده شد", - "Script File Error": "خطای فایل اسکریپت، تغییرات برگشت داده شد", - "Core Changed Successfully": "هسته با موفقیت تغییر کرد", - "Failed to Change Core": "تغییر هسته ناموفق بود", - "YAML Syntax Error": "YAML syntax error, changes reverted", - "YAML Read Error": "YAML read error, changes reverted", - "YAML Mapping Error": "YAML mapping error, changes reverted", - "YAML Key Error": "YAML key error, changes reverted", - "YAML Error": "YAML error, changes reverted", - "Merge File Syntax Error": "Merge file syntax error, changes reverted", - "Merge File Mapping Error": "Merge file mapping error, changes reverted", - "Merge File Key Error": "Merge file key error, changes reverted", - "Merge File Error": "Merge file error, changes reverted", - "Service Administrator Prompt": "Clash Verge برای نصب مجدد سرویس سیستم به امتیازات مدیر نیاز دارد", - "Update with Clash proxy successfully": "Update with Clash proxy successfully", - "Update failed even with Clash proxy": "Update failed even with Clash proxy", - "Profile Imported with Clash proxy": "Profile Imported with Clash proxy", - "Pending": "Pending", - "Yes": "Yes", - "No": "No", - "Failed": "Failed", - "Completed": "Completed", - "Disallowed ISP": "Disallowed ISP", - "Originals Only": "Originals Only", - "No (IP Banned By Disney+)": "No (IP Banned By Disney+)", - "Unsupported Country/Region": "Unsupported Country/Region", - "Failed (Network Connection)": "Failed (Network Connection)", - "DashboardToggledTitle": "Dashboard Toggled", - "DashboardToggledBody": "Dashboard visibility toggled by hotkey", - "ClashModeChangedTitle": "Clash Mode Changed", - "ClashModeChangedBody": "Switched to {mode} mode", - "SystemProxyToggledTitle": "System Proxy Toggled", - "SystemProxyToggledBody": "System proxy state toggled by hotkey", - "TunModeToggledTitle": "TUN Mode Toggled", - "TunModeToggledBody": "TUN mode toggled by hotkey", - "LightweightModeEnteredTitle": "Lightweight Mode", - "LightweightModeEnteredBody": "Entered lightweight mode by hotkey", - "AppQuitTitle": "APP Quit", - "AppQuitBody": "APP quit by hotkey", - "AppHiddenTitle": "APP Hidden", - "AppHiddenBody": "APP window hidden by hotkey", - "Configuration saved successfully": "Configuration saved successfully", - "Failed to save configuration": "Failed to save configuration", - "Open App Log": "Open App Log", - "Open Core Log": "Open Core Log", "common": { "editorModes": { "visualization": "تجسم", @@ -856,7 +721,9 @@ }, "common": { "notifications": { - "copySuccess": "کپی با موفقیت انجام شد" + "copySuccess": "کپی با موفقیت انجام شد", + "saveSuccess": "Configuration saved successfully", + "saveFailed": "Failed to save configuration" } }, "misc": { @@ -1122,6 +989,18 @@ "testAll": "آزمون همه", "new": "جدید" } + }, + "statuses": { + "pending": "Pending", + "yes": "Yes", + "no": "No", + "failed": "Failed", + "completed": "Completed", + "disallowedIsp": "Disallowed ISP", + "originalsOnly": "Originals Only", + "noDisney": "No (IP Banned By Disney+)", + "unsupportedRegion": "Unsupported Country/Region", + "failedNetwork": "Failed (Network Connection)" } }, "proxies": { @@ -1237,6 +1116,11 @@ "forceRefreshCompleted": "Force refresh completed", "emergencyRefreshFailed": "Emergency refresh failed: {{message}}" } + }, + "notifications": { + "importSuccess": "پروفایل با موفقیت وارد شد", + "importSubscriptionSuccess": "وارد کردن اشتراک با موفقیت انجام شد", + "importWithClashProxy": "Profile Imported with Clash proxy" } }, "connections": { @@ -1292,5 +1176,79 @@ "memoryUsage": "استفاده از حافظه" } } + }, + "proxy": { + "strategies": { + "select": "انتخاب پروکسی به صورت دستی", + "url-test": "انتخاب پروکسی بر اساس تأخیر آزمایش URL", + "fallback": "تعویض به پروکسی دیگر در صورت بروز خطا", + "load-balance": "توزیع پراکسی بر اساس توازن بار", + "relay": "عبور از زنجیره پروکسی تعریف شده" + } + }, + "system": { + "notifications": { + "tunMode": { + "autoDisabled": "TUN Mode automatically disabled due to service unavailable", + "autoDisableFailed": "Failed to disable TUN Mode automatically" + } + }, + "labels": { + "releaseVersion": "نسخه نهایی", + "alphaVersion": "نسخه آلفا" + } + }, + "core": { + "status": { + "stopping": "Stopping Core...", + "restarting": "Restarting Core..." + }, + "notifications": { + "changeSuccess": "هسته با موفقیت تغییر کرد", + "changeFailed": "تغییر هسته ناموفق بود" + } + }, + "service": { + "status": { + "installing": "در حال نصب سرویس...", + "uninstalling": "Uninstalling Service..." + }, + "notifications": { + "installSuccess": "سرویس با موفقیت نصب شد", + "uninstallSuccess": "سرویس با موفقیت حذف نصب شد" + } + }, + "validation": { + "config": { + "failed": "اعتبارسنجی پیکربندی اشتراک ناموفق بود، فایل پیکربندی را بررسی کنید، تغییرات برگشت داده شد، جزئیات خطا:", + "bootFailed": "اعتبارسنجی پیکربندی هنگام راه‌اندازی ناموفق بود، پیکربندی پیش‌فرض استفاده شد، فایل پیکربندی را بررسی کنید، جزئیات خطا:", + "coreChangeFailed": "اعتبارسنجی پیکربندی هنگام تغییر هسته ناموفق بود، پیکربندی پیش‌فرض استفاده شد، فایل پیکربندی را بررسی کنید، جزئیات خطا:", + "processTerminated": "فرآیند اعتبارسنجی متوقف شد" + }, + "script": { + "syntaxError": "خطای نحوی اسکریپت، تغییرات برگشت داده شد", + "missingMain": "خطای اسکریپت، تغییرات برگشت داده شد", + "fileNotFound": "فایل یافت نشد، تغییرات برگشت داده شد", + "fileError": "خطای فایل اسکریپت، تغییرات برگشت داده شد" + }, + "yaml": { + "syntaxError": "YAML syntax error, changes reverted", + "readError": "YAML read error, changes reverted", + "mappingError": "YAML mapping error, changes reverted", + "keyError": "YAML key error, changes reverted", + "generalError": "YAML error, changes reverted" + }, + "merge": { + "syntaxError": "Merge file syntax error, changes reverted", + "mappingError": "Merge file mapping error, changes reverted", + "keyError": "Merge file key error, changes reverted", + "generalError": "Merge file error, changes reverted" + } + }, + "updates": { + "notifications": { + "withClashProxySuccess": "Update with Clash proxy successfully", + "withClashProxyFailed": "Update failed even with Clash proxy" + } } } diff --git a/src/locales/id.json b/src/locales/id.json index 10591d59..e43138ac 100644 --- a/src/locales/id.json +++ b/src/locales/id.json @@ -1,139 +1,4 @@ { - "Proxies": "Proksi", - "rule": "aturan", - "global": "global", - "direct": "langsung", - "script": "skrip", - "DOMAIN": "Cocok dengan nama domain lengkap", - "DOMAIN-SUFFIX": "Cocok dengan sufiks domain", - "DOMAIN-KEYWORD": "Cocok dengan kata kunci domain", - "DOMAIN-REGEX": "Cocok dengan domain menggunakan ekspresi reguler", - "GEOSITE": "Cocok dengan domain dalam Geosite", - "GEOIP": "Cocok dengan kode negara alamat IP", - "SRC-GEOIP": "Cocok dengan kode negara alamat IP sumber", - "IP-ASN": "Cocok dengan ASN alamat IP", - "SRC-IP-ASN": "Cocok dengan ASN alamat IP sumber", - "IP-CIDR": "Cocok dengan rentang alamat IP", - "IP-CIDR6": "Cocok dengan rentang alamat IPv6", - "SRC-IP-CIDR": "Cocok dengan rentang alamat IP sumber", - "IP-SUFFIX": "Cocok dengan rentang sufiks alamat IP", - "SRC-IP-SUFFIX": "Cocok dengan rentang sufiks alamat IP sumber", - "SRC-PORT": "Cocok dengan rentang port sumber", - "DST-PORT": "Cocok dengan rentang port tujuan", - "IN-PORT": "Cocok dengan port masuk", - "DSCP": "Penandaan DSCP (hanya untuk tproxy UDP masuk)", - "PROCESS-NAME": "Cocok dengan nama proses (nama paket Android)", - "PROCESS-PATH": "Cocok dengan jalur proses lengkap", - "PROCESS-NAME-REGEX": "Cocok dengan nama proses lengkap menggunakan ekspresi reguler (nama paket Android)", - "PROCESS-PATH-REGEX": "Cocok dengan jalur proses lengkap menggunakan ekspresi reguler", - "NETWORK": "Cocok dengan protokol transportasi (tcp/udp)", - "UID": "Cocok dengan ID PENGGUNA Linux", - "IN-TYPE": "Cocok dengan jenis masuk", - "IN-USER": "Cocok dengan nama pengguna masuk", - "IN-NAME": "Cocok dengan nama masuk", - "SUB-RULE": "Sub-aturan", - "RULE-SET": "Cocok dengan set aturan", - "AND": "Logika DAN", - "OR": "Logika ATAU", - "NOT": "Logika TIDAK", - "MATCH": "Cocok dengan semua permintaan", - "DIRECT": "Data langsung keluar", - "REJECT": "Mencegat permintaan", - "REJECT-DROP": "Membuang permintaan", - "PASS": "Lewati aturan ini saat cocok", - "select": "Pilih proksi secara manual", - "url-test": "Pilih proksi berdasarkan keterlambatan tes URL", - "fallback": "Beralih ke proksi lain saat terjadi kesalahan", - "load-balance": "Distribusikan proksi berdasarkan penyeimbangan beban", - "relay": "Lewatkan melalui rantai proksi yang ditentukan", - "Timeout": "Waktu Habis", - "Type": "Jenis", - "Close All Connections": "Close All Connections", - "Rule": "Aturan", - "TUN Mode automatically disabled due to service unavailable": "TUN Mode automatically disabled due to service unavailable", - "Failed to disable TUN Mode automatically": "Failed to disable TUN Mode automatically", - "active": "aktif", - "unknown": "tidak diketahui", - "Install": "Instal", - "Uninstall": "Copot", - "System Proxy": "Proksi Sistem", - "Release Version": "Versi Rilis", - "Alpha Version": "Versi Alpha", - "theme.light": "Terang", - "theme.dark": "Gelap", - "theme.system": "Sistem", - "Exit": "Keluar", - "Profile Imported Successfully": "Profil Berhasil Diimpor", - "Stopping Core...": "Stopping Core...", - "Restarting Core...": "Restarting Core...", - "Installing Service...": "Memasang Layanan...", - "Uninstalling Service...": "Uninstalling Service...", - "Service Installed Successfully": "Layanan Berhasil Diinstal", - "Service Uninstalled Successfully": "Layanan Berhasil Dicopot", - "Import Subscription Successful": "Berlangganan Berhasil Diimpor", - "Profile": "Profil", - "Dashboard": "Dasbor", - "Restart App": "Mulai Ulang Aplikasi", - "Restart Clash Core": "Mulai Ulang Core Clash", - "TUN Mode": "Mode TUN", - "Copy Env": "Salin Env", - "Conf Dir": "Direktori Konfigurasi", - "Core Dir": "Direktori Core", - "Logs Dir": "Direktori Log", - "Open Dir": "Buka Direktori", - "More": "Lainnya", - "LightWeight Mode": "Mode Ringan", - "Config Validation Failed": "Validasi konfigurasi langganan gagal, periksa file konfigurasi, perubahan dibatalkan, detail kesalahan:", - "Boot Config Validation Failed": "Validasi konfigurasi saat boot gagal, menggunakan konfigurasi default, periksa file konfigurasi, detail kesalahan:", - "Core Change Config Validation Failed": "Validasi konfigurasi saat ganti inti gagal, menggunakan konfigurasi default, periksa file konfigurasi, detail kesalahan:", - "Config Validation Process Terminated": "Proses validasi dihentikan", - "Script Syntax Error": "Kesalahan sintaks skrip, perubahan dibatalkan", - "Script Missing Main": "Kesalahan skrip, perubahan dibatalkan", - "File Not Found": "File tidak ditemukan, perubahan dibatalkan", - "Script File Error": "Kesalahan file skrip, perubahan dibatalkan", - "Core Changed Successfully": "Inti berhasil diubah", - "Failed to Change Core": "Gagal mengubah inti", - "YAML Syntax Error": "YAML syntax error, changes reverted", - "YAML Read Error": "YAML read error, changes reverted", - "YAML Mapping Error": "YAML mapping error, changes reverted", - "YAML Key Error": "YAML key error, changes reverted", - "YAML Error": "YAML error, changes reverted", - "Merge File Syntax Error": "Merge file syntax error, changes reverted", - "Merge File Mapping Error": "Merge file mapping error, changes reverted", - "Merge File Key Error": "Merge file key error, changes reverted", - "Merge File Error": "Merge file error, changes reverted", - "Service Administrator Prompt": "Clash Verge memerlukan hak administrator untuk menginstal ulang layanan sistem", - "Update with Clash proxy successfully": "Update with Clash proxy successfully", - "Update failed even with Clash proxy": "Update failed even with Clash proxy", - "Profile Imported with Clash proxy": "Profile Imported with Clash proxy", - "Pending": "Pending", - "Yes": "Yes", - "No": "No", - "Failed": "Failed", - "Completed": "Completed", - "Disallowed ISP": "Disallowed ISP", - "Originals Only": "Originals Only", - "No (IP Banned By Disney+)": "No (IP Banned By Disney+)", - "Unsupported Country/Region": "Unsupported Country/Region", - "Failed (Network Connection)": "Failed (Network Connection)", - "DashboardToggledTitle": "Dashboard Toggled", - "DashboardToggledBody": "Dashboard visibility toggled by hotkey", - "ClashModeChangedTitle": "Clash Mode Changed", - "ClashModeChangedBody": "Switched to {mode} mode", - "SystemProxyToggledTitle": "System Proxy Toggled", - "SystemProxyToggledBody": "System proxy state toggled by hotkey", - "TunModeToggledTitle": "TUN Mode Toggled", - "TunModeToggledBody": "TUN mode toggled by hotkey", - "LightweightModeEnteredTitle": "Lightweight Mode", - "LightweightModeEnteredBody": "Entered lightweight mode by hotkey", - "AppQuitTitle": "APP Quit", - "AppQuitBody": "APP quit by hotkey", - "AppHiddenTitle": "APP Hidden", - "AppHiddenBody": "APP window hidden by hotkey", - "Configuration saved successfully": "Configuration saved successfully", - "Failed to save configuration": "Failed to save configuration", - "Open App Log": "Open App Log", - "Open Core Log": "Open Core Log", "common": { "editorModes": { "visualization": "Visualisasi", @@ -856,7 +721,9 @@ }, "common": { "notifications": { - "copySuccess": "Salin Berhasil" + "copySuccess": "Salin Berhasil", + "saveSuccess": "Configuration saved successfully", + "saveFailed": "Failed to save configuration" } }, "misc": { @@ -1122,6 +989,18 @@ "testAll": "Tes Semua", "new": "Baru" } + }, + "statuses": { + "pending": "Pending", + "yes": "Yes", + "no": "No", + "failed": "Failed", + "completed": "Completed", + "disallowedIsp": "Disallowed ISP", + "originalsOnly": "Originals Only", + "noDisney": "No (IP Banned By Disney+)", + "unsupportedRegion": "Unsupported Country/Region", + "failedNetwork": "Failed (Network Connection)" } }, "proxies": { @@ -1237,6 +1116,11 @@ "forceRefreshCompleted": "Force refresh completed", "emergencyRefreshFailed": "Emergency refresh failed: {{message}}" } + }, + "notifications": { + "importSuccess": "Profil Berhasil Diimpor", + "importSubscriptionSuccess": "Berlangganan Berhasil Diimpor", + "importWithClashProxy": "Profile Imported with Clash proxy" } }, "connections": { @@ -1292,5 +1176,79 @@ "memoryUsage": "Penggunaan Memori" } } + }, + "proxy": { + "strategies": { + "select": "Pilih proksi secara manual", + "url-test": "Pilih proksi berdasarkan keterlambatan tes URL", + "fallback": "Beralih ke proksi lain saat terjadi kesalahan", + "load-balance": "Distribusikan proksi berdasarkan penyeimbangan beban", + "relay": "Lewatkan melalui rantai proksi yang ditentukan" + } + }, + "system": { + "notifications": { + "tunMode": { + "autoDisabled": "TUN Mode automatically disabled due to service unavailable", + "autoDisableFailed": "Failed to disable TUN Mode automatically" + } + }, + "labels": { + "releaseVersion": "Versi Rilis", + "alphaVersion": "Versi Alpha" + } + }, + "core": { + "status": { + "stopping": "Stopping Core...", + "restarting": "Restarting Core..." + }, + "notifications": { + "changeSuccess": "Inti berhasil diubah", + "changeFailed": "Gagal mengubah inti" + } + }, + "service": { + "status": { + "installing": "Memasang Layanan...", + "uninstalling": "Uninstalling Service..." + }, + "notifications": { + "installSuccess": "Layanan Berhasil Diinstal", + "uninstallSuccess": "Layanan Berhasil Dicopot" + } + }, + "validation": { + "config": { + "failed": "Validasi konfigurasi langganan gagal, periksa file konfigurasi, perubahan dibatalkan, detail kesalahan:", + "bootFailed": "Validasi konfigurasi saat boot gagal, menggunakan konfigurasi default, periksa file konfigurasi, detail kesalahan:", + "coreChangeFailed": "Validasi konfigurasi saat ganti inti gagal, menggunakan konfigurasi default, periksa file konfigurasi, detail kesalahan:", + "processTerminated": "Proses validasi dihentikan" + }, + "script": { + "syntaxError": "Kesalahan sintaks skrip, perubahan dibatalkan", + "missingMain": "Kesalahan skrip, perubahan dibatalkan", + "fileNotFound": "File tidak ditemukan, perubahan dibatalkan", + "fileError": "Kesalahan file skrip, perubahan dibatalkan" + }, + "yaml": { + "syntaxError": "YAML syntax error, changes reverted", + "readError": "YAML read error, changes reverted", + "mappingError": "YAML mapping error, changes reverted", + "keyError": "YAML key error, changes reverted", + "generalError": "YAML error, changes reverted" + }, + "merge": { + "syntaxError": "Merge file syntax error, changes reverted", + "mappingError": "Merge file mapping error, changes reverted", + "keyError": "Merge file key error, changes reverted", + "generalError": "Merge file error, changes reverted" + } + }, + "updates": { + "notifications": { + "withClashProxySuccess": "Update with Clash proxy successfully", + "withClashProxyFailed": "Update failed even with Clash proxy" + } } } diff --git a/src/locales/jp.json b/src/locales/jp.json index 3874af73..be974cf4 100644 --- a/src/locales/jp.json +++ b/src/locales/jp.json @@ -1,139 +1,4 @@ { - "Proxies": "Proxies", - "rule": "ルール", - "global": "グローバル", - "direct": "直接接続", - "script": "スクリプト", - "DOMAIN": "完全なドメイン名を一致させる", - "DOMAIN-SUFFIX": "ドメインサフィックスを一致させる", - "DOMAIN-KEYWORD": "ドメインキーワードを一致させる", - "DOMAIN-REGEX": "ドメイン正規表現を一致させる", - "GEOSITE": "Geosite内のドメインを一致させる", - "GEOIP": "IPの所属国コードを一致させる", - "SRC-GEOIP": "送信元IPの所属国コードを一致させる", - "IP-ASN": "IPの所属ASNを一致させる", - "SRC-IP-ASN": "送信元IPの所属ASNを一致させる", - "IP-CIDR": "IPアドレス範囲を一致させる", - "IP-CIDR6": "IPアドレス範囲を一致させる", - "SRC-IP-CIDR": "送信元IPアドレス範囲を一致させる", - "IP-SUFFIX": "IPサフィックス範囲を一致させる", - "SRC-IP-SUFFIX": "送信元IPサフィックス範囲を一致させる", - "SRC-PORT": "送信元ポート範囲を一致させる", - "DST-PORT": "宛先ポート範囲を一致させる", - "IN-PORT": "入力ポートを一致させる", - "DSCP": "DSCPマーク(TPROXY UDP入力のみ)", - "PROCESS-NAME": "プロセス名を一致させる(Androidパッケージ名)", - "PROCESS-PATH": "完全なプロセスパスを一致させる", - "PROCESS-NAME-REGEX": "完全なプロセス名を正規表現で一致させる(Androidパッケージ名)", - "PROCESS-PATH-REGEX": "完全なプロセスパスを正規表現で一致させる", - "NETWORK": "トランスポートプロトコルを一致させる (TCP/UDP)", - "UID": "LinuxユーザーIDを一致させる", - "IN-TYPE": "入力タイプを一致させる", - "IN-USER": "入力ユーザー名を一致させる", - "IN-NAME": "入力名を一致させる", - "SUB-RULE": "サブルール", - "RULE-SET": "ルールセットを一致させる", - "AND": "論理積", - "OR": "論理和", - "NOT": "論理否定", - "MATCH": "すべてのリクエストを一致させる", - "DIRECT": "直接接続", - "REJECT": "リクエストを拒否", - "REJECT-DROP": "リクエストを破棄", - "PASS": "このルールをスキップ", - "select": "手動でプロキシを選択", - "url-test": "URLテストによる遅延でプロキシを選択", - "fallback": "利用不可の場合は別のプロキシに切り替える", - "load-balance": "負荷分散によりプロキシを割り当てる", - "relay": "定義されたプロキシチェーンに沿って転送する", - "Timeout": "タイムアウト時間", - "Type": "タイプ", - "Close All Connections": "Close All Connections", - "Rule": "ルール", - "TUN Mode automatically disabled due to service unavailable": "TUN Mode automatically disabled due to service unavailable", - "Failed to disable TUN Mode automatically": "Failed to disable TUN Mode automatically", - "active": "アクティブ", - "unknown": "不明", - "Install": "インストール", - "Uninstall": "アンインストール", - "System Proxy": "システムプロキシ", - "Release Version": "正式版", - "Alpha Version": "プレビュー版", - "theme.light": "ライト", - "theme.dark": "ダーク", - "theme.system": "システム", - "Exit": "終了", - "Profile Imported Successfully": "プロファイルのインポートに成功しました。", - "Stopping Core...": "コアを停止中...", - "Restarting Core...": "コアを再起動中...", - "Installing Service...": "サービスをインストール中...", - "Uninstalling Service...": "サービスをアンインストール中...", - "Service Installed Successfully": "サービスのインストールに成功しました。", - "Service Uninstalled Successfully": "サービスのアンインストールに成功しました。", - "Import Subscription Successful": "サブスクリプションのインポートに成功しました。", - "Profile": "プロファイル", - "Dashboard": "ダッシュボード", - "Restart App": "アプリケーションを再起動", - "Restart Clash Core": "Clashコアを再起動", - "TUN Mode": "TUNモード", - "Copy Env": "環境変数をコピー", - "Conf Dir": "設定ディレクトリ", - "Core Dir": "コアディレクトリ", - "Logs Dir": "ログディレクトリ", - "Open Dir": "ディレクトリを開く", - "More": "もっと見る", - "LightWeight Mode": "軽量モード", - "Config Validation Failed": "プロファイル設定の検証に失敗しました。プロファイル設定ファイルを確認してください。変更は取り消されました。エラー詳細:", - "Boot Config Validation Failed": "起動時のプロファイル設定の検証に失敗しました。デフォルト設定で起動しました。プロファイル設定ファイルを確認してください。エラー詳細:", - "Core Change Config Validation Failed": "コアを切り替える際の設定検証に失敗しました。デフォルト設定で起動しました。プロファイル設定ファイルを確認してください。エラー詳細:", - "Config Validation Process Terminated": "検証プロセスが中断されました。", - "Script Syntax Error": "スクリプトの構文エラーがあります。変更は取り消されました。", - "Script Missing Main": "スクリプトにメイン関数がありません。変更は取り消されました。", - "File Not Found": "ファイルが見つかりません。変更は取り消されました。", - "Script File Error": "スクリプトファイルにエラーがあります。変更は取り消されました。", - "Core Changed Successfully": "コアの切り替えに成功しました。", - "Failed to Change Core": "コアの切り替えに失敗しました。", - "YAML Syntax Error": "YAML構文エラーがあります。変更は取り消されました。", - "YAML Read Error": "YAMLファイルの読み取りエラーがあります。変更は取り消されました。", - "YAML Mapping Error": "YAMLマッピングエラーがあります。変更は取り消されました。", - "YAML Key Error": "YAMLキーエラーがあります。変更は取り消されました。", - "YAML Error": "YAMLエラーがあります。変更は取り消されました。", - "Merge File Syntax Error": "上書きファイルの構文エラーがあります。変更は取り消されました。", - "Merge File Mapping Error": "上書きファイルのマッピングエラーがあります。変更は取り消されました。", - "Merge File Key Error": "上書きファイルのキーエラーがあります。変更は取り消されました。", - "Merge File Error": "上書きファイルにエラーがあります。変更は取り消されました。", - "Service Administrator Prompt": "Clash Vergeはシステムサービスをインストールするために管理者権限が必要です。", - "Update with Clash proxy successfully": "Clashプロキシを使用して更新に成功しました。", - "Update failed even with Clash proxy": "Clashプロキシを使用しても更新に失敗しました。", - "Profile Imported with Clash proxy": "Clashプロキシを使用してプロファイルのインポートに成功しました。", - "Pending": "検査待ち", - "Yes": "サポートする", - "No": "サポートしない", - "Failed": "テストに失敗しました。", - "Completed": "検査完了", - "Disallowed ISP": "許可されていないインターネットサービスプロバイダー", - "Originals Only": "オリジナルのみ", - "No (IP Banned By Disney+)": "No (IP Banned By Disney+)", - "Unsupported Country/Region": "サポートされていない国/地域", - "Failed (Network Connection)": "Failed (Network Connection)", - "DashboardToggledTitle": "Dashboard Toggled", - "DashboardToggledBody": "Dashboard visibility toggled by hotkey", - "ClashModeChangedTitle": "Clash Mode Changed", - "ClashModeChangedBody": "Switched to {mode} mode", - "SystemProxyToggledTitle": "System Proxy Toggled", - "SystemProxyToggledBody": "System proxy state toggled by hotkey", - "TunModeToggledTitle": "TUN Mode Toggled", - "TunModeToggledBody": "TUN mode toggled by hotkey", - "LightweightModeEnteredTitle": "Lightweight Mode", - "LightweightModeEnteredBody": "Entered lightweight mode by hotkey", - "AppQuitTitle": "APP Quit", - "AppQuitBody": "APP quit by hotkey", - "AppHiddenTitle": "APP Hidden", - "AppHiddenBody": "APP window hidden by hotkey", - "Configuration saved successfully": "ランダム設定を保存完了", - "Failed to save configuration": "Failed to save configuration", - "Open App Log": "Open App Log", - "Open Core Log": "Open Core Log", "common": { "editorModes": { "visualization": "可視化", @@ -856,7 +721,9 @@ }, "common": { "notifications": { - "copySuccess": "コピー成功" + "copySuccess": "コピー成功", + "saveSuccess": "ランダム設定を保存完了", + "saveFailed": "Failed to save configuration" } }, "misc": { @@ -1122,6 +989,18 @@ "testAll": "すべてテスト", "new": "新規作成" } + }, + "statuses": { + "pending": "検査待ち", + "yes": "サポートする", + "no": "サポートしない", + "failed": "テストに失敗しました。", + "completed": "検査完了", + "disallowedIsp": "許可されていないインターネットサービスプロバイダー", + "originalsOnly": "オリジナルのみ", + "noDisney": "No (IP Banned By Disney+)", + "unsupportedRegion": "サポートされていない国/地域", + "failedNetwork": "Failed (Network Connection)" } }, "proxies": { @@ -1237,6 +1116,11 @@ "forceRefreshCompleted": "Force refresh completed", "emergencyRefreshFailed": "Emergency refresh failed: {{message}}" } + }, + "notifications": { + "importSuccess": "プロファイルのインポートに成功しました。", + "importSubscriptionSuccess": "サブスクリプションのインポートに成功しました。", + "importWithClashProxy": "Clashプロキシを使用してプロファイルのインポートに成功しました。" } }, "connections": { @@ -1292,5 +1176,79 @@ "memoryUsage": "コアメモリ使用量" } } + }, + "proxy": { + "strategies": { + "select": "手動でプロキシを選択", + "url-test": "URLテストによる遅延でプロキシを選択", + "fallback": "利用不可の場合は別のプロキシに切り替える", + "load-balance": "負荷分散によりプロキシを割り当てる", + "relay": "定義されたプロキシチェーンに沿って転送する" + } + }, + "system": { + "notifications": { + "tunMode": { + "autoDisabled": "TUN Mode automatically disabled due to service unavailable", + "autoDisableFailed": "Failed to disable TUN Mode automatically" + } + }, + "labels": { + "releaseVersion": "正式版", + "alphaVersion": "プレビュー版" + } + }, + "core": { + "status": { + "stopping": "コアを停止中...", + "restarting": "コアを再起動中..." + }, + "notifications": { + "changeSuccess": "コアの切り替えに成功しました。", + "changeFailed": "コアの切り替えに失敗しました。" + } + }, + "service": { + "status": { + "installing": "サービスをインストール中...", + "uninstalling": "サービスをアンインストール中..." + }, + "notifications": { + "installSuccess": "サービスのインストールに成功しました。", + "uninstallSuccess": "サービスのアンインストールに成功しました。" + } + }, + "validation": { + "config": { + "failed": "プロファイル設定の検証に失敗しました。プロファイル設定ファイルを確認してください。変更は取り消されました。エラー詳細:", + "bootFailed": "起動時のプロファイル設定の検証に失敗しました。デフォルト設定で起動しました。プロファイル設定ファイルを確認してください。エラー詳細:", + "coreChangeFailed": "コアを切り替える際の設定検証に失敗しました。デフォルト設定で起動しました。プロファイル設定ファイルを確認してください。エラー詳細:", + "processTerminated": "検証プロセスが中断されました。" + }, + "script": { + "syntaxError": "スクリプトの構文エラーがあります。変更は取り消されました。", + "missingMain": "スクリプトにメイン関数がありません。変更は取り消されました。", + "fileNotFound": "ファイルが見つかりません。変更は取り消されました。", + "fileError": "スクリプトファイルにエラーがあります。変更は取り消されました。" + }, + "yaml": { + "syntaxError": "YAML構文エラーがあります。変更は取り消されました。", + "readError": "YAMLファイルの読み取りエラーがあります。変更は取り消されました。", + "mappingError": "YAMLマッピングエラーがあります。変更は取り消されました。", + "keyError": "YAMLキーエラーがあります。変更は取り消されました。", + "generalError": "YAMLエラーがあります。変更は取り消されました。" + }, + "merge": { + "syntaxError": "上書きファイルの構文エラーがあります。変更は取り消されました。", + "mappingError": "上書きファイルのマッピングエラーがあります。変更は取り消されました。", + "keyError": "上書きファイルのキーエラーがあります。変更は取り消されました。", + "generalError": "上書きファイルにエラーがあります。変更は取り消されました。" + } + }, + "updates": { + "notifications": { + "withClashProxySuccess": "Clashプロキシを使用して更新に成功しました。", + "withClashProxyFailed": "Clashプロキシを使用しても更新に失敗しました。" + } } } diff --git a/src/locales/ko.json b/src/locales/ko.json index cea24c3e..285ff4f8 100644 --- a/src/locales/ko.json +++ b/src/locales/ko.json @@ -1,139 +1,4 @@ { - "Proxies": "프록시", - "rule": "규칙", - "global": "전역", - "direct": "직접", - "script": "스크립트", - "DOMAIN": "전체 도메인 이름과 일치", - "DOMAIN-SUFFIX": "도메인 접미사와 일치", - "DOMAIN-KEYWORD": "도메인 키워드와 일치", - "DOMAIN-REGEX": "정규 표현식을 사용한 도메인 일치", - "GEOSITE": "Geosite 내의 도메인과 일치", - "GEOIP": "IP 주소의 국가 코드와 일치", - "SRC-GEOIP": "소스 IP 주소의 국가 코드와 일치", - "IP-ASN": "IP 주소의 ASN과 일치", - "SRC-IP-ASN": "소스 IP 주소의 ASN과 일치", - "IP-CIDR": "IP 주소 범위와 일치", - "IP-CIDR6": "IPv6 주소 범위와 일치", - "SRC-IP-CIDR": "소스 IP 주소 범위와 일치", - "IP-SUFFIX": "IP 주소 접미사 범위와 일치", - "SRC-IP-SUFFIX": "소스 IP 주소 접미사 범위와 일치", - "SRC-PORT": "소스 포트 범위와 일치", - "DST-PORT": "대상 포트 범위와 일치", - "IN-PORT": "인바운드 포트와 일치", - "DSCP": "DSCP 마킹(tproxy UDP 인바운드만 해당)", - "PROCESS-NAME": "프로세스 이름과 일치(안드로이드 패키지 이름)", - "PROCESS-PATH": "전체 프로세스 경로와 일치", - "PROCESS-NAME-REGEX": "정규 표현식을 사용한 전체 프로세스 이름 일치(안드로이드 패키지 이름)", - "PROCESS-PATH-REGEX": "정규 표현식을 사용한 전체 프로세스 경로 일치", - "NETWORK": "전송 프로토콜과 일치(tcp/udp)", - "UID": "Linux 사용자 ID와 일치", - "IN-TYPE": "인바운드 유형과 일치", - "IN-USER": "인바운드 사용자 이름과 일치", - "IN-NAME": "인바운드 이름과 일치", - "SUB-RULE": "하위 규칙", - "RULE-SET": "규칙 세트와 일치", - "AND": "논리 AND", - "OR": "논리 OR", - "NOT": "논리 NOT", - "MATCH": "모든 요청과 일치", - "DIRECT": "데이터가 직접 아웃바운드로 이동", - "REJECT": "요청 차단", - "REJECT-DROP": "요청 폐기", - "PASS": "일치할 경우 이 규칙 건너뛰기", - "select": "수동으로 프록시 선택", - "url-test": "URL 테스트 지연을 기준으로 프록시 선택", - "fallback": "오류 발생 시 다른 프록시로 전환", - "load-balance": "부하 분산에 따라 프록시 분배", - "relay": "정의된 프록시 체인을 통과", - "Timeout": "타임아웃", - "Type": "유형", - "Close All Connections": "Close All Connections", - "Rule": "규칙", - "TUN Mode automatically disabled due to service unavailable": "TUN Mode automatically disabled due to service unavailable", - "Failed to disable TUN Mode automatically": "Failed to disable TUN Mode automatically", - "active": "active", - "unknown": "unknown", - "Install": "Install", - "Uninstall": "Uninstall", - "System Proxy": "시스템 프록시", - "Release Version": "Release Version", - "Alpha Version": "Alpha Version", - "theme.light": "Light", - "theme.dark": "Dark", - "theme.system": "System", - "Exit": "Exit", - "Profile Imported Successfully": "Profile Imported Successfully", - "Stopping Core...": "Stopping Core...", - "Restarting Core...": "Restarting Core...", - "Installing Service...": "Installing Service...", - "Uninstalling Service...": "Uninstalling Service...", - "Service Installed Successfully": "Service Installed Successfully", - "Service Uninstalled Successfully": "Service Uninstalled Successfully", - "Import Subscription Successful": "구독 가져오기 성공", - "Profile": "Profile", - "Dashboard": "Dashboard", - "Restart App": "Restart App", - "Restart Clash Core": "Restart Clash Core", - "TUN Mode": "TUN Mode", - "Copy Env": "Copy Env", - "Conf Dir": "Conf Dir", - "Core Dir": "Core Dir", - "Logs Dir": "Logs Dir", - "Open Dir": "Open Dir", - "More": "More", - "LightWeight Mode": "Lightweight Mode", - "Config Validation Failed": "설정 검증 실패", - "Boot Config Validation Failed": "부팅 설정 검증 실패", - "Core Change Config Validation Failed": "코어 변경 설정 검증 실패", - "Config Validation Process Terminated": "설정 검증 프로세스 종료됨", - "Script Syntax Error": "스크립트 구문 오류", - "Script Missing Main": "스크립트 메인 없음", - "File Not Found": "파일을 찾을 수 없음", - "Script File Error": "스크립트 파일 오류", - "Core Changed Successfully": "코어 변경 성공", - "Failed to Change Core": "코어 변경 실패", - "YAML Syntax Error": "YAML 구문 오류", - "YAML Read Error": "YAML 읽기 오류", - "YAML Mapping Error": "YAML 매핑 오류", - "YAML Key Error": "YAML 키 오류", - "YAML Error": "YAML 오류", - "Merge File Syntax Error": "병합 파일 구문 오류", - "Merge File Mapping Error": "병합 파일 매핑 오류", - "Merge File Key Error": "병합 파일 키 오류", - "Merge File Error": "병합 파일 오류", - "Service Administrator Prompt": "Clash Verge requires administrator privileges to reinstall the system service", - "Update with Clash proxy successfully": "Clash 프록시로 업데이트 성공", - "Update failed even with Clash proxy": "Clash 프록시로도 업데이트 실패", - "Profile Imported with Clash proxy": "Profile Imported with Clash proxy", - "Pending": "Pending", - "Yes": "Yes", - "No": "No", - "Failed": "실패", - "Completed": "Completed", - "Disallowed ISP": "Disallowed ISP", - "Originals Only": "Originals Only", - "No (IP Banned By Disney+)": "No (IP Banned By Disney+)", - "Unsupported Country/Region": "Unsupported Country/Region", - "Failed (Network Connection)": "Failed (Network Connection)", - "DashboardToggledTitle": "Dashboard Toggled", - "DashboardToggledBody": "Dashboard visibility toggled by hotkey", - "ClashModeChangedTitle": "Clash Mode Changed", - "ClashModeChangedBody": "Switched to {mode} mode", - "SystemProxyToggledTitle": "System Proxy Toggled", - "SystemProxyToggledBody": "System proxy state toggled by hotkey", - "TunModeToggledTitle": "TUN Mode Toggled", - "TunModeToggledBody": "TUN mode toggled by hotkey", - "LightweightModeEnteredTitle": "Lightweight Mode", - "LightweightModeEnteredBody": "Entered lightweight mode by hotkey", - "AppQuitTitle": "APP Quit", - "AppQuitBody": "APP quit by hotkey", - "AppHiddenTitle": "APP Hidden", - "AppHiddenBody": "APP window hidden by hotkey", - "Configuration saved successfully": "Configuration saved successfully", - "Failed to save configuration": "Failed to save configuration", - "Open App Log": "Open App Log", - "Open Core Log": "Open Core Log", "common": { "editorModes": { "visualization": "시각화", @@ -856,7 +721,9 @@ }, "common": { "notifications": { - "copySuccess": "복사 성공" + "copySuccess": "복사 성공", + "saveSuccess": "Configuration saved successfully", + "saveFailed": "Failed to save configuration" } }, "misc": { @@ -1122,6 +989,18 @@ "testAll": "모두 테스트", "new": "새로 만들기" } + }, + "statuses": { + "pending": "Pending", + "yes": "Yes", + "no": "No", + "failed": "실패", + "completed": "Completed", + "disallowedIsp": "Disallowed ISP", + "originalsOnly": "Originals Only", + "noDisney": "No (IP Banned By Disney+)", + "unsupportedRegion": "Unsupported Country/Region", + "failedNetwork": "Failed (Network Connection)" } }, "proxies": { @@ -1237,6 +1116,11 @@ "forceRefreshCompleted": "Force refresh completed", "emergencyRefreshFailed": "Emergency refresh failed: {{message}}" } + }, + "notifications": { + "importSuccess": "Profile Imported Successfully", + "importSubscriptionSuccess": "구독 가져오기 성공", + "importWithClashProxy": "Profile Imported with Clash proxy" } }, "connections": { @@ -1292,5 +1176,79 @@ "memoryUsage": "메모리 사용량" } } + }, + "proxy": { + "strategies": { + "select": "수동으로 프록시 선택", + "url-test": "URL 테스트 지연을 기준으로 프록시 선택", + "fallback": "오류 발생 시 다른 프록시로 전환", + "load-balance": "부하 분산에 따라 프록시 분배", + "relay": "정의된 프록시 체인을 통과" + } + }, + "system": { + "notifications": { + "tunMode": { + "autoDisabled": "TUN Mode automatically disabled due to service unavailable", + "autoDisableFailed": "Failed to disable TUN Mode automatically" + } + }, + "labels": { + "releaseVersion": "Release Version", + "alphaVersion": "Alpha Version" + } + }, + "core": { + "status": { + "stopping": "Stopping Core...", + "restarting": "Restarting Core..." + }, + "notifications": { + "changeSuccess": "코어 변경 성공", + "changeFailed": "코어 변경 실패" + } + }, + "service": { + "status": { + "installing": "Installing Service...", + "uninstalling": "Uninstalling Service..." + }, + "notifications": { + "installSuccess": "Service Installed Successfully", + "uninstallSuccess": "Service Uninstalled Successfully" + } + }, + "validation": { + "config": { + "failed": "설정 검증 실패", + "bootFailed": "부팅 설정 검증 실패", + "coreChangeFailed": "코어 변경 설정 검증 실패", + "processTerminated": "설정 검증 프로세스 종료됨" + }, + "script": { + "syntaxError": "스크립트 구문 오류", + "missingMain": "스크립트 메인 없음", + "fileNotFound": "파일을 찾을 수 없음", + "fileError": "스크립트 파일 오류" + }, + "yaml": { + "syntaxError": "YAML 구문 오류", + "readError": "YAML 읽기 오류", + "mappingError": "YAML 매핑 오류", + "keyError": "YAML 키 오류", + "generalError": "YAML 오류" + }, + "merge": { + "syntaxError": "병합 파일 구문 오류", + "mappingError": "병합 파일 매핑 오류", + "keyError": "병합 파일 키 오류", + "generalError": "병합 파일 오류" + } + }, + "updates": { + "notifications": { + "withClashProxySuccess": "Clash 프록시로 업데이트 성공", + "withClashProxyFailed": "Clash 프록시로도 업데이트 실패" + } } } diff --git a/src/locales/ru.json b/src/locales/ru.json index 1e449768..165ead80 100644 --- a/src/locales/ru.json +++ b/src/locales/ru.json @@ -1,139 +1,4 @@ { - "Proxies": "Прокси", - "rule": "правила", - "global": "глобальный", - "direct": "прямой", - "script": "скриптовый", - "DOMAIN": "Соответствует полному доменному имени", - "DOMAIN-SUFFIX": "Соответствует суффиксу домена", - "DOMAIN-KEYWORD": "Соответствует ключевому слову домена", - "DOMAIN-REGEX": "Соответствует домену с использованием регулярных выражений", - "GEOSITE": "Соответствует доменам в Geosite", - "GEOIP": "Соответствует коду страны IP-адреса", - "SRC-GEOIP": "Соответствует коду страны исходного IP-адреса", - "IP-ASN": "Соответствует ASN IP-адреса", - "SRC-IP-ASN": "Соответствует ASN исходного IP-адреса", - "IP-CIDR": "Соответствует диапазону IP-адресов", - "IP-CIDR6": "Соответствует диапазону IPv6-адресов", - "SRC-IP-CIDR": "Соответствует диапазону исходных IP-адресов", - "IP-SUFFIX": "Соответствует диапазону суффиксов IP-адресов", - "SRC-IP-SUFFIX": "Соответствует диапазону суффиксов исходных IP-адресов", - "SRC-PORT": "Соответствует диапазону исходных портов", - "DST-PORT": "Соответствует диапазону целевых портов", - "IN-PORT": "Соответствует входящему порту", - "DSCP": "Маркировка DSCP (только для tproxy UDP входящего)", - "PROCESS-NAME": "Соответствует имени процесса (имя пакета Android)", - "PROCESS-PATH": "Соответствует полному пути процесса", - "PROCESS-NAME-REGEX": "Соответствует имени процесса с использованием регулярных выражений (имя пакета Android)", - "PROCESS-PATH-REGEX": "Соответствует полному пути процесса с использованием регулярных выражений", - "NETWORK": "Соответствует транспортному протоколу (tcp/udp)", - "UID": "Соответствует USER ID в Linux", - "IN-TYPE": "Соответствует типу входящего соединения", - "IN-USER": "Соответствует имени пользователя входящего соединения", - "IN-NAME": "Соответствует имени входящего соединения", - "SUB-RULE": "Подправило", - "RULE-SET": "Соответствует набору правил", - "AND": "Логическое И", - "OR": "Логическое ИЛИ", - "NOT": "Логическое НЕ", - "MATCH": "Соответствует всем запросам", - "DIRECT": "Данные направляются напрямую наружу", - "REJECT": "Перехватывает запросы", - "REJECT-DROP": "Отклоняет запросы", - "PASS": "Пропускает это правило при совпадении", - "select": "Выбор прокси вручную", - "url-test": "Выбор прокси на основе задержки теста URL", - "fallback": "Переключение на другой прокси при ошибке", - "load-balance": "Распределение прокси на основе балансировки нагрузки", - "relay": "Передача через определенную цепочку прокси", - "Timeout": "Таймаут", - "Type": "Тип", - "Close All Connections": "Close All Connections", - "Rule": "Правило", - "TUN Mode automatically disabled due to service unavailable": "TUN Mode automatically disabled due to service unavailable", - "Failed to disable TUN Mode automatically": "Failed to disable TUN Mode automatically", - "active": "Активированный", - "unknown": "неизвестный", - "Install": "Установить", - "Uninstall": "Удалить", - "System Proxy": "Системный прокси", - "Release Version": "Официальная версия", - "Alpha Version": "Альфа-версия", - "theme.light": "Светлая", - "theme.dark": "Тёмная", - "theme.system": "Системная", - "Exit": "Выход", - "Profile Imported Successfully": "Профиль успешно импортирован", - "Stopping Core...": "Stopping Core...", - "Restarting Core...": "Restarting Core...", - "Installing Service...": "Установка службы...", - "Uninstalling Service...": "Uninstalling Service...", - "Service Installed Successfully": "Служба успешно установлена", - "Service Uninstalled Successfully": "Служба успешно удалена", - "Import Subscription Successful": "Подписка успешно импортирована", - "Profile": "Профиль", - "Dashboard": "Панель управления", - "Restart App": "Перезапустить приложение", - "Restart Clash Core": "Перезапустить ядро Clash", - "TUN Mode": "Режим TUN", - "Copy Env": "Копировать переменные окружения", - "Conf Dir": "Директория конфигурации", - "Core Dir": "Директория ядра", - "Logs Dir": "Директория логов", - "Open Dir": "Открыть директорию", - "More": "Ещё", - "LightWeight Mode": "LightWeight Mode", - "Config Validation Failed": "Ошибка проверки конфигурации подписки, проверьте файл конфигурации, изменения отменены, ошибка:", - "Boot Config Validation Failed": "Ошибка проверки конфигурации при запуске, используется конфигурация по умолчанию, проверьте файл конфигурации, ошибка:", - "Core Change Config Validation Failed": "Ошибка проверки конфигурации при смене ядра, используется конфигурация по умолчанию, проверьте файл конфигурации, ошибка:", - "Config Validation Process Terminated": "Процесс проверки прерван", - "Script Syntax Error": "Ошибка синтаксиса скрипта, изменения отменены", - "Script Missing Main": "Ошибка скрипта, изменения отменены", - "File Not Found": "Файл не найден, изменения отменены", - "Script File Error": "Ошибка файла скрипта, изменения отменены", - "Core Changed Successfully": "Ядро успешно изменено", - "Failed to Change Core": "Не удалось сменить ядро", - "YAML Syntax Error": "Ошибка синтаксиса YAML, откат изменений", - "YAML Read Error": "Ошибка чтения YAML, откат изменений", - "YAML Mapping Error": "Ошибка YAML Mapping, откат изменений", - "YAML Key Error": "Ошибка ключа YAML, откат изменений", - "YAML Error": "Ошибка YAML, откат изменений", - "Merge File Syntax Error": "Ошибка синтаксиса Merge File, откат изменений", - "Merge File Mapping Error": "Ошибка сопоставления в Merge File, откат изменений", - "Merge File Key Error": "Ошибка ключа в Merge File, откат изменений", - "Merge File Error": "Ошибка Merge File, откат изменений", - "Service Administrator Prompt": "Clash Verge требует прав администратора для переустановки системной службы", - "Update with Clash proxy successfully": "Update with Clash proxy successfully", - "Update failed even with Clash proxy": "Update failed even with Clash proxy", - "Profile Imported with Clash proxy": "Profile Imported with Clash proxy", - "Pending": "В ожидании", - "Yes": "Да", - "No": "Нет", - "Failed": "Ошибка", - "Completed": "Завершено", - "Disallowed ISP": "ISP заблокирован", - "Originals Only": "Только Originals", - "No (IP Banned By Disney+)": "Нет (IP забанен Disney+)", - "Unsupported Country/Region": "Страна/регион не поддерживается", - "Failed (Network Connection)": "Ошибка подключения", - "DashboardToggledTitle": "Dashboard Toggled", - "DashboardToggledBody": "Dashboard visibility toggled by hotkey", - "ClashModeChangedTitle": "Clash Mode Changed", - "ClashModeChangedBody": "Switched to {mode} mode", - "SystemProxyToggledTitle": "System Proxy Toggled", - "SystemProxyToggledBody": "System proxy state toggled by hotkey", - "TunModeToggledTitle": "TUN Mode Toggled", - "TunModeToggledBody": "TUN mode toggled by hotkey", - "LightweightModeEnteredTitle": "Lightweight Mode", - "LightweightModeEnteredBody": "Entered lightweight mode by hotkey", - "AppQuitTitle": "APP Quit", - "AppQuitBody": "APP quit by hotkey", - "AppHiddenTitle": "APP Hidden", - "AppHiddenBody": "APP window hidden by hotkey", - "Configuration saved successfully": "Configuration saved successfully", - "Failed to save configuration": "Failed to save configuration", - "Open App Log": "Open App Log", - "Open Core Log": "Open Core Log", "common": { "editorModes": { "visualization": "Визуализация", @@ -856,7 +721,9 @@ }, "common": { "notifications": { - "copySuccess": "Скопировано" + "copySuccess": "Скопировано", + "saveSuccess": "Configuration saved successfully", + "saveFailed": "Failed to save configuration" } }, "misc": { @@ -1122,6 +989,18 @@ "testAll": "Тестировать все", "new": "Новый" } + }, + "statuses": { + "pending": "В ожидании", + "yes": "Да", + "no": "Нет", + "failed": "Ошибка", + "completed": "Завершено", + "disallowedIsp": "ISP заблокирован", + "originalsOnly": "Только Originals", + "noDisney": "Нет (IP забанен Disney+)", + "unsupportedRegion": "Страна/регион не поддерживается", + "failedNetwork": "Ошибка подключения" } }, "proxies": { @@ -1237,6 +1116,11 @@ "forceRefreshCompleted": "Force refresh completed", "emergencyRefreshFailed": "Emergency refresh failed: {{message}}" } + }, + "notifications": { + "importSuccess": "Профиль успешно импортирован", + "importSubscriptionSuccess": "Подписка успешно импортирована", + "importWithClashProxy": "Profile Imported with Clash proxy" } }, "connections": { @@ -1292,5 +1176,79 @@ "memoryUsage": "Использование памяти" } } + }, + "proxy": { + "strategies": { + "select": "Выбор прокси вручную", + "url-test": "Выбор прокси на основе задержки теста URL", + "fallback": "Переключение на другой прокси при ошибке", + "load-balance": "Распределение прокси на основе балансировки нагрузки", + "relay": "Передача через определенную цепочку прокси" + } + }, + "system": { + "notifications": { + "tunMode": { + "autoDisabled": "TUN Mode automatically disabled due to service unavailable", + "autoDisableFailed": "Failed to disable TUN Mode automatically" + } + }, + "labels": { + "releaseVersion": "Официальная версия", + "alphaVersion": "Альфа-версия" + } + }, + "core": { + "status": { + "stopping": "Stopping Core...", + "restarting": "Restarting Core..." + }, + "notifications": { + "changeSuccess": "Ядро успешно изменено", + "changeFailed": "Не удалось сменить ядро" + } + }, + "service": { + "status": { + "installing": "Установка службы...", + "uninstalling": "Uninstalling Service..." + }, + "notifications": { + "installSuccess": "Служба успешно установлена", + "uninstallSuccess": "Служба успешно удалена" + } + }, + "validation": { + "config": { + "failed": "Ошибка проверки конфигурации подписки, проверьте файл конфигурации, изменения отменены, ошибка:", + "bootFailed": "Ошибка проверки конфигурации при запуске, используется конфигурация по умолчанию, проверьте файл конфигурации, ошибка:", + "coreChangeFailed": "Ошибка проверки конфигурации при смене ядра, используется конфигурация по умолчанию, проверьте файл конфигурации, ошибка:", + "processTerminated": "Процесс проверки прерван" + }, + "script": { + "syntaxError": "Ошибка синтаксиса скрипта, изменения отменены", + "missingMain": "Ошибка скрипта, изменения отменены", + "fileNotFound": "Файл не найден, изменения отменены", + "fileError": "Ошибка файла скрипта, изменения отменены" + }, + "yaml": { + "syntaxError": "Ошибка синтаксиса YAML, откат изменений", + "readError": "Ошибка чтения YAML, откат изменений", + "mappingError": "Ошибка YAML Mapping, откат изменений", + "keyError": "Ошибка ключа YAML, откат изменений", + "generalError": "Ошибка YAML, откат изменений" + }, + "merge": { + "syntaxError": "Ошибка синтаксиса Merge File, откат изменений", + "mappingError": "Ошибка сопоставления в Merge File, откат изменений", + "keyError": "Ошибка ключа в Merge File, откат изменений", + "generalError": "Ошибка Merge File, откат изменений" + } + }, + "updates": { + "notifications": { + "withClashProxySuccess": "Update with Clash proxy successfully", + "withClashProxyFailed": "Update failed even with Clash proxy" + } } } diff --git a/src/locales/tr.json b/src/locales/tr.json index 455994fd..061e30fd 100644 --- a/src/locales/tr.json +++ b/src/locales/tr.json @@ -1,139 +1,4 @@ { - "Proxies": "Vekil'ler", - "rule": "kural", - "global": "küresel", - "direct": "doğrudan", - "script": "betik", - "DOMAIN": "Tam alan adıyla eşleşir", - "DOMAIN-SUFFIX": "Alan adı sonekiyle eşleşir", - "DOMAIN-KEYWORD": "Alan adı anahtar kelimesiyle eşleşir", - "DOMAIN-REGEX": "Alan adını düzenli ifadeler kullanarak eşleştirir", - "GEOSITE": "Geosite içindeki alan adlarıyla eşleşir", - "GEOIP": "IP adresinin ülke koduyla eşleşir", - "SRC-GEOIP": "Kaynak IP adresinin ülke koduyla eşleşir", - "IP-ASN": "IP adresinin ASN'siyle eşleşir", - "SRC-IP-ASN": "Kaynak IP adresinin ASN'siyle eşleşir", - "IP-CIDR": "IP adresi aralığıyla eşleşir", - "IP-CIDR6": "IPv6 adresi aralığıyla eşleşir", - "SRC-IP-CIDR": "Kaynak IP adresi aralığıyla eşleşir", - "IP-SUFFIX": "IP adresi sonek aralığıyla eşleşir", - "SRC-IP-SUFFIX": "Kaynak IP adresi sonek aralığıyla eşleşir", - "SRC-PORT": "Kaynak port aralığıyla eşleşir", - "DST-PORT": "Hedef port aralığıyla eşleşir", - "IN-PORT": "Gelen port ile eşleşir", - "DSCP": "DSCP işaretlemesi (sadece tvekil UDP girişi için)", - "PROCESS-NAME": "İşlem adıyla eşleşir (Android paket adı)", - "PROCESS-PATH": "Tam işlem yoluyla eşleşir", - "PROCESS-NAME-REGEX": "Tam işlem adını düzenli ifadeler kullanarak eşleştirir (Android paket adı)", - "PROCESS-PATH-REGEX": "Tam işlem yolunu düzenli ifadeler kullanarak eşleştirir", - "NETWORK": "Taşıma protokolüyle eşleşir (tcp/udp)", - "UID": "Linux KULLANICI ID'siyle eşleşir", - "IN-TYPE": "Gelen bağlantı tipiyle eşleşir", - "IN-USER": "Gelen bağlantı kullanıcı adıyla eşleşir", - "IN-NAME": "Gelen bağlantı adıyla eşleşir", - "SUB-RULE": "Alt kural", - "RULE-SET": "Kural setiyle eşleşir", - "AND": "Mantıksal VE", - "OR": "Mantıksal VEYA", - "NOT": "Mantıksal DEĞİL", - "MATCH": "Tüm isteklerle eşleşir", - "DIRECT": "Veri doğrudan dışarı gider", - "REJECT": "İstekleri engeller", - "REJECT-DROP": "İstekleri atar", - "PASS": "Eşleştiğinde bu kuralı atlar", - "select": "Vekil'i manuel olarak seçin", - "url-test": "URL testi gecikmesine göre vekil seçin", - "fallback": "Hata durumunda başka bir vekil'e geçin", - "load-balance": "Yük dengelemeye göre vekil dağıtın", - "relay": "Tanımlanan vekil zincirinden geçirin", - "Timeout": "Zaman Aşımı", - "Type": "Tip", - "Close All Connections": "Close All Connections", - "Rule": "Kural", - "TUN Mode automatically disabled due to service unavailable": "TUN Mode automatically disabled due to service unavailable", - "Failed to disable TUN Mode automatically": "Failed to disable TUN Mode automatically", - "active": "aktif", - "unknown": "bilinmiyor", - "Install": "Kur", - "Uninstall": "Kaldır", - "System Proxy": "Sistem Vekil'i", - "Release Version": "Sürüm Versiyonu", - "Alpha Version": "Alfa Versiyonu", - "theme.light": "Açık", - "theme.dark": "Koyu", - "theme.system": "Sistem", - "Exit": "Çıkış", - "Profile Imported Successfully": "Profil Başarıyla İçe Aktarıldı", - "Stopping Core...": "Stopping Core...", - "Restarting Core...": "Restarting Core...", - "Installing Service...": "Hizmet Kuruluyor...", - "Uninstalling Service...": "Uninstalling Service...", - "Service Installed Successfully": "Hizmet Başarıyla Kuruldu", - "Service Uninstalled Successfully": "Hizmet Başarıyla Kaldırıldı", - "Import Subscription Successful": "Abonelik içe aktarımı başarılı", - "Profile": "Profil", - "Dashboard": "Kontrol Paneli", - "Restart App": "Uygulamayı Yeniden Başlat", - "Restart Clash Core": "Clash Çekirdeğini Yeniden Başlat", - "TUN Mode": "TUN Modu", - "Copy Env": "Env Kopyala", - "Conf Dir": "Yapılandırma Dizini", - "Core Dir": "Çekirdek Dizini", - "Logs Dir": "Günlük Dizini", - "Open Dir": "Dizin Aç", - "More": "Daha Fazla", - "LightWeight Mode": "Hafif Mod", - "Config Validation Failed": "Abonelik yapılandırması doğrulaması başarısız oldu. Lütfen abonelik yapılandırma dosyasını kontrol edin; değişiklikler geri alındı.", - "Boot Config Validation Failed": "Başlangıç abonelik yapılandırması doğrulaması başarısız oldu. Varsayılan yapılandırma ile başlatıldı; lütfen abonelik yapılandırma dosyasını kontrol edin.", - "Core Change Config Validation Failed": "Çekirdek değiştirilirken yapılandırma doğrulaması başarısız oldu. Varsayılan yapılandırma ile başlatıldı; lütfen abonelik yapılandırma dosyasını kontrol edin.", - "Config Validation Process Terminated": "Doğrulama işlemi sonlandırıldı.", - "Script Syntax Error": "Betik sözdizimi hatası, değişiklikler geri alındı", - "Script Missing Main": "Betik hatası, değişiklikler geri alındı", - "File Not Found": "Dosya eksik, değişiklikler geri alındı", - "Script File Error": "Betik dosyası hatası, değişiklikler geri alındı", - "Core Changed Successfully": "Çekirdek başarıyla değiştirildi", - "Failed to Change Core": "Çekirdek değiştirilemedi", - "YAML Syntax Error": "YAML sözdizimi hatası, değişiklikler geri alındı", - "YAML Read Error": "YAML okuma hatası, değişiklikler geri alındı", - "YAML Mapping Error": "YAML eşleme hatası, değişiklikler geri alındı", - "YAML Key Error": "YAML anahtar hatası, değişiklikler geri alındı", - "YAML Error": "YAML hatası, değişiklikler geri alındı", - "Merge File Syntax Error": "Birleştirme dosyası sözdizimi hatası, değişiklikler geri alındı", - "Merge File Mapping Error": "Birleştirme dosyası eşleme hatası, değişiklikler geri alındı", - "Merge File Key Error": "Birleştirme dosyası anahtar hatası, değişiklikler geri alındı", - "Merge File Error": "Birleştirme dosyası hatası, değişiklikler geri alındı", - "Service Administrator Prompt": "Clash Verge sistem hizmetini yeniden kurmak için yönetici ayrıcalıkları gerektiriyor", - "Update with Clash proxy successfully": "Clash vekil ile güncelleme başarılı", - "Update failed even with Clash proxy": "Clash vekil ile bile güncelleme başarısız oldu", - "Profile Imported with Clash proxy": "Profil Clash vekil ile içe aktarıldı", - "Pending": "Beklemede", - "Yes": "Evet", - "No": "Hayır", - "Failed": "Başarısız", - "Completed": "Tamamlandı", - "Disallowed ISP": "İzin Verilmeyen ISP", - "Originals Only": "Yalnızca Orijinaller", - "No (IP Banned By Disney+)": "Hayır (IP Disney+ Tarafından Yasaklandı)", - "Unsupported Country/Region": "Desteklenmeyen Ülke/Bölge", - "Failed (Network Connection)": "Başarısız (Ağ Bağlantısı)", - "DashboardToggledTitle": "Dashboard Toggled", - "DashboardToggledBody": "Dashboard visibility toggled by hotkey", - "ClashModeChangedTitle": "Clash Mode Changed", - "ClashModeChangedBody": "Switched to {mode} mode", - "SystemProxyToggledTitle": "System Proxy Toggled", - "SystemProxyToggledBody": "System proxy state toggled by hotkey", - "TunModeToggledTitle": "TUN Mode Toggled", - "TunModeToggledBody": "TUN mode toggled by hotkey", - "LightweightModeEnteredTitle": "Lightweight Mode", - "LightweightModeEnteredBody": "Entered lightweight mode by hotkey", - "AppQuitTitle": "APP Quit", - "AppQuitBody": "APP quit by hotkey", - "AppHiddenTitle": "APP Hidden", - "AppHiddenBody": "APP window hidden by hotkey", - "Configuration saved successfully": "Configuration saved successfully", - "Failed to save configuration": "Failed to save configuration", - "Open App Log": "Open App Log", - "Open Core Log": "Open Core Log", "common": { "editorModes": { "visualization": "Görselleştirme", @@ -856,7 +721,9 @@ }, "common": { "notifications": { - "copySuccess": "Kopyalama Başarılı" + "copySuccess": "Kopyalama Başarılı", + "saveSuccess": "Configuration saved successfully", + "saveFailed": "Failed to save configuration" } }, "misc": { @@ -1122,6 +989,18 @@ "testAll": "Tümünü Test Et", "new": "Yeni" } + }, + "statuses": { + "pending": "Beklemede", + "yes": "Evet", + "no": "Hayır", + "failed": "Başarısız", + "completed": "Tamamlandı", + "disallowedIsp": "İzin Verilmeyen ISP", + "originalsOnly": "Yalnızca Orijinaller", + "noDisney": "Hayır (IP Disney+ Tarafından Yasaklandı)", + "unsupportedRegion": "Desteklenmeyen Ülke/Bölge", + "failedNetwork": "Başarısız (Ağ Bağlantısı)" } }, "proxies": { @@ -1237,6 +1116,11 @@ "forceRefreshCompleted": "Force refresh completed", "emergencyRefreshFailed": "Emergency refresh failed: {{message}}" } + }, + "notifications": { + "importSuccess": "Profil Başarıyla İçe Aktarıldı", + "importSubscriptionSuccess": "Abonelik içe aktarımı başarılı", + "importWithClashProxy": "Profil Clash vekil ile içe aktarıldı" } }, "connections": { @@ -1292,5 +1176,79 @@ "memoryUsage": "Çekirdek Kullanımı" } } + }, + "proxy": { + "strategies": { + "select": "Vekil'i manuel olarak seçin", + "url-test": "URL testi gecikmesine göre vekil seçin", + "fallback": "Hata durumunda başka bir vekil'e geçin", + "load-balance": "Yük dengelemeye göre vekil dağıtın", + "relay": "Tanımlanan vekil zincirinden geçirin" + } + }, + "system": { + "notifications": { + "tunMode": { + "autoDisabled": "TUN Mode automatically disabled due to service unavailable", + "autoDisableFailed": "Failed to disable TUN Mode automatically" + } + }, + "labels": { + "releaseVersion": "Sürüm Versiyonu", + "alphaVersion": "Alfa Versiyonu" + } + }, + "core": { + "status": { + "stopping": "Stopping Core...", + "restarting": "Restarting Core..." + }, + "notifications": { + "changeSuccess": "Çekirdek başarıyla değiştirildi", + "changeFailed": "Çekirdek değiştirilemedi" + } + }, + "service": { + "status": { + "installing": "Hizmet Kuruluyor...", + "uninstalling": "Uninstalling Service..." + }, + "notifications": { + "installSuccess": "Hizmet Başarıyla Kuruldu", + "uninstallSuccess": "Hizmet Başarıyla Kaldırıldı" + } + }, + "validation": { + "config": { + "failed": "Abonelik yapılandırması doğrulaması başarısız oldu. Lütfen abonelik yapılandırma dosyasını kontrol edin; değişiklikler geri alındı.", + "bootFailed": "Başlangıç abonelik yapılandırması doğrulaması başarısız oldu. Varsayılan yapılandırma ile başlatıldı; lütfen abonelik yapılandırma dosyasını kontrol edin.", + "coreChangeFailed": "Çekirdek değiştirilirken yapılandırma doğrulaması başarısız oldu. Varsayılan yapılandırma ile başlatıldı; lütfen abonelik yapılandırma dosyasını kontrol edin.", + "processTerminated": "Doğrulama işlemi sonlandırıldı." + }, + "script": { + "syntaxError": "Betik sözdizimi hatası, değişiklikler geri alındı", + "missingMain": "Betik hatası, değişiklikler geri alındı", + "fileNotFound": "Dosya eksik, değişiklikler geri alındı", + "fileError": "Betik dosyası hatası, değişiklikler geri alındı" + }, + "yaml": { + "syntaxError": "YAML sözdizimi hatası, değişiklikler geri alındı", + "readError": "YAML okuma hatası, değişiklikler geri alındı", + "mappingError": "YAML eşleme hatası, değişiklikler geri alındı", + "keyError": "YAML anahtar hatası, değişiklikler geri alındı", + "generalError": "YAML hatası, değişiklikler geri alındı" + }, + "merge": { + "syntaxError": "Birleştirme dosyası sözdizimi hatası, değişiklikler geri alındı", + "mappingError": "Birleştirme dosyası eşleme hatası, değişiklikler geri alındı", + "keyError": "Birleştirme dosyası anahtar hatası, değişiklikler geri alındı", + "generalError": "Birleştirme dosyası hatası, değişiklikler geri alındı" + } + }, + "updates": { + "notifications": { + "withClashProxySuccess": "Clash vekil ile güncelleme başarılı", + "withClashProxyFailed": "Clash vekil ile bile güncelleme başarısız oldu" + } } } diff --git a/src/locales/tt.json b/src/locales/tt.json index 8ead1ea5..68d653a8 100644 --- a/src/locales/tt.json +++ b/src/locales/tt.json @@ -1,139 +1,4 @@ { - "Proxies": "Прокси", - "rule": "кагыйдә", - "global": "глобаль", - "direct": "туры", - "script": "скриптлы", - "DOMAIN": "Домен исеменең тулы туры килүе", - "DOMAIN-SUFFIX": "Домен суффиксына туры килү", - "DOMAIN-KEYWORD": "Доменда төп сүзгә туры килү", - "DOMAIN-REGEX": "Доменны регекс аша туры китерү", - "GEOSITE": "Geosite исемлегендәге доменга туры килү", - "GEOIP": "IP-адресның ил коды буенча туры килү", - "SRC-GEOIP": "Чыганак IP-адресның ил коды буенча туры килү", - "IP-ASN": "IP-адрес ASN'ы буенча туры килү", - "SRC-IP-ASN": "Чыганак IP-адрес ASN'ы буенча туры килү", - "IP-CIDR": "IP-адреслар диапазонына туры килү", - "IP-CIDR6": "IPv6 адреслар диапазонына туры килү", - "SRC-IP-CIDR": "Чыганак IP-адреслар диапазонына туры килү", - "IP-SUFFIX": "IP-адрес суффиксына туры килү", - "SRC-IP-SUFFIX": "Чыганак IP-адрес суффиксына туры килү", - "SRC-PORT": "Чыганак портлар диапазонына туры килү", - "DST-PORT": "Максат портлар диапазонына туры килү", - "IN-PORT": "Керүче портка туры килү", - "DSCP": "DSCP тамгалавы (tproxy UDP өчен)", - "PROCESS-NAME": "Процесс исеменә туры килү (Android пакет исеме)", - "PROCESS-PATH": "Процесс юлына туры килү", - "PROCESS-NAME-REGEX": "Процесс исемен регекс белән туры китерү (Android пакет исеме)", - "PROCESS-PATH-REGEX": "Процесс юлын регекс белән туры китерү", - "NETWORK": "Транспорт протоколына (tcp/udp) туры килү", - "UID": "Linux USER ID'га туры килү", - "IN-TYPE": "Керүче тоташу төренә туры килү", - "IN-USER": "Керүче тоташу кулланучысына туры килү", - "IN-NAME": "Керүче тоташу исеменә туры килү", - "SUB-RULE": "Кушымча кагыйдә", - "RULE-SET": "Кагыйдәләр тупланмасына туры килү", - "AND": "Логик ҺӘМ", - "OR": "Логик ЯКИ", - "NOT": "Логик ТҮГЕЛ", - "MATCH": "Барлык сорауларга туры килә", - "DIRECT": "Туры чыгу", - "REJECT": "Сорауларны тоткарлау", - "REJECT-DROP": "Сорауларны кире кагу", - "PASS": "Туры килсә дә, бу кагыйдәне урап узу", - "select": "Проксины кулдан сайлау", - "url-test": "URL-тест задержкасына карап прокси сайлау", - "fallback": "Хата булган очракта башка проксига күчү", - "load-balance": "Трафикны баланслау нигезендә прокси тарату", - "relay": "Билгеле прокси чылбыры аша тапшыру", - "Timeout": "Таймаут", - "Type": "Төр", - "Close All Connections": "Close All Connections", - "Rule": "Кагыйдә", - "TUN Mode automatically disabled due to service unavailable": "TUN Mode automatically disabled due to service unavailable", - "Failed to disable TUN Mode automatically": "Failed to disable TUN Mode automatically", - "active": "Актив", - "unknown": "Билгесез", - "Install": "Урнаштыру", - "Uninstall": "Салдыру", - "System Proxy": "Системалы прокси", - "Release Version": "Рәсми версия", - "Alpha Version": "Альфа-версия", - "theme.light": "Якты", - "theme.dark": "Караңгы", - "theme.system": "Система", - "Exit": "Чыгу", - "Profile Imported Successfully": "Профиль уңышлы импортланды", - "Stopping Core...": "Stopping Core...", - "Restarting Core...": "Restarting Core...", - "Installing Service...": "Хезмәт урнаштырыла...", - "Uninstalling Service...": "Uninstalling Service...", - "Service Installed Successfully": "Сервис уңышлы урнаштырылды", - "Service Uninstalled Successfully": "Сервис уңышлы салдырылды", - "Import Subscription Successful": "Import subscription successful", - "Profile": "Профиль", - "Dashboard": "Панель", - "Restart App": "Кушымтаны яңадан ачу", - "Restart Clash Core": "Clash ядрони яңадан башлап ачу", - "TUN Mode": "TUN режимы", - "Copy Env": "Env күчереп алу", - "Conf Dir": "Кушымта папкасы", - "Core Dir": "Ядро папкасы", - "Logs Dir": "Логлар папкасы", - "Open Dir": "Папканы ачу", - "More": "Башҡа", - "LightWeight Mode": "Җиңел Режим", - "Config Validation Failed": "Язылу көйләү тикшерүе уңышсыз, көйләү файлын тикшерегез, үзгәрешләр кире кайтарылды, хата:", - "Boot Config Validation Failed": "Йөкләү вакытында көйләү тикшерүе уңышсыз, стандарт көйләү кулланылды, көйләү файлын тикшерегез, хата:", - "Core Change Config Validation Failed": "Ядро алыштырганда көйләү тикшерүе уңышсыз, стандарт көйләү кулланылды, көйләү файлын тикшерегез, хата:", - "Config Validation Process Terminated": "Тикшерү процессы туктатылды", - "Script Syntax Error": "Скрипт синтаксик хатасы, үзгәрешләр кире кайтарылды", - "Script Missing Main": "Скрипт хатасы, үзгәрешләр кире кайтарылды", - "File Not Found": "Файл табылмады, үзгәрешләр кире кайтарылды", - "Script File Error": "Скрипт файлы хатасы, үзгәрешләр кире кайтарылды", - "Core Changed Successfully": "Ядро уңышлы алыштырылды", - "Failed to Change Core": "Ядро алыштыру уңышсыз булды", - "YAML Syntax Error": "YAML syntax error, changes reverted", - "YAML Read Error": "YAML read error, changes reverted", - "YAML Mapping Error": "YAML mapping error, changes reverted", - "YAML Key Error": "YAML key error, changes reverted", - "YAML Error": "YAML error, changes reverted", - "Merge File Syntax Error": "Merge file syntax error, changes reverted", - "Merge File Mapping Error": "Merge file mapping error, changes reverted", - "Merge File Key Error": "Merge file key error, changes reverted", - "Merge File Error": "Merge file error, changes reverted", - "Service Administrator Prompt": "Clash Verge система хезмәтен яңадан урнаштыру өчен администратор хокукларын таләп итә", - "Update with Clash proxy successfully": "Update with Clash proxy successfully", - "Update failed even with Clash proxy": "Update failed even with Clash proxy", - "Profile Imported with Clash proxy": "Profile Imported with Clash proxy", - "Pending": "Pending", - "Yes": "Yes", - "No": "No", - "Failed": "Failed", - "Completed": "Completed", - "Disallowed ISP": "Disallowed ISP", - "Originals Only": "Originals Only", - "No (IP Banned By Disney+)": "No (IP Banned By Disney+)", - "Unsupported Country/Region": "Unsupported Country/Region", - "Failed (Network Connection)": "Failed (Network Connection)", - "DashboardToggledTitle": "Dashboard Toggled", - "DashboardToggledBody": "Dashboard visibility toggled by hotkey", - "ClashModeChangedTitle": "Clash Mode Changed", - "ClashModeChangedBody": "Switched to {mode} mode", - "SystemProxyToggledTitle": "System Proxy Toggled", - "SystemProxyToggledBody": "System proxy state toggled by hotkey", - "TunModeToggledTitle": "TUN Mode Toggled", - "TunModeToggledBody": "TUN mode toggled by hotkey", - "LightweightModeEnteredTitle": "Lightweight Mode", - "LightweightModeEnteredBody": "Entered lightweight mode by hotkey", - "AppQuitTitle": "APP Quit", - "AppQuitBody": "APP quit by hotkey", - "AppHiddenTitle": "APP Hidden", - "AppHiddenBody": "APP window hidden by hotkey", - "Configuration saved successfully": "Configuration saved successfully", - "Failed to save configuration": "Failed to save configuration", - "Open App Log": "Open App Log", - "Open Core Log": "Open Core Log", "common": { "editorModes": { "visualization": "Визуализация", @@ -856,7 +721,9 @@ }, "common": { "notifications": { - "copySuccess": "Күчерелде" + "copySuccess": "Күчерелде", + "saveSuccess": "Configuration saved successfully", + "saveFailed": "Failed to save configuration" } }, "misc": { @@ -1122,6 +989,18 @@ "testAll": "Барчасын тестлау", "new": "Яңа" } + }, + "statuses": { + "pending": "Pending", + "yes": "Yes", + "no": "No", + "failed": "Failed", + "completed": "Completed", + "disallowedIsp": "Disallowed ISP", + "originalsOnly": "Originals Only", + "noDisney": "No (IP Banned By Disney+)", + "unsupportedRegion": "Unsupported Country/Region", + "failedNetwork": "Failed (Network Connection)" } }, "proxies": { @@ -1237,6 +1116,11 @@ "forceRefreshCompleted": "Force refresh completed", "emergencyRefreshFailed": "Emergency refresh failed: {{message}}" } + }, + "notifications": { + "importSuccess": "Профиль уңышлы импортланды", + "importSubscriptionSuccess": "Import subscription successful", + "importWithClashProxy": "Profile Imported with Clash proxy" } }, "connections": { @@ -1292,5 +1176,79 @@ "memoryUsage": "Хәтер куллану" } } + }, + "proxy": { + "strategies": { + "select": "Проксины кулдан сайлау", + "url-test": "URL-тест задержкасына карап прокси сайлау", + "fallback": "Хата булган очракта башка проксига күчү", + "load-balance": "Трафикны баланслау нигезендә прокси тарату", + "relay": "Билгеле прокси чылбыры аша тапшыру" + } + }, + "system": { + "notifications": { + "tunMode": { + "autoDisabled": "TUN Mode automatically disabled due to service unavailable", + "autoDisableFailed": "Failed to disable TUN Mode automatically" + } + }, + "labels": { + "releaseVersion": "Рәсми версия", + "alphaVersion": "Альфа-версия" + } + }, + "core": { + "status": { + "stopping": "Stopping Core...", + "restarting": "Restarting Core..." + }, + "notifications": { + "changeSuccess": "Ядро уңышлы алыштырылды", + "changeFailed": "Ядро алыштыру уңышсыз булды" + } + }, + "service": { + "status": { + "installing": "Хезмәт урнаштырыла...", + "uninstalling": "Uninstalling Service..." + }, + "notifications": { + "installSuccess": "Сервис уңышлы урнаштырылды", + "uninstallSuccess": "Сервис уңышлы салдырылды" + } + }, + "validation": { + "config": { + "failed": "Язылу көйләү тикшерүе уңышсыз, көйләү файлын тикшерегез, үзгәрешләр кире кайтарылды, хата:", + "bootFailed": "Йөкләү вакытында көйләү тикшерүе уңышсыз, стандарт көйләү кулланылды, көйләү файлын тикшерегез, хата:", + "coreChangeFailed": "Ядро алыштырганда көйләү тикшерүе уңышсыз, стандарт көйләү кулланылды, көйләү файлын тикшерегез, хата:", + "processTerminated": "Тикшерү процессы туктатылды" + }, + "script": { + "syntaxError": "Скрипт синтаксик хатасы, үзгәрешләр кире кайтарылды", + "missingMain": "Скрипт хатасы, үзгәрешләр кире кайтарылды", + "fileNotFound": "Файл табылмады, үзгәрешләр кире кайтарылды", + "fileError": "Скрипт файлы хатасы, үзгәрешләр кире кайтарылды" + }, + "yaml": { + "syntaxError": "YAML syntax error, changes reverted", + "readError": "YAML read error, changes reverted", + "mappingError": "YAML mapping error, changes reverted", + "keyError": "YAML key error, changes reverted", + "generalError": "YAML error, changes reverted" + }, + "merge": { + "syntaxError": "Merge file syntax error, changes reverted", + "mappingError": "Merge file mapping error, changes reverted", + "keyError": "Merge file key error, changes reverted", + "generalError": "Merge file error, changes reverted" + } + }, + "updates": { + "notifications": { + "withClashProxySuccess": "Update with Clash proxy successfully", + "withClashProxyFailed": "Update failed even with Clash proxy" + } } } diff --git a/src/locales/zh.json b/src/locales/zh.json index 110fff1d..f384a2eb 100644 --- a/src/locales/zh.json +++ b/src/locales/zh.json @@ -1,139 +1,4 @@ { - "Proxies": "代理", - "rule": "规则", - "global": "全局", - "direct": "直连", - "script": "脚本", - "DOMAIN": "匹配完整域名", - "DOMAIN-SUFFIX": "匹配域名后缀", - "DOMAIN-KEYWORD": "匹配域名关键字", - "DOMAIN-REGEX": "匹配域名正则表达式", - "GEOSITE": "匹配 Geosite 内的域名", - "GEOIP": "匹配 IP 所属国家代码", - "SRC-GEOIP": "匹配来源 IP 所属国家代码", - "IP-ASN": "匹配 IP 所属 ASN", - "SRC-IP-ASN": "匹配来源 IP 所属 ASN", - "IP-CIDR": "匹配 IP 地址范围", - "IP-CIDR6": "匹配 IP 地址范围", - "SRC-IP-CIDR": "匹配来源 IP 地址范围", - "IP-SUFFIX": "匹配 IP 后缀范围", - "SRC-IP-SUFFIX": "匹配来源 IP 后缀范围", - "SRC-PORT": "匹配请求来源端口范围", - "DST-PORT": "匹配请求目标端口范围", - "IN-PORT": "匹配入站端口", - "DSCP": "DSCP标记(仅限 TPROXY UDP 入站)", - "PROCESS-NAME": "匹配进程名称(Android 包名)", - "PROCESS-PATH": "匹配完整进程路径", - "PROCESS-NAME-REGEX": "正则匹配完整进程名称(Android 包名)", - "PROCESS-PATH-REGEX": "正则匹配完整进程路径", - "NETWORK": "匹配传输协议 (TCP/UDP)", - "UID": "匹配 Linux USER ID", - "IN-TYPE": "匹配入站类型", - "IN-USER": "匹配入站用户名", - "IN-NAME": "匹配入站名称", - "SUB-RULE": "子规则", - "RULE-SET": "匹配规则集", - "AND": "逻辑和", - "OR": "逻辑或", - "NOT": "逻辑非", - "MATCH": "匹配所有请求", - "DIRECT": "直连", - "REJECT": "拦截请求", - "REJECT-DROP": "抛弃请求", - "PASS": "跳过此规则", - "select": "手动选择代理", - "url-test": "根据URL测试延迟选择代理", - "fallback": "不可用时切换到另一个代理", - "load-balance": "根据负载均衡分配代理", - "relay": "根据定义的代理链传递", - "Timeout": "超时时间", - "Type": "类型", - "Close All Connections": "关闭所有连接", - "Rule": "规则", - "TUN Mode automatically disabled due to service unavailable": "由于服务不可用,TUN 模式已自动关闭", - "Failed to disable TUN Mode automatically": "自动关闭 TUN 模式失败", - "active": "已激活", - "unknown": "未知", - "Install": "安装", - "Uninstall": "卸载", - "System Proxy": "系统代理", - "Release Version": "正式版", - "Alpha Version": "预览版", - "theme.light": "浅色", - "theme.dark": "深色", - "theme.system": "系统", - "Exit": "退出", - "Profile Imported Successfully": "导入订阅成功", - "Stopping Core...": "停止内核中...", - "Restarting Core...": "重启内核中...", - "Installing Service...": "安装服务中...", - "Uninstalling Service...": "卸载服务中...", - "Service Installed Successfully": "已成功安装服务", - "Service Uninstalled Successfully": "已成功卸载服务", - "Import Subscription Successful": "导入订阅成功", - "Profile": "配置", - "Dashboard": "仪表板", - "Restart App": "重启应用", - "Restart Clash Core": "重启 Clash 核心", - "TUN Mode": "TUN 模式", - "Copy Env": "复制环境变量", - "Conf Dir": "配置目录", - "Core Dir": "核心目录", - "Logs Dir": "日志目录", - "Open Dir": "打开目录", - "More": "更多", - "LightWeight Mode": "轻量模式", - "Config Validation Failed": "订阅配置校验失败,请检查订阅配置文件,变更已撤销,错误详情:", - "Boot Config Validation Failed": "启动订阅配置校验失败,已使用默认配置启动;请检查订阅配置文件,错误详情:", - "Core Change Config Validation Failed": "切换内核时配置校验失败,已使用默认配置启动;请检查订阅配置文件,错误详情:", - "Config Validation Process Terminated": "验证进程被终止", - "Script Syntax Error": "脚本语法错误,变更已撤销", - "Script Missing Main": "脚本错误,变更已撤销", - "File Not Found": "文件丢失,变更已撤销", - "Script File Error": "脚本文件错误,变更已撤销", - "Core Changed Successfully": "内核切换成功", - "Failed to Change Core": "无法切换内核", - "YAML Syntax Error": "YAML语法错误,变更已撤销", - "YAML Read Error": "YAML读取错误,变更已撤销", - "YAML Mapping Error": "YAML映射错误,变更已撤销", - "YAML Key Error": "YAML键错误,变更已撤销", - "YAML Error": "YAML错误,变更已撤销", - "Merge File Syntax Error": "覆写文件语法错误,变更已撤销", - "Merge File Mapping Error": "覆写文件映射错误,变更已撤销", - "Merge File Key Error": "覆写文件键错误,变更已撤销", - "Merge File Error": "覆写文件错误,变更已撤销", - "Service Administrator Prompt": "Clash Verge 需要管理员权限安装系统服务", - "Update with Clash proxy successfully": "使用 Clash 代理更新成功", - "Update failed even with Clash proxy": "使用 Clash 代理更新也失败", - "Profile Imported with Clash proxy": "使用 Clash 代理导入订阅成功", - "Pending": "待检测", - "Yes": "支持", - "No": "不支持", - "Failed": "测试失败", - "Completed": "检测完成", - "Disallowed ISP": "不允许的 ISP", - "Originals Only": "仅限原创", - "No (IP Banned By Disney+)": "不支持(IP被Disney+禁止)", - "Unsupported Country/Region": "不支持的国家/地区", - "Failed (Network Connection)": "测试失败(网络连接问题)", - "DashboardToggledTitle": "仪表盘已切换", - "DashboardToggledBody": "已通过快捷键切换仪表盘显示状态", - "ClashModeChangedTitle": "Clash 模式切换", - "ClashModeChangedBody": "已切换为 {mode} 模式", - "SystemProxyToggledTitle": "系统代理切换", - "SystemProxyToggledBody": "已通过快捷键切换系统代理状态", - "TunModeToggledTitle": "TUN 模式切换", - "TunModeToggledBody": "已通过快捷键切换 TUN 模式", - "LightweightModeEnteredTitle": "轻量模式", - "LightweightModeEnteredBody": "已通过快捷键进入轻量模式", - "AppQuitTitle": "应用退出", - "AppQuitBody": "已通过快捷键退出应用", - "AppHiddenTitle": "应用隐藏", - "AppHiddenBody": "已通过快捷键隐藏应用窗口", - "Configuration saved successfully": "配置保存成功", - "Failed to save configuration": "配置保存失败", - "Open App Log": "应用日志", - "Open Core Log": "内核日志", "common": { "editorModes": { "visualization": "可视化", @@ -856,7 +721,9 @@ }, "common": { "notifications": { - "copySuccess": "复制成功" + "copySuccess": "复制成功", + "saveSuccess": "配置保存成功", + "saveFailed": "配置保存失败" } }, "misc": { @@ -1122,6 +989,18 @@ "testAll": "测试全部", "new": "新建" } + }, + "statuses": { + "pending": "待检测", + "yes": "支持", + "no": "不支持", + "failed": "测试失败", + "completed": "检测完成", + "disallowedIsp": "不允许的 ISP", + "originalsOnly": "仅限原创", + "noDisney": "不支持(IP被Disney+禁止)", + "unsupportedRegion": "不支持的国家/地区", + "failedNetwork": "测试失败(网络连接问题)" } }, "proxies": { @@ -1237,6 +1116,11 @@ "forceRefreshCompleted": "数据已强制刷新", "emergencyRefreshFailed": "紧急刷新失败: {{message}}" } + }, + "notifications": { + "importSuccess": "导入订阅成功", + "importSubscriptionSuccess": "导入订阅成功", + "importWithClashProxy": "使用 Clash 代理导入订阅成功" } }, "connections": { @@ -1292,5 +1176,79 @@ "memoryUsage": "内核占用" } } + }, + "proxy": { + "strategies": { + "select": "手动选择代理", + "url-test": "根据URL测试延迟选择代理", + "fallback": "不可用时切换到另一个代理", + "load-balance": "根据负载均衡分配代理", + "relay": "根据定义的代理链传递" + } + }, + "system": { + "notifications": { + "tunMode": { + "autoDisabled": "由于服务不可用,TUN 模式已自动关闭", + "autoDisableFailed": "自动关闭 TUN 模式失败" + } + }, + "labels": { + "releaseVersion": "正式版", + "alphaVersion": "预览版" + } + }, + "core": { + "status": { + "stopping": "停止内核中...", + "restarting": "重启内核中..." + }, + "notifications": { + "changeSuccess": "内核切换成功", + "changeFailed": "无法切换内核" + } + }, + "service": { + "status": { + "installing": "安装服务中...", + "uninstalling": "卸载服务中..." + }, + "notifications": { + "installSuccess": "已成功安装服务", + "uninstallSuccess": "已成功卸载服务" + } + }, + "validation": { + "config": { + "failed": "订阅配置校验失败,请检查订阅配置文件,变更已撤销,错误详情:", + "bootFailed": "启动订阅配置校验失败,已使用默认配置启动;请检查订阅配置文件,错误详情:", + "coreChangeFailed": "切换内核时配置校验失败,已使用默认配置启动;请检查订阅配置文件,错误详情:", + "processTerminated": "验证进程被终止" + }, + "script": { + "syntaxError": "脚本语法错误,变更已撤销", + "missingMain": "脚本错误,变更已撤销", + "fileNotFound": "文件丢失,变更已撤销", + "fileError": "脚本文件错误,变更已撤销" + }, + "yaml": { + "syntaxError": "YAML语法错误,变更已撤销", + "readError": "YAML读取错误,变更已撤销", + "mappingError": "YAML映射错误,变更已撤销", + "keyError": "YAML键错误,变更已撤销", + "generalError": "YAML错误,变更已撤销" + }, + "merge": { + "syntaxError": "覆写文件语法错误,变更已撤销", + "mappingError": "覆写文件映射错误,变更已撤销", + "keyError": "覆写文件键错误,变更已撤销", + "generalError": "覆写文件错误,变更已撤销" + } + }, + "updates": { + "notifications": { + "withClashProxySuccess": "使用 Clash 代理更新成功", + "withClashProxyFailed": "使用 Clash 代理更新也失败" + } } } diff --git a/src/locales/zhtw.json b/src/locales/zhtw.json index 5a20c690..71743667 100644 --- a/src/locales/zhtw.json +++ b/src/locales/zhtw.json @@ -1,139 +1,4 @@ { - "Proxies": "代理", - "rule": "規則", - "global": "全域", - "direct": "直連", - "script": "指令碼", - "DOMAIN": "配對完整網域", - "DOMAIN-SUFFIX": "配對網域後綴", - "DOMAIN-KEYWORD": "配對網域關鍵字", - "DOMAIN-REGEX": "配對網域正規表示式", - "GEOSITE": "配對 Geosite 內的網域", - "GEOIP": "配對 IP 所屬國家代碼", - "SRC-GEOIP": "配對來源 IP 所屬國家代碼", - "IP-ASN": "配對 IP 所屬 ASN", - "SRC-IP-ASN": "配對來源 IP 所屬 ASN", - "IP-CIDR": "配對 IP 位址範圍", - "IP-CIDR6": "配對 IP 位址範圍", - "SRC-IP-CIDR": "配對來源 IP 位址範圍", - "IP-SUFFIX": "配對 IP 後綴範圍", - "SRC-IP-SUFFIX": "配對來源 IP 後綴範圍", - "SRC-PORT": "配對請求來源連接埠範圍", - "DST-PORT": "配對請求目標連接埠範圍", - "IN-PORT": "配對傳入連接埠", - "DSCP": "DSCP標記(僅限 TPROXY UDP 傳入)", - "PROCESS-NAME": "配對程序名稱(Android 應用程式套件名稱)", - "PROCESS-PATH": "配對完整程序路徑", - "PROCESS-NAME-REGEX": "正規表示式配對完整程序名稱(Android 應用程式套件名稱)", - "PROCESS-PATH-REGEX": "正規表示式配對完整程序路徑", - "NETWORK": "配對傳輸協定 (TCP/UDP)", - "UID": "配對 Linux 使用者 ID", - "IN-TYPE": "配對傳入類型", - "IN-USER": "配對傳入使用者名稱", - "IN-NAME": "配對傳入名稱", - "SUB-RULE": "子規則", - "RULE-SET": "配對規則集", - "AND": "邏輯 AND", - "OR": "邏輯 OR", - "NOT": "邏輯 NOT", - "MATCH": "配對所有請求", - "DIRECT": "直連", - "REJECT": "拒絕請求", - "REJECT-DROP": "丟棄請求", - "PASS": "跳過此規則", - "select": "手動選擇代理", - "url-test": "根據網址測試延遲選擇代理", - "fallback": "切換至另一個備用代理", - "load-balance": "根據負載平衡分配代理", - "relay": "根據定義的代理鏈傳送", - "Timeout": "逾時", - "Type": "類型", - "Close All Connections": "關閉全部連線", - "Rule": "規則", - "TUN Mode automatically disabled due to service unavailable": "由於服務不可使用,虛擬網路介面卡模式已自動停用", - "Failed to disable TUN Mode automatically": "自動停用虛擬網路介面卡模式失敗", - "active": "作用中", - "unknown": "未知", - "Install": "安裝", - "Uninstall": "解除安裝", - "System Proxy": "系統代理", - "Release Version": "正式版", - "Alpha Version": "預覽版", - "theme.light": "淺色", - "theme.dark": "深色", - "theme.system": "系統", - "Exit": "離開", - "Profile Imported Successfully": "匯入設定檔成功", - "Stopping Core...": "內核停止中...", - "Restarting Core...": "內核重啟中...", - "Installing Service...": "安裝服務中...", - "Uninstalling Service...": "服務解除安裝中...", - "Service Installed Successfully": "已成功安裝服務", - "Service Uninstalled Successfully": "已成功解除安裝服務", - "Import Subscription Successful": "匯入訂閱成功", - "Profile": "配置", - "Dashboard": "儀表板", - "Restart App": "重啟應用程式", - "Restart Clash Core": "重啟 Clash 內核", - "TUN Mode": "虛擬網路介面卡模式", - "Copy Env": "複製環境變數", - "Conf Dir": "配置目錄", - "Core Dir": "內核目錄", - "Logs Dir": "日誌目錄", - "Open Dir": "開啟目錄", - "More": "更多", - "LightWeight Mode": "輕量模式", - "Config Validation Failed": "訂閱配置校驗失敗,請檢查訂閱配置文件,變更已撤銷,錯誤詳情:", - "Boot Config Validation Failed": "啟動訂閱配置校驗失敗,已使用預設配置啟動;請檢查訂閱配置文件,錯誤詳情:", - "Core Change Config Validation Failed": "切換內核時配置校驗失敗,已使用預設配置啟動;請檢查訂閱配置文件,錯誤詳情:", - "Config Validation Process Terminated": "驗證程序被終止", - "Script Syntax Error": "指令碼語法錯誤,變更已撤銷", - "Script Missing Main": "指令碼錯誤,變更已撤銷", - "File Not Found": "檔案遺失,變更已撤銷", - "Script File Error": "指令碼檔案錯誤,變更已撤銷", - "Core Changed Successfully": "內核切換成功", - "Failed to Change Core": "無法切換內核", - "YAML Syntax Error": "YAML 語法錯誤,變更已撤銷", - "YAML Read Error": "YAML 讀取錯誤,變更已撤銷", - "YAML Mapping Error": "YAML 映射錯誤,變更已撤銷", - "YAML Key Error": "YAML 鍵錯誤,變更已撤銷", - "YAML Error": "YAML 錯誤,變更已撤銷", - "Merge File Syntax Error": "覆寫檔案語法錯誤,變更已撤銷", - "Merge File Mapping Error": "覆寫檔案映射錯誤,變更已撤銷", - "Merge File Key Error": "覆寫檔案鍵錯誤,變更已撤銷", - "Merge File Error": "覆寫檔案錯誤,變更已撤銷", - "Service Administrator Prompt": "Clash Verge 需要管理員權限安裝系統服務", - "Update with Clash proxy successfully": "使用 Clash 代理更新成功", - "Update failed even with Clash proxy": "使用 Clash 代理更新也失敗", - "Profile Imported with Clash proxy": "使用 Clash 代理匯入訂閱成功", - "Pending": "待檢測", - "Yes": "支援", - "No": "不支援", - "Failed": "測試失敗", - "Completed": "檢測完成", - "Disallowed ISP": "不允許的網際網路服務供應商", - "Originals Only": "僅限原創", - "No (IP Banned By Disney+)": "不支援(IP被Disney+禁止)", - "Unsupported Country/Region": "不支援的國家/地區", - "Failed (Network Connection)": "測試失敗(網路連線問題)", - "DashboardToggledTitle": "儀錶板已切換", - "DashboardToggledBody": "已透過快速鍵切換儀錶板顯示狀態", - "ClashModeChangedTitle": "Clash模式切換", - "ClashModeChangedBody": "已切換為 {mode} 模式", - "SystemProxyToggledTitle": "系統代理切換", - "SystemProxyToggledBody": "已透過快速鍵切換系統代理狀態", - "TunModeToggledTitle": "TUN模式切換", - "TunModeToggledBody": "已透過快速鍵切換TUN模式", - "LightweightModeEnteredTitle": "輕量模式", - "LightweightModeEnteredBody": "已透過快速鍵進入輕量模式", - "AppQuitTitle": "應用程式退出", - "AppQuitBody": "已透過快速鍵退出應用程式", - "AppHiddenTitle": "應用程式隱藏", - "AppHiddenBody": "已透過快速鍵隱藏應用程式視窗", - "Configuration saved successfully": "設定儲存完成", - "Failed to save configuration": "設定儲存失敗", - "Open App Log": "Open App Log", - "Open Core Log": "Open Core Log", "common": { "editorModes": { "visualization": "視覺化", @@ -856,7 +721,9 @@ }, "common": { "notifications": { - "copySuccess": "複製成功" + "copySuccess": "複製成功", + "saveSuccess": "設定儲存完成", + "saveFailed": "設定儲存失敗" } }, "misc": { @@ -1122,6 +989,18 @@ "testAll": "測試全部", "new": "新增" } + }, + "statuses": { + "pending": "待檢測", + "yes": "支援", + "no": "不支援", + "failed": "測試失敗", + "completed": "檢測完成", + "disallowedIsp": "不允許的網際網路服務供應商", + "originalsOnly": "僅限原創", + "noDisney": "不支援(IP被Disney+禁止)", + "unsupportedRegion": "不支援的國家/地區", + "failedNetwork": "測試失敗(網路連線問題)" } }, "proxies": { @@ -1237,6 +1116,11 @@ "forceRefreshCompleted": "Force refresh completed", "emergencyRefreshFailed": "Emergency refresh failed: {{message}}" } + }, + "notifications": { + "importSuccess": "匯入設定檔成功", + "importSubscriptionSuccess": "匯入訂閱成功", + "importWithClashProxy": "使用 Clash 代理匯入訂閱成功" } }, "connections": { @@ -1292,5 +1176,79 @@ "memoryUsage": "內核佔用" } } + }, + "proxy": { + "strategies": { + "select": "手動選擇代理", + "url-test": "根據網址測試延遲選擇代理", + "fallback": "切換至另一個備用代理", + "load-balance": "根據負載平衡分配代理", + "relay": "根據定義的代理鏈傳送" + } + }, + "system": { + "notifications": { + "tunMode": { + "autoDisabled": "由於服務不可使用,虛擬網路介面卡模式已自動停用", + "autoDisableFailed": "自動停用虛擬網路介面卡模式失敗" + } + }, + "labels": { + "releaseVersion": "正式版", + "alphaVersion": "預覽版" + } + }, + "core": { + "status": { + "stopping": "內核停止中...", + "restarting": "內核重啟中..." + }, + "notifications": { + "changeSuccess": "內核切換成功", + "changeFailed": "無法切換內核" + } + }, + "service": { + "status": { + "installing": "安裝服務中...", + "uninstalling": "服務解除安裝中..." + }, + "notifications": { + "installSuccess": "已成功安裝服務", + "uninstallSuccess": "已成功解除安裝服務" + } + }, + "validation": { + "config": { + "failed": "訂閱配置校驗失敗,請檢查訂閱配置文件,變更已撤銷,錯誤詳情:", + "bootFailed": "啟動訂閱配置校驗失敗,已使用預設配置啟動;請檢查訂閱配置文件,錯誤詳情:", + "coreChangeFailed": "切換內核時配置校驗失敗,已使用預設配置啟動;請檢查訂閱配置文件,錯誤詳情:", + "processTerminated": "驗證程序被終止" + }, + "script": { + "syntaxError": "指令碼語法錯誤,變更已撤銷", + "missingMain": "指令碼錯誤,變更已撤銷", + "fileNotFound": "檔案遺失,變更已撤銷", + "fileError": "指令碼檔案錯誤,變更已撤銷" + }, + "yaml": { + "syntaxError": "YAML 語法錯誤,變更已撤銷", + "readError": "YAML 讀取錯誤,變更已撤銷", + "mappingError": "YAML 映射錯誤,變更已撤銷", + "keyError": "YAML 鍵錯誤,變更已撤銷", + "generalError": "YAML 錯誤,變更已撤銷" + }, + "merge": { + "syntaxError": "覆寫檔案語法錯誤,變更已撤銷", + "mappingError": "覆寫檔案映射錯誤,變更已撤銷", + "keyError": "覆寫檔案鍵錯誤,變更已撤銷", + "generalError": "覆寫檔案錯誤,變更已撤銷" + } + }, + "updates": { + "notifications": { + "withClashProxySuccess": "使用 Clash 代理更新成功", + "withClashProxyFailed": "使用 Clash 代理更新也失敗" + } } } diff --git a/src/pages/_layout/notificationHandlers.ts b/src/pages/_layout/notificationHandlers.ts index ec473386..a8456ef0 100644 --- a/src/pages/_layout/notificationHandlers.ts +++ b/src/pages/_layout/notificationHandlers.ts @@ -12,7 +12,7 @@ export const handleNoticeMessage = ( const handlers: Record void> = { "import_sub_url::ok": () => { navigate("/profile", { state: { current: msg } }); - showNotice.success("Import Subscription Successful"); + showNotice.success("profiles.notifications.importSubscriptionSuccess"); }, "import_sub_url::error": () => { navigate("/profile"); @@ -20,49 +20,50 @@ export const handleNoticeMessage = ( }, "set_config::error": () => showNotice.error(msg), update_with_clash_proxy: () => - showNotice.success("Update with Clash proxy successfully", msg), + showNotice.success("updates.notifications.withClashProxySuccess", msg), update_failed_even_with_clash: () => - showNotice.error("Update failed even with Clash proxy", msg), + showNotice.error("updates.notifications.withClashProxyFailed", msg), update_failed: () => showNotice.error(msg), "config_validate::boot_error": () => - showNotice.error("Boot Config Validation Failed", msg), + showNotice.error("validation.config.bootFailed", msg), "config_validate::core_change": () => - showNotice.error("Core Change Config Validation Failed", msg), + showNotice.error("validation.config.coreChangeFailed", msg), "config_validate::error": () => - showNotice.error("Config Validation Failed", msg), + showNotice.error("validation.config.failed", msg), "config_validate::process_terminated": () => - showNotice.error("Config Validation Process Terminated"), + showNotice.error("validation.config.processTerminated"), "config_validate::stdout_error": () => - showNotice.error("Config Validation Failed", msg), + showNotice.error("validation.config.failed", msg), "config_validate::script_error": () => - showNotice.error("Script File Error", msg), + showNotice.error("validation.script.fileError", msg), "config_validate::script_syntax_error": () => - showNotice.error("Script Syntax Error", msg), + showNotice.error("validation.script.syntaxError", msg), "config_validate::script_missing_main": () => - showNotice.error("Script Missing Main", msg), + showNotice.error("validation.script.missingMain", msg), "config_validate::file_not_found": () => - showNotice.error("File Not Found", msg), + showNotice.error("validation.script.fileNotFound", msg), "config_validate::yaml_syntax_error": () => - showNotice.error("YAML Syntax Error", msg), + showNotice.error("validation.yaml.syntaxError", msg), "config_validate::yaml_read_error": () => - showNotice.error("YAML Read Error", msg), + showNotice.error("validation.yaml.readError", msg), "config_validate::yaml_mapping_error": () => - showNotice.error("YAML Mapping Error", msg), + showNotice.error("validation.yaml.mappingError", msg), "config_validate::yaml_key_error": () => - showNotice.error("YAML Key Error", msg), - "config_validate::yaml_error": () => showNotice.error("YAML Error", msg), + showNotice.error("validation.yaml.keyError", msg), + "config_validate::yaml_error": () => + showNotice.error("validation.yaml.generalError", msg), "config_validate::merge_syntax_error": () => - showNotice.error("Merge File Syntax Error", msg), + showNotice.error("validation.merge.syntaxError", msg), "config_validate::merge_mapping_error": () => - showNotice.error("Merge File Mapping Error", msg), + showNotice.error("validation.merge.mappingError", msg), "config_validate::merge_key_error": () => - showNotice.error("Merge File Key Error", msg), + showNotice.error("validation.merge.keyError", msg), "config_validate::merge_error": () => - showNotice.error("Merge File Error", msg), + showNotice.error("validation.merge.generalError", msg), "config_core::change_success": () => - showNotice.success("Core Changed Successfully", msg), + showNotice.success("core.notifications.changeSuccess", msg), "config_core::change_error": () => - showNotice.error("Failed to Change Core", msg), + showNotice.error("core.notifications.changeFailed", msg), }; const handler = handlers[status]; diff --git a/src/pages/profiles.tsx b/src/pages/profiles.tsx index 5a614807..0a7e266d 100644 --- a/src/pages/profiles.tsx +++ b/src/pages/profiles.tsx @@ -289,7 +289,7 @@ const ProfilePage = () => { try { // 尝试正常导入 await importProfile(url); - await handleImportSuccess("Profile Imported Successfully"); + await handleImportSuccess("profiles.notifications.importSuccess"); } catch (initialErr) { console.warn("[订阅导入] 首次导入失败:", initialErr); @@ -300,7 +300,9 @@ const ProfilePage = () => { with_proxy: false, self_proxy: true, }); - await handleImportSuccess("Profile Imported with Clash proxy"); + await handleImportSuccess( + "profiles.notifications.importWithClashProxy", + ); } catch (retryErr) { // 回退导入也失败 showNotice.error( diff --git a/src/pages/unlock.tsx b/src/pages/unlock.tsx index f9f1ea67..9eeb1067 100644 --- a/src/pages/unlock.tsx +++ b/src/pages/unlock.tsx @@ -37,6 +37,19 @@ interface UnlockItem { const UNLOCK_RESULTS_STORAGE_KEY = "clash_verge_unlock_results"; const UNLOCK_RESULTS_TIME_KEY = "clash_verge_unlock_time"; +const STATUS_LABEL_KEYS: Record = { + Pending: "test.statuses.pending", + Yes: "test.statuses.yes", + No: "test.statuses.no", + Failed: "test.statuses.failed", + Completed: "test.statuses.completed", + "Disallowed ISP": "test.statuses.disallowedIsp", + "Originals Only": "test.statuses.originalsOnly", + "No (IP Banned By Disney+)": "test.statuses.noDisney", + "Unsupported Country/Region": "test.statuses.unsupportedRegion", + "Failed (Network Connection)": "test.statuses.failedNetwork", +}; + const UnlockPage = () => { const { t } = useTranslation(); const theme = useTheme(); @@ -366,7 +379,7 @@ const UnlockPage = () => { }} >