chore(i18n): common.*

This commit is contained in:
Slinetrac
2025-11-02 23:08:45 +08:00
Unverified
parent 64904eac15
commit 81f651f4f3
22 changed files with 437 additions and 224 deletions

View File

@@ -1,16 +1,23 @@
import { InboxRounded } from "@mui/icons-material";
import { alpha, Box, Typography } from "@mui/material";
import type { ReactNode } from "react";
import { useTranslation } from "react-i18next";
interface Props {
text?: React.ReactNode;
extra?: React.ReactNode;
text?: ReactNode;
textKey?: string;
extra?: ReactNode;
}
export const BaseEmpty = (props: Props) => {
const { text = "Empty", extra } = props;
export const BaseEmpty = ({
text,
textKey = "common.states.empty",
extra,
}: Props) => {
const { t } = useTranslation();
const resolvedText: ReactNode = text !== undefined ? text : t(textKey);
return (
<Box
sx={({ palette }) => ({
@@ -24,7 +31,7 @@ export const BaseEmpty = (props: Props) => {
})}
>
<InboxRounded sx={{ fontSize: "4em" }} />
<Typography sx={{ fontSize: "1.25em" }}>{t(`${text}`)}</Typography>
<Typography sx={{ fontSize: "1.25em" }}>{resolvedText}</Typography>
{extra}
</Box>
);

View File

@@ -13,25 +13,48 @@ import { useVerge } from "@/hooks/use-verge";
import { useAppData } from "@/providers/app-data-context";
import { patchClashMode } from "@/services/cmds";
const CLASH_MODES = ["rule", "global", "direct"] as const;
type ClashMode = (typeof CLASH_MODES)[number];
const isClashMode = (mode: string): mode is ClashMode =>
(CLASH_MODES as readonly string[]).includes(mode);
const MODE_META: Record<ClashMode, { label: string; description: string }> = {
rule: {
label: "home.clashMode.labels.rule",
description: "home.clashMode.descriptions.rule",
},
global: {
label: "home.clashMode.labels.global",
description: "home.clashMode.descriptions.global",
},
direct: {
label: "home.clashMode.labels.direct",
description: "home.clashMode.descriptions.direct",
},
};
export const ClashModeCard = () => {
const { t } = useTranslation();
const { verge } = useVerge();
const { clashConfig, refreshClashConfig } = useAppData();
// 支持的模式列表
const modeList = useMemo(() => ["rule", "global", "direct"] as const, []);
const modeList = CLASH_MODES;
// 直接使用API返回的模式不维护本地状态
const currentMode = clashConfig?.mode?.toLowerCase();
const currentModeKey =
typeof currentMode === "string" && isClashMode(currentMode)
? currentMode
: undefined;
const modeDescription = useMemo(() => {
if (typeof currentMode === "string" && currentMode.length > 0) {
return t(
`${currentMode[0].toLocaleUpperCase()}${currentMode.slice(1)} Mode Description`,
);
if (currentModeKey) {
return t(MODE_META[currentModeKey].description);
}
return t("home.clashMode.errors.communication");
}, [currentMode, t]);
}, [currentModeKey, t]);
// 模式图标映射
const modeIcons = useMemo(
@@ -44,8 +67,8 @@ export const ClashModeCard = () => {
);
// 切换模式的处理函数
const onChangeMode = useLockFn(async (mode: string) => {
if (mode === currentMode) return;
const onChangeMode = useLockFn(async (mode: ClashMode) => {
if (mode === currentModeKey) return;
if (verge?.auto_close_connection) {
closeAllConnections();
}
@@ -60,7 +83,7 @@ export const ClashModeCard = () => {
});
// 按钮样式
const buttonStyles = (mode: string) => ({
const buttonStyles = (mode: ClashMode) => ({
cursor: "pointer",
px: 2,
py: 1.2,
@@ -68,8 +91,8 @@ export const ClashModeCard = () => {
alignItems: "center",
justifyContent: "center",
gap: 1,
bgcolor: mode === currentMode ? "primary.main" : "background.paper",
color: mode === currentMode ? "primary.contrastText" : "text.primary",
bgcolor: mode === currentModeKey ? "primary.main" : "background.paper",
color: mode === currentModeKey ? "primary.contrastText" : "text.primary",
borderRadius: 1.5,
transition: "all 0.2s ease-in-out",
position: "relative",
@@ -82,7 +105,7 @@ export const ClashModeCard = () => {
transform: "translateY(1px)",
},
"&::after":
mode === currentMode
mode === currentModeKey
? {
content: '""',
position: "absolute",
@@ -128,7 +151,7 @@ export const ClashModeCard = () => {
{modeList.map((mode) => (
<Paper
key={mode}
elevation={mode === currentMode ? 2 : 0}
elevation={mode === currentModeKey ? 2 : 0}
onClick={() => onChangeMode(mode)}
sx={buttonStyles(mode)}
>
@@ -137,10 +160,10 @@ export const ClashModeCard = () => {
variant="body2"
sx={{
textTransform: "capitalize",
fontWeight: mode === currentMode ? 600 : 400,
fontWeight: mode === currentModeKey ? 600 : 400,
}}
>
{t(mode)}
{t(MODE_META[mode].label)}
</Typography>
</Paper>
))}

View File

@@ -174,7 +174,9 @@ export const SystemInfoCard = () => {
try {
const info = await checkUpdate();
if (!info?.available) {
showNotice.success("Currently on the Latest Version");
showNotice.success(
t("settings.verge.advanced.notifications.latestVersion"),
);
} else {
showNotice.info("Update Available", 2000);
goToSettings();

View File

@@ -245,7 +245,9 @@ export const EditorViewer = <T extends Language>(props: Props<T>) => {
<IconButton
size="medium"
color="inherit"
title={t(isMaximized ? "Minimize" : "Maximize")}
title={t(
isMaximized ? "common.window.minimize" : "common.window.maximize",
)}
onClick={() => appWindow.toggleMaximize().then(editorResize)}
>
{isMaximized ? <CloseFullscreenRounded /> : <OpenInFullRounded />}

View File

@@ -372,7 +372,7 @@ export const ProxyGroups = (props: Props) => {
}, [renderList]);
if (mode === "direct") {
return <BaseEmpty text={t("proxies.page.messages.directMode")} />;
return <BaseEmpty textKey="proxies.page.messages.directMode" />;
}
if (isChainMode) {

View File

@@ -75,7 +75,7 @@ export function ClashCoreViewer({ ref }: { ref?: Ref<DialogRef> }) {
try {
setRestarting(true);
await restartCore();
showNotice.success("Clash Core Restarted");
showNotice.success(t("settings.clash.notifications.restartSuccess"));
setRestarting(false);
} catch (err) {
setRestarting(false);
@@ -88,7 +88,7 @@ export function ClashCoreViewer({ ref }: { ref?: Ref<DialogRef> }) {
setUpgrading(true);
await upgradeCore();
setUpgrading(false);
showNotice.success("Core Version Updated");
showNotice.success(t("settings.clash.notifications.versionUpdated"));
} catch (err: any) {
setUpgrading(false);
const errMsg = err?.response?.data?.message ?? String(err);

View File

@@ -24,7 +24,17 @@ const HOTKEY_FUNC = [
"toggle_system_proxy",
"toggle_tun_mode",
"entry_lightweight_mode",
];
] as const;
const HOTKEY_FUNC_LABELS: Record<(typeof HOTKEY_FUNC)[number], string> = {
open_or_close_dashboard: "settings.hotkey.functions.openOrCloseDashboard",
clash_mode_rule: "settings.hotkey.functions.rule",
clash_mode_global: "settings.hotkey.functions.global",
clash_mode_direct: "settings.hotkey.functions.direct",
toggle_system_proxy: "settings.hotkey.functions.toggleSystemProxy",
toggle_tun_mode: "settings.hotkey.functions.toggleTunMode",
entry_lightweight_mode: "settings.hotkey.functions.entryLightweightMode",
};
export const HotkeyViewer = forwardRef<DialogRef>((props, ref) => {
const { t } = useTranslation();
@@ -108,7 +118,7 @@ export const HotkeyViewer = forwardRef<DialogRef>((props, ref) => {
{HOTKEY_FUNC.map((func) => (
<ItemWrapper key={func}>
<Typography>{t(func)}</Typography>
<Typography>{t(HOTKEY_FUNC_LABELS[func])}</Typography>
<HotkeyInput
value={hotkeyMap[func] ?? []}
onChange={(v) => setHotkeyMap((m) => ({ ...m, [func]: v }))}

View File

@@ -133,7 +133,7 @@ const AddressDisplay = ({
size="small"
onClick={async () => {
await writeText(content);
showNotice.success("Copy Success");
showNotice.success("settings.common.notifications.copySuccess");
}}
>
<ContentCopyRounded sx={{ fontSize: "18px" }} />

View File

@@ -1,7 +1,4 @@
{
"Maximize": "تكبير",
"Minimize": "تصغير",
"Empty": "فارغ",
"Proxies": "الوكلاء",
"rule": "قاعدة",
"global": "عالمي",
@@ -65,13 +62,6 @@
"theme.light": "سمة فاتحة",
"theme.dark": "سمة داكنة",
"theme.system": "سمة النظام",
"Copy Success": "تم النسخ بنجاح",
"open_or_close_dashboard": "فتح/إغلاق لوحة التحكم",
"clash_mode_rule": "وضع القواعد",
"clash_mode_global": "الوضع العالمي",
"toggle_system_proxy": "تفعيل/تعطيل وكيل النظام",
"toggle_tun_mode": "تفعيل/تعطيل وضع TUN",
"entry_lightweight_mode": "Entry Lightweight Mode",
"Exit": "خروج",
"Profile Imported Successfully": "تم استيراد الملف الشخصي بنجاح",
"Stopping Core...": "Stopping Core...",
@@ -80,8 +70,6 @@
"Uninstalling Service...": "Uninstalling Service...",
"Service Installed Successfully": "تم تثبيت الخدمة بنجاح",
"Service Uninstalled Successfully": "تم إلغاء تثبيت الخدمة بنجاح",
"Core Version Updated": "تم تحديث إصدار النواة",
"Currently on the Latest Version": "أنت على أحدث إصدار حاليًا",
"Import Subscription Successful": "تم استيراد الاشتراك بنجاح",
"Profile": "الملف الشخصي",
"Dashboard": "لوحة التحكم",
@@ -209,7 +197,12 @@
"trafficStatsDescription": "The traffic statistics component encountered an error and has been disabled to prevent crashes."
},
"states": {
"saving": "Saving..."
"saving": "Saving...",
"empty": "فارغ"
},
"window": {
"maximize": "تكبير",
"minimize": "تصغير"
}
},
"navigation": {
@@ -524,6 +517,16 @@
"clashMode": {
"errors": {
"communication": "Core communication error"
},
"labels": {
"rule": "وضع القواعد",
"global": "الوضع العالمي",
"direct": "الوضع المباشر"
},
"descriptions": {
"rule": "Automatically choose proxies according to the rule set.",
"global": "Forward all network requests through the selected proxy.",
"direct": "Bypass the proxy and connect to the internet directly."
}
}
},
@@ -675,7 +678,8 @@
}
},
"notifications": {
"restartSuccess": "تم إعادة تشغيل نواة Clash"
"restartSuccess": "تم إعادة تشغيل نواة Clash",
"versionUpdated": "تم تحديث إصدار النواة"
}
},
"liteMode": {
@@ -1064,7 +1068,16 @@
"toggles": {
"enableGlobal": "تمكين مفتاح التشغيل السريع العالمي"
},
"title": "إعدادات الاختصارات"
"title": "إعدادات الاختصارات",
"functions": {
"rule": "وضع القواعد",
"global": "الوضع العالمي",
"openOrCloseDashboard": "فتح/إغلاق لوحة التحكم",
"toggleSystemProxy": "تفعيل/تعطيل وكيل النظام",
"toggleTunMode": "تفعيل/تعطيل وضع TUN",
"entryLightweightMode": "Entry Lightweight Mode",
"direct": "الوضع المباشر"
}
},
"password": {
"prompts": {

View File

@@ -1,7 +1,4 @@
{
"Maximize": "Maximieren",
"Minimize": "Minimieren",
"Empty": "Leer",
"Proxies": "Proxies",
"rule": "Regel",
"global": "Global",
@@ -65,13 +62,6 @@
"theme.light": "Light",
"theme.dark": "Dark",
"theme.system": "System",
"Copy Success": "Kopieren erfolgreich",
"open_or_close_dashboard": "Dashboard öffnen/schließen",
"clash_mode_rule": "Regel-Modus",
"clash_mode_global": "Globaler Modus",
"toggle_system_proxy": "Systemproxy ein/ausschalten",
"toggle_tun_mode": "TUN-Modus ein/ausschalten",
"entry_lightweight_mode": "Leichtgewichtigen Modus betreten",
"Exit": "Beenden",
"Profile Imported Successfully": "Abonnement erfolgreich importiert",
"Stopping Core...": "Kern wird gestoppt...",
@@ -80,8 +70,6 @@
"Uninstalling Service...": "Service wird deinstalliert...",
"Service Installed Successfully": "Service erfolgreich installiert",
"Service Uninstalled Successfully": "Service erfolgreich deinstalliert",
"Core Version Updated": "Kernversion wurde aktualisiert",
"Currently on the Latest Version": "Sie verwenden bereits die neueste Version",
"Import Subscription Successful": "Abonnement erfolgreich importiert",
"Profile": "Konfiguration",
"Dashboard": "Dashboard",
@@ -209,7 +197,12 @@
"trafficStatsDescription": "The traffic statistics component encountered an error and has been disabled to prevent crashes."
},
"states": {
"saving": "Saving..."
"saving": "Saving...",
"empty": "Leer"
},
"window": {
"maximize": "Maximieren",
"minimize": "Minimieren"
}
},
"navigation": {
@@ -524,6 +517,16 @@
"clashMode": {
"errors": {
"communication": "Core communication error"
},
"labels": {
"rule": "Regel-Modus",
"global": "Globaler Modus",
"direct": "Direktverbindungs-Modus"
},
"descriptions": {
"rule": "Automatically choose proxies according to the rule set.",
"global": "Forward all network requests through the selected proxy.",
"direct": "Bypass the proxy and connect to the internet directly."
}
}
},
@@ -675,7 +678,8 @@
}
},
"notifications": {
"restartSuccess": "Clash-Kern wurde neu gestartet"
"restartSuccess": "Clash-Kern wurde neu gestartet",
"versionUpdated": "Kernversion wurde aktualisiert"
}
},
"liteMode": {
@@ -1064,7 +1068,16 @@
"toggles": {
"enableGlobal": "Globale Tastenkombinationen aktivieren"
},
"title": "Tastenkombinationseinstellungen"
"title": "Tastenkombinationseinstellungen",
"functions": {
"rule": "Regel-Modus",
"global": "Globaler Modus",
"openOrCloseDashboard": "Dashboard öffnen/schließen",
"toggleSystemProxy": "Systemproxy ein/ausschalten",
"toggleTunMode": "TUN-Modus ein/ausschalten",
"entryLightweightMode": "Leichtgewichtigen Modus betreten",
"direct": "Direktverbindungs-Modus"
}
},
"password": {
"prompts": {

View File

@@ -1,7 +1,4 @@
{
"Maximize": "Maximize",
"Minimize": "Minimize",
"Empty": "Empty",
"Proxies": "Proxies",
"rule": "rule",
"global": "global",
@@ -65,13 +62,6 @@
"theme.light": "Light",
"theme.dark": "Dark",
"theme.system": "System",
"Copy Success": "Copy Success",
"open_or_close_dashboard": "Open/Close Dashboard",
"clash_mode_rule": "Rule Mode",
"clash_mode_global": "Global Mode",
"toggle_system_proxy": "Enable/Disable System Proxy",
"toggle_tun_mode": "Enable/Disable Tun Mode",
"entry_lightweight_mode": "Entry Lightweight Mode",
"Exit": "Exit",
"Profile Imported Successfully": "Profile Imported Successfully",
"Stopping Core...": "Stopping Core...",
@@ -80,8 +70,6 @@
"Uninstalling Service...": "Uninstalling Service...",
"Service Installed Successfully": "Service Installed Successfully",
"Service Uninstalled Successfully": "Service Uninstalled Successfully",
"Core Version Updated": "Core Version Updated",
"Currently on the Latest Version": "Currently on the Latest Version",
"Import Subscription Successful": "Import subscription successful",
"Profile": "Profile",
"Dashboard": "Dashboard",
@@ -209,7 +197,12 @@
"trafficStatsDescription": "The traffic statistics component encountered an error and has been disabled to prevent crashes."
},
"states": {
"saving": "Saving..."
"saving": "Saving...",
"empty": "Empty"
},
"window": {
"maximize": "Maximize",
"minimize": "Minimize"
}
},
"navigation": {
@@ -524,6 +517,16 @@
"clashMode": {
"errors": {
"communication": "Core communication error"
},
"labels": {
"rule": "Rule Mode",
"global": "Global Mode",
"direct": "Direct Mode"
},
"descriptions": {
"rule": "Automatically choose proxies according to the rule set.",
"global": "Forward all network requests through the selected proxy.",
"direct": "Bypass the proxy and connect to the internet directly."
}
}
},
@@ -675,7 +678,8 @@
}
},
"notifications": {
"restartSuccess": "Clash Core Restarted"
"restartSuccess": "Clash Core Restarted",
"versionUpdated": "Core Version Updated"
}
},
"liteMode": {
@@ -1064,7 +1068,16 @@
"toggles": {
"enableGlobal": "Enable Global Hotkey"
},
"title": "Hotkey Setting"
"title": "Hotkey Setting",
"functions": {
"rule": "Rule Mode",
"global": "Global Mode",
"openOrCloseDashboard": "Open/Close Dashboard",
"toggleSystemProxy": "Enable/Disable System Proxy",
"toggleTunMode": "Enable/Disable Tun Mode",
"entryLightweightMode": "Entry Lightweight Mode",
"direct": "Direct Mode"
}
},
"password": {
"prompts": {

View File

@@ -1,7 +1,4 @@
{
"Maximize": "Maximizar",
"Minimize": "Minimizar",
"Empty": "Vacío",
"Proxies": "Proxies",
"rule": "Regla",
"global": "Global",
@@ -65,13 +62,6 @@
"theme.light": "Light",
"theme.dark": "Dark",
"theme.system": "System",
"Copy Success": "Copia exitosa",
"open_or_close_dashboard": "Abrir/cerrar panel",
"clash_mode_rule": "Modo de reglas",
"clash_mode_global": "Modo global",
"toggle_system_proxy": "Activar/desactivar el proxy del sistema",
"toggle_tun_mode": "Activar/desactivar el modo TUN",
"entry_lightweight_mode": "Entrar en modo ligero",
"Exit": "Salir",
"Profile Imported Successfully": "Suscripción importada con éxito",
"Stopping Core...": "Deteniendo núcleo...",
@@ -80,8 +70,6 @@
"Uninstalling Service...": "Desinstalando servicio...",
"Service Installed Successfully": "Servicio instalado con éxito",
"Service Uninstalled Successfully": "Servicio desinstalado con éxito",
"Core Version Updated": "Versión del núcleo actualizada",
"Currently on the Latest Version": "Actualmente está en la última versión",
"Import Subscription Successful": "Suscripción importada con éxito",
"Profile": "Configuración",
"Dashboard": "Panel de control",
@@ -209,7 +197,12 @@
"trafficStatsDescription": "The traffic statistics component encountered an error and has been disabled to prevent crashes."
},
"states": {
"saving": "Saving..."
"saving": "Saving...",
"empty": "Vacío"
},
"window": {
"maximize": "Maximizar",
"minimize": "Minimizar"
}
},
"navigation": {
@@ -524,6 +517,16 @@
"clashMode": {
"errors": {
"communication": "Core communication error"
},
"labels": {
"rule": "Modo de reglas",
"global": "Modo global",
"direct": "Modo de conexión directa"
},
"descriptions": {
"rule": "Automatically choose proxies according to the rule set.",
"global": "Forward all network requests through the selected proxy.",
"direct": "Bypass the proxy and connect to the internet directly."
}
}
},
@@ -675,7 +678,8 @@
}
},
"notifications": {
"restartSuccess": "Núcleo de Clash reiniciado"
"restartSuccess": "Núcleo de Clash reiniciado",
"versionUpdated": "Versión del núcleo actualizada"
}
},
"liteMode": {
@@ -1064,7 +1068,16 @@
"toggles": {
"enableGlobal": "Habilitar atajos de teclado globales"
},
"title": "Configuración de atajos de teclado"
"title": "Configuración de atajos de teclado",
"functions": {
"rule": "Modo de reglas",
"global": "Modo global",
"openOrCloseDashboard": "Abrir/cerrar panel",
"toggleSystemProxy": "Activar/desactivar el proxy del sistema",
"toggleTunMode": "Activar/desactivar el modo TUN",
"entryLightweightMode": "Entrar en modo ligero",
"direct": "Modo de conexión directa"
}
},
"password": {
"prompts": {

View File

@@ -1,7 +1,4 @@
{
"Maximize": "بزرگ‌نمایی",
"Minimize": "کوچک‌نمایی",
"Empty": "خالی خالی",
"Proxies": "پراکسی‌ها",
"rule": "قانون",
"global": "جهانی",
@@ -65,13 +62,6 @@
"theme.light": "روشن",
"theme.dark": "تاریک",
"theme.system": "سیستم",
"Copy Success": "کپی با موفقیت انجام شد",
"open_or_close_dashboard": "باز/بستن داشبورد",
"clash_mode_rule": "حالت قانون",
"clash_mode_global": "حالت جهانی",
"toggle_system_proxy": "فعال/غیرفعال کردن پراکسی سیستم",
"toggle_tun_mode": "فعال/غیرفعال کردن حالت Tun",
"entry_lightweight_mode": "Entry Lightweight Mode",
"Exit": "خروج",
"Profile Imported Successfully": "پروفایل با موفقیت وارد شد",
"Stopping Core...": "Stopping Core...",
@@ -80,8 +70,6 @@
"Uninstalling Service...": "Uninstalling Service...",
"Service Installed Successfully": "سرویس با موفقیت نصب شد",
"Service Uninstalled Successfully": "سرویس با موفقیت حذف نصب شد",
"Core Version Updated": "نسخه هسته به‌روزرسانی شد",
"Currently on the Latest Version": "در حال حاضر در آخرین نسخه",
"Import Subscription Successful": "وارد کردن اشتراک با موفقیت انجام شد",
"Profile": "پروفایل",
"Dashboard": "داشبورد",
@@ -209,7 +197,12 @@
"trafficStatsDescription": "The traffic statistics component encountered an error and has been disabled to prevent crashes."
},
"states": {
"saving": "Saving..."
"saving": "Saving...",
"empty": "خالی خالی"
},
"window": {
"maximize": "بزرگ‌نمایی",
"minimize": "کوچک‌نمایی"
}
},
"navigation": {
@@ -524,6 +517,16 @@
"clashMode": {
"errors": {
"communication": "Core communication error"
},
"labels": {
"rule": "حالت قانون",
"global": "حالت جهانی",
"direct": "حالت مستقیم"
},
"descriptions": {
"rule": "Automatically choose proxies according to the rule set.",
"global": "Forward all network requests through the selected proxy.",
"direct": "Bypass the proxy and connect to the internet directly."
}
}
},
@@ -675,7 +678,8 @@
}
},
"notifications": {
"restartSuccess": "هسته Clash مجدداً راه‌اندازی شد"
"restartSuccess": "هسته Clash مجدداً راه‌اندازی شد",
"versionUpdated": "نسخه هسته به‌روزرسانی شد"
}
},
"liteMode": {
@@ -1064,7 +1068,16 @@
"toggles": {
"enableGlobal": "فعال کردن کلید میانبر سراسری"
},
"title": "تنظیمات کلیدهای میانبر"
"title": "تنظیمات کلیدهای میانبر",
"functions": {
"rule": "حالت قانون",
"global": "حالت جهانی",
"openOrCloseDashboard": "باز/بستن داشبورد",
"toggleSystemProxy": "فعال/غیرفعال کردن پراکسی سیستم",
"toggleTunMode": "فعال/غیرفعال کردن حالت Tun",
"entryLightweightMode": "Entry Lightweight Mode",
"direct": "حالت مستقیم"
}
},
"password": {
"prompts": {

View File

@@ -1,7 +1,4 @@
{
"Maximize": "Maksimalkan",
"Minimize": "Minimalkan",
"Empty": "Kosong",
"Proxies": "Proksi",
"rule": "aturan",
"global": "global",
@@ -65,13 +62,6 @@
"theme.light": "Terang",
"theme.dark": "Gelap",
"theme.system": "Sistem",
"Copy Success": "Salin Berhasil",
"open_or_close_dashboard": "Buka/Tutup Dasbor",
"clash_mode_rule": "Mode Aturan",
"clash_mode_global": "Mode Global",
"toggle_system_proxy": "Aktifkan/Nonaktifkan Proksi Sistem",
"toggle_tun_mode": "Aktifkan/Nonaktifkan Mode Tun",
"entry_lightweight_mode": "Entry Lightweight Mode",
"Exit": "Keluar",
"Profile Imported Successfully": "Profil Berhasil Diimpor",
"Stopping Core...": "Stopping Core...",
@@ -80,8 +70,6 @@
"Uninstalling Service...": "Uninstalling Service...",
"Service Installed Successfully": "Layanan Berhasil Diinstal",
"Service Uninstalled Successfully": "Layanan Berhasil Dicopot",
"Core Version Updated": "Versi Core Diperbarui",
"Currently on the Latest Version": "Saat ini pada Versi Terbaru",
"Import Subscription Successful": "Berlangganan Berhasil Diimpor",
"Profile": "Profil",
"Dashboard": "Dasbor",
@@ -209,7 +197,12 @@
"trafficStatsDescription": "The traffic statistics component encountered an error and has been disabled to prevent crashes."
},
"states": {
"saving": "Saving..."
"saving": "Saving...",
"empty": "Kosong"
},
"window": {
"maximize": "Maksimalkan",
"minimize": "Minimalkan"
}
},
"navigation": {
@@ -524,6 +517,16 @@
"clashMode": {
"errors": {
"communication": "Core communication error"
},
"labels": {
"rule": "Mode Aturan",
"global": "Mode Global",
"direct": "Mode Langsung"
},
"descriptions": {
"rule": "Automatically choose proxies according to the rule set.",
"global": "Forward all network requests through the selected proxy.",
"direct": "Bypass the proxy and connect to the internet directly."
}
}
},
@@ -675,7 +678,8 @@
}
},
"notifications": {
"restartSuccess": "Core Clash Dimulai Ulang"
"restartSuccess": "Core Clash Dimulai Ulang",
"versionUpdated": "Versi Core Diperbarui"
}
},
"liteMode": {
@@ -1064,7 +1068,16 @@
"toggles": {
"enableGlobal": "Aktifkan Hotkey Global"
},
"title": "Pengaturan Pintasan"
"title": "Pengaturan Pintasan",
"functions": {
"rule": "Mode Aturan",
"global": "Mode Global",
"openOrCloseDashboard": "Buka/Tutup Dasbor",
"toggleSystemProxy": "Aktifkan/Nonaktifkan Proksi Sistem",
"toggleTunMode": "Aktifkan/Nonaktifkan Mode Tun",
"entryLightweightMode": "Entry Lightweight Mode",
"direct": "Mode Langsung"
}
},
"password": {
"prompts": {

View File

@@ -1,7 +1,4 @@
{
"Maximize": "最大化",
"Minimize": "最小化",
"Empty": "空っぽ",
"Proxies": "Proxies",
"rule": "ルール",
"global": "グローバル",
@@ -65,13 +62,6 @@
"theme.light": "ライト",
"theme.dark": "ダーク",
"theme.system": "システム",
"Copy Success": "コピー成功",
"open_or_close_dashboard": "ダッシュボードを開く/閉じる",
"clash_mode_rule": "ルールモード",
"clash_mode_global": "グローバルモード",
"toggle_system_proxy": "システムプロキシを開く/閉じる",
"toggle_tun_mode": "TUNモードを開く/閉じる",
"entry_lightweight_mode": "軽量モードに入る",
"Exit": "終了",
"Profile Imported Successfully": "プロファイルのインポートに成功しました。",
"Stopping Core...": "コアを停止中...",
@@ -80,8 +70,6 @@
"Uninstalling Service...": "サービスをアンインストール中...",
"Service Installed Successfully": "サービスのインストールに成功しました。",
"Service Uninstalled Successfully": "サービスのアンインストールに成功しました。",
"Core Version Updated": "コアバージョンが更新されました。",
"Currently on the Latest Version": "現在は最新バージョンです。",
"Import Subscription Successful": "サブスクリプションのインポートに成功しました。",
"Profile": "プロファイル",
"Dashboard": "ダッシュボード",
@@ -209,7 +197,12 @@
"trafficStatsDescription": "The traffic statistics component encountered an error and has been disabled to prevent crashes."
},
"states": {
"saving": "Saving..."
"saving": "Saving...",
"empty": "空っぽ"
},
"window": {
"maximize": "最大化",
"minimize": "最小化"
}
},
"navigation": {
@@ -524,6 +517,16 @@
"clashMode": {
"errors": {
"communication": "Core communication error"
},
"labels": {
"rule": "ルールモード",
"global": "グローバルモード",
"direct": "直接接続モード"
},
"descriptions": {
"rule": "Automatically choose proxies according to the rule set.",
"global": "Forward all network requests through the selected proxy.",
"direct": "Bypass the proxy and connect to the internet directly."
}
}
},
@@ -675,7 +678,8 @@
}
},
"notifications": {
"restartSuccess": "Clashコアが再起動されました。"
"restartSuccess": "Clashコアが再起動されました。",
"versionUpdated": "コアバージョンが更新されました。"
}
},
"liteMode": {
@@ -1064,7 +1068,16 @@
"toggles": {
"enableGlobal": "グローバルホットキーを有効にする"
},
"title": "ホットキー設定"
"title": "ホットキー設定",
"functions": {
"rule": "ルールモード",
"global": "グローバルモード",
"openOrCloseDashboard": "ダッシュボードを開く/閉じる",
"toggleSystemProxy": "システムプロキシを開く/閉じる",
"toggleTunMode": "TUNモードを開く/閉じる",
"entryLightweightMode": "軽量モードに入る",
"direct": "直接接続モード"
}
},
"password": {
"prompts": {

View File

@@ -1,7 +1,4 @@
{
"Maximize": "최대화",
"Minimize": "최소화",
"Empty": "비어있음",
"Proxies": "프록시",
"rule": "규칙",
"global": "전역",
@@ -65,13 +62,6 @@
"theme.light": "Light",
"theme.dark": "Dark",
"theme.system": "System",
"Copy Success": "복사 성공",
"open_or_close_dashboard": "Open/Close Dashboard",
"clash_mode_rule": "Rule Mode",
"clash_mode_global": "Global Mode",
"toggle_system_proxy": "Enable/Disable System Proxy",
"toggle_tun_mode": "Enable/Disable Tun Mode",
"entry_lightweight_mode": "Entry Lightweight Mode",
"Exit": "Exit",
"Profile Imported Successfully": "Profile Imported Successfully",
"Stopping Core...": "Stopping Core...",
@@ -80,8 +70,6 @@
"Uninstalling Service...": "Uninstalling Service...",
"Service Installed Successfully": "Service Installed Successfully",
"Service Uninstalled Successfully": "Service Uninstalled Successfully",
"Core Version Updated": "Core Version Updated",
"Currently on the Latest Version": "Currently on the Latest Version",
"Import Subscription Successful": "구독 가져오기 성공",
"Profile": "Profile",
"Dashboard": "Dashboard",
@@ -209,7 +197,12 @@
"trafficStatsDescription": "The traffic statistics component encountered an error and has been disabled to prevent crashes."
},
"states": {
"saving": "Saving..."
"saving": "Saving...",
"empty": "비어있음"
},
"window": {
"maximize": "최대화",
"minimize": "최소화"
}
},
"navigation": {
@@ -524,6 +517,16 @@
"clashMode": {
"errors": {
"communication": "Core communication error"
},
"labels": {
"rule": "Rule Mode",
"global": "Global Mode",
"direct": "Direct Mode"
},
"descriptions": {
"rule": "Automatically choose proxies according to the rule set.",
"global": "Forward all network requests through the selected proxy.",
"direct": "Bypass the proxy and connect to the internet directly."
}
}
},
@@ -675,7 +678,8 @@
}
},
"notifications": {
"restartSuccess": "Clash Core Restarted"
"restartSuccess": "Clash Core Restarted",
"versionUpdated": "Core Version Updated"
}
},
"liteMode": {
@@ -1064,7 +1068,16 @@
"toggles": {
"enableGlobal": "Enable Global Hotkey"
},
"title": "단축키 설정"
"title": "단축키 설정",
"functions": {
"rule": "Rule Mode",
"global": "Global Mode",
"openOrCloseDashboard": "Open/Close Dashboard",
"toggleSystemProxy": "Enable/Disable System Proxy",
"toggleTunMode": "Enable/Disable Tun Mode",
"entryLightweightMode": "Entry Lightweight Mode",
"direct": "Direct Mode"
}
},
"password": {
"prompts": {

View File

@@ -1,7 +1,4 @@
{
"Maximize": "Развернуть",
"Minimize": "Свернуть",
"Empty": "Пусто",
"Proxies": "Прокси",
"rule": "правила",
"global": "глобальный",
@@ -65,13 +62,6 @@
"theme.light": "Светлая",
"theme.dark": "Тёмная",
"theme.system": "Системная",
"Copy Success": "Скопировано",
"open_or_close_dashboard": "Открыть/Закрыть панель управления",
"clash_mode_rule": "Режим правил",
"clash_mode_global": "Глобальный режим",
"toggle_system_proxy": "Включить/Отключить системный прокси",
"toggle_tun_mode": "Включить/Отключить режим TUN",
"entry_lightweight_mode": "Вход в LightWeight Mode",
"Exit": "Выход",
"Profile Imported Successfully": "Профиль успешно импортирован",
"Stopping Core...": "Stopping Core...",
@@ -80,8 +70,6 @@
"Uninstalling Service...": "Uninstalling Service...",
"Service Installed Successfully": "Служба успешно установлена",
"Service Uninstalled Successfully": "Служба успешно удалена",
"Core Version Updated": "Ядро обновлено до последней версии",
"Currently on the Latest Version": "Обновление не требуется",
"Import Subscription Successful": "Подписка успешно импортирована",
"Profile": "Профиль",
"Dashboard": "Панель управления",
@@ -209,7 +197,12 @@
"trafficStatsDescription": "The traffic statistics component encountered an error and has been disabled to prevent crashes."
},
"states": {
"saving": "Saving..."
"saving": "Saving...",
"empty": "Пусто"
},
"window": {
"maximize": "Развернуть",
"minimize": "Свернуть"
}
},
"navigation": {
@@ -524,6 +517,16 @@
"clashMode": {
"errors": {
"communication": "Core communication error"
},
"labels": {
"rule": "Режим правил",
"global": "Глобальный режим",
"direct": "Прямой режим"
},
"descriptions": {
"rule": "Automatically choose proxies according to the rule set.",
"global": "Forward all network requests through the selected proxy.",
"direct": "Bypass the proxy and connect to the internet directly."
}
}
},
@@ -675,7 +678,8 @@
}
},
"notifications": {
"restartSuccess": "Ядро перезапущено"
"restartSuccess": "Ядро перезапущено",
"versionUpdated": "Ядро обновлено до последней версии"
}
},
"liteMode": {
@@ -1064,7 +1068,16 @@
"toggles": {
"enableGlobal": "Включить глобальную горячую клавишу"
},
"title": "Настройки сочетаний клавиш"
"title": "Настройки сочетаний клавиш",
"functions": {
"rule": "Режим правил",
"global": "Глобальный режим",
"openOrCloseDashboard": "Открыть/Закрыть панель управления",
"toggleSystemProxy": "Включить/Отключить системный прокси",
"toggleTunMode": "Включить/Отключить режим TUN",
"entryLightweightMode": "Вход в LightWeight Mode",
"direct": "Прямой режим"
}
},
"password": {
"prompts": {

View File

@@ -1,7 +1,4 @@
{
"Maximize": "Büyüt",
"Minimize": "Küçült",
"Empty": "Boş",
"Proxies": "Vekil'ler",
"rule": "kural",
"global": "küresel",
@@ -65,13 +62,6 @@
"theme.light": "Açık",
"theme.dark": "Koyu",
"theme.system": "Sistem",
"Copy Success": "Kopyalama Başarılı",
"open_or_close_dashboard": "Kontrol Panelini Aç/Kapat",
"clash_mode_rule": "Kural Modu",
"clash_mode_global": "Küresel Mod",
"toggle_system_proxy": "Sistem Vekil'ini Etkinleştir/Devre Dışı Bırak",
"toggle_tun_mode": "Tun Modunu Etkinleştir/Devre Dışı Bırak",
"entry_lightweight_mode": "Hafif Moda Gir",
"Exit": ıkış",
"Profile Imported Successfully": "Profil Başarıyla İçe Aktarıldı",
"Stopping Core...": "Stopping Core...",
@@ -80,8 +70,6 @@
"Uninstalling Service...": "Uninstalling Service...",
"Service Installed Successfully": "Hizmet Başarıyla Kuruldu",
"Service Uninstalled Successfully": "Hizmet Başarıyla Kaldırıldı",
"Core Version Updated": "Çekirdek Sürümü Güncellendi",
"Currently on the Latest Version": "Şu Anda En Son Sürümdesiniz",
"Import Subscription Successful": "Abonelik içe aktarımı başarılı",
"Profile": "Profil",
"Dashboard": "Kontrol Paneli",
@@ -209,7 +197,12 @@
"trafficStatsDescription": "The traffic statistics component encountered an error and has been disabled to prevent crashes."
},
"states": {
"saving": "Saving..."
"saving": "Saving...",
"empty": "Boş"
},
"window": {
"maximize": "Büyüt",
"minimize": "Küçült"
}
},
"navigation": {
@@ -524,6 +517,16 @@
"clashMode": {
"errors": {
"communication": "Core communication error"
},
"labels": {
"rule": "Kural Modu",
"global": "Küresel Mod",
"direct": "Doğrudan Mod"
},
"descriptions": {
"rule": "Automatically choose proxies according to the rule set.",
"global": "Forward all network requests through the selected proxy.",
"direct": "Bypass the proxy and connect to the internet directly."
}
}
},
@@ -675,7 +678,8 @@
}
},
"notifications": {
"restartSuccess": "Clash Çekirdeği Yeniden Başlatıldı"
"restartSuccess": "Clash Çekirdeği Yeniden Başlatıldı",
"versionUpdated": "Çekirdek Sürümü Güncellendi"
}
},
"liteMode": {
@@ -1064,7 +1068,16 @@
"toggles": {
"enableGlobal": "Küresel Kısayol Tuşunu Etkinleştir"
},
"title": "Kısayol Tuşu Ayarı"
"title": "Kısayol Tuşu Ayarı",
"functions": {
"rule": "Kural Modu",
"global": "Küresel Mod",
"openOrCloseDashboard": "Kontrol Panelini Aç/Kapat",
"toggleSystemProxy": "Sistem Vekil'ini Etkinleştir/Devre Dışı Bırak",
"toggleTunMode": "Tun Modunu Etkinleştir/Devre Dışı Bırak",
"entryLightweightMode": "Hafif Moda Gir",
"direct": "Doğrudan Mod"
}
},
"password": {
"prompts": {

View File

@@ -1,7 +1,4 @@
{
"Maximize": "Зурайту",
"Minimize": "Кечерәйтү",
"Empty": "Буш",
"Proxies": "Прокси",
"rule": "кагыйдә",
"global": "глобаль",
@@ -65,13 +62,6 @@
"theme.light": "Якты",
"theme.dark": "Караңгы",
"theme.system": "Система",
"Copy Success": "Күчерелде",
"open_or_close_dashboard": "Панельне ачу/ябу",
"clash_mode_rule": "Кагыйдәләр режимы",
"clash_mode_global": "Глобаль режим",
"toggle_system_proxy": "Системалы проксины кабызу/сүндерү",
"toggle_tun_mode": "Tun режимын кабызу/сүндерү",
"entry_lightweight_mode": "Entry Lightweight Mode",
"Exit": "Чыгу",
"Profile Imported Successfully": "Профиль уңышлы импортланды",
"Stopping Core...": "Stopping Core...",
@@ -80,8 +70,6 @@
"Uninstalling Service...": "Uninstalling Service...",
"Service Installed Successfully": "Сервис уңышлы урнаштырылды",
"Service Uninstalled Successfully": "Сервис уңышлы салдырылды",
"Core Version Updated": "Ядро версиясе яңартылды",
"Currently on the Latest Version": "Сездә иң соңгы версия урнаштырылган",
"Import Subscription Successful": "Import subscription successful",
"Profile": "Профиль",
"Dashboard": "Панель",
@@ -209,7 +197,12 @@
"trafficStatsDescription": "The traffic statistics component encountered an error and has been disabled to prevent crashes."
},
"states": {
"saving": "Saving..."
"saving": "Saving...",
"empty": "Буш"
},
"window": {
"maximize": "Зурайту",
"minimize": "Кечерәйтү"
}
},
"navigation": {
@@ -524,6 +517,16 @@
"clashMode": {
"errors": {
"communication": "Core communication error"
},
"labels": {
"rule": "Кагыйдәләр режимы",
"global": "Глобаль режим",
"direct": "Туры режим"
},
"descriptions": {
"rule": "Automatically choose proxies according to the rule set.",
"global": "Forward all network requests through the selected proxy.",
"direct": "Bypass the proxy and connect to the internet directly."
}
}
},
@@ -675,7 +678,8 @@
}
},
"notifications": {
"restartSuccess": "Clash ядросы яңадан башланды"
"restartSuccess": "Clash ядросы яңадан башланды",
"versionUpdated": "Ядро версиясе яңартылды"
}
},
"liteMode": {
@@ -1064,7 +1068,16 @@
"toggles": {
"enableGlobal": "Глобаль Хоткейны кушу"
},
"title": "Клавиатура төймәләре (hotkey) көйләүләре"
"title": "Клавиатура төймәләре (hotkey) көйләүләре",
"functions": {
"rule": "Кагыйдәләр режимы",
"global": "Глобаль режим",
"openOrCloseDashboard": "Панельне ачу/ябу",
"toggleSystemProxy": "Системалы проксины кабызу/сүндерү",
"toggleTunMode": "Tun режимын кабызу/сүндерү",
"entryLightweightMode": "Entry Lightweight Mode",
"direct": "Туры режим"
}
},
"password": {
"prompts": {

View File

@@ -1,7 +1,4 @@
{
"Maximize": "最大化",
"Minimize": "最小化",
"Empty": "空空如也",
"Proxies": "代理",
"rule": "规则",
"global": "全局",
@@ -65,13 +62,6 @@
"theme.light": "浅色",
"theme.dark": "深色",
"theme.system": "系统",
"Copy Success": "复制成功",
"open_or_close_dashboard": "打开/关闭面板",
"clash_mode_rule": "规则模式",
"clash_mode_global": "全局模式",
"toggle_system_proxy": "打开/关闭系统代理",
"toggle_tun_mode": "打开/关闭 TUN 模式",
"entry_lightweight_mode": "进入轻量模式",
"Exit": "退出",
"Profile Imported Successfully": "导入订阅成功",
"Stopping Core...": "停止内核中...",
@@ -80,8 +70,6 @@
"Uninstalling Service...": "卸载服务中...",
"Service Installed Successfully": "已成功安装服务",
"Service Uninstalled Successfully": "已成功卸载服务",
"Core Version Updated": "内核版本已更新",
"Currently on the Latest Version": "当前已是最新版本",
"Import Subscription Successful": "导入订阅成功",
"Profile": "配置",
"Dashboard": "仪表板",
@@ -209,7 +197,12 @@
"trafficStatsDescription": "流量统计组件发生错误,为防止崩溃已暂时停用。"
},
"states": {
"saving": "保存中..."
"saving": "保存中...",
"empty": "空空如也"
},
"window": {
"maximize": "最大化",
"minimize": "最小化"
}
},
"navigation": {
@@ -524,6 +517,16 @@
"clashMode": {
"errors": {
"communication": "内核通信错误"
},
"labels": {
"rule": "规则模式",
"global": "全局模式",
"direct": "直连模式"
},
"descriptions": {
"rule": "按照规则自动选择代理。",
"global": "将所有网络请求转发到选定的代理。",
"direct": "绕过代理,直接连接互联网。"
}
}
},
@@ -675,7 +678,8 @@
}
},
"notifications": {
"restartSuccess": "已重启 Clash 内核"
"restartSuccess": "已重启 Clash 内核",
"versionUpdated": "内核版本已更新"
}
},
"liteMode": {
@@ -1064,7 +1068,16 @@
"toggles": {
"enableGlobal": "启用全局热键"
},
"title": "热键设置"
"title": "热键设置",
"functions": {
"rule": "规则模式",
"global": "全局模式",
"openOrCloseDashboard": "打开/关闭面板",
"toggleSystemProxy": "打开/关闭系统代理",
"toggleTunMode": "打开/关闭 TUN 模式",
"entryLightweightMode": "进入轻量模式",
"direct": "直连模式"
}
},
"password": {
"prompts": {

View File

@@ -1,7 +1,4 @@
{
"Maximize": "最大化",
"Minimize": "最小化",
"Empty": "空空如也",
"Proxies": "代理",
"rule": "規則",
"global": "全域",
@@ -65,13 +62,6 @@
"theme.light": "淺色",
"theme.dark": "深色",
"theme.system": "系統",
"Copy Success": "複製成功",
"open_or_close_dashboard": "開啟/關閉儀表板",
"clash_mode_rule": "規則模式",
"clash_mode_global": "全域模式",
"toggle_system_proxy": "開啟/關閉系統代理",
"toggle_tun_mode": "開啟/關閉 虛擬網路介面卡模式",
"entry_lightweight_mode": "進入輕量模式",
"Exit": "離開",
"Profile Imported Successfully": "匯入設定檔成功",
"Stopping Core...": "內核停止中...",
@@ -80,8 +70,6 @@
"Uninstalling Service...": "服務解除安裝中...",
"Service Installed Successfully": "已成功安裝服務",
"Service Uninstalled Successfully": "已成功解除安裝服務",
"Core Version Updated": "內核版本已更新",
"Currently on the Latest Version": "目前已是最新版本",
"Import Subscription Successful": "匯入訂閱成功",
"Profile": "配置",
"Dashboard": "儀表板",
@@ -209,7 +197,12 @@
"trafficStatsDescription": "流量統計元件發生錯誤,已停用以避免當機。"
},
"states": {
"saving": "儲存中..."
"saving": "儲存中...",
"empty": "空空如也"
},
"window": {
"maximize": "最大化",
"minimize": "最小化"
}
},
"navigation": {
@@ -524,6 +517,16 @@
"clashMode": {
"errors": {
"communication": "內核通信錯誤"
},
"labels": {
"rule": "規則模式",
"global": "全域模式",
"direct": "直連模式"
},
"descriptions": {
"rule": "依照規則自動選擇代理。",
"global": "將所有網路請求轉送至所選代理。",
"direct": "略過代理,直接連線至網際網路。"
}
}
},
@@ -675,7 +678,8 @@
}
},
"notifications": {
"restartSuccess": "已重啟 Clash 內核"
"restartSuccess": "已重啟 Clash 內核",
"versionUpdated": "內核版本已更新"
}
},
"liteMode": {
@@ -1064,7 +1068,16 @@
"toggles": {
"enableGlobal": "啟用全域快速鍵"
},
"title": "快速鍵設定"
"title": "快速鍵設定",
"functions": {
"rule": "規則模式",
"global": "全域模式",
"openOrCloseDashboard": "開啟/關閉儀表板",
"toggleSystemProxy": "開啟/關閉系統代理",
"toggleTunMode": "開啟/關閉 虛擬網路介面卡模式",
"entryLightweightMode": "進入輕量模式",
"direct": "直連模式"
}
},
"password": {
"prompts": {

View File

@@ -282,7 +282,7 @@ const UnlockPage = () => {
height: "50%",
}}
>
<BaseEmpty text={t("unlock.page.empty")} />
<BaseEmpty textKey="unlock.page.empty" />
</Box>
) : (
<Grid container spacing={1.5} columns={{ xs: 1, sm: 2, md: 3 }}>