diff --git a/scripts/cleanup-unused-i18n.mjs b/scripts/cleanup-unused-i18n.mjs index 297b05e6..7d463470 100644 --- a/scripts/cleanup-unused-i18n.mjs +++ b/scripts/cleanup-unused-i18n.mjs @@ -301,13 +301,26 @@ function logPreviewEntries(label, items) { } function removeKey(target, dottedKey) { - const parts = dottedKey.split("."); - const last = parts.pop(); + if ( + !target || + typeof target !== "object" || + Array.isArray(target) || + dottedKey === "" + ) { + return; + } - if (!last) return; + if (dottedKey in target) { + delete target[dottedKey]; + return; + } + + const parts = dottedKey.split(".").filter((part) => part !== ""); + if (parts.length === 0) return; let current = target; - for (const part of parts) { + for (let index = 0; index < parts.length; index += 1) { + const part = parts[index]; if ( !current || typeof current !== "object" || @@ -316,12 +329,12 @@ function removeKey(target, dottedKey) { ) { return; } + if (index === parts.length - 1) { + delete current[part]; + return; + } current = current[part]; } - - if (current && typeof current === "object") { - delete current[last]; - } } function cleanupEmptyBranches(target) { diff --git a/src/components/profile/editor-viewer.tsx b/src/components/profile/editor-viewer.tsx index c28f5738..a37af260 100644 --- a/src/components/profile/editor-viewer.tsx +++ b/src/components/profile/editor-viewer.tsx @@ -97,7 +97,7 @@ export const EditorViewer = (props: Props) => { onClose, } = props; - const resolvedTitle = title ?? t("Edit File"); + const resolvedTitle = title ?? t("components.profile.menu.editFile"); const resolvedInitialData = useMemo( () => initialData ?? Promise.resolve(""), [initialData], @@ -202,7 +202,9 @@ export const EditorViewer = (props: Props) => { }, mouseWheelZoom: true, // 按住Ctrl滚轮调节缩放比例 readOnly: readOnly, // 只读模式 - readOnlyMessage: { value: t("ReadOnlyMessage") }, // 只读模式尝试编辑时的提示信息 + readOnlyMessage: { + value: t("components.profile.editor.readOnlyMessage"), + }, // 只读模式尝试编辑时的提示信息 renderValidationDecorations: "on", // 只读模式下显示校验信息 quickSuggestions: { strings: true, // 字符串类型的建议 @@ -231,7 +233,7 @@ export const EditorViewer = (props: Props) => { size="medium" color="inherit" sx={{ display: readOnly ? "none" : "" }} - title={t("Format document")} + title={t("components.profile.editor.format")} onClick={() => editorRef.current ?.getAction("editor.action.formatDocument") diff --git a/src/components/profile/groups-editor-viewer.tsx b/src/components/profile/groups-editor-viewer.tsx index f4117830..2c39c04e 100644 --- a/src/components/profile/groups-editor-viewer.tsx +++ b/src/components/profile/groups-editor-viewer.tsx @@ -369,7 +369,7 @@ export const GroupsEditorViewer = (props: Props) => { const validateGroup = () => { const group = formIns.getValues(); if (group.name === "") { - throw new Error(t("Group Name Required")); + throw new Error(t("components.profile.groupsEditor.errors.nameRequired")); } }; @@ -384,7 +384,7 @@ export const GroupsEditorViewer = (props: Props) => { } await saveProfileFile(property, nextData); - showNotice("success", t("Saved Successfully")); + showNotice("success", t("components.profile.notifications.saved")); setPrevData(nextData); onSave?.(prevData, nextData); onClose(); @@ -398,7 +398,7 @@ export const GroupsEditorViewer = (props: Props) => { { - {t("Edit Groups")} + {t("components.profile.groupsEditor.title")} @@ -436,7 +438,11 @@ export const GroupsEditorViewer = (props: Props) => { control={control} render={({ field }) => ( - + { control={control} render={({ field }) => ( - + { control={control} render={({ field }) => ( - + { control={control} render={({ field }) => ( - + { control={control} render={({ field }) => ( - + { control={control} render={({ field }) => ( - + { control={control} render={({ field }) => ( - + { control={control} render={({ field }) => ( - + { control={control} render={({ field }) => ( - + { control={control} render={({ field }) => ( - + { control={control} render={({ field }) => ( - + { control={control} render={({ field }) => ( - + { control={control} render={({ field }) => ( - + { control={control} render={({ field }) => ( - + { control={control} render={({ field }) => ( - + { control={control} render={({ field }) => ( - + )} @@ -769,7 +835,11 @@ export const GroupsEditorViewer = (props: Props) => { control={control} render={({ field }) => ( - + )} @@ -779,7 +849,11 @@ export const GroupsEditorViewer = (props: Props) => { control={control} render={({ field }) => ( - + )} @@ -789,7 +863,11 @@ export const GroupsEditorViewer = (props: Props) => { control={control} render={({ field }) => ( - + )} @@ -799,7 +877,11 @@ export const GroupsEditorViewer = (props: Props) => { control={control} render={({ field }) => ( - + )} @@ -809,7 +891,11 @@ export const GroupsEditorViewer = (props: Props) => { control={control} render={({ field }) => ( - + )} @@ -825,7 +911,11 @@ export const GroupsEditorViewer = (props: Props) => { validateGroup(); for (const item of [...prependSeq, ...groupList]) { if (item.name === formIns.getValues().name) { - throw new Error(t("Group Name Already Exists")); + throw new Error( + t( + "components.profile.groupsEditor.errors.nameExists", + ), + ); } } setPrependSeq([formIns.getValues(), ...prependSeq]); @@ -834,7 +924,7 @@ export const GroupsEditorViewer = (props: Props) => { } }} > - {t("Prepend Group")} + {t("components.profile.groupsEditor.actions.prepend")} @@ -847,7 +937,11 @@ export const GroupsEditorViewer = (props: Props) => { validateGroup(); for (const item of [...appendSeq, ...groupList]) { if (item.name === formIns.getValues().name) { - throw new Error(t("Group Name Already Exists")); + throw new Error( + t( + "components.profile.groupsEditor.errors.nameExists", + ), + ); } } setAppendSeq([...appendSeq, formIns.getValues()]); @@ -856,7 +950,7 @@ export const GroupsEditorViewer = (props: Props) => { } }} > - {t("Append Group")} + {t("components.profile.groupsEditor.actions.append")} diff --git a/src/components/profile/log-viewer.tsx b/src/components/profile/log-viewer.tsx index 9375ace3..ec695711 100644 --- a/src/components/profile/log-viewer.tsx +++ b/src/components/profile/log-viewer.tsx @@ -26,7 +26,7 @@ export const LogViewer = (props: Props) => { return ( - {t("Script Console")} + {t("components.profile.logViewer.title")} { // 如果已经过期,显示"更新失败" if (nextUpdateDate.isBefore(now)) { - setNextUpdateTime(t("Last Update failed")); + setNextUpdateTime( + t("components.profile.item.status.lastUpdateFailed"), + ); } else { // 否则显示剩余时间 const diffMinutes = nextUpdateDate.diff(now, "minute"); if (diffMinutes < 60) { if (diffMinutes <= 0) { - setNextUpdateTime(`${t("Next Up")} <1m`); + setNextUpdateTime( + `${t("components.profile.item.status.nextUp")} <1m`, + ); } else { - setNextUpdateTime(`${t("Next Up")} ${diffMinutes}m`); + setNextUpdateTime( + `${t("components.profile.item.status.nextUp")} ${diffMinutes}m`, + ); } } else { const hours = Math.floor(diffMinutes / 60); const mins = diffMinutes % 60; - setNextUpdateTime(`${t("Next Up")} ${hours}h ${mins}m`); + setNextUpdateTime( + `${t("components.profile.item.status.nextUp")} ${hours}h ${mins}m`, + ); } } } else { console.log(`返回的下次更新时间为空`); - setNextUpdateTime(t("No schedule")); + setNextUpdateTime(t("components.profile.item.status.noSchedule")); } } catch (err) { console.error(`获取下次更新时间出错:`, err); - setNextUpdateTime(t("Unknown")); + setNextUpdateTime(t("components.profile.item.status.unknown")); } } else { console.log(`该配置未设置更新间隔或间隔为0`); - setNextUpdateTime(t("Auto update disabled")); + setNextUpdateTime(t("components.profile.item.status.autoUpdateDisabled")); } }); @@ -354,42 +362,95 @@ export const ProfileItem = (props: Props) => { } }); - const urlModeMenu = ( - hasHome ? [{ label: "Home", handler: onOpenHome, disabled: false }] : [] - ).concat([ - { label: "Select", handler: onForceSelect, disabled: false }, - { label: "Edit Info", handler: onEditInfo, disabled: false }, - { label: "Edit File", handler: onEditFile, disabled: false }, + type ContextMenuItem = { + label: string; + handler: () => void; + disabled: boolean; + }; + + const menuLabels = { + home: "components.profile.menu.home", + select: "components.profile.menu.select", + editInfo: "components.profile.menu.editInfo", + editFile: "components.profile.menu.editFile", + editRules: "components.profile.menu.editRules", + editProxies: "components.profile.menu.editProxies", + editGroups: "components.profile.menu.editGroups", + extendConfig: "components.profile.menu.extendConfig", + extendScript: "components.profile.menu.extendScript", + openFile: "components.profile.menu.openFile", + update: "components.profile.menu.update", + updateViaProxy: "components.profile.menu.updateViaProxy", + delete: "components.profile.menu.delete", + } as const; + + const urlModeMenu: ContextMenuItem[] = [ + ...(hasHome + ? [ + { + label: menuLabels.home, + handler: onOpenHome, + disabled: false, + } satisfies ContextMenuItem, + ] + : []), { - label: "Edit Rules", + label: menuLabels.select, + handler: onForceSelect, + disabled: false, + }, + { + label: menuLabels.editInfo, + handler: onEditInfo, + disabled: false, + }, + { + label: menuLabels.editFile, + handler: onEditFile, + disabled: false, + }, + { + label: menuLabels.editRules, handler: onEditRules, disabled: !option?.rules, }, { - label: "Edit Proxies", + label: menuLabels.editProxies, handler: onEditProxies, disabled: !option?.proxies, }, { - label: "Edit Groups", + label: menuLabels.editGroups, handler: onEditGroups, disabled: !option?.groups, }, { - label: "Extend Config", + label: menuLabels.extendConfig, handler: onEditMerge, disabled: !option?.merge, }, { - label: "Extend Script", + label: menuLabels.extendScript, handler: onEditScript, disabled: !option?.script, }, - { label: "Open File", handler: onOpenFile, disabled: false }, - { label: "Update", handler: () => onUpdate(0), disabled: false }, - { label: "Update via proxy", handler: () => onUpdate(2), disabled: false }, { - label: "Delete", + label: menuLabels.openFile, + handler: onOpenFile, + disabled: false, + }, + { + label: menuLabels.update, + handler: () => onUpdate(0), + disabled: false, + }, + { + label: menuLabels.updateViaProxy, + handler: () => onUpdate(2), + disabled: false, + }, + { + label: menuLabels.delete, handler: () => { setAnchorEl(null); if (batchMode) { @@ -403,39 +464,55 @@ export const ProfileItem = (props: Props) => { }, disabled: false, }, - ]); - const fileModeMenu = [ - { label: "Select", handler: onForceSelect, disabled: false }, - { label: "Edit Info", handler: onEditInfo, disabled: false }, - { label: "Edit File", handler: onEditFile, disabled: false }, + ]; + const fileModeMenu: ContextMenuItem[] = [ { - label: "Edit Rules", + label: menuLabels.select, + handler: onForceSelect, + disabled: false, + }, + { + label: menuLabels.editInfo, + handler: onEditInfo, + disabled: false, + }, + { + label: menuLabels.editFile, + handler: onEditFile, + disabled: false, + }, + { + label: menuLabels.editRules, handler: onEditRules, disabled: !option?.rules, }, { - label: "Edit Proxies", + label: menuLabels.editProxies, handler: onEditProxies, disabled: !option?.proxies, }, { - label: "Edit Groups", + label: menuLabels.editGroups, handler: onEditGroups, disabled: !option?.groups, }, { - label: "Extend Config", + label: menuLabels.extendConfig, handler: onEditMerge, disabled: !option?.merge, }, { - label: "Extend Script", + label: menuLabels.extendScript, handler: onEditScript, disabled: !option?.script, }, - { label: "Open File", handler: onOpenFile, disabled: false }, { - label: "Delete", + label: menuLabels.openFile, + handler: onOpenFile, + disabled: false, + }, + { + label: menuLabels.delete, handler: () => { setAnchorEl(null); if (batchMode) { @@ -657,8 +734,8 @@ export const ProfileItem = (props: Props) => { textAlign="right" title={ showNextUpdate - ? t("Click to show last update time") - : `${t("Update Time")}: ${parseExpire(updated)}\n${t("Click to show next update")}` + ? t("components.profile.item.tooltips.showLast") + : `${t("Update Time")}: ${parseExpire(updated)}\n${t("components.profile.item.tooltips.showNext")}` } sx={{ cursor: "pointer", @@ -728,7 +805,7 @@ export const ProfileItem = (props: Props) => { (theme) => { return { color: - item.label === "Delete" + item.label === menuLabels.delete ? theme.palette.error.main : undefined, }; @@ -813,8 +890,8 @@ export const ProfileItem = (props: Props) => { )} setConfirmOpen(false)} onConfirm={() => { diff --git a/src/components/profile/profile-more.tsx b/src/components/profile/profile-more.tsx index 2ead4b94..8c63a178 100644 --- a/src/components/profile/profile-more.tsx +++ b/src/components/profile/profile-more.tsx @@ -54,9 +54,19 @@ export const ProfileMore = (props: Props) => { const hasError = entries.some(([level]) => level === "exception"); + const globalTitles: Record = { + Merge: "components.profile.more.global.merge", + Script: "components.profile.more.global.script", + }; + + const chipLabels: Record = { + Merge: "components.profile.more.chips.merge", + Script: "components.profile.more.chips.script", + }; + const itemMenu = [ - { label: "Edit File", handler: onEditFile }, - { label: "Open File", handler: onOpenFile }, + { label: "components.profile.menu.editFile", handler: onEditFile }, + { label: "components.profile.menu.openFile", handler: onOpenFile }, ]; const boxStyle = { @@ -89,13 +99,13 @@ export const ProfileMore = (props: Props) => { variant="h6" component="h2" noWrap - title={t(`Global ${id}`)} + title={t(globalTitles[id])} > - {t(`Global ${id}`)} + {t(globalTitles[id])} { size="small" edge="start" color="error" - title={t("Script Console")} + title={t("components.profile.logViewer.title")} onClick={() => setLogOpen(true)} > @@ -122,7 +132,7 @@ export const ProfileMore = (props: Props) => { size="small" edge="start" color="inherit" - title={t("Script Console")} + title={t("components.profile.logViewer.title")} onClick={() => setLogOpen(true)} > @@ -170,7 +180,7 @@ export const ProfileMore = (props: Props) => { {fileOpen && ( { const handleSave = useLockFn(async () => { try { await saveProfileFile(property, currData); - showNotice("success", t("Saved Successfully")); + showNotice("success", t("components.profile.notifications.saved")); onSave?.(prevData, currData); onClose(); } catch (err: any) { @@ -276,7 +276,7 @@ export const ProxiesEditorViewer = (props: Props) => { { - {t("Edit Proxies")} + {t("components.profile.proxiesEditor.title")} @@ -312,7 +314,9 @@ export const ProxiesEditorViewer = (props: Props) => { { }); }} > - {t("Prepend Proxy")} + {t("components.profile.proxiesEditor.actions.prepend")} @@ -346,7 +350,7 @@ export const ProxiesEditorViewer = (props: Props) => { }); }} > - {t("Append Proxy")} + {t("components.profile.proxiesEditor.actions.append")} diff --git a/src/components/profile/rules-editor-viewer.tsx b/src/components/profile/rules-editor-viewer.tsx index a2f009b1..c0c52dbf 100644 --- a/src/components/profile/rules-editor-viewer.tsx +++ b/src/components/profile/rules-editor-viewer.tsx @@ -479,7 +479,7 @@ export const RulesEditorViewer = (props: Props) => { const handleSave = useLockFn(async () => { try { await saveProfileFile(property, currData); - showNotice("success", t("Saved Successfully")); + showNotice("success", t("components.profile.notifications.saved")); onSave?.(prevData, currData); onClose(); } catch (err: any) { @@ -501,7 +501,9 @@ export const RulesEditorViewer = (props: Props) => { setVisualization((prev) => !prev); }} > - {visualization ? t("Advanced") : t("Visualization")} + {visualization + ? t("common.editorModes.advanced") + : t("common.editorModes.visualization")} diff --git a/src/components/setting/mods/dns-viewer.tsx b/src/components/setting/mods/dns-viewer.tsx index 7a5b12b8..d66d60f6 100644 --- a/src/components/setting/mods/dns-viewer.tsx +++ b/src/components/setting/mods/dns-viewer.tsx @@ -631,7 +631,9 @@ export function DnsViewer({ ref }: { ref?: Ref }) { setVisualization((prev) => !prev); }} > - {visualization ? t("Advanced") : t("Visualization")} + {visualization + ? t("common.editorModes.advanced") + : t("common.editorModes.visualization")} diff --git a/src/locales/ar.json b/src/locales/ar.json index be8f30de..3c8c687d 100644 --- a/src/locales/ar.json +++ b/src/locales/ar.json @@ -7,7 +7,6 @@ "Confirm": "تأكيد", "Maximize": "تكبير", "Minimize": "تصغير", - "Format document": "تنسيق المستند", "Empty": "فارغ", "New": "جديد", "Edit": "تعديل", @@ -168,7 +167,6 @@ "Label-Unlock": "Test", "Label-Settings": "الإعدادات", "Proxies": "الوكلاء", - "Connecting...": "Connecting...", "Update All": "تحديث الكل", "Update At": "التحديث عند", "rule": "قاعدة", @@ -186,15 +184,6 @@ "Update Time": "وقت التحديث", "Used / Total": "المستخدم / الإجمالي", "Expire Time": "وقت الانتهاء", - "Edit Proxies": "تعديل الوكلاء", - "Use newlines for multiple uri": "استخدم أسطرًا جديدة لعدّة عناوين URI (يدعم التشفير Base64)", - "Edit Rules": "تعديل القواعد", - "Prepend Group": "إضافة مجموعة في البداية", - "Append Group": "إضافة مجموعة في النهاية", - "Prepend Proxy": "إضافة وكيل في البداية", - "Append Proxy": "إضافة وكيل في النهاية", - "Advanced": "متقدم", - "Visualization": "تصور", "DOMAIN": "مطابقة اسم المجال الكامل", "DOMAIN-SUFFIX": "مطابقة لاحقة المجال", "DOMAIN-KEYWORD": "مطابقة كلمة مفتاحية في المجال", @@ -232,48 +221,16 @@ "REJECT": "رفض الطلبات", "REJECT-DROP": "تجاهل الطلبات", "PASS": "تخطي هذه القاعدة عند المطابقة", - "Edit Groups": "تعديل مجموعات الوكلاء", - "Group Type": "نوع المجموعة", "select": "اختيار الوكيل يدويًا", "url-test": "اختيار الوكيل بناءً على تأخير اختبار الرابط", "fallback": "التبديل إلى وكيل آخر عند حدوث خطأ", "load-balance": "توزيع التحميل بين الوكلاء", "relay": "التمرير عبر سلسلة الوكلاء المحددة", - "Group Name": "اسم المجموعة", - "Use Proxies": "استخدام الوكلاء", - "Use Provider": "استخدام المزود", - "Health Check Url": "رابط فحص الصحة", - "Expected Status": "الحالة المتوقعة", - "Interval": "الفاصل الزمني", - "Lazy": "كسول", "Timeout": "مهلة", - "Max Failed Times": "الحد الأقصى لمحاولات الفشل", - "Interface Name": "اسم الواجهة", - "Routing Mark": "علامة التوجيه", - "Include All": "تضمين جميع الوكلاء والمزودين", - "Include All Providers": "تضمين جميع المزودين", - "Include All Proxies": "تضمين جميع الوكلاء", - "Exclude Filter": "استبعاد المرشح", - "Exclude Type": "استبعاد النوع", - "Disable UDP": "تعطيل UDP", - "Hidden": "مخفي", - "Group Name Required": "اسم المجموعة مطلوب", - "Group Name Already Exists": "اسم المجموعة موجود بالفعل", - "Extend Config": "توسيع الإعدادات", - "Extend Script": "توسيع السكربت", "Type": "النوع", "Name": "الاسم", "Refresh": "تحديث", - "Home": "الصفحة الرئيسية", - "Select": "اختيار", - "Edit Info": "تعديل المعلومات", - "Edit File": "تعديل الملف", - "Open File": "فتح الملف", "Update": "تحديث", - "Update via proxy": "Update via proxy", - "Confirm deletion": "تأكيد الحذف", - "This operation is not reversible": "لا يمكن التراجع عن هذه العملية", - "Script Console": "وحدة التحكم للسكريبت", "Close All Connections": "Close All Connections", "Upload": "Upload", "Download": "Download", @@ -380,7 +337,6 @@ "theme.system": "سمة النظام", "Copy Success": "تم النسخ بنجاح", "Memory Usage": "استهلاك الذاكرة", - "Proxy Group Icon": "أيقونة مجموعة الوكلاء", "Miscellaneous": "متفرقات", "App Log Level": "مستوى سجلات التطبيق", "Auto Close Connections": "إغلاق الاتصالات تلقائيًا", @@ -415,8 +371,6 @@ "Exit": "خروج", "Verge Version": "إصدار Verge", "ReadOnly": "للقراءة فقط", - "ReadOnlyMessage": "لا يمكن التعديل في محرر القراءة فقط", - "Filter": "تصفية", "Filter conditions": "شروط التصفية", "Match Case": "مطابقة الحالة", "Match Whole Word": "مطابقة الكلمة بأكملها", @@ -431,14 +385,6 @@ "Service Uninstalled Successfully": "تم إلغاء تثبيت الخدمة بنجاح", "Proxy Daemon Duration Cannot be Less than 1 Second": "لا يمكن أن تقل مدة خادم الوكيل عن ثانية واحدة", "Invalid Bypass Format": "تنسيق التخطي غير صالح", - "Waiting for service to be ready...": "Waiting for service to be ready...", - "Service not ready, retrying attempt {count}/{total}...": "Service not ready, retrying attempt {{count}}/{{total}}...", - "Failed to check service status, retrying attempt {count}/{total}...": "Failed to check service status, retrying attempt {{count}}/{{total}}...", - "Service did not become ready after attempts. Proceeding with core restart.": "Service did not become ready after attempts. Proceeding with core restart.", - "Service was ready, but core restart might have issues or service became unavailable. Please check.": "Service was ready, but core restart might have issues or service became unavailable. Please check.", - "Service installation or core restart encountered issues. Service might not be available. Please check system logs.": "Service installation or core restart encountered issues. Service might not be available. Please check system logs.", - "Attempting to restart core as a fallback...": "Attempting to restart core as a fallback...", - "Core restarted. Service is now available.": "Core restarted. Service is now available.", "Core Version Updated": "تم تحديث إصدار النواة", "Clash Core Restarted": "تم إعادة تشغيل نواة Clash", "GeoData Updated": "تم تحديث البيانات الجغرافية", @@ -580,16 +526,10 @@ "Administrator + Service Mode": "Admin + Service Mode", "Last Check Update": "Last Check Update", "Click to import subscription": "Click to import subscription", - "Last Update failed": "Last Update failed", - "Next Up": "Next Up", - "No schedule": "No schedule", "Unknown": "Unknown", - "Auto update disabled": "Auto update disabled", "Update failed, retrying with Clash proxy...": "Update failed, retrying with Clash proxy...", "Update with Clash proxy successfully": "Update with Clash proxy successfully", "Update failed even with Clash proxy": "Update failed even with Clash proxy", - "Profile creation failed, retrying with Clash proxy...": "Profile creation failed, retrying with Clash proxy...", - "Import failed, retrying with Clash proxy...": "Import failed, retrying with Clash proxy...", "Profile Imported with Clash proxy": "Profile Imported with Clash proxy", "Current Node": "Current Node", "No active proxy node": "No active proxy node", @@ -628,8 +568,6 @@ "AppQuitBody": "APP quit by hotkey", "AppHiddenTitle": "APP Hidden", "AppHiddenBody": "APP window hidden by hotkey", - "Saved Successfully": "Saved successfully", - "Enable one-click CORS for external API. Click to toggle CORS": "Enable one-click CORS for external API. Click to toggle CORS", "External Cors Settings": "External Cors Settings", "External Cors Configuration": "External Cors Configuration", "Allow private network access": "Allow private network access", @@ -704,6 +642,106 @@ }, "fileInput": { "chooseFile": "اختر ملف" + }, + "notifications": { + "saved": "Saved successfully" + }, + "proxiesEditor": { + "title": "تعديل الوكلاء", + "placeholders": { + "multiUri": "استخدم أسطرًا جديدة لعدّة عناوين URI (يدعم التشفير Base64)" + }, + "actions": { + "prepend": "إضافة وكيل في البداية", + "append": "إضافة وكيل في النهاية" + } + }, + "groupsEditor": { + "title": "تعديل مجموعات الوكلاء", + "errors": { + "nameRequired": "اسم المجموعة مطلوب", + "nameExists": "اسم المجموعة موجود بالفعل" + }, + "fields": { + "type": "نوع المجموعة", + "name": "اسم المجموعة", + "icon": "أيقونة مجموعة الوكلاء", + "proxies": "استخدام الوكلاء", + "provider": "استخدام المزود", + "healthCheckUrl": "رابط فحص الصحة", + "expectedStatus": "الحالة المتوقعة", + "interval": "الفاصل الزمني", + "timeout": "مهلة", + "maxFailedTimes": "الحد الأقصى لمحاولات الفشل", + "interfaceName": "اسم الواجهة", + "routingMark": "علامة التوجيه", + "filter": "تصفية", + "excludeFilter": "استبعاد المرشح", + "excludeType": "استبعاد النوع", + "includeAll": "تضمين جميع الوكلاء والمزودين", + "includeAllProxies": "تضمين جميع الوكلاء", + "includeAllProviders": "تضمين جميع المزودين" + }, + "toggles": { + "lazy": "كسول", + "disableUdp": "تعطيل UDP", + "hidden": "مخفي" + }, + "actions": { + "prepend": "إضافة مجموعة في البداية", + "append": "إضافة مجموعة في النهاية" + } + }, + "menu": { + "home": "Home", + "select": "اختيار", + "editInfo": "تعديل المعلومات", + "editFile": "تعديل الملف", + "editRules": "تعديل القواعد", + "editProxies": "تعديل الوكلاء", + "editGroups": "تعديل مجموعات الوكلاء", + "extendConfig": "توسيع الإعدادات", + "extendScript": "توسيع السكربت", + "openFile": "فتح الملف", + "update": "تحديث", + "updateViaProxy": "Update via proxy", + "delete": "حذف" + }, + "item": { + "tooltips": { + "showLast": "Click to show last update time", + "showNext": "Click to show next update" + }, + "status": { + "lastUpdateFailed": "Last Update failed", + "nextUp": "Next Up", + "noSchedule": "No schedule", + "unknown": "Unknown", + "autoUpdateDisabled": "Auto update disabled" + } + }, + "confirm": { + "delete": { + "title": "تأكيد الحذف", + "message": "لا يمكن التراجع عن هذه العملية" + } + }, + "logViewer": { + "title": "وحدة التحكم للسكريبت" + }, + "more": { + "global": { + "merge": "Global Merge", + "script": "Global Script" + }, + "chips": { + "merge": "Merge", + "script": "Script" + } + }, + "editor": { + "format": "تنسيق المستند", + "readOnlyMessage": "لا يمكن التعديل في محرر القراءة فقط" } }, "home": { @@ -886,5 +924,11 @@ } } } + }, + "common": { + "editorModes": { + "visualization": "تصور", + "advanced": "متقدم" + } } } diff --git a/src/locales/de.json b/src/locales/de.json index 9d2b16e3..0c9956b7 100644 --- a/src/locales/de.json +++ b/src/locales/de.json @@ -7,7 +7,6 @@ "Confirm": "Bestätigen", "Maximize": "Maximieren", "Minimize": "Minimieren", - "Format document": "Dokument formatieren", "Empty": "Leer", "New": "Neu", "Edit": "Bearbeiten", @@ -168,7 +167,6 @@ "Label-Unlock": "Testen", "Label-Settings": "Einstellungen", "Proxies": "Proxies", - "Connecting...": "Connecting...", "Update All": "Alle aktualisieren", "Update At": "Aktualisiert am", "rule": "Regel", @@ -186,15 +184,6 @@ "Update Time": "Aktualisierungszeit", "Used / Total": "Verwendet / Gesamt", "Expire Time": "Ablaufzeit", - "Edit Proxies": "Knoten bearbeiten", - "Use newlines for multiple uri": "Für mehrere URI verwenden Sie Zeilenumbrüche (Base64-Codierung wird unterstützt)", - "Edit Rules": "Regeln bearbeiten", - "Prepend Group": "Vorherige Proxy-Gruppe hinzufügen", - "Append Group": "Nachfolgende Proxy-Gruppe hinzufügen", - "Prepend Proxy": "Vorherigen Proxy-Knoten hinzufügen", - "Append Proxy": "Nachfolgenden Proxy-Knoten hinzufügen", - "Advanced": "Erweitert", - "Visualization": "Visualisierung", "DOMAIN": "Vollständigen Domainnamen übereinstimmen", "DOMAIN-SUFFIX": "Domain-Suffix übereinstimmen", "DOMAIN-KEYWORD": "Domain-Schlüsselwort übereinstimmen", @@ -232,48 +221,16 @@ "REJECT": "Anfrage ablehnen", "REJECT-DROP": "Anfrage verwerfen", "PASS": "Diese Regel überspringen", - "Edit Groups": "Proxy-Gruppen bearbeiten", - "Group Type": "Proxy-Gruppentyp", "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", - "Group Name": "Proxy-Gruppenname", - "Use Proxies": "Proxy einführen", - "Use Provider": "Proxy-Sammlung einführen", - "Health Check Url": "URL für Gesundheitstest", - "Expected Status": "Erwarteter Statuscode", - "Interval": "Prüfintervall", - "Lazy": "Lazy-Status", "Timeout": "Timeout", - "Max Failed Times": "Maximale Anzahl fehlgeschlagener Versuche", - "Interface Name": "Ausgangsschnittstelle", - "Routing Mark": "Routierungsmarkierung", - "Include All": "Alle Ausgangsproxy und Proxy-Sammlungen einführen", - "Include All Providers": "Alle Proxy-Sammlungen einführen", - "Include All Proxies": "Alle Ausgangsproxy einführen", - "Exclude Filter": "Knoten ausschließen", - "Exclude Type": "Typ der auszuschließenden Knoten", - "Disable UDP": "UDP deaktivieren", - "Hidden": "Proxy-Gruppe ausblenden", - "Group Name Required": "Der Proxy-Gruppenname darf nicht leer sein", - "Group Name Already Exists": "Der Proxy-Gruppenname existiert bereits", - "Extend Config": "Erweiterte Überdeckungskonfiguration", - "Extend Script": "Erweitertes Skript", "Type": "Typ", "Name": "Name", "Refresh": "Aktualisieren", - "Home": "Startseite", - "Select": "Verwenden", - "Edit Info": "Informationen bearbeiten", - "Edit File": "Datei bearbeiten", - "Open File": "Datei öffnen", "Update": "Aktualisieren", - "Update via proxy": "Update via proxy", - "Confirm deletion": "Löschung bestätigen", - "This operation is not reversible": "Diese Operation kann nicht rückgängig gemacht werden", - "Script Console": "Skript-Konsole-Ausgabe", "Close All Connections": "Close All Connections", "Upload": "Hochladen", "Download": "Herunterladen", @@ -380,7 +337,6 @@ "theme.system": "System", "Copy Success": "Kopieren erfolgreich", "Memory Usage": "Kern-Speichernutzung", - "Proxy Group Icon": "Proxy-Gruppen-Symbol", "Miscellaneous": "Sonstige Einstellungen", "App Log Level": "Anwendungs-Protokolliergrad", "Auto Close Connections": "Verbindungen automatisch schließen", @@ -415,8 +371,6 @@ "Exit": "Beenden", "Verge Version": "Verge-Version", "ReadOnly": "Schreibgeschützt", - "ReadOnlyMessage": "Bearbeitung im schreibgeschützten Modus nicht möglich", - "Filter": "Knoten filtern", "Filter conditions": "Filterbedingungen", "Match Case": "Groß-/Kleinschreibung beachten", "Match Whole Word": "Ganzes Wort übereinstimmen", @@ -431,14 +385,6 @@ "Service Uninstalled Successfully": "Service erfolgreich deinstalliert", "Proxy Daemon Duration Cannot be Less than 1 Second": "Das Intervall des Proxy-Daemons darf nicht weniger als 1 Sekunde betragen.", "Invalid Bypass Format": "Ungültiges Format für die Proxy-Umgehung", - "Waiting for service to be ready...": "Auf Service-Bereitschaft gewartet...", - "Service not ready, retrying attempt {count}/{total}...": "Service not ready, retrying attempt {{count}}/{{total}}...", - "Failed to check service status, retrying attempt {count}/{total}...": "Failed to check service status, retrying attempt {{count}}/{{total}}...", - "Service did not become ready after attempts. Proceeding with core restart.": "Service did not become ready after attempts. Proceeding with core restart.", - "Service was ready, but core restart might have issues or service became unavailable. Please check.": "Der Dienst war bereit, aber beim Neustart des Kerns könnten Probleme aufgetreten sein oder der Dienst ist möglicherweise nicht verfügbar. Bitte überprüfen Sie dies.", - "Service installation or core restart encountered issues. Service might not be available. Please check system logs.": "Bei der Dienstinstallation oder dem Neustart des Kerns sind Probleme aufgetreten. Der Dienst ist möglicherweise nicht verfügbar. Bitte prüfen Sie die Systemprotokolle.", - "Attempting to restart core as a fallback...": "Attempting to restart core as a fallback...", - "Core restarted. Service is now available.": "Kern wurde neu gestartet. Service ist jetzt verfügbar", "Core Version Updated": "Kernversion wurde aktualisiert", "Clash Core Restarted": "Clash-Kern wurde neu gestartet", "GeoData Updated": "Geo-Daten wurden aktualisiert", @@ -580,16 +526,10 @@ "Administrator + Service Mode": "Admin + Service Mode", "Last Check Update": "Letzte Aktualitätsprüfung", "Click to import subscription": "Klicken Sie hier, um ein Abonnement zu importieren.", - "Last Update failed": "Letzte Aktualisierung fehlgeschlagen", - "Next Up": "Nächste Aktualisierung", - "No schedule": "Kein Zeitplan", "Unknown": "Unbekannt", - "Auto update disabled": "Automatische Aktualisierung deaktiviert", "Update failed, retrying with Clash proxy...": "Abonnement-Aktualisierung fehlgeschlagen. Versuche es mit dem Clash-Proxy erneut...", "Update with Clash proxy successfully": "Aktualisierung mit Clash-Proxy erfolgreich", "Update failed even with Clash proxy": "Aktualisierung auch mit Clash-Proxy fehlgeschlagen", - "Profile creation failed, retrying with Clash proxy...": "Erstellung des Abonnements fehlgeschlagen. Versuche es mit dem Clash-Proxy erneut...", - "Import failed, retrying with Clash proxy...": "Import des Abonnements fehlgeschlagen. Versuche es mit dem Clash-Proxy erneut...", "Profile Imported with Clash proxy": "Abonnement mit Clash-Proxy importiert", "Current Node": "Aktueller Knoten", "No active proxy node": "Kein aktiver Proxy-Knoten", @@ -628,8 +568,6 @@ "AppQuitBody": "APP quit by hotkey", "AppHiddenTitle": "APP Hidden", "AppHiddenBody": "APP window hidden by hotkey", - "Saved Successfully": "Saved successfully", - "Enable one-click CORS for external API. Click to toggle CORS": "Enable one-click CORS for external API. Click to toggle CORS", "External Cors Settings": "External Cors Settings", "External Cors Configuration": "External Cors Configuration", "Allow private network access": "Allow private network access", @@ -704,6 +642,106 @@ }, "fileInput": { "chooseFile": "Datei auswählen" + }, + "notifications": { + "saved": "Saved successfully" + }, + "proxiesEditor": { + "title": "Knoten bearbeiten", + "placeholders": { + "multiUri": "Für mehrere URI verwenden Sie Zeilenumbrüche (Base64-Codierung wird unterstützt)" + }, + "actions": { + "prepend": "Vorherigen Proxy-Knoten hinzufügen", + "append": "Nachfolgenden Proxy-Knoten hinzufügen" + } + }, + "groupsEditor": { + "title": "Proxy-Gruppen bearbeiten", + "errors": { + "nameRequired": "Der Proxy-Gruppenname darf nicht leer sein", + "nameExists": "Der Proxy-Gruppenname existiert bereits" + }, + "fields": { + "type": "Proxy-Gruppentyp", + "name": "Proxy-Gruppenname", + "icon": "Proxy-Gruppen-Symbol", + "proxies": "Proxy einführen", + "provider": "Proxy-Sammlung einführen", + "healthCheckUrl": "URL für Gesundheitstest", + "expectedStatus": "Erwarteter Statuscode", + "interval": "Prüfintervall", + "timeout": "Timeout", + "maxFailedTimes": "Maximale Anzahl fehlgeschlagener Versuche", + "interfaceName": "Ausgangsschnittstelle", + "routingMark": "Routierungsmarkierung", + "filter": "Knoten filtern", + "excludeFilter": "Knoten ausschließen", + "excludeType": "Typ der auszuschließenden Knoten", + "includeAll": "Alle Ausgangsproxy und Proxy-Sammlungen einführen", + "includeAllProxies": "Alle Ausgangsproxy einführen", + "includeAllProviders": "Alle Proxy-Sammlungen einführen" + }, + "toggles": { + "lazy": "Lazy-Status", + "disableUdp": "UDP deaktivieren", + "hidden": "Proxy-Gruppe ausblenden" + }, + "actions": { + "prepend": "Vorherige Proxy-Gruppe hinzufügen", + "append": "Nachfolgende Proxy-Gruppe hinzufügen" + } + }, + "menu": { + "home": "Startseite", + "select": "Verwenden", + "editInfo": "Informationen bearbeiten", + "editFile": "Datei bearbeiten", + "editRules": "Regeln bearbeiten", + "editProxies": "Knoten bearbeiten", + "editGroups": "Proxy-Gruppen bearbeiten", + "extendConfig": "Erweiterte Überdeckungskonfiguration", + "extendScript": "Erweitertes Skript", + "openFile": "Datei öffnen", + "update": "Aktualisieren", + "updateViaProxy": "Update via proxy", + "delete": "Löschen" + }, + "item": { + "tooltips": { + "showLast": "Click to show last update time", + "showNext": "Click to show next update" + }, + "status": { + "lastUpdateFailed": "Letzte Aktualisierung fehlgeschlagen", + "nextUp": "Nächste Aktualisierung", + "noSchedule": "Kein Zeitplan", + "unknown": "Unbekannt", + "autoUpdateDisabled": "Automatische Aktualisierung deaktiviert" + } + }, + "confirm": { + "delete": { + "title": "Löschung bestätigen", + "message": "Diese Operation kann nicht rückgängig gemacht werden" + } + }, + "logViewer": { + "title": "Skript-Konsole-Ausgabe" + }, + "more": { + "global": { + "merge": "Global Merge", + "script": "Global Script" + }, + "chips": { + "merge": "Merge", + "script": "Script" + } + }, + "editor": { + "format": "Dokument formatieren", + "readOnlyMessage": "Bearbeitung im schreibgeschützten Modus nicht möglich" } }, "home": { @@ -886,5 +924,11 @@ } } } + }, + "common": { + "editorModes": { + "visualization": "Visualisierung", + "advanced": "Erweitert" + } } } diff --git a/src/locales/en.json b/src/locales/en.json index 93b3ab6d..ce1650e3 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -7,7 +7,6 @@ "Confirm": "Confirm", "Maximize": "Maximize", "Minimize": "Minimize", - "Format document": "Format document", "Empty": "Empty", "New": "New", "Edit": "Edit", @@ -168,7 +167,6 @@ "Label-Unlock": "Test", "Label-Settings": "Settings", "Proxies": "Proxies", - "Connecting...": "Connecting...", "Update All": "Update All", "Update At": "Update At", "rule": "rule", @@ -186,15 +184,6 @@ "Update Time": "Update Time", "Used / Total": "Used / Total", "Expire Time": "Expire Time", - "Edit Proxies": "Edit Proxies", - "Use newlines for multiple uri": "Use newlines for multiple uri(Base64 encoding supported)", - "Edit Rules": "Edit Rules", - "Prepend Group": "Prepend Group", - "Append Group": "Append Group", - "Prepend Proxy": "Prepend Proxy", - "Append Proxy": "Append Proxy", - "Advanced": "Advanced", - "Visualization": "Visualization", "DOMAIN": "Matches the full domain name", "DOMAIN-SUFFIX": "Matches the domain suffix", "DOMAIN-KEYWORD": "Matches the domain keyword", @@ -232,48 +221,16 @@ "REJECT": "Intercepts requests", "REJECT-DROP": "Discards requests", "PASS": "Skips this rule when matched", - "Edit Groups": "Edit Proxy Groups", - "Group Type": "Group Type", "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", - "Group Name": "Group Name", - "Use Proxies": "Use Proxies", - "Use Provider": "Use Provider", - "Health Check Url": "Health Check Url", - "Expected Status": "Expected Status", - "Interval": "Interval", - "Lazy": "Lazy", "Timeout": "Timeout", - "Max Failed Times": "Max Failed Times", - "Interface Name": "Interface Name", - "Routing Mark": "Routing Mark", - "Include All": "Include All Proxies and Providers", - "Include All Providers": "Include All Providers", - "Include All Proxies": "Include All Proxies", - "Exclude Filter": "Exclude Filter", - "Exclude Type": "Exclude Type", - "Disable UDP": "Disable UDP", - "Hidden": "Hidden", - "Group Name Required": "Group Name Required", - "Group Name Already Exists": "Group Name Already Exists", - "Extend Config": "Extend Config", - "Extend Script": "Extend Script", "Type": "Type", "Name": "Name", "Refresh": "Refresh", - "Home": "Home", - "Select": "Select", - "Edit Info": "Edit Info", - "Edit File": "Edit File", - "Open File": "Open File", "Update": "Update", - "Update via proxy": "Update via proxy", - "Confirm deletion": "Confirm deletion", - "This operation is not reversible": "This operation is not reversible", - "Script Console": "Script Console", "Close All Connections": "Close All Connections", "Upload": "Upload", "Download": "Download", @@ -380,7 +337,6 @@ "theme.system": "System", "Copy Success": "Copy Success", "Memory Usage": "Core Usage", - "Proxy Group Icon": "Proxy Group Icon", "Miscellaneous": "Miscellaneous", "App Log Level": "App Log Level", "Auto Close Connections": "Auto Close Connections", @@ -415,8 +371,6 @@ "Exit": "Exit", "Verge Version": "Verge Version", "ReadOnly": "ReadOnly", - "ReadOnlyMessage": "Cannot edit in read-only editor", - "Filter": "Filter", "Filter conditions": "Filter conditions", "Match Case": "Match Case", "Match Whole Word": "Match Whole Word", @@ -431,14 +385,6 @@ "Service Uninstalled Successfully": "Service Uninstalled Successfully", "Proxy Daemon Duration Cannot be Less than 1 Second": "Proxy Daemon Duration Cannot be Less than 1 Second", "Invalid Bypass Format": "Invalid Bypass Format", - "Waiting for service to be ready...": "Waiting for service to be ready...", - "Service not ready, retrying attempt {count}/{total}...": "Service not ready, retrying attempt {{count}}/{{total}}...", - "Failed to check service status, retrying attempt {count}/{total}...": "Failed to check service status, retrying attempt {{count}}/{{total}}...", - "Service did not become ready after attempts. Proceeding with core restart.": "Service did not become ready after attempts. Proceeding with core restart.", - "Service was ready, but core restart might have issues or service became unavailable. Please check.": "Service was ready, but core restart might have issues or service became unavailable. Please check.", - "Service installation or core restart encountered issues. Service might not be available. Please check system logs.": "Service installation or core restart encountered issues. Service might not be available. Please check system logs.", - "Attempting to restart core as a fallback...": "Attempting to restart core as a fallback...", - "Core restarted. Service is now available.": "Core restarted. Service is now available.", "Core Version Updated": "Core Version Updated", "Clash Core Restarted": "Clash Core Restarted", "GeoData Updated": "GeoData Updated", @@ -580,16 +526,10 @@ "Administrator + Service Mode": "Admin + Service Mode", "Last Check Update": "Last Check Update", "Click to import subscription": "Click to import subscription", - "Last Update failed": "Last Update failed", - "Next Up": "Next Up", - "No schedule": "No schedule", "Unknown": "Unknown", - "Auto update disabled": "Auto update disabled", "Update failed, retrying with Clash proxy...": "Update failed, retrying with Clash proxy...", "Update with Clash proxy successfully": "Update with Clash proxy successfully", "Update failed even with Clash proxy": "Update failed even with Clash proxy", - "Profile creation failed, retrying with Clash proxy...": "Profile creation failed, retrying with Clash proxy...", - "Import failed, retrying with Clash proxy...": "Import failed, retrying with Clash proxy...", "Profile Imported with Clash proxy": "Profile Imported with Clash proxy", "Current Node": "Current Node", "No active proxy node": "No active proxy node", @@ -628,8 +568,6 @@ "AppQuitBody": "APP quit by hotkey", "AppHiddenTitle": "APP Hidden", "AppHiddenBody": "APP window hidden by hotkey", - "Saved Successfully": "Saved successfully", - "Enable one-click CORS for external API. Click to toggle CORS": "Enable one-click CORS for external API. Click to toggle CORS", "External Cors Settings": "External Cors Settings", "External Cors Configuration": "External Cors Configuration", "Allow private network access": "Allow private network access", @@ -704,6 +642,106 @@ }, "fileInput": { "chooseFile": "Choose File" + }, + "notifications": { + "saved": "Saved successfully" + }, + "proxiesEditor": { + "title": "Edit Proxies", + "placeholders": { + "multiUri": "Use newlines for multiple uri(Base64 encoding supported)" + }, + "actions": { + "prepend": "Prepend Proxy", + "append": "Append Proxy" + } + }, + "groupsEditor": { + "title": "Edit Proxy Groups", + "errors": { + "nameRequired": "Group Name Required", + "nameExists": "Group Name Already Exists" + }, + "fields": { + "type": "Group Type", + "name": "Group Name", + "icon": "Proxy Group Icon", + "proxies": "Use Proxies", + "provider": "Use Provider", + "healthCheckUrl": "Health Check Url", + "expectedStatus": "Expected Status", + "interval": "Interval", + "timeout": "Timeout", + "maxFailedTimes": "Max Failed Times", + "interfaceName": "Interface Name", + "routingMark": "Routing Mark", + "filter": "Filter", + "excludeFilter": "Exclude Filter", + "excludeType": "Exclude Type", + "includeAll": "Include All Proxies and Providers", + "includeAllProxies": "Include All Proxies", + "includeAllProviders": "Include All Providers" + }, + "toggles": { + "lazy": "Lazy", + "disableUdp": "Disable UDP", + "hidden": "Hidden" + }, + "actions": { + "prepend": "Prepend Group", + "append": "Append Group" + } + }, + "menu": { + "home": "Home", + "select": "Select", + "editInfo": "Edit Info", + "editFile": "Edit File", + "editRules": "Edit Rules", + "editProxies": "Edit Proxies", + "editGroups": "Edit Proxy Groups", + "extendConfig": "Extend Config", + "extendScript": "Extend Script", + "openFile": "Open File", + "update": "Update", + "updateViaProxy": "Update via proxy", + "delete": "Delete" + }, + "item": { + "tooltips": { + "showLast": "Click to show last update time", + "showNext": "Click to show next update" + }, + "status": { + "lastUpdateFailed": "Last Update failed", + "nextUp": "Next Up", + "noSchedule": "No schedule", + "unknown": "Unknown", + "autoUpdateDisabled": "Auto update disabled" + } + }, + "confirm": { + "delete": { + "title": "Confirm deletion", + "message": "This operation is not reversible" + } + }, + "logViewer": { + "title": "Script Console" + }, + "more": { + "global": { + "merge": "Global Merge", + "script": "Global Script" + }, + "chips": { + "merge": "Merge", + "script": "Script" + } + }, + "editor": { + "format": "Format document", + "readOnlyMessage": "Cannot edit in read-only editor" } }, "home": { @@ -886,5 +924,11 @@ } } } + }, + "common": { + "editorModes": { + "visualization": "Visualization", + "advanced": "Advanced" + } } } diff --git a/src/locales/es.json b/src/locales/es.json index 400969d9..1f6aee95 100644 --- a/src/locales/es.json +++ b/src/locales/es.json @@ -7,7 +7,6 @@ "Confirm": "Confirmar", "Maximize": "Maximizar", "Minimize": "Minimizar", - "Format document": "Formatear documento", "Empty": "Vacío", "New": "Nuevo", "Edit": "Editar", @@ -168,7 +167,6 @@ "Label-Unlock": "Descubrir", "Label-Settings": "Ajustes", "Proxies": "Proxies", - "Connecting...": "Connecting...", "Update All": "Actualizar todo", "Update At": "Actualizado el", "rule": "Regla", @@ -186,15 +184,6 @@ "Update Time": "Hora de actualización", "Used / Total": "Utilizado / Total", "Expire Time": "Tiempo de expiración", - "Edit Proxies": "Editar nodos", - "Use newlines for multiple uri": "Para múltiples URI, utilice saltos de línea (se admite la codificación Base64)", - "Edit Rules": "Editar reglas", - "Prepend Group": "Agregar grupo de proxy previo", - "Append Group": "Agregar grupo de proxy posterior", - "Prepend Proxy": "Agregar nodo de proxy previo", - "Append Proxy": "Agregar nodo de proxy posterior", - "Advanced": "Avanzado", - "Visualization": "Visualización", "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", @@ -232,48 +221,16 @@ "REJECT": "Rechazar solicitud", "REJECT-DROP": "Descartar solicitud", "PASS": "Saltar esta regla", - "Edit Groups": "Editar grupos de proxy", - "Group Type": "Tipo de grupo de proxy", "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", - "Group Name": "Nombre del grupo de proxy", - "Use Proxies": "Incluir proxies", - "Use Provider": "Incluir proveedor de proxies", - "Health Check Url": "URL de prueba de salud", - "Expected Status": "Código de estado esperado", - "Interval": "Intervalo de comprobación", - "Lazy": "Estado de inactividad", "Timeout": "Tiempo de espera", - "Max Failed Times": "Número máximo de fallos", - "Interface Name": "Nombre de la interfaz de salida", - "Routing Mark": "Marca de enrutamiento", - "Include All": "Incluir todos los proxies de salida y proveedores de proxies", - "Include All Providers": "Incluir todos los proveedores de proxies", - "Include All Proxies": "Incluir todos los proxies de salida", - "Exclude Filter": "Excluir nodos", - "Exclude Type": "Tipo de nodo a excluir", - "Disable UDP": "Deshabilitar UDP", - "Hidden": "Ocultar grupo de proxy", - "Group Name Required": "El nombre del grupo de proxy no puede estar vacío", - "Group Name Already Exists": "El nombre del grupo de proxy ya existe", - "Extend Config": "Configurar sobrescritura extendida", - "Extend Script": "Script extendido", "Type": "Tipo", "Name": "Nombre", "Refresh": "Actualizar", - "Home": "Inicio", - "Select": "Usar", - "Edit Info": "Editar información", - "Edit File": "Editar archivo", - "Open File": "Abrir archivo", "Update": "Actualizar", - "Update via proxy": "Update via proxy", - "Confirm deletion": "Confirmar eliminación", - "This operation is not reversible": "Esta operación no se puede deshacer", - "Script Console": "Salida de la consola del script", "Close All Connections": "Close All Connections", "Upload": "Subir", "Download": "Descargar", @@ -380,7 +337,6 @@ "theme.system": "System", "Copy Success": "Copia exitosa", "Memory Usage": "Uso de memoria del núcleo", - "Proxy Group Icon": "Icono del grupo de proxy", "Miscellaneous": "Ajustes varios", "App Log Level": "Nivel de registro de la aplicación", "Auto Close Connections": "Cerrar conexiones automáticamente", @@ -415,8 +371,6 @@ "Exit": "Salir", "Verge Version": "Versión de Verge", "ReadOnly": "Solo lectura", - "ReadOnlyMessage": "No se puede editar en modo de solo lectura", - "Filter": "Filtrar nodos", "Filter conditions": "Condiciones de filtrado", "Match Case": "Distinguir mayúsculas y minúsculas", "Match Whole Word": "Coincidencia exacta de palabras", @@ -431,14 +385,6 @@ "Service Uninstalled Successfully": "Servicio desinstalado con éxito", "Proxy Daemon Duration Cannot be Less than 1 Second": "El intervalo de tiempo del daemon de proxy no puede ser menor de 1 segundo", "Invalid Bypass Format": "Formato de omisión de proxy no válido", - "Waiting for service to be ready...": "Esperando a que el servicio esté listo...", - "Service not ready, retrying attempt {count}/{total}...": "Service not ready, retrying attempt {{count}}/{{total}}...", - "Failed to check service status, retrying attempt {count}/{total}...": "Failed to check service status, retrying attempt {{count}}/{{total}}...", - "Service did not become ready after attempts. Proceeding with core restart.": "Service did not become ready after attempts. Proceeding with core restart.", - "Service was ready, but core restart might have issues or service became unavailable. Please check.": "El servicio estaba listo, pero puede haber habido problemas al reiniciar el núcleo o el servicio se volvió inaccesible. Por favor, verifique.", - "Service installation or core restart encountered issues. Service might not be available. Please check system logs.": "Hubo problemas durante la instalación del servicio o al reiniciar el núcleo. El servicio podría no estar disponible. Por favor, revise los registros del sistema.", - "Attempting to restart core as a fallback...": "Attempting to restart core as a fallback...", - "Core restarted. Service is now available.": "El núcleo se ha reiniciado. El servicio está disponible.", "Core Version Updated": "Versión del núcleo actualizada", "Clash Core Restarted": "Núcleo de Clash reiniciado", "GeoData Updated": "GeoData actualizado", @@ -580,16 +526,10 @@ "Administrator + Service Mode": "Admin + Service Mode", "Last Check Update": "Última comprobación de actualizaciones", "Click to import subscription": "Haga clic para importar una suscripción", - "Last Update failed": "La última actualización falló", - "Next Up": "Próxima actualización", - "No schedule": "Sin programación", "Unknown": "Desconocido", - "Auto update disabled": "La actualización automática está deshabilitada", "Update failed, retrying with Clash proxy...": "Error al actualizar la suscripción. Intentando con el proxy de Clash...", "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 creation failed, retrying with Clash proxy...": "Error al crear la suscripción. Intentando con el proxy de Clash...", - "Import failed, retrying with Clash proxy...": "Error al importar la suscripción. Intentando con el proxy de Clash...", "Profile Imported with Clash proxy": "Suscripción importada con el proxy de Clash", "Current Node": "Nodo actual", "No active proxy node": "No hay nodos de proxy activos", @@ -628,8 +568,6 @@ "AppQuitBody": "APP quit by hotkey", "AppHiddenTitle": "APP Hidden", "AppHiddenBody": "APP window hidden by hotkey", - "Saved Successfully": "Saved successfully", - "Enable one-click CORS for external API. Click to toggle CORS": "Enable one-click CORS for external API. Click to toggle CORS", "External Cors Settings": "External Cors Settings", "External Cors Configuration": "External Cors Configuration", "Allow private network access": "Allow private network access", @@ -704,6 +642,106 @@ }, "fileInput": { "chooseFile": "Elegir archivo" + }, + "notifications": { + "saved": "Saved successfully" + }, + "proxiesEditor": { + "title": "Editar nodos", + "placeholders": { + "multiUri": "Para múltiples URI, utilice saltos de línea (se admite la codificación Base64)" + }, + "actions": { + "prepend": "Agregar nodo de proxy previo", + "append": "Agregar nodo de proxy posterior" + } + }, + "groupsEditor": { + "title": "Editar grupos de proxy", + "errors": { + "nameRequired": "El nombre del grupo de proxy no puede estar vacío", + "nameExists": "El nombre del grupo de proxy ya existe" + }, + "fields": { + "type": "Tipo de grupo de proxy", + "name": "Nombre del grupo de proxy", + "icon": "Icono del grupo de proxy", + "proxies": "Incluir proxies", + "provider": "Incluir proveedor de proxies", + "healthCheckUrl": "URL de prueba de salud", + "expectedStatus": "Código de estado esperado", + "interval": "Intervalo de comprobación", + "timeout": "Tiempo de espera", + "maxFailedTimes": "Número máximo de fallos", + "interfaceName": "Nombre de la interfaz de salida", + "routingMark": "Marca de enrutamiento", + "filter": "Filtrar nodos", + "excludeFilter": "Excluir nodos", + "excludeType": "Tipo de nodo a excluir", + "includeAll": "Incluir todos los proxies de salida y proveedores de proxies", + "includeAllProxies": "Incluir todos los proxies de salida", + "includeAllProviders": "Incluir todos los proveedores de proxies" + }, + "toggles": { + "lazy": "Estado de inactividad", + "disableUdp": "Deshabilitar UDP", + "hidden": "Ocultar grupo de proxy" + }, + "actions": { + "prepend": "Agregar grupo de proxy previo", + "append": "Agregar grupo de proxy posterior" + } + }, + "menu": { + "home": "Hogar", + "select": "Usar", + "editInfo": "Editar información", + "editFile": "Editar archivo", + "editRules": "Editar reglas", + "editProxies": "Editar nodos", + "editGroups": "Editar grupos de proxy", + "extendConfig": "Configurar sobrescritura extendida", + "extendScript": "Script extendido", + "openFile": "Abrir archivo", + "update": "Actualizar", + "updateViaProxy": "Update via proxy", + "delete": "Eliminar" + }, + "item": { + "tooltips": { + "showLast": "Click to show last update time", + "showNext": "Click to show next update" + }, + "status": { + "lastUpdateFailed": "La última actualización falló", + "nextUp": "Próxima actualización", + "noSchedule": "Sin programación", + "unknown": "Desconocido", + "autoUpdateDisabled": "La actualización automática está deshabilitada" + } + }, + "confirm": { + "delete": { + "title": "Confirmar eliminación", + "message": "Esta operación no se puede deshacer" + } + }, + "logViewer": { + "title": "Salida de la consola del script" + }, + "more": { + "global": { + "merge": "Global Merge", + "script": "Global Script" + }, + "chips": { + "merge": "Merge", + "script": "Script" + } + }, + "editor": { + "format": "Formatear documento", + "readOnlyMessage": "No se puede editar en modo de solo lectura" } }, "home": { @@ -886,5 +924,11 @@ } } } + }, + "common": { + "editorModes": { + "visualization": "Visualización", + "advanced": "Avanzado" + } } } diff --git a/src/locales/fa.json b/src/locales/fa.json index 2a5e9786..5fe8aa9c 100644 --- a/src/locales/fa.json +++ b/src/locales/fa.json @@ -7,7 +7,6 @@ "Confirm": "تأیید", "Maximize": "بزرگ‌نمایی", "Minimize": "کوچک‌نمایی", - "Format document": "فرمت‌بندی سند", "Empty": "خالی خالی", "New": "جدید", "Edit": "ویرایش", @@ -168,7 +167,6 @@ "Label-Unlock": "Test", "Label-Settings": "تنظیمات", "Proxies": "پراکسی‌ها", - "Connecting...": "Connecting...", "Update All": "به‌روزرسانی همه", "Update At": "به‌روزرسانی در", "rule": "قانون", @@ -186,15 +184,6 @@ "Update Time": "زمان به‌روزرسانی", "Used / Total": "استفاده‌شده / کل", "Expire Time": "زمان انقضا", - "Edit Proxies": "ویرایش پروکسی‌ها", - "Use newlines for multiple uri": "استفاده از خطوط جدید برای چندین آدرس (پشتیبانی از رمزگذاری Base64)", - "Edit Rules": "ویرایش قوانین", - "Prepend Group": "اضافه کردن گروه به ابتدا", - "Append Group": "اضافه کردن گروه به انتها", - "Prepend Proxy": "پیش‌افزودن پراکسی", - "Append Proxy": "پس‌افزودن پراکسی", - "Advanced": "پیشرفته", - "Visualization": "تجسم", "DOMAIN": "مطابقت با نام کامل دامنه", "DOMAIN-SUFFIX": "مطابقت با پسوند دامنه", "DOMAIN-KEYWORD": "مطابقت با کلمه کلیدی دامنه", @@ -232,48 +221,16 @@ "REJECT": "درخواست‌ها را متوقف می‌کند", "REJECT-DROP": "درخواست‌ها را نادیده می‌گیرد", "PASS": "این قانون را در صورت تطابق نادیده می‌گیرد", - "Edit Groups": "ویرایش گروه‌های پروکسی", - "Group Type": "نوع گروه", "select": "انتخاب پروکسی به صورت دستی", "url-test": "انتخاب پروکسی بر اساس تأخیر آزمایش URL", "fallback": "تعویض به پروکسی دیگر در صورت بروز خطا", "load-balance": "توزیع پراکسی بر اساس توازن بار", "relay": "عبور از زنجیره پروکسی تعریف شده", - "Group Name": "نام گروه", - "Use Proxies": "استفاده از پروکسی‌ها", - "Use Provider": "استفاده از ارائه‌دهنده", - "Health Check Url": "آدرس بررسی سلامت", - "Expected Status": "وضعیت مورد انتظار", - "Interval": "فاصله زمانی", - "Lazy": "تنبل", "Timeout": "زمان قطع", - "Max Failed Times": "حداکثر تعداد شکست‌ها", - "Interface Name": "نام رابط", - "Routing Mark": "علامت مسیریابی", - "Include All": "شامل همه پروکسی‌ها و ارائه‌دهنده‌ها", - "Include All Providers": "شامل همه ارائه‌دهنده‌ها", - "Include All Proxies": "شامل همه پروکسی‌ها", - "Exclude Filter": "فیلتر استثناء", - "Exclude Type": "نوع استثناء", - "Disable UDP": "غیرفعال کردن UDP", - "Hidden": "مخفی", - "Group Name Required": "نام گروه مورد نیاز است", - "Group Name Already Exists": "نام گروه قبلا وجود دارد", - "Extend Config": "توسعه پیکربندی", - "Extend Script": "ادغام اسکریپت", "Type": "نوع", "Name": "نام", "Refresh": "بازنشانی", - "Home": "خانه", - "Select": "انتخاب", - "Edit Info": "ویرایش اطلاعات", - "Edit File": "ویرایش فایل", - "Open File": "باز کردن فایل", "Update": "به‌روزرسانی", - "Update via proxy": "Update via proxy", - "Confirm deletion": "تأیید حذف", - "This operation is not reversible": "این عملیات قابل برگشت نیست", - "Script Console": "کنسول اسکریپت", "Close All Connections": "Close All Connections", "Upload": "Upload", "Download": "Download", @@ -380,7 +337,6 @@ "theme.system": "سیستم", "Copy Success": "کپی با موفقیت انجام شد", "Memory Usage": "استفاده از حافظه", - "Proxy Group Icon": "آیکون گروه پراکسی", "Miscellaneous": "متفرقه", "App Log Level": "سطح لاگ برنامه", "Auto Close Connections": "بستن خودکار اتصالات", @@ -415,8 +371,6 @@ "Exit": "خروج", "Verge Version": "نسخه Verge", "ReadOnly": "فقط خواندنی", - "ReadOnlyMessage": "نمی‌توان در ویرایشگر فقط خواندنی ویرایش کرد", - "Filter": "فیلتر", "Filter conditions": "شرایط فیلتر", "Match Case": "تطبیق حروف کوچک و بزرگ", "Match Whole Word": "تطبیق کل کلمه", @@ -431,14 +385,6 @@ "Service Uninstalled Successfully": "سرویس با موفقیت حذف نصب شد", "Proxy Daemon Duration Cannot be Less than 1 Second": "مدت زمان دیمن پراکسی نمی‌تواند کمتر از 1 ثانیه باشد", "Invalid Bypass Format": "فرمت عبور نامعتبر است", - "Waiting for service to be ready...": "Waiting for service to be ready...", - "Service not ready, retrying attempt {count}/{total}...": "Service not ready, retrying attempt {{count}}/{{total}}...", - "Failed to check service status, retrying attempt {count}/{total}...": "Failed to check service status, retrying attempt {{count}}/{{total}}...", - "Service did not become ready after attempts. Proceeding with core restart.": "Service did not become ready after attempts. Proceeding with core restart.", - "Service was ready, but core restart might have issues or service became unavailable. Please check.": "Service was ready, but core restart might have issues or service became unavailable. Please check.", - "Service installation or core restart encountered issues. Service might not be available. Please check system logs.": "Service installation or core restart encountered issues. Service might not be available. Please check system logs.", - "Attempting to restart core as a fallback...": "Attempting to restart core as a fallback...", - "Core restarted. Service is now available.": "Core restarted. Service is now available.", "Core Version Updated": "نسخه هسته به‌روزرسانی شد", "Clash Core Restarted": "هسته Clash مجدداً راه‌اندازی شد", "GeoData Updated": "GeoData به‌روزرسانی شد", @@ -580,16 +526,10 @@ "Administrator + Service Mode": "Admin + Service Mode", "Last Check Update": "Last Check Update", "Click to import subscription": "Click to import subscription", - "Last Update failed": "Last Update failed", - "Next Up": "Next Up", - "No schedule": "No schedule", "Unknown": "Unknown", - "Auto update disabled": "Auto update disabled", "Update failed, retrying with Clash proxy...": "Update failed, retrying with Clash proxy...", "Update with Clash proxy successfully": "Update with Clash proxy successfully", "Update failed even with Clash proxy": "Update failed even with Clash proxy", - "Profile creation failed, retrying with Clash proxy...": "Profile creation failed, retrying with Clash proxy...", - "Import failed, retrying with Clash proxy...": "Import failed, retrying with Clash proxy...", "Profile Imported with Clash proxy": "Profile Imported with Clash proxy", "Current Node": "Current Node", "No active proxy node": "No active proxy node", @@ -628,8 +568,6 @@ "AppQuitBody": "APP quit by hotkey", "AppHiddenTitle": "APP Hidden", "AppHiddenBody": "APP window hidden by hotkey", - "Saved Successfully": "Saved successfully", - "Enable one-click CORS for external API. Click to toggle CORS": "Enable one-click CORS for external API. Click to toggle CORS", "External Cors Settings": "External Cors Settings", "External Cors Configuration": "External Cors Configuration", "Allow private network access": "Allow private network access", @@ -704,6 +642,106 @@ }, "fileInput": { "chooseFile": "انتخاب فایل" + }, + "notifications": { + "saved": "Saved successfully" + }, + "proxiesEditor": { + "title": "ویرایش پروکسی‌ها", + "placeholders": { + "multiUri": "استفاده از خطوط جدید برای چندین آدرس (پشتیبانی از رمزگذاری Base64)" + }, + "actions": { + "prepend": "پیش‌افزودن پراکسی", + "append": "پس‌افزودن پراکسی" + } + }, + "groupsEditor": { + "title": "ویرایش گروه‌های پروکسی", + "errors": { + "nameRequired": "نام گروه مورد نیاز است", + "nameExists": "نام گروه قبلا وجود دارد" + }, + "fields": { + "type": "نوع گروه", + "name": "نام گروه", + "icon": "آیکون گروه پراکسی", + "proxies": "استفاده از پروکسی‌ها", + "provider": "استفاده از ارائه‌دهنده", + "healthCheckUrl": "آدرس بررسی سلامت", + "expectedStatus": "وضعیت مورد انتظار", + "interval": "فاصله زمانی", + "timeout": "زمان قطع", + "maxFailedTimes": "حداکثر تعداد شکست‌ها", + "interfaceName": "نام رابط", + "routingMark": "علامت مسیریابی", + "filter": "فیلتر", + "excludeFilter": "فیلتر استثناء", + "excludeType": "نوع استثناء", + "includeAll": "شامل همه پروکسی‌ها و ارائه‌دهنده‌ها", + "includeAllProxies": "شامل همه پروکسی‌ها", + "includeAllProviders": "شامل همه ارائه‌دهنده‌ها" + }, + "toggles": { + "lazy": "تنبل", + "disableUdp": "غیرفعال کردن UDP", + "hidden": "مخفی" + }, + "actions": { + "prepend": "اضافه کردن گروه به ابتدا", + "append": "اضافه کردن گروه به انتها" + } + }, + "menu": { + "home": "Home", + "select": "انتخاب", + "editInfo": "ویرایش اطلاعات", + "editFile": "ویرایش فایل", + "editRules": "ویرایش قوانین", + "editProxies": "ویرایش پروکسی‌ها", + "editGroups": "ویرایش گروه‌های پروکسی", + "extendConfig": "توسعه پیکربندی", + "extendScript": "ادغام اسکریپت", + "openFile": "باز کردن فایل", + "update": "به‌روزرسانی", + "updateViaProxy": "Update via proxy", + "delete": "حذف" + }, + "item": { + "tooltips": { + "showLast": "Click to show last update time", + "showNext": "Click to show next update" + }, + "status": { + "lastUpdateFailed": "Last Update failed", + "nextUp": "Next Up", + "noSchedule": "No schedule", + "unknown": "Unknown", + "autoUpdateDisabled": "Auto update disabled" + } + }, + "confirm": { + "delete": { + "title": "تأیید حذف", + "message": "این عملیات قابل برگشت نیست" + } + }, + "logViewer": { + "title": "کنسول اسکریپت" + }, + "more": { + "global": { + "merge": "Global Merge", + "script": "Global Script" + }, + "chips": { + "merge": "Merge", + "script": "Script" + } + }, + "editor": { + "format": "فرمت‌بندی سند", + "readOnlyMessage": "نمی‌توان در ویرایشگر فقط خواندنی ویرایش کرد" } }, "home": { @@ -886,5 +924,11 @@ } } } + }, + "common": { + "editorModes": { + "visualization": "تجسم", + "advanced": "پیشرفته" + } } } diff --git a/src/locales/id.json b/src/locales/id.json index d2d3188b..1aacf690 100644 --- a/src/locales/id.json +++ b/src/locales/id.json @@ -7,7 +7,6 @@ "Confirm": "Konfirmasi", "Maximize": "Maksimalkan", "Minimize": "Minimalkan", - "Format document": "Format dokumen", "Empty": "Kosong", "New": "Baru", "Edit": "Ubah", @@ -168,7 +167,6 @@ "Label-Unlock": "Test", "Label-Settings": "Pengaturan", "Proxies": "Proksi", - "Connecting...": "Connecting...", "Update All": "Perbarui Semua", "Update At": "Diperbarui Pada", "rule": "aturan", @@ -186,15 +184,6 @@ "Update Time": "Waktu Pembaruan", "Used / Total": "Digunakan / Total", "Expire Time": "Waktu Kedaluwarsa", - "Edit Proxies": "Ubah Proksi", - "Use newlines for multiple uri": "Gunakan baris baru untuk beberapa URI (mendukung pengkodean Base64)", - "Edit Rules": "Ubah Aturan", - "Prepend Group": "Tambahkan Grup di Awal", - "Append Group": "Tambahkan Grup di Akhir", - "Prepend Proxy": "Tambahkan Proksi di Awal", - "Append Proxy": "Tambahkan Proksi di Akhir", - "Advanced": "Lanjutan", - "Visualization": "Visualisasi", "DOMAIN": "Cocok dengan nama domain lengkap", "DOMAIN-SUFFIX": "Cocok dengan sufiks domain", "DOMAIN-KEYWORD": "Cocok dengan kata kunci domain", @@ -232,48 +221,16 @@ "REJECT": "Mencegat permintaan", "REJECT-DROP": "Membuang permintaan", "PASS": "Lewati aturan ini saat cocok", - "Edit Groups": "Ubah Grup Proksi", - "Group Type": "Jenis Grup", "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", - "Group Name": "Nama Grup", - "Use Proxies": "Gunakan Proksi", - "Use Provider": "Gunakan Penyedia", - "Health Check Url": "URL Pemeriksaan Kesehatan", - "Expected Status": "Status yang Diharapkan", - "Interval": "Interval", - "Lazy": "Malas", "Timeout": "Waktu Habis", - "Max Failed Times": "Jumlah Gagal Maksimal", - "Interface Name": "Nama Antarmuka", - "Routing Mark": "Tanda Routing", - "Include All": "Sertakan Semua Proksi dan Penyedia", - "Include All Providers": "Sertakan Semua Penyedia", - "Include All Proxies": "Sertakan Semua Proksi", - "Exclude Filter": "Kecualikan Filter", - "Exclude Type": "Kecualikan Jenis", - "Disable UDP": "Nonaktifkan UDP", - "Hidden": "Tersembunyi", - "Group Name Required": "Nama Grup Diperlukan", - "Group Name Already Exists": "Nama Grup Sudah Ada", - "Extend Config": "Perluas Konfigurasi", - "Extend Script": "Perluas Skrip", "Type": "Jenis", "Name": "Nama", "Refresh": "Segarkan", - "Home": "Beranda", - "Select": "Pilih", - "Edit Info": "Ubah Info", - "Edit File": "Ubah Berkas", - "Open File": "Buka Berkas", "Update": "Perbarui", - "Update via proxy": "Update via proxy", - "Confirm deletion": "Konfirmasi penghapusan", - "This operation is not reversible": "Operasi ini tidak dapat dibatalkan", - "Script Console": "Konsol Skrip", "Close All Connections": "Close All Connections", "Upload": "Upload", "Download": "Download", @@ -380,7 +337,6 @@ "theme.system": "Sistem", "Copy Success": "Salin Berhasil", "Memory Usage": "Penggunaan Memori", - "Proxy Group Icon": "Ikon Grup Proksi", "Miscellaneous": "Lain-lain", "App Log Level": "Tingkat Log Aplikasi", "Auto Close Connections": "Tutup Koneksi Otomatis", @@ -415,8 +371,6 @@ "Exit": "Keluar", "Verge Version": "Versi Verge", "ReadOnly": "Hanya Baca", - "ReadOnlyMessage": "Tidak dapat mengedit di editor hanya baca", - "Filter": "Filter", "Filter conditions": "Kondisi Filter", "Match Case": "Cocokkan Kasus", "Match Whole Word": "Cocokkan Kata Utuh", @@ -431,14 +385,6 @@ "Service Uninstalled Successfully": "Layanan Berhasil Dicopot", "Proxy Daemon Duration Cannot be Less than 1 Second": "Durasi Daemon Proksi Tidak Boleh Kurang dari 1 Detik", "Invalid Bypass Format": "Format Bypass Tidak Valid", - "Waiting for service to be ready...": "Waiting for service to be ready...", - "Service not ready, retrying attempt {count}/{total}...": "Service not ready, retrying attempt {{count}}/{{total}}...", - "Failed to check service status, retrying attempt {count}/{total}...": "Failed to check service status, retrying attempt {{count}}/{{total}}...", - "Service did not become ready after attempts. Proceeding with core restart.": "Service did not become ready after attempts. Proceeding with core restart.", - "Service was ready, but core restart might have issues or service became unavailable. Please check.": "Service was ready, but core restart might have issues or service became unavailable. Please check.", - "Service installation or core restart encountered issues. Service might not be available. Please check system logs.": "Service installation or core restart encountered issues. Service might not be available. Please check system logs.", - "Attempting to restart core as a fallback...": "Attempting to restart core as a fallback...", - "Core restarted. Service is now available.": "Core restarted. Service is now available.", "Core Version Updated": "Versi Core Diperbarui", "Clash Core Restarted": "Core Clash Dimulai Ulang", "GeoData Updated": "GeoData Diperbarui", @@ -580,16 +526,10 @@ "Administrator + Service Mode": "Admin + Service Mode", "Last Check Update": "Last Check Update", "Click to import subscription": "Click to import subscription", - "Last Update failed": "Last Update failed", - "Next Up": "Next Up", - "No schedule": "No schedule", "Unknown": "Unknown", - "Auto update disabled": "Auto update disabled", "Update failed, retrying with Clash proxy...": "Update failed, retrying with Clash proxy...", "Update with Clash proxy successfully": "Update with Clash proxy successfully", "Update failed even with Clash proxy": "Update failed even with Clash proxy", - "Profile creation failed, retrying with Clash proxy...": "Profile creation failed, retrying with Clash proxy...", - "Import failed, retrying with Clash proxy...": "Import failed, retrying with Clash proxy...", "Profile Imported with Clash proxy": "Profile Imported with Clash proxy", "Current Node": "Current Node", "No active proxy node": "No active proxy node", @@ -628,8 +568,6 @@ "AppQuitBody": "APP quit by hotkey", "AppHiddenTitle": "APP Hidden", "AppHiddenBody": "APP window hidden by hotkey", - "Saved Successfully": "Saved successfully", - "Enable one-click CORS for external API. Click to toggle CORS": "Enable one-click CORS for external API. Click to toggle CORS", "External Cors Settings": "External Cors Settings", "External Cors Configuration": "External Cors Configuration", "Allow private network access": "Allow private network access", @@ -704,6 +642,106 @@ }, "fileInput": { "chooseFile": "Pilih Berkas" + }, + "notifications": { + "saved": "Saved successfully" + }, + "proxiesEditor": { + "title": "Ubah Proksi", + "placeholders": { + "multiUri": "Gunakan baris baru untuk beberapa URI (mendukung pengkodean Base64)" + }, + "actions": { + "prepend": "Tambahkan Proksi di Awal", + "append": "Tambahkan Proksi di Akhir" + } + }, + "groupsEditor": { + "title": "Ubah Grup Proksi", + "errors": { + "nameRequired": "Nama Grup Diperlukan", + "nameExists": "Nama Grup Sudah Ada" + }, + "fields": { + "type": "Jenis Grup", + "name": "Nama Grup", + "icon": "Ikon Grup Proksi", + "proxies": "Gunakan Proksi", + "provider": "Gunakan Penyedia", + "healthCheckUrl": "URL Pemeriksaan Kesehatan", + "expectedStatus": "Status yang Diharapkan", + "interval": "Interval", + "timeout": "Waktu Habis", + "maxFailedTimes": "Jumlah Gagal Maksimal", + "interfaceName": "Nama Antarmuka", + "routingMark": "Tanda Routing", + "filter": "Filter", + "excludeFilter": "Kecualikan Filter", + "excludeType": "Kecualikan Jenis", + "includeAll": "Sertakan Semua Proksi dan Penyedia", + "includeAllProxies": "Sertakan Semua Proksi", + "includeAllProviders": "Sertakan Semua Penyedia" + }, + "toggles": { + "lazy": "Malas", + "disableUdp": "Nonaktifkan UDP", + "hidden": "Tersembunyi" + }, + "actions": { + "prepend": "Tambahkan Grup di Awal", + "append": "Tambahkan Grup di Akhir" + } + }, + "menu": { + "home": "Home", + "select": "Pilih", + "editInfo": "Ubah Info", + "editFile": "Ubah Berkas", + "editRules": "Ubah Aturan", + "editProxies": "Ubah Proksi", + "editGroups": "Ubah Grup Proksi", + "extendConfig": "Perluas Konfigurasi", + "extendScript": "Perluas Skrip", + "openFile": "Buka Berkas", + "update": "Perbarui", + "updateViaProxy": "Update via proxy", + "delete": "Hapus" + }, + "item": { + "tooltips": { + "showLast": "Click to show last update time", + "showNext": "Click to show next update" + }, + "status": { + "lastUpdateFailed": "Last Update failed", + "nextUp": "Next Up", + "noSchedule": "No schedule", + "unknown": "Unknown", + "autoUpdateDisabled": "Auto update disabled" + } + }, + "confirm": { + "delete": { + "title": "Konfirmasi penghapusan", + "message": "Operasi ini tidak dapat dibatalkan" + } + }, + "logViewer": { + "title": "Konsol Skrip" + }, + "more": { + "global": { + "merge": "Global Merge", + "script": "Global Script" + }, + "chips": { + "merge": "Merge", + "script": "Script" + } + }, + "editor": { + "format": "Format dokumen", + "readOnlyMessage": "Tidak dapat mengedit di editor hanya baca" } }, "home": { @@ -886,5 +924,11 @@ } } } + }, + "common": { + "editorModes": { + "visualization": "Visualisasi", + "advanced": "Lanjutan" + } } } diff --git a/src/locales/jp.json b/src/locales/jp.json index b132c93f..c9fb489f 100644 --- a/src/locales/jp.json +++ b/src/locales/jp.json @@ -7,7 +7,6 @@ "Confirm": "確認", "Maximize": "最大化", "Minimize": "最小化", - "Format document": "文書を整形する", "Empty": "空っぽ", "New": "新規作成", "Edit": "編集", @@ -168,7 +167,6 @@ "Label-Unlock": "テスト", "Label-Settings": "設定", "Proxies": "Proxies", - "Connecting...": "Connecting...", "Update All": "すべて更新", "Update At": "更新日時", "rule": "ルール", @@ -186,15 +184,6 @@ "Update Time": "更新時間", "Used / Total": "使用済み / 合計", "Expire Time": "有効期限", - "Edit Proxies": "ノードを編集", - "Use newlines for multiple uri": "複数のURIは改行で区切ってください(Base64エンコードに対応)", - "Edit Rules": "ルールを編集", - "Prepend Group": "前置プロキシグループを追加", - "Append Group": "後置プロキシグループを追加", - "Prepend Proxy": "前置プロキシノードを追加", - "Append Proxy": "後置プロキシノードを追加", - "Advanced": "詳細設定", - "Visualization": "可視化", "DOMAIN": "完全なドメイン名を一致させる", "DOMAIN-SUFFIX": "ドメインサフィックスを一致させる", "DOMAIN-KEYWORD": "ドメインキーワードを一致させる", @@ -232,48 +221,16 @@ "REJECT": "リクエストを拒否", "REJECT-DROP": "リクエストを破棄", "PASS": "このルールをスキップ", - "Edit Groups": "プロキシグループを編集", - "Group Type": "プロキシグループタイプ", "select": "手動でプロキシを選択", "url-test": "URLテストによる遅延でプロキシを選択", "fallback": "利用不可の場合は別のプロキシに切り替える", "load-balance": "負荷分散によりプロキシを割り当てる", "relay": "定義されたプロキシチェーンに沿って転送する", - "Group Name": "プロキシグループ名", - "Use Proxies": "プロキシを導入", - "Use Provider": "プロキシプロバイダーを導入", - "Health Check Url": "ヘルスチェックURL", - "Expected Status": "期待するステータスコード", - "Interval": "チェック間隔", - "Lazy": "遅延モード", "Timeout": "タイムアウト時間", - "Max Failed Times": "最大失敗回数", - "Interface Name": "出力インターフェース", - "Routing Mark": "ルーティングマーク", - "Include All": "すべての出力プロキシ、プロキシプロバイダーを導入", - "Include All Providers": "すべてのプロキシプロバイダーを導入", - "Include All Proxies": "すべての出力プロキシを導入", - "Exclude Filter": "除外ノード", - "Exclude Type": "除外ノードタイプ", - "Disable UDP": "UDPを無効にする", - "Hidden": "プロキシグループを隠す", - "Group Name Required": "プロキシグループ名は必須です", - "Group Name Already Exists": "プロキシグループ名はすでに存在します", - "Extend Config": "拡張上書き設定", - "Extend Script": "拡張スクリプト", "Type": "タイプ", "Name": "名前", "Refresh": "更新", - "Home": "ホーム", - "Select": "使用する", - "Edit Info": "情報を編集", - "Edit File": "ファイルを編集", - "Open File": "ファイルを開く", "Update": "更新", - "Update via proxy": "Update via proxy", - "Confirm deletion": "削除を確認", - "This operation is not reversible": "この操作は元に戻せません", - "Script Console": "スクリプトコンソール出力", "Close All Connections": "Close All Connections", "Upload": "アップロード", "Download": "ダウンロード", @@ -380,7 +337,6 @@ "theme.system": "システム", "Copy Success": "コピー成功", "Memory Usage": "コアメモリ使用量", - "Proxy Group Icon": "プロキシグループアイコン", "Miscellaneous": "その他の設定", "App Log Level": "アプリケーションログレベル", "Auto Close Connections": "接続を自動的に閉じる", @@ -415,8 +371,6 @@ "Exit": "終了", "Verge Version": "Vergeバージョン", "ReadOnly": "読み取り専用", - "ReadOnlyMessage": "読み取り専用モードでは編集できません。", - "Filter": "ノードをフィルタリング", "Filter conditions": "フィルタリング条件", "Match Case": "大文字小文字を区別する", "Match Whole Word": "完全一致", @@ -431,14 +385,6 @@ "Service Uninstalled Successfully": "サービスのアンインストールに成功しました。", "Proxy Daemon Duration Cannot be Less than 1 Second": "プロキシデーモンの間隔は1秒以上に設定する必要があります。", "Invalid Bypass Format": "無効なバイパス形式", - "Waiting for service to be ready...": "サービスの準備を待っています...", - "Service not ready, retrying attempt {count}/{total}...": "Service not ready, retrying attempt {{count}}/{{total}}...", - "Failed to check service status, retrying attempt {count}/{total}...": "Failed to check service status, retrying attempt {{count}}/{{total}}...", - "Service did not become ready after attempts. Proceeding with core restart.": "Service did not become ready after attempts. Proceeding with core restart.", - "Service was ready, but core restart might have issues or service became unavailable. Please check.": "サービスは準備が整っていましたが、コアの再起動に問題が発生したか、サービスが利用できなくなった可能性があります。ご確認ください。", - "Service installation or core restart encountered issues. Service might not be available. Please check system logs.": "サービスのインストールまたはコアの再起動中に問題が発生しました。サービスが利用できない可能性があります。システムログを確認してください。", - "Attempting to restart core as a fallback...": "Attempting to restart core as a fallback...", - "Core restarted. Service is now available.": "コアが再起動され、サービスが利用可能になりました。", "Core Version Updated": "コアバージョンが更新されました。", "Clash Core Restarted": "Clashコアが再起動されました。", "GeoData Updated": "GeoDataが更新されました。", @@ -580,16 +526,10 @@ "Administrator + Service Mode": "Admin + Service Mode", "Last Check Update": "最後の更新チェック", "Click to import subscription": "クリックしてサブスクリプションをインポート", - "Last Update failed": "前回の更新に失敗しました。", - "Next Up": "次回の更新", - "No schedule": "予定がありません。", "Unknown": "不明", - "Auto update disabled": "自動更新が無効になっています。", "Update failed, retrying with Clash proxy...": "サブスクリプションの更新に失敗しました。Clashプロキシを使用して再試行します...", "Update with Clash proxy successfully": "Clashプロキシを使用して更新に成功しました。", "Update failed even with Clash proxy": "Clashプロキシを使用しても更新に失敗しました。", - "Profile creation failed, retrying with Clash proxy...": "プロファイルの作成に失敗しました。Clashプロキシを使用して再試行します...", - "Import failed, retrying with Clash proxy...": "インポートに失敗しました。Clashプロキシを使用して再試行します...", "Profile Imported with Clash proxy": "Clashプロキシを使用してプロファイルのインポートに成功しました。", "Current Node": "現在のノード", "No active proxy node": "アクティブなプロキシノードがありません。", @@ -628,8 +568,6 @@ "AppQuitBody": "APP quit by hotkey", "AppHiddenTitle": "APP Hidden", "AppHiddenBody": "APP window hidden by hotkey", - "Saved Successfully": "Saved successfully", - "Enable one-click CORS for external API. Click to toggle CORS": "Enable one-click CORS for external API. Click to toggle CORS", "External Cors Settings": "External Cors Settings", "External Cors Configuration": "External Cors Configuration", "Allow private network access": "Allow private network access", @@ -704,6 +642,106 @@ }, "fileInput": { "chooseFile": "ファイルを選択" + }, + "notifications": { + "saved": "Saved successfully" + }, + "proxiesEditor": { + "title": "ノードを編集", + "placeholders": { + "multiUri": "複数のURIは改行で区切ってください(Base64エンコードに対応)" + }, + "actions": { + "prepend": "前置プロキシノードを追加", + "append": "後置プロキシノードを追加" + } + }, + "groupsEditor": { + "title": "プロキシグループを編集", + "errors": { + "nameRequired": "プロキシグループ名は必須です", + "nameExists": "プロキシグループ名はすでに存在します" + }, + "fields": { + "type": "プロキシグループタイプ", + "name": "プロキシグループ名", + "icon": "プロキシグループアイコン", + "proxies": "プロキシを導入", + "provider": "プロキシプロバイダーを導入", + "healthCheckUrl": "ヘルスチェックURL", + "expectedStatus": "期待するステータスコード", + "interval": "チェック間隔", + "timeout": "タイムアウト時間", + "maxFailedTimes": "最大失敗回数", + "interfaceName": "出力インターフェース", + "routingMark": "ルーティングマーク", + "filter": "ノードをフィルタリング", + "excludeFilter": "除外ノード", + "excludeType": "除外ノードタイプ", + "includeAll": "すべての出力プロキシ、プロキシプロバイダーを導入", + "includeAllProxies": "すべての出力プロキシを導入", + "includeAllProviders": "すべてのプロキシプロバイダーを導入" + }, + "toggles": { + "lazy": "遅延モード", + "disableUdp": "UDPを無効にする", + "hidden": "プロキシグループを隠す" + }, + "actions": { + "prepend": "前置プロキシグループを追加", + "append": "後置プロキシグループを追加" + } + }, + "menu": { + "home": "ホーム", + "select": "使用する", + "editInfo": "情報を編集", + "editFile": "ファイルを編集", + "editRules": "ルールを編集", + "editProxies": "ノードを編集", + "editGroups": "プロキシグループを編集", + "extendConfig": "拡張上書き設定", + "extendScript": "拡張スクリプト", + "openFile": "ファイルを開く", + "update": "更新", + "updateViaProxy": "Update via proxy", + "delete": "削除" + }, + "item": { + "tooltips": { + "showLast": "Click to show last update time", + "showNext": "Click to show next update" + }, + "status": { + "lastUpdateFailed": "前回の更新に失敗しました。", + "nextUp": "次回の更新", + "noSchedule": "予定がありません。", + "unknown": "不明", + "autoUpdateDisabled": "自動更新が無効になっています。" + } + }, + "confirm": { + "delete": { + "title": "削除を確認", + "message": "この操作は元に戻せません" + } + }, + "logViewer": { + "title": "スクリプトコンソール出力" + }, + "more": { + "global": { + "merge": "Global Merge", + "script": "Global Script" + }, + "chips": { + "merge": "Merge", + "script": "Script" + } + }, + "editor": { + "format": "文書を整形する", + "readOnlyMessage": "読み取り専用モードでは編集できません。" } }, "home": { @@ -886,5 +924,11 @@ } } } + }, + "common": { + "editorModes": { + "visualization": "可視化", + "advanced": "詳細設定" + } } } diff --git a/src/locales/ko.json b/src/locales/ko.json index 19c3929d..4668f35a 100644 --- a/src/locales/ko.json +++ b/src/locales/ko.json @@ -7,7 +7,6 @@ "Confirm": "확인", "Maximize": "최대화", "Minimize": "최소화", - "Format document": "문서 포맷", "Empty": "비어있음", "New": "새로 만들기", "Edit": "편집", @@ -168,7 +167,6 @@ "Label-Unlock": "테스트", "Label-Settings": "설정", "Proxies": "프록시", - "Connecting...": "Connecting...", "Update All": "모두 업데이트", "Update At": "업데이트 시간", "rule": "규칙", @@ -186,15 +184,6 @@ "Update Time": "업데이트 시간", "Used / Total": "사용됨 / 전체", "Expire Time": "만료 시간", - "Edit Proxies": "프록시 편집", - "Use newlines for multiple uri": "여러 URI의 경우 줄바꿈 사용(Base64 인코딩 지원)", - "Edit Rules": "규칙 편집", - "Prepend Group": "그룹 앞에 추가", - "Append Group": "그룹 뒤에 추가", - "Prepend Proxy": "프록시 앞에 추가", - "Append Proxy": "프록시 뒤에 추가", - "Advanced": "고급", - "Visualization": "시각화", "DOMAIN": "전체 도메인 이름과 일치", "DOMAIN-SUFFIX": "도메인 접미사와 일치", "DOMAIN-KEYWORD": "도메인 키워드와 일치", @@ -232,48 +221,16 @@ "REJECT": "요청 차단", "REJECT-DROP": "요청 폐기", "PASS": "일치할 경우 이 규칙 건너뛰기", - "Edit Groups": "프록시 그룹 편집", - "Group Type": "그룹 유형", "select": "수동으로 프록시 선택", "url-test": "URL 테스트 지연을 기준으로 프록시 선택", "fallback": "오류 발생 시 다른 프록시로 전환", "load-balance": "부하 분산에 따라 프록시 분배", "relay": "정의된 프록시 체인을 통과", - "Group Name": "그룹 이름", - "Use Proxies": "프록시 사용", - "Use Provider": "제공자 사용", - "Health Check Url": "상태 확인 URL", - "Expected Status": "예상 상태", - "Interval": "간격", - "Lazy": "지연 로딩", "Timeout": "타임아웃", - "Max Failed Times": "최대 실패 횟수", - "Interface Name": "인터페이스 이름", - "Routing Mark": "라우팅 마크", - "Include All": "모든 프록시 및 제공자 포함", - "Include All Providers": "모든 제공자 포함", - "Include All Proxies": "모든 프록시 포함", - "Exclude Filter": "제외 필터", - "Exclude Type": "제외 유형", - "Disable UDP": "UDP 비활성화", - "Hidden": "숨김", - "Group Name Required": "그룹 이름 필수", - "Group Name Already Exists": "그룹 이름이 이미 존재함", - "Extend Config": "설정 확장", - "Extend Script": "스크립트 확장", "Type": "유형", "Name": "이름", "Refresh": "새로고침", - "Home": "홈", - "Select": "선택", - "Edit Info": "정보 편집", - "Edit File": "파일 편집", - "Open File": "파일 열기", "Update": "업데이트", - "Update via proxy": "Update via proxy", - "Confirm deletion": "삭제 확인", - "This operation is not reversible": "이 작업은 되돌릴 수 없습니다", - "Script Console": "스크립트 콘솔", "Close All Connections": "Close All Connections", "Upload": "업로드", "Download": "다운로드", @@ -380,7 +337,6 @@ "theme.system": "System", "Copy Success": "복사 성공", "Memory Usage": "메모리 사용량", - "Proxy Group Icon": "Proxy Group Icon", "Miscellaneous": "Miscellaneous", "App Log Level": "App Log Level", "Auto Close Connections": "Auto Close Connections", @@ -415,8 +371,6 @@ "Exit": "Exit", "Verge Version": "Verge Version", "ReadOnly": "ReadOnly", - "ReadOnlyMessage": "Cannot edit in read-only editor", - "Filter": "필터", "Filter conditions": "Filter conditions", "Match Case": "Match Case", "Match Whole Word": "Match Whole Word", @@ -431,14 +385,6 @@ "Service Uninstalled Successfully": "Service Uninstalled Successfully", "Proxy Daemon Duration Cannot be Less than 1 Second": "Proxy Daemon Duration Cannot be Less than 1 Second", "Invalid Bypass Format": "Invalid Bypass Format", - "Waiting for service to be ready...": "Waiting for service to be ready...", - "Service not ready, retrying attempt {count}/{total}...": "Service not ready, retrying attempt {{count}}/{{total}}...", - "Failed to check service status, retrying attempt {count}/{total}...": "Failed to check service status, retrying attempt {{count}}/{{total}}...", - "Service did not become ready after attempts. Proceeding with core restart.": "Service did not become ready after attempts. Proceeding with core restart.", - "Service was ready, but core restart might have issues or service became unavailable. Please check.": "Service was ready, but core restart might have issues or service became unavailable. Please check.", - "Service installation or core restart encountered issues. Service might not be available. Please check system logs.": "Service installation or core restart encountered issues. Service might not be available. Please check system logs.", - "Attempting to restart core as a fallback...": "Attempting to restart core as a fallback...", - "Core restarted. Service is now available.": "Core restarted. Service is now available.", "Core Version Updated": "Core Version Updated", "Clash Core Restarted": "Clash Core Restarted", "GeoData Updated": "GeoData Updated", @@ -580,16 +526,10 @@ "Administrator + Service Mode": "Admin + Service Mode", "Last Check Update": "Last Check Update", "Click to import subscription": "Click to import subscription", - "Last Update failed": "Last Update failed", - "Next Up": "Next Up", - "No schedule": "No schedule", "Unknown": "Unknown", - "Auto update disabled": "Auto update disabled", "Update failed, retrying with Clash proxy...": "업데이트 실패, Clash 프록시로 재시도 중...", "Update with Clash proxy successfully": "Clash 프록시로 업데이트 성공", "Update failed even with Clash proxy": "Clash 프록시로도 업데이트 실패", - "Profile creation failed, retrying with Clash proxy...": "Profile creation failed, retrying with Clash proxy...", - "Import failed, retrying with Clash proxy...": "Import failed, retrying with Clash proxy...", "Profile Imported with Clash proxy": "Profile Imported with Clash proxy", "Current Node": "Current Node", "No active proxy node": "No active proxy node", @@ -628,8 +568,6 @@ "AppQuitBody": "APP quit by hotkey", "AppHiddenTitle": "APP Hidden", "AppHiddenBody": "APP window hidden by hotkey", - "Saved Successfully": "Saved successfully", - "Enable one-click CORS for external API. Click to toggle CORS": "Enable one-click CORS for external API. Click to toggle CORS", "External Cors Settings": "External Cors Settings", "External Cors Configuration": "External Cors Configuration", "Allow private network access": "Allow private network access", @@ -704,6 +642,106 @@ }, "fileInput": { "chooseFile": "파일 선택" + }, + "notifications": { + "saved": "Saved successfully" + }, + "proxiesEditor": { + "title": "프록시 편집", + "placeholders": { + "multiUri": "여러 URI의 경우 줄바꿈 사용(Base64 인코딩 지원)" + }, + "actions": { + "prepend": "프록시 앞에 추가", + "append": "프록시 뒤에 추가" + } + }, + "groupsEditor": { + "title": "프록시 그룹 편집", + "errors": { + "nameRequired": "그룹 이름 필수", + "nameExists": "그룹 이름이 이미 존재함" + }, + "fields": { + "type": "그룹 유형", + "name": "그룹 이름", + "icon": "Proxy Group Icon", + "proxies": "프록시 사용", + "provider": "제공자 사용", + "healthCheckUrl": "상태 확인 URL", + "expectedStatus": "예상 상태", + "interval": "간격", + "timeout": "타임아웃", + "maxFailedTimes": "최대 실패 횟수", + "interfaceName": "인터페이스 이름", + "routingMark": "라우팅 마크", + "filter": "필터", + "excludeFilter": "제외 필터", + "excludeType": "제외 유형", + "includeAll": "모든 프록시 및 제공자 포함", + "includeAllProxies": "모든 프록시 포함", + "includeAllProviders": "모든 제공자 포함" + }, + "toggles": { + "lazy": "지연 로딩", + "disableUdp": "UDP 비활성화", + "hidden": "숨김" + }, + "actions": { + "prepend": "그룹 앞에 추가", + "append": "그룹 뒤에 추가" + } + }, + "menu": { + "home": "홈", + "select": "선택", + "editInfo": "정보 편집", + "editFile": "파일 편집", + "editRules": "규칙 편집", + "editProxies": "프록시 편집", + "editGroups": "프록시 그룹 편집", + "extendConfig": "설정 확장", + "extendScript": "스크립트 확장", + "openFile": "파일 열기", + "update": "업데이트", + "updateViaProxy": "Update via proxy", + "delete": "삭제" + }, + "item": { + "tooltips": { + "showLast": "Click to show last update time", + "showNext": "Click to show next update" + }, + "status": { + "lastUpdateFailed": "Last Update failed", + "nextUp": "Next Up", + "noSchedule": "No schedule", + "unknown": "Unknown", + "autoUpdateDisabled": "Auto update disabled" + } + }, + "confirm": { + "delete": { + "title": "삭제 확인", + "message": "이 작업은 되돌릴 수 없습니다" + } + }, + "logViewer": { + "title": "스크립트 콘솔" + }, + "more": { + "global": { + "merge": "Global Merge", + "script": "Global Script" + }, + "chips": { + "merge": "Merge", + "script": "Script" + } + }, + "editor": { + "format": "문서 포맷", + "readOnlyMessage": "Cannot edit in read-only editor" } }, "home": { @@ -886,5 +924,11 @@ } } } + }, + "common": { + "editorModes": { + "visualization": "시각화", + "advanced": "고급" + } } } diff --git a/src/locales/ru.json b/src/locales/ru.json index a199e70b..56670b6a 100644 --- a/src/locales/ru.json +++ b/src/locales/ru.json @@ -7,7 +7,6 @@ "Confirm": "Подтвердить", "Maximize": "Развернуть", "Minimize": "Свернуть", - "Format document": "Форматировать документ", "Empty": "Пусто", "New": "Новый", "Edit": "Редактировать", @@ -168,7 +167,6 @@ "Label-Unlock": "Тест", "Label-Settings": "Настройки", "Proxies": "Прокси", - "Connecting...": "Connecting...", "Update All": "Обновить все", "Update At": "Обновлено в", "rule": "правила", @@ -186,15 +184,6 @@ "Update Time": "Время обновления", "Used / Total": "Использовано / Всего", "Expire Time": "Время окончания", - "Edit Proxies": "Редактировать прокси", - "Use newlines for multiple uri": "Используйте символы новой строки для нескольких URI (поддерживается кодировка Base64)", - "Edit Rules": "Редактировать правила", - "Prepend Group": "Добавить группу в начало", - "Append Group": "Добавить группу в конец", - "Prepend Proxy": "Добавить прокси в начало", - "Append Proxy": "Добавить прокси в конец", - "Advanced": "Дополнительно", - "Visualization": "Визуализация", "DOMAIN": "Соответствует полному доменному имени", "DOMAIN-SUFFIX": "Соответствует суффиксу домена", "DOMAIN-KEYWORD": "Соответствует ключевому слову домена", @@ -232,48 +221,16 @@ "REJECT": "Перехватывает запросы", "REJECT-DROP": "Отклоняет запросы", "PASS": "Пропускает это правило при совпадении", - "Edit Groups": "Редактировать группы прокси", - "Group Type": "Тип группы", "select": "Выбор прокси вручную", "url-test": "Выбор прокси на основе задержки теста URL", "fallback": "Переключение на другой прокси при ошибке", "load-balance": "Распределение прокси на основе балансировки нагрузки", "relay": "Передача через определенную цепочку прокси", - "Group Name": "Имя группы", - "Use Proxies": "Использовать прокси", - "Use Provider": "Использовать провайдера", - "Health Check Url": "URL проверки здоровья", - "Expected Status": "Ожидаемый статус", - "Interval": "Интервал", - "Lazy": "Ленивый", "Timeout": "Таймаут", - "Max Failed Times": "Максимальное количество неудач", - "Interface Name": "Имя интерфейса", - "Routing Mark": "Марка маршрутизации", - "Include All": "Включить все прокси и провайдеры", - "Include All Providers": "Включить всех провайдеров", - "Include All Proxies": "Включить все прокси", - "Exclude Filter": "Исключить фильтр", - "Exclude Type": "Тип исключения", - "Disable UDP": "Отключить UDP", - "Hidden": "Скрытый", - "Group Name Required": "Требуется имя группы", - "Group Name Already Exists": "Имя группы уже существует", - "Extend Config": "Изменить Merge", - "Extend Script": "Изменить Script", "Type": "Тип", "Name": "Название", "Refresh": "Обновить", - "Home": "Главная", - "Select": "Выбрать", - "Edit Info": "Изменить информацию", - "Edit File": "Изменить файл", - "Open File": "Открыть файл", "Update": "Обновить", - "Update via proxy": "Update via proxy", - "Confirm deletion": "Подтвердите удаление", - "This operation is not reversible": "Эта операция необратима", - "Script Console": "Консоль скрипта", "Close All Connections": "Close All Connections", "Upload": "Загрузка", "Download": "Скачивание", @@ -380,7 +337,6 @@ "theme.system": "Системная", "Copy Success": "Скопировано", "Memory Usage": "Использование памяти", - "Proxy Group Icon": "Иконка Группы прокси", "Miscellaneous": "Расширенные настройки", "App Log Level": "Уровень журнала приложения", "Auto Close Connections": "Автоматическое закрытие соединений", @@ -415,8 +371,6 @@ "Exit": "Выход", "Verge Version": "Версия Clash Verge Rev", "ReadOnly": "Только для чтения", - "ReadOnlyMessage": "Невозможно редактировать в режиме только для чтения", - "Filter": "Фильтр", "Filter conditions": "Условия фильтрации", "Match Case": "Учитывать регистр", "Match Whole Word": "Полное совпадение слова", @@ -431,14 +385,6 @@ "Service Uninstalled Successfully": "Служба успешно удалена", "Proxy Daemon Duration Cannot be Less than 1 Second": "Продолжительность работы прокси-демона не может быть меньше 1 секунды", "Invalid Bypass Format": "Неверный формат обхода", - "Waiting for service to be ready...": "Waiting for service to be ready...", - "Service not ready, retrying attempt {count}/{total}...": "Service not ready, retrying attempt {{count}}/{{total}}...", - "Failed to check service status, retrying attempt {count}/{total}...": "Failed to check service status, retrying attempt {{count}}/{{total}}...", - "Service did not become ready after attempts. Proceeding with core restart.": "Service did not become ready after attempts. Proceeding with core restart.", - "Service was ready, but core restart might have issues or service became unavailable. Please check.": "Service was ready, but core restart might have issues or service became unavailable. Please check.", - "Service installation or core restart encountered issues. Service might not be available. Please check system logs.": "Service installation or core restart encountered issues. Service might not be available. Please check system logs.", - "Attempting to restart core as a fallback...": "Attempting to restart core as a fallback...", - "Core restarted. Service is now available.": "Core restarted. Service is now available.", "Core Version Updated": "Ядро обновлено до последней версии", "Clash Core Restarted": "Ядро перезапущено", "GeoData Updated": "Файлы GeoData обновлены", @@ -580,16 +526,10 @@ "Administrator + Service Mode": "Admin + Service Mode", "Last Check Update": "Последняя проверка обновлений", "Click to import subscription": "Нажмите, чтобы импортировать подписку", - "Last Update failed": "Last Update failed", - "Next Up": "Next Up", - "No schedule": "No schedule", "Unknown": "Unknown", - "Auto update disabled": "Auto update disabled", "Update failed, retrying with Clash proxy...": "Update failed, retrying with Clash proxy...", "Update with Clash proxy successfully": "Update with Clash proxy successfully", "Update failed even with Clash proxy": "Update failed even with Clash proxy", - "Profile creation failed, retrying with Clash proxy...": "Profile creation failed, retrying with Clash proxy...", - "Import failed, retrying with Clash proxy...": "Import failed, retrying with Clash proxy...", "Profile Imported with Clash proxy": "Profile Imported with Clash proxy", "Current Node": "Текущий сервер", "No active proxy node": "Нет активного прокси-узла", @@ -628,8 +568,6 @@ "AppQuitBody": "APP quit by hotkey", "AppHiddenTitle": "APP Hidden", "AppHiddenBody": "APP window hidden by hotkey", - "Saved Successfully": "Saved successfully", - "Enable one-click CORS for external API. Click to toggle CORS": "Enable one-click CORS for external API. Click to toggle CORS", "External Cors Settings": "External Cors Settings", "External Cors Configuration": "External Cors Configuration", "Allow private network access": "Allow private network access", @@ -704,6 +642,106 @@ }, "fileInput": { "chooseFile": "Выбрать файл" + }, + "notifications": { + "saved": "Saved successfully" + }, + "proxiesEditor": { + "title": "Редактировать прокси", + "placeholders": { + "multiUri": "Используйте символы новой строки для нескольких URI (поддерживается кодировка Base64)" + }, + "actions": { + "prepend": "Добавить прокси в начало", + "append": "Добавить прокси в конец" + } + }, + "groupsEditor": { + "title": "Редактировать группы прокси", + "errors": { + "nameRequired": "Требуется имя группы", + "nameExists": "Имя группы уже существует" + }, + "fields": { + "type": "Тип группы", + "name": "Имя группы", + "icon": "Иконка Группы прокси", + "proxies": "Использовать прокси", + "provider": "Использовать провайдера", + "healthCheckUrl": "URL проверки здоровья", + "expectedStatus": "Ожидаемый статус", + "interval": "Интервал", + "timeout": "Таймаут", + "maxFailedTimes": "Максимальное количество неудач", + "interfaceName": "Имя интерфейса", + "routingMark": "Марка маршрутизации", + "filter": "Фильтр", + "excludeFilter": "Исключить фильтр", + "excludeType": "Тип исключения", + "includeAll": "Включить все прокси и провайдеры", + "includeAllProxies": "Включить все прокси", + "includeAllProviders": "Включить всех провайдеров" + }, + "toggles": { + "lazy": "Ленивый", + "disableUdp": "Отключить UDP", + "hidden": "Скрытый" + }, + "actions": { + "prepend": "Добавить группу в начало", + "append": "Добавить группу в конец" + } + }, + "menu": { + "home": "Главная", + "select": "Выбрать", + "editInfo": "Изменить информацию", + "editFile": "Изменить файл", + "editRules": "Редактировать правила", + "editProxies": "Редактировать прокси", + "editGroups": "Редактировать группы прокси", + "extendConfig": "Изменить Merge", + "extendScript": "Изменить Script", + "openFile": "Открыть файл", + "update": "Обновить", + "updateViaProxy": "Update via proxy", + "delete": "Удалить" + }, + "item": { + "tooltips": { + "showLast": "Click to show last update time", + "showNext": "Click to show next update" + }, + "status": { + "lastUpdateFailed": "Last Update failed", + "nextUp": "Next Up", + "noSchedule": "No schedule", + "unknown": "Unknown", + "autoUpdateDisabled": "Auto update disabled" + } + }, + "confirm": { + "delete": { + "title": "Подтвердите удаление", + "message": "Эта операция необратима" + } + }, + "logViewer": { + "title": "Консоль скрипта" + }, + "more": { + "global": { + "merge": "Global Merge", + "script": "Global Script" + }, + "chips": { + "merge": "Merge", + "script": "Script" + } + }, + "editor": { + "format": "Форматировать документ", + "readOnlyMessage": "Невозможно редактировать в режиме только для чтения" } }, "home": { @@ -886,5 +924,11 @@ } } } + }, + "common": { + "editorModes": { + "visualization": "Визуализация", + "advanced": "Дополнительно" + } } } diff --git a/src/locales/tr.json b/src/locales/tr.json index db3ad707..7549471a 100644 --- a/src/locales/tr.json +++ b/src/locales/tr.json @@ -7,7 +7,6 @@ "Confirm": "Onayla", "Maximize": "Büyüt", "Minimize": "Küçült", - "Format document": "Belgeyi biçimlendir", "Empty": "Boş", "New": "Yeni", "Edit": "Düzenle", @@ -168,7 +167,6 @@ "Label-Unlock": "Test", "Label-Settings": "Ayarlar", "Proxies": "Vekil'ler", - "Connecting...": "Connecting...", "Update All": "Tümünü Güncelle", "Update At": "Güncelleme Zamanı", "rule": "kural", @@ -186,15 +184,6 @@ "Update Time": "Güncelleme Zamanı", "Used / Total": "Kullanılan / Toplam", "Expire Time": "Sona Erme Zamanı", - "Edit Proxies": "Vekil'leri Düzenle", - "Use newlines for multiple uri": "Birden fazla URI için yeni satırlar kullanın (Base64 kodlaması desteklenir)", - "Edit Rules": "Kuralları Düzenle", - "Prepend Group": "Grubun Başına Ekle", - "Append Group": "Grubun Sonuna Ekle", - "Prepend Proxy": "Vekil'in Başına Ekle", - "Append Proxy": "Vekil'in Sonuna Ekle", - "Advanced": "Gelişmiş", - "Visualization": "Görselleştirme", "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", @@ -232,48 +221,16 @@ "REJECT": "İstekleri engeller", "REJECT-DROP": "İstekleri atar", "PASS": "Eşleştiğinde bu kuralı atlar", - "Edit Groups": "Vekil Gruplarını Düzenle", - "Group Type": "Grup Tipi", "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", - "Group Name": "Grup Adı", - "Use Proxies": "Vekil'leri Kullan", - "Use Provider": "Sağlayıcı Kullan", - "Health Check Url": "Sağlık Kontrolü URL'si", - "Expected Status": "Beklenen Durum", - "Interval": "Aralık", - "Lazy": "Tembel", "Timeout": "Zaman Aşımı", - "Max Failed Times": "Maksimum Başarısız Deneme", - "Interface Name": "Arayüz Adı", - "Routing Mark": "Yönlendirme İşareti", - "Include All": "Tüm Vekil'leri ve Sağlayıcıları Dahil Et", - "Include All Providers": "Tüm Sağlayıcıları Dahil Et", - "Include All Proxies": "Tüm Vekil'leri Dahil Et", - "Exclude Filter": "Hariç Tutma Filtresi", - "Exclude Type": "Hariç Tutma Tipi", - "Disable UDP": "UDP'yi Devre Dışı Bırak", - "Hidden": "Gizli", - "Group Name Required": "Grup Adı Gerekli", - "Group Name Already Exists": "Grup Adı Zaten Var", - "Extend Config": "Yapılandırma Genişletme", - "Extend Script": "Betik Genişletme", "Type": "Tip", "Name": "İsim", "Refresh": "Yenile", - "Home": "Ana Sayfa", - "Select": "Seç", - "Edit Info": "Bilgileri Düzenle", - "Edit File": "Dosyayı Düzenle", - "Open File": "Dosyayı Aç", "Update": "Güncelle", - "Update via proxy": "Update via proxy", - "Confirm deletion": "Silmeyi Onayla", - "This operation is not reversible": "Bu işlem geri alınamaz", - "Script Console": "Betik Konsolu", "Close All Connections": "Close All Connections", "Upload": "Yükleme", "Download": "İndirme", @@ -380,7 +337,6 @@ "theme.system": "Sistem", "Copy Success": "Kopyalama Başarılı", "Memory Usage": "Çekirdek Kullanımı", - "Proxy Group Icon": "Vekil Grup Simgesi", "Miscellaneous": "Çeşitli", "App Log Level": "Uygulama Günlük Seviyesi", "Auto Close Connections": "Bağlantıları Otomatik Kapat", @@ -415,8 +371,6 @@ "Exit": "Çıkış", "Verge Version": "Verge Sürümü", "ReadOnly": "Salt Okunur", - "ReadOnlyMessage": "Salt okunur düzenleyicide düzenlenemez", - "Filter": "Filtre", "Filter conditions": "Filtre koşulları", "Match Case": "Büyük/Küçük Harf Eşleştir", "Match Whole Word": "Tam Kelime Eşleştir", @@ -431,14 +385,6 @@ "Service Uninstalled Successfully": "Hizmet Başarıyla Kaldırıldı", "Proxy Daemon Duration Cannot be Less than 1 Second": "Vekil Koruyucu Süresi 1 Saniyeden Az Olamaz", "Invalid Bypass Format": "Geçersiz Baypas Formatı", - "Waiting for service to be ready...": "Waiting for service to be ready...", - "Service not ready, retrying attempt {count}/{total}...": "Service not ready, retrying attempt {{count}}/{{total}}...", - "Failed to check service status, retrying attempt {count}/{total}...": "Failed to check service status, retrying attempt {{count}}/{{total}}...", - "Service did not become ready after attempts. Proceeding with core restart.": "Service did not become ready after attempts. Proceeding with core restart.", - "Service was ready, but core restart might have issues or service became unavailable. Please check.": "Service was ready, but core restart might have issues or service became unavailable. Please check.", - "Service installation or core restart encountered issues. Service might not be available. Please check system logs.": "Service installation or core restart encountered issues. Service might not be available. Please check system logs.", - "Attempting to restart core as a fallback...": "Attempting to restart core as a fallback...", - "Core restarted. Service is now available.": "Core restarted. Service is now available.", "Core Version Updated": "Çekirdek Sürümü Güncellendi", "Clash Core Restarted": "Clash Çekirdeği Yeniden Başlatıldı", "GeoData Updated": "GeoData Güncellendi", @@ -580,16 +526,10 @@ "Administrator + Service Mode": "Yönetici + Hizmet Modu", "Last Check Update": "Son Güncelleme Kontrolü", "Click to import subscription": "Abonelik içe aktarmak için tıklayın", - "Last Update failed": "Son güncelleme başarısız oldu", - "Next Up": "Sıradaki", - "No schedule": "Program yok", "Unknown": "Bilinmiyor", - "Auto update disabled": "Otomatik güncelleme devre dışı", "Update failed, retrying with Clash proxy...": "Güncelleme başarısız oldu, Clash vekil ile yeniden deneniyor...", "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 creation failed, retrying with Clash proxy...": "Profil oluşturma başarısız oldu, Clash vekil ile yeniden deneniyor...", - "Import failed, retrying with Clash proxy...": "İçe aktarma başarısız oldu, Clash vekil ile yeniden deneniyor...", "Profile Imported with Clash proxy": "Profil Clash vekil ile içe aktarıldı", "Current Node": "Geçerli Düğüm", "No active proxy node": "Aktif vekil düğümü yok", @@ -628,8 +568,6 @@ "AppQuitBody": "APP quit by hotkey", "AppHiddenTitle": "APP Hidden", "AppHiddenBody": "APP window hidden by hotkey", - "Saved Successfully": "Saved successfully", - "Enable one-click CORS for external API. Click to toggle CORS": "Enable one-click CORS for external API. Click to toggle CORS", "External Cors Settings": "External Cors Settings", "External Cors Configuration": "External Cors Configuration", "Allow private network access": "Allow private network access", @@ -704,6 +642,106 @@ }, "fileInput": { "chooseFile": "Dosya Seç" + }, + "notifications": { + "saved": "Saved successfully" + }, + "proxiesEditor": { + "title": "Vekil'leri Düzenle", + "placeholders": { + "multiUri": "Birden fazla URI için yeni satırlar kullanın (Base64 kodlaması desteklenir)" + }, + "actions": { + "prepend": "Vekil'in Başına Ekle", + "append": "Vekil'in Sonuna Ekle" + } + }, + "groupsEditor": { + "title": "Vekil Gruplarını Düzenle", + "errors": { + "nameRequired": "Grup Adı Gerekli", + "nameExists": "Grup Adı Zaten Var" + }, + "fields": { + "type": "Grup Tipi", + "name": "Grup Adı", + "icon": "Vekil Grup Simgesi", + "proxies": "Vekil'leri Kullan", + "provider": "Sağlayıcı Kullan", + "healthCheckUrl": "Sağlık Kontrolü URL'si", + "expectedStatus": "Beklenen Durum", + "interval": "Aralık", + "timeout": "Zaman Aşımı", + "maxFailedTimes": "Maksimum Başarısız Deneme", + "interfaceName": "Arayüz Adı", + "routingMark": "Yönlendirme İşareti", + "filter": "Filtre", + "excludeFilter": "Hariç Tutma Filtresi", + "excludeType": "Hariç Tutma Tipi", + "includeAll": "Tüm Vekil'leri ve Sağlayıcıları Dahil Et", + "includeAllProxies": "Tüm Vekil'leri Dahil Et", + "includeAllProviders": "Tüm Sağlayıcıları Dahil Et" + }, + "toggles": { + "lazy": "Tembel", + "disableUdp": "UDP'yi Devre Dışı Bırak", + "hidden": "Gizli" + }, + "actions": { + "prepend": "Grubun Başına Ekle", + "append": "Grubun Sonuna Ekle" + } + }, + "menu": { + "home": "Ana Sayfa", + "select": "Seç", + "editInfo": "Bilgileri Düzenle", + "editFile": "Dosyayı Düzenle", + "editRules": "Kuralları Düzenle", + "editProxies": "Vekil'leri Düzenle", + "editGroups": "Vekil Gruplarını Düzenle", + "extendConfig": "Yapılandırma Genişletme", + "extendScript": "Betik Genişletme", + "openFile": "Dosyayı Aç", + "update": "Güncelle", + "updateViaProxy": "Update via proxy", + "delete": "Sil" + }, + "item": { + "tooltips": { + "showLast": "Click to show last update time", + "showNext": "Click to show next update" + }, + "status": { + "lastUpdateFailed": "Son güncelleme başarısız oldu", + "nextUp": "Sıradaki", + "noSchedule": "Program yok", + "unknown": "Bilinmiyor", + "autoUpdateDisabled": "Otomatik güncelleme devre dışı" + } + }, + "confirm": { + "delete": { + "title": "Silmeyi Onayla", + "message": "Bu işlem geri alınamaz" + } + }, + "logViewer": { + "title": "Betik Konsolu" + }, + "more": { + "global": { + "merge": "Global Merge", + "script": "Global Script" + }, + "chips": { + "merge": "Merge", + "script": "Script" + } + }, + "editor": { + "format": "Belgeyi biçimlendir", + "readOnlyMessage": "Salt okunur düzenleyicide düzenlenemez" } }, "home": { @@ -886,5 +924,11 @@ } } } + }, + "common": { + "editorModes": { + "visualization": "Görselleştirme", + "advanced": "Gelişmiş" + } } } diff --git a/src/locales/tt.json b/src/locales/tt.json index cc0514f3..fcb79306 100644 --- a/src/locales/tt.json +++ b/src/locales/tt.json @@ -7,7 +7,6 @@ "Confirm": "Растау", "Maximize": "Зурайту", "Minimize": "Кечерәйтү", - "Format document": "Документны форматлау", "Empty": "Буш", "New": "Яңа", "Edit": "Үзгәртү", @@ -168,7 +167,6 @@ "Label-Unlock": "Test", "Label-Settings": "Көйләүләр", "Proxies": "Прокси", - "Connecting...": "Connecting...", "Update All": "Барысын да яңарту", "Update At": "Яңартылган вакыт", "rule": "кагыйдә", @@ -186,15 +184,6 @@ "Update Time": "Яңарту вакыты", "Used / Total": "Кулланылган / Барлыгы", "Expire Time": "Тамамлану вакыты", - "Edit Proxies": "Проксины үзгәртү", - "Use newlines for multiple uri": "Берничә URI өчен яңа юл символын кулланыгыз (Base64 кодлавы ярдәм ителә)", - "Edit Rules": "Кагыйдәләрне үзгәртү", - "Prepend Group": "Төркемне өскә өстәү", - "Append Group": "Төркемне аска өстәү", - "Prepend Proxy": "Проксины өскә өстәү", - "Append Proxy": "Проксины аска өстәү", - "Advanced": "Өстәмә", - "Visualization": "Визуализация", "DOMAIN": "Домен исеменең тулы туры килүе", "DOMAIN-SUFFIX": "Домен суффиксына туры килү", "DOMAIN-KEYWORD": "Доменда төп сүзгә туры килү", @@ -232,48 +221,16 @@ "REJECT": "Сорауларны тоткарлау", "REJECT-DROP": "Сорауларны кире кагу", "PASS": "Туры килсә дә, бу кагыйдәне урап узу", - "Edit Groups": "Прокси төркемнәрен үзгәртү", - "Group Type": "Төркем төре", "select": "Проксины кулдан сайлау", "url-test": "URL-тест задержкасына карап прокси сайлау", "fallback": "Хата булган очракта башка проксига күчү", "load-balance": "Трафикны баланслау нигезендә прокси тарату", "relay": "Билгеле прокси чылбыры аша тапшыру", - "Group Name": "Төркем исеме", - "Use Proxies": "Прокси куллану", - "Use Provider": "Провайдер куллану", - "Health Check Url": "Сәламәтлекне тикшерү URL-ы", - "Expected Status": "Көтелгән статус коды", - "Interval": "Интервал", - "Lazy": "Сак режим (lazy)", "Timeout": "Таймаут", - "Max Failed Times": "Иң күп хаталы тикшерү саны", - "Interface Name": "Интерфейс исеме", - "Routing Mark": "Маршрут билгесе", - "Include All": "Барлык прокси һәм провайдерларны кертү", - "Include All Providers": "Барлык провайдерларны кертү", - "Include All Proxies": "Барлык проксины кертү", - "Exclude Filter": "Фильтр аша чыгару", - "Exclude Type": "Чыгару төре", - "Disable UDP": "UDP'ны сүндерү", - "Hidden": "Яшерен", - "Group Name Required": "Төркем исеме кирәк", - "Group Name Already Exists": "Әлеге төркем исеме бар инде", - "Extend Config": "Merge-ны үзгәртергә", - "Extend Script": "Script-ны үзгәртергә", "Type": "Төр", "Name": "Исем", "Refresh": "Яңарту", - "Home": "Баш бит", - "Select": "Сайлау", - "Edit Info": "Мәгълүматны үзгәртү", - "Edit File": "Файлны үзгәртү", - "Open File": "Файлны ачу", "Update": "Яңарту", - "Update via proxy": "Update via proxy", - "Confirm deletion": "Бетерүне раслагыз", - "This operation is not reversible": "Бу гамәлне кире кайтарып булмый", - "Script Console": "Скрипт консоле", "Close All Connections": "Close All Connections", "Upload": "Upload", "Download": "Download", @@ -380,7 +337,6 @@ "theme.system": "Система", "Copy Success": "Күчерелде", "Memory Usage": "Хәтер куллану", - "Proxy Group Icon": "Прокси төркеме иконкасы", "Miscellaneous": "Өстәмә көйләүләр", "App Log Level": "Кушымта журналы дәрәҗәсе", "Auto Close Connections": "Тоташуларны автоматик ябу", @@ -415,8 +371,6 @@ "Exit": "Чыгу", "Verge Version": "Verge версиясе", "ReadOnly": "Уку режимы гына", - "ReadOnlyMessage": "Уку режимында үзгәртү мөмкин түгел", - "Filter": "Фильтр", "Filter conditions": "Фильтр шартлары", "Match Case": "Регистрны исәпкә алу", "Match Whole Word": "Сүзнең тулы туры килүе", @@ -431,14 +385,6 @@ "Service Uninstalled Successfully": "Сервис уңышлы салдырылды", "Proxy Daemon Duration Cannot be Less than 1 Second": "Прокси-демон эш вакыты 1 секундтан ким була алмый", "Invalid Bypass Format": "Дөрес булмаган Bypass форматы", - "Waiting for service to be ready...": "Waiting for service to be ready...", - "Service not ready, retrying attempt {count}/{total}...": "Service not ready, retrying attempt {{count}}/{{total}}...", - "Failed to check service status, retrying attempt {count}/{total}...": "Failed to check service status, retrying attempt {{count}}/{{total}}...", - "Service did not become ready after attempts. Proceeding with core restart.": "Service did not become ready after attempts. Proceeding with core restart.", - "Service was ready, but core restart might have issues or service became unavailable. Please check.": "Service was ready, but core restart might have issues or service became unavailable. Please check.", - "Service installation or core restart encountered issues. Service might not be available. Please check system logs.": "Service installation or core restart encountered issues. Service might not be available. Please check system logs.", - "Attempting to restart core as a fallback...": "Attempting to restart core as a fallback...", - "Core restarted. Service is now available.": "Core restarted. Service is now available.", "Core Version Updated": "Ядро версиясе яңартылды", "Clash Core Restarted": "Clash ядросы яңадан башланды", "GeoData Updated": "GeoData яңартылды", @@ -580,16 +526,10 @@ "Administrator + Service Mode": "Admin + Service Mode", "Last Check Update": "Last Check Update", "Click to import subscription": "Click to import subscription", - "Last Update failed": "Last Update failed", - "Next Up": "Next Up", - "No schedule": "No schedule", "Unknown": "Unknown", - "Auto update disabled": "Auto update disabled", "Update failed, retrying with Clash proxy...": "Update failed, retrying with Clash proxy...", "Update with Clash proxy successfully": "Update with Clash proxy successfully", "Update failed even with Clash proxy": "Update failed even with Clash proxy", - "Profile creation failed, retrying with Clash proxy...": "Profile creation failed, retrying with Clash proxy...", - "Import failed, retrying with Clash proxy...": "Import failed, retrying with Clash proxy...", "Profile Imported with Clash proxy": "Profile Imported with Clash proxy", "Current Node": "Current Node", "No active proxy node": "No active proxy node", @@ -628,8 +568,6 @@ "AppQuitBody": "APP quit by hotkey", "AppHiddenTitle": "APP Hidden", "AppHiddenBody": "APP window hidden by hotkey", - "Saved Successfully": "Saved successfully", - "Enable one-click CORS for external API. Click to toggle CORS": "Enable one-click CORS for external API. Click to toggle CORS", "External Cors Settings": "External Cors Settings", "External Cors Configuration": "External Cors Configuration", "Allow private network access": "Allow private network access", @@ -704,6 +642,106 @@ }, "fileInput": { "chooseFile": "Файл сайлау" + }, + "notifications": { + "saved": "Saved successfully" + }, + "proxiesEditor": { + "title": "Проксины үзгәртү", + "placeholders": { + "multiUri": "Берничә URI өчен яңа юл символын кулланыгыз (Base64 кодлавы ярдәм ителә)" + }, + "actions": { + "prepend": "Проксины өскә өстәү", + "append": "Проксины аска өстәү" + } + }, + "groupsEditor": { + "title": "Прокси төркемнәрен үзгәртү", + "errors": { + "nameRequired": "Төркем исеме кирәк", + "nameExists": "Әлеге төркем исеме бар инде" + }, + "fields": { + "type": "Төркем төре", + "name": "Төркем исеме", + "icon": "Прокси төркеме иконкасы", + "proxies": "Прокси куллану", + "provider": "Провайдер куллану", + "healthCheckUrl": "Сәламәтлекне тикшерү URL-ы", + "expectedStatus": "Көтелгән статус коды", + "interval": "Интервал", + "timeout": "Таймаут", + "maxFailedTimes": "Иң күп хаталы тикшерү саны", + "interfaceName": "Интерфейс исеме", + "routingMark": "Маршрут билгесе", + "filter": "Фильтр", + "excludeFilter": "Фильтр аша чыгару", + "excludeType": "Чыгару төре", + "includeAll": "Барлык прокси һәм провайдерларны кертү", + "includeAllProxies": "Барлык проксины кертү", + "includeAllProviders": "Барлык провайдерларны кертү" + }, + "toggles": { + "lazy": "Сак режим (lazy)", + "disableUdp": "UDP'ны сүндерү", + "hidden": "Яшерен" + }, + "actions": { + "prepend": "Төркемне өскә өстәү", + "append": "Төркемне аска өстәү" + } + }, + "menu": { + "home": "Home", + "select": "Сайлау", + "editInfo": "Мәгълүматны үзгәртү", + "editFile": "Файлны үзгәртү", + "editRules": "Кагыйдәләрне үзгәртү", + "editProxies": "Проксины үзгәртү", + "editGroups": "Прокси төркемнәрен үзгәртү", + "extendConfig": "Merge-ны үзгәртергә", + "extendScript": "Script-ны үзгәртергә", + "openFile": "Файлны ачу", + "update": "Яңарту", + "updateViaProxy": "Update via proxy", + "delete": "Бетерү" + }, + "item": { + "tooltips": { + "showLast": "Click to show last update time", + "showNext": "Click to show next update" + }, + "status": { + "lastUpdateFailed": "Last Update failed", + "nextUp": "Next Up", + "noSchedule": "No schedule", + "unknown": "Unknown", + "autoUpdateDisabled": "Auto update disabled" + } + }, + "confirm": { + "delete": { + "title": "Бетерүне раслагыз", + "message": "Бу гамәлне кире кайтарып булмый" + } + }, + "logViewer": { + "title": "Скрипт консоле" + }, + "more": { + "global": { + "merge": "Global Merge", + "script": "Global Script" + }, + "chips": { + "merge": "Merge", + "script": "Script" + } + }, + "editor": { + "format": "Документны форматлау", + "readOnlyMessage": "Уку режимында үзгәртү мөмкин түгел" } }, "home": { @@ -886,5 +924,11 @@ } } } + }, + "common": { + "editorModes": { + "visualization": "Визуализация", + "advanced": "Өстәмә" + } } } diff --git a/src/locales/zh.json b/src/locales/zh.json index 6adaec40..77d4e276 100644 --- a/src/locales/zh.json +++ b/src/locales/zh.json @@ -7,7 +7,6 @@ "Confirm": "确认", "Maximize": "最大化", "Minimize": "最小化", - "Format document": "格式化文档", "Empty": "空空如也", "New": "新建", "Edit": "编辑", @@ -168,7 +167,6 @@ "Label-Unlock": "测 试", "Label-Settings": "设 置", "Proxies": "代理", - "Connecting...": "连接中...", "Update All": "更新全部", "Update At": "更新于", "rule": "规则", @@ -186,15 +184,6 @@ "Update Time": "更新时间", "Used / Total": "已使用 / 总量", "Expire Time": "到期时间", - "Edit Proxies": "编辑节点", - "Use newlines for multiple uri": "多条 URI 请使用换行分隔(支持 Base64 编码)", - "Edit Rules": "编辑规则", - "Prepend Group": "添加前置代理组", - "Append Group": "添加后置代理组", - "Prepend Proxy": "添加前置代理节点", - "Append Proxy": "添加后置代理节点", - "Advanced": "高级", - "Visualization": "可视化", "DOMAIN": "匹配完整域名", "DOMAIN-SUFFIX": "匹配域名后缀", "DOMAIN-KEYWORD": "匹配域名关键字", @@ -232,48 +221,16 @@ "REJECT": "拦截请求", "REJECT-DROP": "抛弃请求", "PASS": "跳过此规则", - "Edit Groups": "编辑代理组", - "Group Type": "代理组类型", "select": "手动选择代理", "url-test": "根据URL测试延迟选择代理", "fallback": "不可用时切换到另一个代理", "load-balance": "根据负载均衡分配代理", "relay": "根据定义的代理链传递", - "Group Name": "代理组组名", - "Use Proxies": "引入代理", - "Use Provider": "引入代理集合", - "Health Check Url": "健康检查测试地址", - "Expected Status": "期望状态码", - "Interval": "检查间隔", - "Lazy": "懒惰状态", "Timeout": "超时时间", - "Max Failed Times": "最大失败次数", - "Interface Name": "出站接口", - "Routing Mark": "路由标记", - "Include All": "引入所有出站代理、代理集合", - "Include All Providers": "引入所有代理集合", - "Include All Proxies": "引入所有出站代理", - "Exclude Filter": "排除节点", - "Exclude Type": "排除节点类型", - "Disable UDP": "禁用 UDP", - "Hidden": "隐藏代理组", - "Group Name Required": "代理组名称不能为空", - "Group Name Already Exists": "代理组名称已存在", - "Extend Config": "扩展覆写配置", - "Extend Script": "扩展脚本", "Type": "类型", "Name": "名称", "Refresh": "刷新", - "Home": "首页", - "Select": "使用", - "Edit Info": "编辑信息", - "Edit File": "编辑文件", - "Open File": "打开文件", "Update": "更新", - "Update via proxy": "更新(代理)", - "Confirm deletion": "确认删除", - "This operation is not reversible": "此操作不可逆", - "Script Console": "脚本控制台输出", "Close All Connections": "关闭所有连接", "Upload": "上传", "Download": "下载", @@ -380,7 +337,6 @@ "theme.system": "系统", "Copy Success": "复制成功", "Memory Usage": "内核占用", - "Proxy Group Icon": "代理组图标", "Miscellaneous": "杂项设置", "App Log Level": "应用日志等级", "Auto Close Connections": "自动关闭连接", @@ -415,8 +371,6 @@ "Exit": "退出", "Verge Version": "Verge 版本", "ReadOnly": "只读", - "ReadOnlyMessage": "无法在只读模式下编辑", - "Filter": "过滤节点", "Filter conditions": "过滤条件", "Match Case": "区分大小写", "Match Whole Word": "全字匹配", @@ -431,14 +385,6 @@ "Service Uninstalled Successfully": "已成功卸载服务", "Proxy Daemon Duration Cannot be Less than 1 Second": "代理守护间隔时间不得低于 1 秒", "Invalid Bypass Format": "无效的代理绕过格式", - "Waiting for service to be ready...": "等待服务准备就绪...", - "Service not ready, retrying attempt {count}/{total}...": "服务未就绪,正在重试 {{count}}/{{total}} 次...", - "Failed to check service status, retrying attempt {count}/{total}...": "检查服务状态失败,正在重试 {{count}}/{{total}} 次...", - "Service did not become ready after attempts. Proceeding with core restart.": "服务在尝试后仍未就绪。正在重启内核。", - "Service was ready, but core restart might have issues or service became unavailable. Please check.": "服务已就绪,但内核重启可能存在问题或服务变得不可用。请检查。", - "Service installation or core restart encountered issues. Service might not be available. Please check system logs.": "服务安装或内核重启遇到问题。服务可能不可用。请检查系统日志。", - "Attempting to restart core as a fallback...": "尝试重启内核作为后备方案...", - "Core restarted. Service is now available.": "内核已重启,服务现已可用", "Core Version Updated": "内核版本已更新", "Clash Core Restarted": "已重启 Clash 内核", "GeoData Updated": "已更新 GeoData", @@ -580,16 +526,10 @@ "Administrator + Service Mode": "管理员 + 服务模式", "Last Check Update": "最后检查更新", "Click to import subscription": "点击导入订阅", - "Last Update failed": "上次更新失败", - "Next Up": "下次更新", - "No schedule": "没有计划", "Unknown": "未知", - "Auto update disabled": "自动更新已禁用", "Update failed, retrying with Clash proxy...": "订阅更新失败,尝试使用 Clash 代理更新", "Update with Clash proxy successfully": "使用 Clash 代理更新成功", "Update failed even with Clash proxy": "使用 Clash 代理更新也失败", - "Profile creation failed, retrying with Clash proxy...": "订阅创建失败,尝试使用 Clash 代理创建", - "Import failed, retrying with Clash proxy...": "订阅导入失败,尝试使用 Clash 代理导入", "Profile Imported with Clash proxy": "使用 Clash 代理导入订阅成功", "Current Node": "当前节点", "No active proxy node": "暂无激活的代理节点", @@ -628,8 +568,6 @@ "AppQuitBody": "已通过快捷键退出应用", "AppHiddenTitle": "应用隐藏", "AppHiddenBody": "已通过快捷键隐藏应用窗口", - "Saved Successfully": "保存成功", - "Enable one-click CORS for external API. Click to toggle CORS": "设置内核跨域访问,点击切换 CORS是否启用", "External Cors Settings": "外部控制跨域设置", "External Cors Configuration": "外部控制跨域配置", "Allow private network access": "允许专用网络访问", @@ -704,6 +642,106 @@ }, "fileInput": { "chooseFile": "选择文件" + }, + "notifications": { + "saved": "保存成功" + }, + "proxiesEditor": { + "title": "编辑节点", + "placeholders": { + "multiUri": "多条 URI 请使用换行分隔(支持 Base64 编码)" + }, + "actions": { + "prepend": "添加前置代理节点", + "append": "添加后置代理节点" + } + }, + "groupsEditor": { + "title": "编辑代理组", + "errors": { + "nameRequired": "代理组名称不能为空", + "nameExists": "代理组名称已存在" + }, + "fields": { + "type": "代理组类型", + "name": "代理组组名", + "icon": "代理组图标", + "proxies": "引入代理", + "provider": "引入代理集合", + "healthCheckUrl": "健康检查测试地址", + "expectedStatus": "期望状态码", + "interval": "检查间隔", + "timeout": "超时时间", + "maxFailedTimes": "最大失败次数", + "interfaceName": "出站接口", + "routingMark": "路由标记", + "filter": "过滤节点", + "excludeFilter": "排除节点", + "excludeType": "排除节点类型", + "includeAll": "引入所有出站代理、代理集合", + "includeAllProxies": "引入所有出站代理", + "includeAllProviders": "引入所有代理集合" + }, + "toggles": { + "lazy": "懒惰状态", + "disableUdp": "禁用 UDP", + "hidden": "隐藏代理组" + }, + "actions": { + "prepend": "添加前置代理组", + "append": "添加后置代理组" + } + }, + "menu": { + "home": "首 页", + "select": "使用", + "editInfo": "编辑信息", + "editFile": "编辑文件", + "editRules": "编辑规则", + "editProxies": "编辑节点", + "editGroups": "编辑代理组", + "extendConfig": "扩展覆写配置", + "extendScript": "扩展脚本", + "openFile": "打开文件", + "update": "更新", + "updateViaProxy": "更新(代理)", + "delete": "删除" + }, + "item": { + "tooltips": { + "showLast": "Click to show last update time", + "showNext": "Click to show next update" + }, + "status": { + "lastUpdateFailed": "上次更新失败", + "nextUp": "下次更新", + "noSchedule": "没有计划", + "unknown": "未知", + "autoUpdateDisabled": "自动更新已禁用" + } + }, + "confirm": { + "delete": { + "title": "确认删除", + "message": "此操作不可逆" + } + }, + "logViewer": { + "title": "脚本控制台输出" + }, + "more": { + "global": { + "merge": "Global Merge", + "script": "Global Script" + }, + "chips": { + "merge": "Merge", + "script": "Script" + } + }, + "editor": { + "format": "格式化文档", + "readOnlyMessage": "无法在只读模式下编辑" } }, "home": { @@ -886,5 +924,11 @@ } } } + }, + "common": { + "editorModes": { + "visualization": "可视化", + "advanced": "高级" + } } } diff --git a/src/locales/zhtw.json b/src/locales/zhtw.json index d1c6f400..13716f7e 100644 --- a/src/locales/zhtw.json +++ b/src/locales/zhtw.json @@ -7,7 +7,6 @@ "Confirm": "確認", "Maximize": "最大化", "Minimize": "最小化", - "Format document": "格式化文件", "Empty": "空空如也", "New": "新增", "Edit": "編輯", @@ -168,7 +167,6 @@ "Label-Unlock": "解 鎖", "Label-Settings": "設 定", "Proxies": "代理", - "Connecting...": "連線中...", "Update All": "全部更新", "Update At": "更新於", "rule": "規則", @@ -186,15 +184,6 @@ "Update Time": "更新時間", "Used / Total": "已使用 / 總量", "Expire Time": "到期時間", - "Edit Proxies": "編輯節點", - "Use newlines for multiple uri": "多條網址,請使用換行分隔(支援 Base64 編碼)", - "Edit Rules": "編輯規則", - "Prepend Group": "新增前置代理組", - "Append Group": "新增後置代理組", - "Prepend Proxy": "新增前置代理節點", - "Append Proxy": "新增後置代理節點", - "Advanced": "進階", - "Visualization": "視覺化", "DOMAIN": "配對完整網域", "DOMAIN-SUFFIX": "配對網域後綴", "DOMAIN-KEYWORD": "配對網域關鍵字", @@ -232,48 +221,16 @@ "REJECT": "拒絕請求", "REJECT-DROP": "丟棄請求", "PASS": "跳過此規則", - "Edit Groups": "編輯代理組", - "Group Type": "代理組類型", "select": "手動選擇代理", "url-test": "根據網址測試延遲選擇代理", "fallback": "切換至另一個備用代理", "load-balance": "根據負載平衡分配代理", "relay": "根據定義的代理鏈傳送", - "Group Name": "代理組名稱", - "Use Proxies": "使用代理", - "Use Provider": "使用代理集合", - "Health Check Url": "健康檢查網址", - "Expected Status": "預期狀態碼", - "Interval": "檢查間隔", - "Lazy": "延遲載入", "Timeout": "逾時", - "Max Failed Times": "最大失敗次數", - "Interface Name": "輸出介面", - "Routing Mark": "路由標記", - "Include All": "包含所有輸出代理、代理集合", - "Include All Providers": "包含所有代理集合", - "Include All Proxies": "包含所有輸出代理", - "Exclude Filter": "排除節點", - "Exclude Type": "排除節點類型", - "Disable UDP": "停用 UDP", - "Hidden": "隱藏代理組", - "Group Name Required": "代理組名稱為必填", - "Group Name Already Exists": "代理組名稱已存在", - "Extend Config": "擴充覆寫設定", - "Extend Script": "擴充指令碼", "Type": "類型", "Name": "名稱", "Refresh": "重整", - "Home": "首頁", - "Select": "使用", - "Edit Info": "編輯資訊", - "Edit File": "編輯檔案", - "Open File": "開啟檔案", "Update": "更新", - "Update via proxy": "更新(代理)", - "Confirm deletion": "確認刪除", - "This operation is not reversible": "此操作無法復原", - "Script Console": "指令碼控制台輸出", "Close All Connections": "關閉全部連線", "Upload": "上傳", "Download": "下載", @@ -380,7 +337,6 @@ "theme.system": "系統", "Copy Success": "複製成功", "Memory Usage": "內核佔用", - "Proxy Group Icon": "代理組圖示", "Miscellaneous": "雜項設定", "App Log Level": "應用程式日誌等級", "Auto Close Connections": "自動關閉連線", @@ -415,8 +371,6 @@ "Exit": "離開", "Verge Version": "Verge 版本", "ReadOnly": "唯讀", - "ReadOnlyMessage": "無法在唯讀模式下編輯", - "Filter": "篩選節點", "Filter conditions": "篩選條件", "Match Case": "區分大小寫", "Match Whole Word": "完整字詞配對", @@ -431,14 +385,6 @@ "Service Uninstalled Successfully": "已成功解除安裝服務", "Proxy Daemon Duration Cannot be Less than 1 Second": "代理守護間隔時間不得低於 1 秒", "Invalid Bypass Format": "無效的代理繞過格式", - "Waiting for service to be ready...": "等待服務就緒...", - "Service not ready, retrying attempt {count}/{total}...": "服務未就緒,正在重試 {{count}}/{{total}} 次...", - "Failed to check service status, retrying attempt {count}/{total}...": "檢查服務狀態失敗,正在重試 {{count}}/{{total}} 次...", - "Service did not become ready after attempts. Proceeding with core restart.": "服務在嘗試後仍未就緒,正在重新啟動內核。", - "Service was ready, but core restart might have issues or service became unavailable. Please check.": "服務已就緒,但內核重啟可能存在問題或服務已不可用。請檢查。", - "Service installation or core restart encountered issues. Service might not be available. Please check system logs.": "服務安裝或內核重啟遇到問題。服務可能不可用。請檢查系統日誌。", - "Attempting to restart core as a fallback...": "嘗試重新啟動內核作為備援方案...", - "Core restarted. Service is now available.": "內核已重啟,服務已就緒", "Core Version Updated": "內核版本已更新", "Clash Core Restarted": "已重啟 Clash 內核", "GeoData Updated": "已更新 GeoData", @@ -580,16 +526,10 @@ "Administrator + Service Mode": "系統管理員 + 服務模式", "Last Check Update": "最後檢查更新", "Click to import subscription": "點擊匯入訂閱", - "Last Update failed": "上次更新失敗", - "Next Up": "下次更新", - "No schedule": "沒有排程", "Unknown": "未知", - "Auto update disabled": "自動更新已停用", "Update failed, retrying with Clash proxy...": "訂閱更新失敗,嘗試使用 Clash 代理更新", "Update with Clash proxy successfully": "使用 Clash 代理更新成功", "Update failed even with Clash proxy": "使用 Clash 代理更新也失敗", - "Profile creation failed, retrying with Clash proxy...": "訂閱建立失敗,嘗試使用 Clash 代理建立", - "Import failed, retrying with Clash proxy...": "訂閱匯入失敗,嘗試使用 Clash 代理匯入", "Profile Imported with Clash proxy": "使用 Clash 代理匯入訂閱成功", "Current Node": "目前節點", "No active proxy node": "暫無作用中的代理節點", @@ -628,8 +568,6 @@ "AppQuitBody": "已透過快速鍵退出應用程式", "AppHiddenTitle": "應用程式隱藏", "AppHiddenBody": "已透過快速鍵隱藏應用程式視窗", - "Saved Successfully": "儲存成功", - "Enable one-click CORS for external API. Click to toggle CORS": "設定內核跨來源存取,點擊切換跨來源資源共享是否啟用", "External Cors Settings": "外部跨來源資源共享設定", "External Cors Configuration": "外部跨來源資源共享設定", "Allow private network access": "允許專用網路存取", @@ -704,6 +642,106 @@ }, "fileInput": { "chooseFile": "選擇檔案" + }, + "notifications": { + "saved": "儲存成功" + }, + "proxiesEditor": { + "title": "編輯節點", + "placeholders": { + "multiUri": "多條網址,請使用換行分隔(支援 Base64 編碼)" + }, + "actions": { + "prepend": "新增前置代理節點", + "append": "新增後置代理節點" + } + }, + "groupsEditor": { + "title": "編輯代理組", + "errors": { + "nameRequired": "代理組名稱為必填", + "nameExists": "代理組名稱已存在" + }, + "fields": { + "type": "代理組類型", + "name": "代理組名稱", + "icon": "代理組圖示", + "proxies": "使用代理", + "provider": "使用代理集合", + "healthCheckUrl": "健康檢查網址", + "expectedStatus": "預期狀態碼", + "interval": "檢查間隔", + "timeout": "逾時", + "maxFailedTimes": "最大失敗次數", + "interfaceName": "輸出介面", + "routingMark": "路由標記", + "filter": "篩選節點", + "excludeFilter": "排除節點", + "excludeType": "排除節點類型", + "includeAll": "包含所有輸出代理、代理集合", + "includeAllProxies": "包含所有輸出代理", + "includeAllProviders": "包含所有代理集合" + }, + "toggles": { + "lazy": "延遲載入", + "disableUdp": "停用 UDP", + "hidden": "隱藏代理組" + }, + "actions": { + "prepend": "新增前置代理組", + "append": "新增後置代理組" + } + }, + "menu": { + "home": "首 頁", + "select": "使用", + "editInfo": "編輯資訊", + "editFile": "編輯檔案", + "editRules": "編輯規則", + "editProxies": "編輯節點", + "editGroups": "編輯代理組", + "extendConfig": "擴充覆寫設定", + "extendScript": "擴充指令碼", + "openFile": "開啟檔案", + "update": "更新", + "updateViaProxy": "更新(代理)", + "delete": "刪除" + }, + "item": { + "tooltips": { + "showLast": "Click to show last update time", + "showNext": "Click to show next update" + }, + "status": { + "lastUpdateFailed": "上次更新失敗", + "nextUp": "下次更新", + "noSchedule": "沒有排程", + "unknown": "未知", + "autoUpdateDisabled": "自動更新已停用" + } + }, + "confirm": { + "delete": { + "title": "確認刪除", + "message": "此操作無法復原" + } + }, + "logViewer": { + "title": "指令碼控制台輸出" + }, + "more": { + "global": { + "merge": "Global Merge", + "script": "Global Script" + }, + "chips": { + "merge": "Merge", + "script": "Script" + } + }, + "editor": { + "format": "格式化文件", + "readOnlyMessage": "無法在唯讀模式下編輯" } }, "home": { @@ -886,5 +924,11 @@ } } } + }, + "common": { + "editorModes": { + "visualization": "視覺化", + "advanced": "進階" + } } }