test(i18n,sub): clear the three standing vitest reds (item 10)
- i18n dead keys: drop 13 keys with no reference left (pages.xray.routeTester*
from the P9 feature removal, tgbot.online superseded by tgbot.messages.online,
tgbot.commands.restartSuccess/restartFailed from the rewritten restart handler)
- i18n key sets: add the P9 forwarding block (20 keys) to the 11 locales that
missed it, as English placeholders per repo convention; all 13 locales now
carry identical key sets
- subscription port test: the case predated P7 — clearing the port field is the
explicit subPort 0 (no port in generated links) opt-in via onNumber onClear,
so assert updateSetting is called with { subPort: 0 } instead of never called
No component code, UI behavior, or styles touched.
This commit is contained in:
@@ -17,7 +17,12 @@ function LocationProbe() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
describe('SubscriptionGeneralTab', () => {
|
describe('SubscriptionGeneralTab', () => {
|
||||||
it('keeps the stored subscription port when the field is cleared', () => {
|
// P7 made the subscription port optional: clearing the field applies
|
||||||
|
// subPort 0, the explicit "no port in generated links" setting (the sub
|
||||||
|
// server keeps binding the default port). This field opts out of the
|
||||||
|
// shared keep-stored-value-on-clear semantic via onNumber's onClear —
|
||||||
|
// see utils/onNumber.ts and SettingService.BuildSubURIBase.
|
||||||
|
it('applies subPort 0 (no port in generated links) when the field is cleared', () => {
|
||||||
const updateSetting = vi.fn();
|
const updateSetting = vi.fn();
|
||||||
|
|
||||||
renderWithProviders(
|
renderWithProviders(
|
||||||
@@ -33,8 +38,7 @@ describe('SubscriptionGeneralTab', () => {
|
|||||||
fireEvent.change(portInput, { target: { value: '' } });
|
fireEvent.change(portInput, { target: { value: '' } });
|
||||||
fireEvent.blur(portInput);
|
fireEvent.blur(portInput);
|
||||||
|
|
||||||
expect(updateSetting).not.toHaveBeenCalled();
|
expect(updateSetting).toHaveBeenCalledWith({ subPort: 0 });
|
||||||
expect((portInput as HTMLInputElement).value).toBe('2096');
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('forwards typed subscription ports unchanged', () => {
|
it('forwards typed subscription ports unchanged', () => {
|
||||||
|
|||||||
@@ -282,6 +282,28 @@
|
|||||||
"streamTab": "تدفق",
|
"streamTab": "تدفق",
|
||||||
"securityTab": "الأمان",
|
"securityTab": "الأمان",
|
||||||
"sniffingTab": "تنصت",
|
"sniffingTab": "تنصت",
|
||||||
|
"forwardingTab": "Forwarding",
|
||||||
|
"forwarding": {
|
||||||
|
"mode": "Forwarding",
|
||||||
|
"direct": "Direct",
|
||||||
|
"forward": "Forward (entry → exit)",
|
||||||
|
"landing": "Landing",
|
||||||
|
"managed": "Managed landing",
|
||||||
|
"manual": "Manual endpoint",
|
||||||
|
"target": "Landing inbound",
|
||||||
|
"targetPlaceholder": "Pick a SOCKS (mixed) inbound",
|
||||||
|
"targetDisabled": "disabled",
|
||||||
|
"address": "Landing address",
|
||||||
|
"port": "Exit port",
|
||||||
|
"protocol": "Entry → exit protocol",
|
||||||
|
"username": "SOCKS5 username",
|
||||||
|
"password": "Landing password",
|
||||||
|
"importLink": "Import from link",
|
||||||
|
"importPlaceholder": "socks5://user:pass@host:port",
|
||||||
|
"importApply": "Import",
|
||||||
|
"importFailed": "Could not parse that link",
|
||||||
|
"help": "Applies when this inbound is deployed to an agent node: on every config pull the panel compiles this forwarding into a dedicated outbound plus a routing rule for that agent. A managed landing's address and credentials are resolved from the chosen inbound at build time."
|
||||||
|
},
|
||||||
"sniffingMetadataOnly": "البيانات الوصفية فقط",
|
"sniffingMetadataOnly": "البيانات الوصفية فقط",
|
||||||
"sniffingRouteOnly": "التوجيه فقط",
|
"sniffingRouteOnly": "التوجيه فقط",
|
||||||
"sniffingIpsExcluded": "IP المستثناة",
|
"sniffingIpsExcluded": "IP المستثناة",
|
||||||
@@ -1251,16 +1273,6 @@
|
|||||||
"Balancers": "موازنات التحميل",
|
"Balancers": "موازنات التحميل",
|
||||||
"balancerTagRequired": "الوسم مطلوب",
|
"balancerTagRequired": "الوسم مطلوب",
|
||||||
"balancerSelectorRequired": "اختر صادراً واحداً على الأقل",
|
"balancerSelectorRequired": "اختر صادراً واحداً على الأقل",
|
||||||
"routeTester": "اختبار المسار",
|
|
||||||
"routeTesterDesc": "اسأل Xray الشغال أي صادر هيتعامل مع الاتصال ده. مفيش ترافيك بيتبعت — القرار بييجي مباشرة من محرك التوجيه الحي.",
|
|
||||||
"routeTesterDest": "نطاق أو IP",
|
|
||||||
"routeTesterPort": "المنفذ",
|
|
||||||
"routeTesterInbound": "الوارد",
|
|
||||||
"routeTesterProtocol": "البروتوكول المكتشف",
|
|
||||||
"routeTesterTest": "اختبر المسار",
|
|
||||||
"routeTesterMatchedOutbound": "الصادر المطابق",
|
|
||||||
"routeTesterViaBalancer": "عبر موازن التحميل",
|
|
||||||
"routeTesterDefaultOutbound": "ما في قاعدة توجيه اتطابقت — الترافيك رايح للصادر الافتراضي (الأول).",
|
|
||||||
"Routings": "قواعد التوجيه",
|
"Routings": "قواعد التوجيه",
|
||||||
"logLevel": "مستوى السجلات",
|
"logLevel": "مستوى السجلات",
|
||||||
"logLevelDesc": "مستوى السجل الخاص بالأخطاء، اللي بيوضح المعلومات المطلوبة للتسجيل.",
|
"logLevelDesc": "مستوى السجل الخاص بالأخطاء، اللي بيوضح المعلومات المطلوبة للتسجيل.",
|
||||||
@@ -1717,7 +1729,6 @@
|
|||||||
"inbounds": "الواردات",
|
"inbounds": "الواردات",
|
||||||
"clients": "العملاء",
|
"clients": "العملاء",
|
||||||
"offline": "🔴 غير متصل",
|
"offline": "🔴 غير متصل",
|
||||||
"online": "🟢 متصل",
|
|
||||||
"commands": {
|
"commands": {
|
||||||
"unknown": "❗ أمر مش معروف.",
|
"unknown": "❗ أمر مش معروف.",
|
||||||
"pleaseChoose": "👇 من فضلك اختار:\r\n",
|
"pleaseChoose": "👇 من فضلك اختار:\r\n",
|
||||||
@@ -1730,8 +1741,6 @@
|
|||||||
"helpAdminCommands": "عشان تعيد تشغيل Xray Core:\r\n<code>/restart</code>\r\n\r\nعشان تدور على إيميل عميل:\r\n<code>/usage [Email]</code>\r\n\r\nعشان تدور على إدخالات (مع إحصائيات العملاء):\r\n<code>/inbound [Remark]</code>\r\n\r\nID شات Telegram:\r\n<code>/id</code>",
|
"helpAdminCommands": "عشان تعيد تشغيل Xray Core:\r\n<code>/restart</code>\r\n\r\nعشان تدور على إيميل عميل:\r\n<code>/usage [Email]</code>\r\n\r\nعشان تدور على إدخالات (مع إحصائيات العملاء):\r\n<code>/inbound [Remark]</code>\r\n\r\nID شات Telegram:\r\n<code>/id</code>",
|
||||||
"helpClientCommands": "عشان تدور على الإحصائيات، استخدم الأمر ده:\r\n\r\n<code>/usage [Email]</code>\r\n\r\nID شات Telegram:\r\n<code>/id</code>",
|
"helpClientCommands": "عشان تدور على الإحصائيات، استخدم الأمر ده:\r\n\r\n<code>/usage [Email]</code>\r\n\r\nID شات Telegram:\r\n<code>/id</code>",
|
||||||
"restartUsage": "\r\n\r\n<code>/restart</code>",
|
"restartUsage": "\r\n\r\n<code>/restart</code>",
|
||||||
"restartSuccess": "✅ العملية نجحت!",
|
|
||||||
"restartFailed": "❗ حصل خطأ في العملية.\r\n\r\n<code>Error: {{ .Error }}</code>.",
|
|
||||||
"xrayNotRunning": "❗ Xray Core مش شغال.",
|
"xrayNotRunning": "❗ Xray Core مش شغال.",
|
||||||
"startDesc": "عرض القائمة الرئيسية",
|
"startDesc": "عرض القائمة الرئيسية",
|
||||||
"helpDesc": "مساعدة البوت",
|
"helpDesc": "مساعدة البوت",
|
||||||
|
|||||||
@@ -1383,16 +1383,6 @@
|
|||||||
"Balancers": "Balancers",
|
"Balancers": "Balancers",
|
||||||
"balancerTagRequired": "Tag is required",
|
"balancerTagRequired": "Tag is required",
|
||||||
"balancerSelectorRequired": "Pick at least one outbound",
|
"balancerSelectorRequired": "Pick at least one outbound",
|
||||||
"routeTester": "Route Tester",
|
|
||||||
"routeTesterDesc": "Ask the running Xray which outbound would handle a connection. No traffic is sent — the decision comes straight from the live routing engine.",
|
|
||||||
"routeTesterDest": "Domain or IP",
|
|
||||||
"routeTesterPort": "Port",
|
|
||||||
"routeTesterInbound": "Inbound",
|
|
||||||
"routeTesterProtocol": "Sniffed protocol",
|
|
||||||
"routeTesterTest": "Test Route",
|
|
||||||
"routeTesterMatchedOutbound": "Matched outbound",
|
|
||||||
"routeTesterViaBalancer": "via balancer",
|
|
||||||
"routeTesterDefaultOutbound": "No routing rule matched — traffic goes to the default (first) outbound.",
|
|
||||||
"Routings": "Routing Rules",
|
"Routings": "Routing Rules",
|
||||||
"importRules": "Import Rules",
|
"importRules": "Import Rules",
|
||||||
"exportRules": "Export Rules",
|
"exportRules": "Export Rules",
|
||||||
@@ -1739,7 +1729,6 @@
|
|||||||
"inbounds": "Inbounds",
|
"inbounds": "Inbounds",
|
||||||
"clients": "Clients",
|
"clients": "Clients",
|
||||||
"offline": "🔴 Offline",
|
"offline": "🔴 Offline",
|
||||||
"online": "🟢 Online",
|
|
||||||
"commands": {
|
"commands": {
|
||||||
"unknown": "❗ Unknown command.",
|
"unknown": "❗ Unknown command.",
|
||||||
"pleaseChoose": "👇 Please choose:\r\n",
|
"pleaseChoose": "👇 Please choose:\r\n",
|
||||||
@@ -1752,8 +1741,6 @@
|
|||||||
"helpAdminCommands": "To restart Xray Core:\r\n<code>/restart</code>\r\n\r\nTo search for a client email:\r\n<code>/usage [Email]</code>\r\n\r\nTo search for inbounds (with client stats):\r\n<code>/inbound [Remark]</code>\r\n\r\nTelegram Chat ID:\r\n<code>/id</code>",
|
"helpAdminCommands": "To restart Xray Core:\r\n<code>/restart</code>\r\n\r\nTo search for a client email:\r\n<code>/usage [Email]</code>\r\n\r\nTo search for inbounds (with client stats):\r\n<code>/inbound [Remark]</code>\r\n\r\nTelegram Chat ID:\r\n<code>/id</code>",
|
||||||
"helpClientCommands": "To search for statistics, use the following command:\r\n\r\n<code>/usage [Email]</code>\r\n\r\nTelegram Chat ID:\r\n<code>/id</code>",
|
"helpClientCommands": "To search for statistics, use the following command:\r\n\r\n<code>/usage [Email]</code>\r\n\r\nTelegram Chat ID:\r\n<code>/id</code>",
|
||||||
"restartUsage": "\r\n\r\n<code>/restart</code>",
|
"restartUsage": "\r\n\r\n<code>/restart</code>",
|
||||||
"restartSuccess": "✅ Operation successful!",
|
|
||||||
"restartFailed": "❗ Error in operation.\r\n\r\n<code>Error: {{ .Error }}</code>.",
|
|
||||||
"xrayNotRunning": "❗ Xray Core is not running.",
|
"xrayNotRunning": "❗ Xray Core is not running.",
|
||||||
"startDesc": "Show the main menu",
|
"startDesc": "Show the main menu",
|
||||||
"helpDesc": "Bot help",
|
"helpDesc": "Bot help",
|
||||||
|
|||||||
@@ -282,6 +282,28 @@
|
|||||||
"streamTab": "Transmisión",
|
"streamTab": "Transmisión",
|
||||||
"securityTab": "Seguridad",
|
"securityTab": "Seguridad",
|
||||||
"sniffingTab": "Inspección",
|
"sniffingTab": "Inspección",
|
||||||
|
"forwardingTab": "Forwarding",
|
||||||
|
"forwarding": {
|
||||||
|
"mode": "Forwarding",
|
||||||
|
"direct": "Direct",
|
||||||
|
"forward": "Forward (entry → exit)",
|
||||||
|
"landing": "Landing",
|
||||||
|
"managed": "Managed landing",
|
||||||
|
"manual": "Manual endpoint",
|
||||||
|
"target": "Landing inbound",
|
||||||
|
"targetPlaceholder": "Pick a SOCKS (mixed) inbound",
|
||||||
|
"targetDisabled": "disabled",
|
||||||
|
"address": "Landing address",
|
||||||
|
"port": "Exit port",
|
||||||
|
"protocol": "Entry → exit protocol",
|
||||||
|
"username": "SOCKS5 username",
|
||||||
|
"password": "Landing password",
|
||||||
|
"importLink": "Import from link",
|
||||||
|
"importPlaceholder": "socks5://user:pass@host:port",
|
||||||
|
"importApply": "Import",
|
||||||
|
"importFailed": "Could not parse that link",
|
||||||
|
"help": "Applies when this inbound is deployed to an agent node: on every config pull the panel compiles this forwarding into a dedicated outbound plus a routing rule for that agent. A managed landing's address and credentials are resolved from the chosen inbound at build time."
|
||||||
|
},
|
||||||
"sniffingMetadataOnly": "Solo metadatos",
|
"sniffingMetadataOnly": "Solo metadatos",
|
||||||
"sniffingRouteOnly": "Solo enrutamiento",
|
"sniffingRouteOnly": "Solo enrutamiento",
|
||||||
"sniffingIpsExcluded": "IPs excluidas",
|
"sniffingIpsExcluded": "IPs excluidas",
|
||||||
@@ -1243,16 +1265,6 @@
|
|||||||
"Balancers": "Equilibradores",
|
"Balancers": "Equilibradores",
|
||||||
"balancerTagRequired": "La etiqueta es obligatoria",
|
"balancerTagRequired": "La etiqueta es obligatoria",
|
||||||
"balancerSelectorRequired": "Elige al menos una salida",
|
"balancerSelectorRequired": "Elige al menos una salida",
|
||||||
"routeTester": "Prueba de ruta",
|
|
||||||
"routeTesterDesc": "Pregunta al Xray en ejecución qué salida gestionaría una conexión. No se envía tráfico real — la decisión viene directamente del motor de enrutamiento en vivo.",
|
|
||||||
"routeTesterDest": "Dominio o IP",
|
|
||||||
"routeTesterPort": "Puerto",
|
|
||||||
"routeTesterInbound": "Entrante",
|
|
||||||
"routeTesterProtocol": "Protocolo detectado",
|
|
||||||
"routeTesterTest": "Probar ruta",
|
|
||||||
"routeTesterMatchedOutbound": "Salida coincidente",
|
|
||||||
"routeTesterViaBalancer": "vía balanceador",
|
|
||||||
"routeTesterDefaultOutbound": "Ninguna regla de enrutamiento coincidió — el tráfico va a la salida predeterminada (primera).",
|
|
||||||
"Routings": "Reglas de enrutamiento",
|
"Routings": "Reglas de enrutamiento",
|
||||||
"logLevel": "Nivel de registro",
|
"logLevel": "Nivel de registro",
|
||||||
"logLevelDesc": "El nivel de registro para registros de errores, que indica la información que debe registrarse.",
|
"logLevelDesc": "El nivel de registro para registros de errores, que indica la información que debe registrarse.",
|
||||||
@@ -1717,7 +1729,6 @@
|
|||||||
"inbounds": "Entradas",
|
"inbounds": "Entradas",
|
||||||
"clients": "Clientes",
|
"clients": "Clientes",
|
||||||
"offline": "🔴 Sin conexión",
|
"offline": "🔴 Sin conexión",
|
||||||
"online": "🟢 En línea",
|
|
||||||
"commands": {
|
"commands": {
|
||||||
"unknown": "❗ Comando desconocido",
|
"unknown": "❗ Comando desconocido",
|
||||||
"pleaseChoose": "👇 Por favor elige:\r\n",
|
"pleaseChoose": "👇 Por favor elige:\r\n",
|
||||||
@@ -1730,8 +1741,6 @@
|
|||||||
"helpAdminCommands": "Para reiniciar Xray Core:\r\n<code>/restart</code>\r\n\r\nPara buscar un correo electrónico de cliente:\r\n<code>/usage [Correo electrónico]</code>\r\n\r\nPara buscar entradas (con estadísticas de cliente):\r\n<code>/inbound [Observación]</code>\r\n\r\nID de Chat de Telegram:\r\n<code>/id</code>",
|
"helpAdminCommands": "Para reiniciar Xray Core:\r\n<code>/restart</code>\r\n\r\nPara buscar un correo electrónico de cliente:\r\n<code>/usage [Correo electrónico]</code>\r\n\r\nPara buscar entradas (con estadísticas de cliente):\r\n<code>/inbound [Observación]</code>\r\n\r\nID de Chat de Telegram:\r\n<code>/id</code>",
|
||||||
"helpClientCommands": "Para buscar estadísticas, utiliza el siguiente comando:\r\n<code>/usage [Correo electrónico]</code>\r\n\r\nID de Chat de Telegram:\r\n<code>/id</code>",
|
"helpClientCommands": "Para buscar estadísticas, utiliza el siguiente comando:\r\n<code>/usage [Correo electrónico]</code>\r\n\r\nID de Chat de Telegram:\r\n<code>/id</code>",
|
||||||
"restartUsage": "\r\n\r\n<code>/restart</code>",
|
"restartUsage": "\r\n\r\n<code>/restart</code>",
|
||||||
"restartSuccess": "✅ ¡Operación exitosa!",
|
|
||||||
"restartFailed": "❗ Error en la operación.\r\n\r\n<code>Error: {{ .Error }}</code>.",
|
|
||||||
"xrayNotRunning": "❗ Xray Core no está en ejecución.",
|
"xrayNotRunning": "❗ Xray Core no está en ejecución.",
|
||||||
"startDesc": "Mostrar el menú principal",
|
"startDesc": "Mostrar el menú principal",
|
||||||
"helpDesc": "Ayuda del bot",
|
"helpDesc": "Ayuda del bot",
|
||||||
|
|||||||
@@ -282,6 +282,28 @@
|
|||||||
"streamTab": "انتقال",
|
"streamTab": "انتقال",
|
||||||
"securityTab": "امنیت",
|
"securityTab": "امنیت",
|
||||||
"sniffingTab": "شنود",
|
"sniffingTab": "شنود",
|
||||||
|
"forwardingTab": "Forwarding",
|
||||||
|
"forwarding": {
|
||||||
|
"mode": "Forwarding",
|
||||||
|
"direct": "Direct",
|
||||||
|
"forward": "Forward (entry → exit)",
|
||||||
|
"landing": "Landing",
|
||||||
|
"managed": "Managed landing",
|
||||||
|
"manual": "Manual endpoint",
|
||||||
|
"target": "Landing inbound",
|
||||||
|
"targetPlaceholder": "Pick a SOCKS (mixed) inbound",
|
||||||
|
"targetDisabled": "disabled",
|
||||||
|
"address": "Landing address",
|
||||||
|
"port": "Exit port",
|
||||||
|
"protocol": "Entry → exit protocol",
|
||||||
|
"username": "SOCKS5 username",
|
||||||
|
"password": "Landing password",
|
||||||
|
"importLink": "Import from link",
|
||||||
|
"importPlaceholder": "socks5://user:pass@host:port",
|
||||||
|
"importApply": "Import",
|
||||||
|
"importFailed": "Could not parse that link",
|
||||||
|
"help": "Applies when this inbound is deployed to an agent node: on every config pull the panel compiles this forwarding into a dedicated outbound plus a routing rule for that agent. A managed landing's address and credentials are resolved from the chosen inbound at build time."
|
||||||
|
},
|
||||||
"sniffingMetadataOnly": "فقط متادیتا",
|
"sniffingMetadataOnly": "فقط متادیتا",
|
||||||
"sniffingRouteOnly": "فقط مسیریابی",
|
"sniffingRouteOnly": "فقط مسیریابی",
|
||||||
"sniffingIpsExcluded": "IPهای مستثنا",
|
"sniffingIpsExcluded": "IPهای مستثنا",
|
||||||
@@ -1243,16 +1265,6 @@
|
|||||||
"Balancers": "بالانسرها",
|
"Balancers": "بالانسرها",
|
||||||
"balancerTagRequired": "تگ الزامی است",
|
"balancerTagRequired": "تگ الزامی است",
|
||||||
"balancerSelectorRequired": "حداقل یک خروجی انتخاب کنید",
|
"balancerSelectorRequired": "حداقل یک خروجی انتخاب کنید",
|
||||||
"routeTester": "آزمایش مسیر",
|
|
||||||
"routeTesterDesc": "از Xray در حال اجرا بپرسید یک اتصال از کدام خروجی عبور میکند. هیچ ترافیکی ارسال نمیشود — پاسخ مستقیماً از موتور مسیریابی زنده میآید.",
|
|
||||||
"routeTesterDest": "دامنه یا IP",
|
|
||||||
"routeTesterPort": "پورت",
|
|
||||||
"routeTesterInbound": "ورودی",
|
|
||||||
"routeTesterProtocol": "پروتکل تشخیصی",
|
|
||||||
"routeTesterTest": "آزمایش مسیر",
|
|
||||||
"routeTesterMatchedOutbound": "خروجی منطبق",
|
|
||||||
"routeTesterViaBalancer": "از طریق بالانسر",
|
|
||||||
"routeTesterDefaultOutbound": "هیچ قانونی منطبق نشد — ترافیک به خروجی پیشفرض (اولین خروجی) میرود.",
|
|
||||||
"Routings": "قوانین مسیریابی",
|
"Routings": "قوانین مسیریابی",
|
||||||
"importRules": "ورود قوانین",
|
"importRules": "ورود قوانین",
|
||||||
"exportRules": "خروج قوانین",
|
"exportRules": "خروج قوانین",
|
||||||
@@ -1717,7 +1729,6 @@
|
|||||||
"inbounds": "ورودیها",
|
"inbounds": "ورودیها",
|
||||||
"clients": "کاربران",
|
"clients": "کاربران",
|
||||||
"offline": "🔴 آفلاین",
|
"offline": "🔴 آفلاین",
|
||||||
"online": "🟢 آنلاین",
|
|
||||||
"commands": {
|
"commands": {
|
||||||
"unknown": "❗ دستور ناشناخته",
|
"unknown": "❗ دستور ناشناخته",
|
||||||
"pleaseChoose": "👇 لطفاً انتخاب کنید:\r\n",
|
"pleaseChoose": "👇 لطفاً انتخاب کنید:\r\n",
|
||||||
@@ -1730,8 +1741,6 @@
|
|||||||
"helpAdminCommands": "برای راهاندازی مجدد Xray Core:\r\n<code>/restart</code>\r\n\r\nبرای جستجوی ایمیل مشتری:\r\n<code>/usage [ایمیل]</code>\r\n\r\nبرای جستجوی ورودیها (با آمار مشتری):\r\n<code>/inbound [توضیحات]</code>\r\n\r\nشناسه گفتگوی تلگرام:\r\n<code>/id</code>",
|
"helpAdminCommands": "برای راهاندازی مجدد Xray Core:\r\n<code>/restart</code>\r\n\r\nبرای جستجوی ایمیل مشتری:\r\n<code>/usage [ایمیل]</code>\r\n\r\nبرای جستجوی ورودیها (با آمار مشتری):\r\n<code>/inbound [توضیحات]</code>\r\n\r\nشناسه گفتگوی تلگرام:\r\n<code>/id</code>",
|
||||||
"helpClientCommands": "برای جستجوی آمار، از دستور زیر استفاده کنید:\r\n<code>/usage [ایمیل]</code>\r\n\r\nشناسه گفتگوی تلگرام:\r\n<code>/id</code>",
|
"helpClientCommands": "برای جستجوی آمار، از دستور زیر استفاده کنید:\r\n<code>/usage [ایمیل]</code>\r\n\r\nشناسه گفتگوی تلگرام:\r\n<code>/id</code>",
|
||||||
"restartUsage": "\r\n\r\n<code>/restart</code>",
|
"restartUsage": "\r\n\r\n<code>/restart</code>",
|
||||||
"restartSuccess": "✅ عملیات با موفقیت انجام شد!",
|
|
||||||
"restartFailed": "❗ خطا در عملیات.\r\n\r\n<code>خطا: {{ .Error }}</code>.",
|
|
||||||
"xrayNotRunning": "❗ Xray Core در حال اجرا نیست.",
|
"xrayNotRunning": "❗ Xray Core در حال اجرا نیست.",
|
||||||
"startDesc": "نمایش منوی اصلی",
|
"startDesc": "نمایش منوی اصلی",
|
||||||
"helpDesc": "راهنمای ربات",
|
"helpDesc": "راهنمای ربات",
|
||||||
|
|||||||
@@ -282,6 +282,28 @@
|
|||||||
"streamTab": "Aliran",
|
"streamTab": "Aliran",
|
||||||
"securityTab": "Keamanan",
|
"securityTab": "Keamanan",
|
||||||
"sniffingTab": "Sniffing",
|
"sniffingTab": "Sniffing",
|
||||||
|
"forwardingTab": "Forwarding",
|
||||||
|
"forwarding": {
|
||||||
|
"mode": "Forwarding",
|
||||||
|
"direct": "Direct",
|
||||||
|
"forward": "Forward (entry → exit)",
|
||||||
|
"landing": "Landing",
|
||||||
|
"managed": "Managed landing",
|
||||||
|
"manual": "Manual endpoint",
|
||||||
|
"target": "Landing inbound",
|
||||||
|
"targetPlaceholder": "Pick a SOCKS (mixed) inbound",
|
||||||
|
"targetDisabled": "disabled",
|
||||||
|
"address": "Landing address",
|
||||||
|
"port": "Exit port",
|
||||||
|
"protocol": "Entry → exit protocol",
|
||||||
|
"username": "SOCKS5 username",
|
||||||
|
"password": "Landing password",
|
||||||
|
"importLink": "Import from link",
|
||||||
|
"importPlaceholder": "socks5://user:pass@host:port",
|
||||||
|
"importApply": "Import",
|
||||||
|
"importFailed": "Could not parse that link",
|
||||||
|
"help": "Applies when this inbound is deployed to an agent node: on every config pull the panel compiles this forwarding into a dedicated outbound plus a routing rule for that agent. A managed landing's address and credentials are resolved from the chosen inbound at build time."
|
||||||
|
},
|
||||||
"sniffingMetadataOnly": "Hanya metadata",
|
"sniffingMetadataOnly": "Hanya metadata",
|
||||||
"sniffingRouteOnly": "Hanya routing",
|
"sniffingRouteOnly": "Hanya routing",
|
||||||
"sniffingIpsExcluded": "IP yang dikecualikan",
|
"sniffingIpsExcluded": "IP yang dikecualikan",
|
||||||
@@ -1251,16 +1273,6 @@
|
|||||||
"Balancers": "Penyeimbang",
|
"Balancers": "Penyeimbang",
|
||||||
"balancerTagRequired": "Tag wajib diisi",
|
"balancerTagRequired": "Tag wajib diisi",
|
||||||
"balancerSelectorRequired": "Pilih setidaknya satu outbound",
|
"balancerSelectorRequired": "Pilih setidaknya satu outbound",
|
||||||
"routeTester": "Uji Rute",
|
|
||||||
"routeTesterDesc": "Tanyakan kepada Xray yang berjalan outbound mana yang akan menangani koneksi. Tidak ada lalu lintas yang dikirim — keputusan langsung datang dari mesin routing langsung.",
|
|
||||||
"routeTesterDest": "Domain atau IP",
|
|
||||||
"routeTesterPort": "Port",
|
|
||||||
"routeTesterInbound": "Inbound",
|
|
||||||
"routeTesterProtocol": "Protokol yang terdeteksi",
|
|
||||||
"routeTesterTest": "Uji Rute",
|
|
||||||
"routeTesterMatchedOutbound": "Outbound yang cocok",
|
|
||||||
"routeTesterViaBalancer": "melalui penyeimbang",
|
|
||||||
"routeTesterDefaultOutbound": "Tidak ada aturan routing yang cocok — lalu lintas menuju outbound default (pertama).",
|
|
||||||
"Routings": "Aturan Pengalihan",
|
"Routings": "Aturan Pengalihan",
|
||||||
"logLevel": "Tingkat Log",
|
"logLevel": "Tingkat Log",
|
||||||
"logLevelDesc": "Tingkat log untuk log kesalahan, menunjukkan informasi yang perlu dicatat.",
|
"logLevelDesc": "Tingkat log untuk log kesalahan, menunjukkan informasi yang perlu dicatat.",
|
||||||
@@ -1717,7 +1729,6 @@
|
|||||||
"inbounds": "Inbound",
|
"inbounds": "Inbound",
|
||||||
"clients": "Klien",
|
"clients": "Klien",
|
||||||
"offline": "🔴 Offline",
|
"offline": "🔴 Offline",
|
||||||
"online": "🟢 Online",
|
|
||||||
"commands": {
|
"commands": {
|
||||||
"unknown": "❗ Perintah tidak dikenal.",
|
"unknown": "❗ Perintah tidak dikenal.",
|
||||||
"pleaseChoose": "👇 Harap pilih:\r\n",
|
"pleaseChoose": "👇 Harap pilih:\r\n",
|
||||||
@@ -1730,8 +1741,6 @@
|
|||||||
"helpAdminCommands": "Untuk memulai ulang Xray Core:\r\n<code>/restart</code>\r\n\r\nUntuk mencari email klien:\r\n<code>/usage [Email]</code>\r\n\r\nUntuk mencari inbound (dengan statistik klien):\r\n<code>/inbound [Catatan]</code>\r\n\r\nID Obrolan Telegram:\r\n<code>/id</code>",
|
"helpAdminCommands": "Untuk memulai ulang Xray Core:\r\n<code>/restart</code>\r\n\r\nUntuk mencari email klien:\r\n<code>/usage [Email]</code>\r\n\r\nUntuk mencari inbound (dengan statistik klien):\r\n<code>/inbound [Catatan]</code>\r\n\r\nID Obrolan Telegram:\r\n<code>/id</code>",
|
||||||
"helpClientCommands": "Untuk mencari statistik, gunakan perintah berikut:\r\n<code>/usage [Email]</code>\r\n\r\nID Obrolan Telegram:\r\n<code>/id</code>",
|
"helpClientCommands": "Untuk mencari statistik, gunakan perintah berikut:\r\n<code>/usage [Email]</code>\r\n\r\nID Obrolan Telegram:\r\n<code>/id</code>",
|
||||||
"restartUsage": "\r\n\r\n<code>/restart</code>",
|
"restartUsage": "\r\n\r\n<code>/restart</code>",
|
||||||
"restartSuccess": "✅ Operasi berhasil!",
|
|
||||||
"restartFailed": "❗ Kesalahan dalam operasi.\r\n\r\n<code>Error: {{ .Error }}</code>.",
|
|
||||||
"xrayNotRunning": "❗ Xray Core tidak berjalan.",
|
"xrayNotRunning": "❗ Xray Core tidak berjalan.",
|
||||||
"startDesc": "Tampilkan menu utama",
|
"startDesc": "Tampilkan menu utama",
|
||||||
"helpDesc": "Bantuan bot",
|
"helpDesc": "Bantuan bot",
|
||||||
|
|||||||
@@ -282,6 +282,28 @@
|
|||||||
"streamTab": "ストリーム",
|
"streamTab": "ストリーム",
|
||||||
"securityTab": "セキュリティ",
|
"securityTab": "セキュリティ",
|
||||||
"sniffingTab": "スニッフィング",
|
"sniffingTab": "スニッフィング",
|
||||||
|
"forwardingTab": "Forwarding",
|
||||||
|
"forwarding": {
|
||||||
|
"mode": "Forwarding",
|
||||||
|
"direct": "Direct",
|
||||||
|
"forward": "Forward (entry → exit)",
|
||||||
|
"landing": "Landing",
|
||||||
|
"managed": "Managed landing",
|
||||||
|
"manual": "Manual endpoint",
|
||||||
|
"target": "Landing inbound",
|
||||||
|
"targetPlaceholder": "Pick a SOCKS (mixed) inbound",
|
||||||
|
"targetDisabled": "disabled",
|
||||||
|
"address": "Landing address",
|
||||||
|
"port": "Exit port",
|
||||||
|
"protocol": "Entry → exit protocol",
|
||||||
|
"username": "SOCKS5 username",
|
||||||
|
"password": "Landing password",
|
||||||
|
"importLink": "Import from link",
|
||||||
|
"importPlaceholder": "socks5://user:pass@host:port",
|
||||||
|
"importApply": "Import",
|
||||||
|
"importFailed": "Could not parse that link",
|
||||||
|
"help": "Applies when this inbound is deployed to an agent node: on every config pull the panel compiles this forwarding into a dedicated outbound plus a routing rule for that agent. A managed landing's address and credentials are resolved from the chosen inbound at build time."
|
||||||
|
},
|
||||||
"sniffingMetadataOnly": "メタデータのみ",
|
"sniffingMetadataOnly": "メタデータのみ",
|
||||||
"sniffingRouteOnly": "ルーティングのみ",
|
"sniffingRouteOnly": "ルーティングのみ",
|
||||||
"sniffingIpsExcluded": "除外する IP",
|
"sniffingIpsExcluded": "除外する IP",
|
||||||
@@ -1251,16 +1273,6 @@
|
|||||||
"Balancers": "負荷分散",
|
"Balancers": "負荷分散",
|
||||||
"balancerTagRequired": "タグは必須です",
|
"balancerTagRequired": "タグは必須です",
|
||||||
"balancerSelectorRequired": "アウトバウンドを少なくとも1つ選んでください",
|
"balancerSelectorRequired": "アウトバウンドを少なくとも1つ選んでください",
|
||||||
"routeTester": "ルートテスト",
|
|
||||||
"routeTesterDesc": "実行中の Xray にどのアウトバウンドが接続を処理するか問い合わせます。実際のトラフィックは送信されません — 判断はライブルーティングエンジンから直接取得されます。",
|
|
||||||
"routeTesterDest": "ドメインまたは IP",
|
|
||||||
"routeTesterPort": "ポート",
|
|
||||||
"routeTesterInbound": "インバウンド",
|
|
||||||
"routeTesterProtocol": "検出されたプロトコル",
|
|
||||||
"routeTesterTest": "ルートをテスト",
|
|
||||||
"routeTesterMatchedOutbound": "マッチしたアウトバウンド",
|
|
||||||
"routeTesterViaBalancer": "バランサー経由",
|
|
||||||
"routeTesterDefaultOutbound": "ルーティングルールに一致しませんでした — トラフィックはデフォルト(最初の)アウトバウンドに送られます。",
|
|
||||||
"Routings": "ルーティングルール",
|
"Routings": "ルーティングルール",
|
||||||
"logLevel": "ログレベル",
|
"logLevel": "ログレベル",
|
||||||
"logLevelDesc": "エラーログのレベルを指定し、記録する情報を示します",
|
"logLevelDesc": "エラーログのレベルを指定し、記録する情報を示します",
|
||||||
@@ -1717,7 +1729,6 @@
|
|||||||
"inbounds": "インバウンド",
|
"inbounds": "インバウンド",
|
||||||
"clients": "クライアント",
|
"clients": "クライアント",
|
||||||
"offline": "🔴 オフライン",
|
"offline": "🔴 オフライン",
|
||||||
"online": "🟢 オンライン",
|
|
||||||
"commands": {
|
"commands": {
|
||||||
"unknown": "❗ 不明なコマンド",
|
"unknown": "❗ 不明なコマンド",
|
||||||
"pleaseChoose": "👇 選択してください:\r\n",
|
"pleaseChoose": "👇 選択してください:\r\n",
|
||||||
@@ -1730,8 +1741,6 @@
|
|||||||
"helpAdminCommands": "Xray Coreを再起動するには:\r\n<code>/restart</code>\r\n\r\nクライアントの電子メールを検索するには:\r\n<code>/usage [電子メール]</code>\r\n\r\nインバウンド(クライアントの統計情報を含む)を検索するには:\r\n<code>/inbound [備考]</code>\r\n\r\nTelegramチャットID:\r\n<code>/id</code>",
|
"helpAdminCommands": "Xray Coreを再起動するには:\r\n<code>/restart</code>\r\n\r\nクライアントの電子メールを検索するには:\r\n<code>/usage [電子メール]</code>\r\n\r\nインバウンド(クライアントの統計情報を含む)を検索するには:\r\n<code>/inbound [備考]</code>\r\n\r\nTelegramチャットID:\r\n<code>/id</code>",
|
||||||
"helpClientCommands": "統計情報を検索するには、次のコマンドを使用してください:\r\n<code>/usage [電子メール]</code>\r\n\r\nTelegramチャットID:\r\n<code>/id</code>",
|
"helpClientCommands": "統計情報を検索するには、次のコマンドを使用してください:\r\n<code>/usage [電子メール]</code>\r\n\r\nTelegramチャットID:\r\n<code>/id</code>",
|
||||||
"restartUsage": "\r\n\r\n<code>/restart</code>",
|
"restartUsage": "\r\n\r\n<code>/restart</code>",
|
||||||
"restartSuccess": "✅ 操作成功!",
|
|
||||||
"restartFailed": "❗ 操作エラー。\r\n\r\n<code>エラー: {{ .Error }}</code>",
|
|
||||||
"xrayNotRunning": "❗ Xray Core は動作していません。",
|
"xrayNotRunning": "❗ Xray Core は動作していません。",
|
||||||
"startDesc": "メインメニューを表示",
|
"startDesc": "メインメニューを表示",
|
||||||
"helpDesc": "ボットのヘルプ",
|
"helpDesc": "ボットのヘルプ",
|
||||||
|
|||||||
@@ -282,6 +282,28 @@
|
|||||||
"streamTab": "Transmissão",
|
"streamTab": "Transmissão",
|
||||||
"securityTab": "Segurança",
|
"securityTab": "Segurança",
|
||||||
"sniffingTab": "Inspeção",
|
"sniffingTab": "Inspeção",
|
||||||
|
"forwardingTab": "Forwarding",
|
||||||
|
"forwarding": {
|
||||||
|
"mode": "Forwarding",
|
||||||
|
"direct": "Direct",
|
||||||
|
"forward": "Forward (entry → exit)",
|
||||||
|
"landing": "Landing",
|
||||||
|
"managed": "Managed landing",
|
||||||
|
"manual": "Manual endpoint",
|
||||||
|
"target": "Landing inbound",
|
||||||
|
"targetPlaceholder": "Pick a SOCKS (mixed) inbound",
|
||||||
|
"targetDisabled": "disabled",
|
||||||
|
"address": "Landing address",
|
||||||
|
"port": "Exit port",
|
||||||
|
"protocol": "Entry → exit protocol",
|
||||||
|
"username": "SOCKS5 username",
|
||||||
|
"password": "Landing password",
|
||||||
|
"importLink": "Import from link",
|
||||||
|
"importPlaceholder": "socks5://user:pass@host:port",
|
||||||
|
"importApply": "Import",
|
||||||
|
"importFailed": "Could not parse that link",
|
||||||
|
"help": "Applies when this inbound is deployed to an agent node: on every config pull the panel compiles this forwarding into a dedicated outbound plus a routing rule for that agent. A managed landing's address and credentials are resolved from the chosen inbound at build time."
|
||||||
|
},
|
||||||
"sniffingMetadataOnly": "Apenas metadados",
|
"sniffingMetadataOnly": "Apenas metadados",
|
||||||
"sniffingRouteOnly": "Apenas roteamento",
|
"sniffingRouteOnly": "Apenas roteamento",
|
||||||
"sniffingIpsExcluded": "IPs excluídos",
|
"sniffingIpsExcluded": "IPs excluídos",
|
||||||
@@ -1251,16 +1273,6 @@
|
|||||||
"Balancers": "Balanceadores",
|
"Balancers": "Balanceadores",
|
||||||
"balancerTagRequired": "A tag é obrigatória",
|
"balancerTagRequired": "A tag é obrigatória",
|
||||||
"balancerSelectorRequired": "Selecione pelo menos uma saída",
|
"balancerSelectorRequired": "Selecione pelo menos uma saída",
|
||||||
"routeTester": "Teste de rota",
|
|
||||||
"routeTesterDesc": "Pergunte ao Xray em execução qual saída trataria uma conexão. Nenhum tráfego é enviado — a decisão vem diretamente do motor de roteamento ao vivo.",
|
|
||||||
"routeTesterDest": "Domínio ou IP",
|
|
||||||
"routeTesterPort": "Porta",
|
|
||||||
"routeTesterInbound": "Entrada",
|
|
||||||
"routeTesterProtocol": "Protocolo detectado",
|
|
||||||
"routeTesterTest": "Testar rota",
|
|
||||||
"routeTesterMatchedOutbound": "Saída correspondente",
|
|
||||||
"routeTesterViaBalancer": "via balanceador",
|
|
||||||
"routeTesterDefaultOutbound": "Nenhuma regra de roteamento correspondeu — o tráfego vai para a saída padrão (primeira).",
|
|
||||||
"Routings": "Regras de Roteamento",
|
"Routings": "Regras de Roteamento",
|
||||||
"logLevel": "Nível de Log",
|
"logLevel": "Nível de Log",
|
||||||
"logLevelDesc": "O nível de log para erros, indicando a informação que precisa ser registrada.",
|
"logLevelDesc": "O nível de log para erros, indicando a informação que precisa ser registrada.",
|
||||||
@@ -1717,7 +1729,6 @@
|
|||||||
"inbounds": "Entradas",
|
"inbounds": "Entradas",
|
||||||
"clients": "Clientes",
|
"clients": "Clientes",
|
||||||
"offline": "🔴 Offline",
|
"offline": "🔴 Offline",
|
||||||
"online": "🟢 Online",
|
|
||||||
"commands": {
|
"commands": {
|
||||||
"unknown": "❗ Comando desconhecido.",
|
"unknown": "❗ Comando desconhecido.",
|
||||||
"pleaseChoose": "👇 Escolha:\r\n",
|
"pleaseChoose": "👇 Escolha:\r\n",
|
||||||
@@ -1730,8 +1741,6 @@
|
|||||||
"helpAdminCommands": "Para reiniciar o Xray Core:\r\n<code>/restart</code>\r\n\r\nPara pesquisar por um email de cliente:\r\n<code>/usage [Email]</code>\r\n\r\nPara pesquisar por inbounds (com estatísticas do cliente):\r\n<code>/inbound [Remark]</code>\r\n\r\nTelegram Chat ID:\r\n<code>/id</code>",
|
"helpAdminCommands": "Para reiniciar o Xray Core:\r\n<code>/restart</code>\r\n\r\nPara pesquisar por um email de cliente:\r\n<code>/usage [Email]</code>\r\n\r\nPara pesquisar por inbounds (com estatísticas do cliente):\r\n<code>/inbound [Remark]</code>\r\n\r\nTelegram Chat ID:\r\n<code>/id</code>",
|
||||||
"helpClientCommands": "Para pesquisar por estatísticas, use o seguinte comando:\r\n\r\n<code>/usage [Email]</code>\r\n\r\nTelegram Chat ID:\r\n<code>/id</code>",
|
"helpClientCommands": "Para pesquisar por estatísticas, use o seguinte comando:\r\n\r\n<code>/usage [Email]</code>\r\n\r\nTelegram Chat ID:\r\n<code>/id</code>",
|
||||||
"restartUsage": "\r\n\r\n<code>/restart</code>",
|
"restartUsage": "\r\n\r\n<code>/restart</code>",
|
||||||
"restartSuccess": "✅ Operação bem-sucedida!",
|
|
||||||
"restartFailed": "❗ Erro na operação.\r\n\r\n<code>Erro: {{ .Error }}</code>.",
|
|
||||||
"xrayNotRunning": "❗ Xray Core não está em execução.",
|
"xrayNotRunning": "❗ Xray Core não está em execução.",
|
||||||
"startDesc": "Mostrar menu principal",
|
"startDesc": "Mostrar menu principal",
|
||||||
"helpDesc": "Ajuda do bot",
|
"helpDesc": "Ajuda do bot",
|
||||||
|
|||||||
@@ -282,6 +282,28 @@
|
|||||||
"streamTab": "Поток",
|
"streamTab": "Поток",
|
||||||
"securityTab": "Безопасность",
|
"securityTab": "Безопасность",
|
||||||
"sniffingTab": "Сниффинг",
|
"sniffingTab": "Сниффинг",
|
||||||
|
"forwardingTab": "Forwarding",
|
||||||
|
"forwarding": {
|
||||||
|
"mode": "Forwarding",
|
||||||
|
"direct": "Direct",
|
||||||
|
"forward": "Forward (entry → exit)",
|
||||||
|
"landing": "Landing",
|
||||||
|
"managed": "Managed landing",
|
||||||
|
"manual": "Manual endpoint",
|
||||||
|
"target": "Landing inbound",
|
||||||
|
"targetPlaceholder": "Pick a SOCKS (mixed) inbound",
|
||||||
|
"targetDisabled": "disabled",
|
||||||
|
"address": "Landing address",
|
||||||
|
"port": "Exit port",
|
||||||
|
"protocol": "Entry → exit protocol",
|
||||||
|
"username": "SOCKS5 username",
|
||||||
|
"password": "Landing password",
|
||||||
|
"importLink": "Import from link",
|
||||||
|
"importPlaceholder": "socks5://user:pass@host:port",
|
||||||
|
"importApply": "Import",
|
||||||
|
"importFailed": "Could not parse that link",
|
||||||
|
"help": "Applies when this inbound is deployed to an agent node: on every config pull the panel compiles this forwarding into a dedicated outbound plus a routing rule for that agent. A managed landing's address and credentials are resolved from the chosen inbound at build time."
|
||||||
|
},
|
||||||
"sniffingMetadataOnly": "Только метаданные",
|
"sniffingMetadataOnly": "Только метаданные",
|
||||||
"sniffingRouteOnly": "Только маршрутизация",
|
"sniffingRouteOnly": "Только маршрутизация",
|
||||||
"sniffingIpsExcluded": "Исключённые IP",
|
"sniffingIpsExcluded": "Исключённые IP",
|
||||||
@@ -1251,16 +1273,6 @@
|
|||||||
"Balancers": "Балансировщик",
|
"Balancers": "Балансировщик",
|
||||||
"balancerTagRequired": "Тег обязателен",
|
"balancerTagRequired": "Тег обязателен",
|
||||||
"balancerSelectorRequired": "Выберите хотя бы одно исходящее",
|
"balancerSelectorRequired": "Выберите хотя бы одно исходящее",
|
||||||
"routeTester": "Тест маршрута",
|
|
||||||
"routeTesterDesc": "Спросите запущенный Xray, через какой исходящий будет обработано соединение. Трафик не отправляется — решение поступает напрямую от живого движка маршрутизации.",
|
|
||||||
"routeTesterDest": "Домен или IP",
|
|
||||||
"routeTesterPort": "Порт",
|
|
||||||
"routeTesterInbound": "Входящий",
|
|
||||||
"routeTesterProtocol": "Обнаруженный протокол",
|
|
||||||
"routeTesterTest": "Тест маршрута",
|
|
||||||
"routeTesterMatchedOutbound": "Совпавший исходящий",
|
|
||||||
"routeTesterViaBalancer": "через балансировщик",
|
|
||||||
"routeTesterDefaultOutbound": "Ни одно правило маршрутизации не совпало — трафик направляется в исходящий по умолчанию (первый).",
|
|
||||||
"Routings": "Маршрутизация",
|
"Routings": "Маршрутизация",
|
||||||
"logLevel": "Уровень логов",
|
"logLevel": "Уровень логов",
|
||||||
"logLevelDesc": "Уровень журнала для журналов ошибок, указывающий информацию, которую необходимо записать.",
|
"logLevelDesc": "Уровень журнала для журналов ошибок, указывающий информацию, которую необходимо записать.",
|
||||||
@@ -1717,7 +1729,6 @@
|
|||||||
"inbounds": "Входящие",
|
"inbounds": "Входящие",
|
||||||
"clients": "Клиенты",
|
"clients": "Клиенты",
|
||||||
"offline": "🔴 Не в сети",
|
"offline": "🔴 Не в сети",
|
||||||
"online": "🟢 В сети",
|
|
||||||
"commands": {
|
"commands": {
|
||||||
"unknown": "❗ Неизвестная команда",
|
"unknown": "❗ Неизвестная команда",
|
||||||
"pleaseChoose": "👇 Пожалуйста, выберите:\r\n",
|
"pleaseChoose": "👇 Пожалуйста, выберите:\r\n",
|
||||||
@@ -1730,8 +1741,6 @@
|
|||||||
"helpAdminCommands": "🔃 Для перезапуска Xray Core:\r\n<code>/restart</code>\r\n\r\n🔎 Для поиска клиента по email:\r\n<code>/usage [Email]</code>\r\n\r\n📊 Для поиска входящих подключений (со статистикой клиентов):\r\n<code>/inbound [имя подключения]</code>\r\n\r\n🆔 Ваш Telegram User ID:\r\n<code>/id</code>",
|
"helpAdminCommands": "🔃 Для перезапуска Xray Core:\r\n<code>/restart</code>\r\n\r\n🔎 Для поиска клиента по email:\r\n<code>/usage [Email]</code>\r\n\r\n📊 Для поиска входящих подключений (со статистикой клиентов):\r\n<code>/inbound [имя подключения]</code>\r\n\r\n🆔 Ваш Telegram User ID:\r\n<code>/id</code>",
|
||||||
"helpClientCommands": "💲 Для просмотра информации о вашей подписке используйте команду:\r\n<code>/usage [Email]</code>\r\n\r\n🆔 Ваш Telegram User ID:\r\n<code>/id</code>",
|
"helpClientCommands": "💲 Для просмотра информации о вашей подписке используйте команду:\r\n<code>/usage [Email]</code>\r\n\r\n🆔 Ваш Telegram User ID:\r\n<code>/id</code>",
|
||||||
"restartUsage": "\r\n\r\n<code>/restart</code>",
|
"restartUsage": "\r\n\r\n<code>/restart</code>",
|
||||||
"restartSuccess": "✅ Ядро Xray успешно перезапущено.",
|
|
||||||
"restartFailed": "❗ Ошибка при перезапуске Xray-core.\r\n\r\n<code>Ошибка: {{ .Error }}</code>.",
|
|
||||||
"xrayNotRunning": "❗ Xray Core не запущен.",
|
"xrayNotRunning": "❗ Xray Core не запущен.",
|
||||||
"startDesc": "Показать главное меню",
|
"startDesc": "Показать главное меню",
|
||||||
"helpDesc": "Справка по боту",
|
"helpDesc": "Справка по боту",
|
||||||
|
|||||||
@@ -282,6 +282,28 @@
|
|||||||
"streamTab": "Akış (Stream)",
|
"streamTab": "Akış (Stream)",
|
||||||
"securityTab": "Güvenlik",
|
"securityTab": "Güvenlik",
|
||||||
"sniffingTab": "Dinleme (Sniffing)",
|
"sniffingTab": "Dinleme (Sniffing)",
|
||||||
|
"forwardingTab": "Forwarding",
|
||||||
|
"forwarding": {
|
||||||
|
"mode": "Forwarding",
|
||||||
|
"direct": "Direct",
|
||||||
|
"forward": "Forward (entry → exit)",
|
||||||
|
"landing": "Landing",
|
||||||
|
"managed": "Managed landing",
|
||||||
|
"manual": "Manual endpoint",
|
||||||
|
"target": "Landing inbound",
|
||||||
|
"targetPlaceholder": "Pick a SOCKS (mixed) inbound",
|
||||||
|
"targetDisabled": "disabled",
|
||||||
|
"address": "Landing address",
|
||||||
|
"port": "Exit port",
|
||||||
|
"protocol": "Entry → exit protocol",
|
||||||
|
"username": "SOCKS5 username",
|
||||||
|
"password": "Landing password",
|
||||||
|
"importLink": "Import from link",
|
||||||
|
"importPlaceholder": "socks5://user:pass@host:port",
|
||||||
|
"importApply": "Import",
|
||||||
|
"importFailed": "Could not parse that link",
|
||||||
|
"help": "Applies when this inbound is deployed to an agent node: on every config pull the panel compiles this forwarding into a dedicated outbound plus a routing rule for that agent. A managed landing's address and credentials are resolved from the chosen inbound at build time."
|
||||||
|
},
|
||||||
"sniffingMetadataOnly": "Yalnızca üst veri",
|
"sniffingMetadataOnly": "Yalnızca üst veri",
|
||||||
"sniffingRouteOnly": "Yalnızca yönlendirme",
|
"sniffingRouteOnly": "Yalnızca yönlendirme",
|
||||||
"sniffingIpsExcluded": "Hariç tutulan IP'ler",
|
"sniffingIpsExcluded": "Hariç tutulan IP'ler",
|
||||||
@@ -1251,16 +1273,6 @@
|
|||||||
"Balancers": "Dengeleyiciler",
|
"Balancers": "Dengeleyiciler",
|
||||||
"balancerTagRequired": "Etiket zorunludur",
|
"balancerTagRequired": "Etiket zorunludur",
|
||||||
"balancerSelectorRequired": "En az bir giden bağlantı seçin",
|
"balancerSelectorRequired": "En az bir giden bağlantı seçin",
|
||||||
"routeTester": "Rota Testi",
|
|
||||||
"routeTesterDesc": "Çalışan Xray'e hangi giden bağlantının bir isteği işleyeceğini sorun. Gerçek trafik gönderilmez — karar doğrudan canlı yönlendirme motorundan gelir.",
|
|
||||||
"routeTesterDest": "Alan adı veya IP",
|
|
||||||
"routeTesterPort": "Port",
|
|
||||||
"routeTesterInbound": "Gelen",
|
|
||||||
"routeTesterProtocol": "Algılanan protokol",
|
|
||||||
"routeTesterTest": "Rotayı Test Et",
|
|
||||||
"routeTesterMatchedOutbound": "Eşleşen giden",
|
|
||||||
"routeTesterViaBalancer": "dengeleyici aracılığıyla",
|
|
||||||
"routeTesterDefaultOutbound": "Hiçbir yönlendirme kuralı eşleşmedi — trafik varsayılan (ilk) giden bağlantıya yönlendirilir.",
|
|
||||||
"Routings": "Yönlendirme Kuralları",
|
"Routings": "Yönlendirme Kuralları",
|
||||||
"logLevel": "Günlük Seviyesi",
|
"logLevel": "Günlük Seviyesi",
|
||||||
"logLevelDesc": "Hata günlükleri için kayıt seviyesi; hangi detayda bilginin kaydedileceğini belirler.",
|
"logLevelDesc": "Hata günlükleri için kayıt seviyesi; hangi detayda bilginin kaydedileceğini belirler.",
|
||||||
@@ -1717,7 +1729,6 @@
|
|||||||
"inbounds": "Gelen Bağlantılar",
|
"inbounds": "Gelen Bağlantılar",
|
||||||
"clients": "Kullanıcılar",
|
"clients": "Kullanıcılar",
|
||||||
"offline": "🔴 Çevrimdışı",
|
"offline": "🔴 Çevrimdışı",
|
||||||
"online": "🟢 Çevrimiçi",
|
|
||||||
"commands": {
|
"commands": {
|
||||||
"unknown": "❗ Bilinmeyen komut.",
|
"unknown": "❗ Bilinmeyen komut.",
|
||||||
"pleaseChoose": "👇 Lütfen seçin:\r\n",
|
"pleaseChoose": "👇 Lütfen seçin:\r\n",
|
||||||
@@ -1730,8 +1741,6 @@
|
|||||||
"helpAdminCommands": "Xray Core'u yeniden başlatmak için:\r\n<code>/restart</code>\r\n\r\nBir kullanıcının istatistiklerini aramak için:\r\n<code>/usage [E-posta]</code>\r\n\r\nGelen bağlantılarnı aramak için (kullanıcı istatistikleri ile):\r\n<code>/inbound [Açıklama]</code>\r\n\r\nTelegram Sohbet Kimliği (Chat ID):\r\n<code>/id</code>",
|
"helpAdminCommands": "Xray Core'u yeniden başlatmak için:\r\n<code>/restart</code>\r\n\r\nBir kullanıcının istatistiklerini aramak için:\r\n<code>/usage [E-posta]</code>\r\n\r\nGelen bağlantılarnı aramak için (kullanıcı istatistikleri ile):\r\n<code>/inbound [Açıklama]</code>\r\n\r\nTelegram Sohbet Kimliği (Chat ID):\r\n<code>/id</code>",
|
||||||
"helpClientCommands": "İstatistiklerinizi görmek için şu komutu kullanın:\r\n\r\n<code>/usage [E-posta]</code>\r\n\r\nTelegram Sohbet Kimliği:\r\n<code>/id</code>",
|
"helpClientCommands": "İstatistiklerinizi görmek için şu komutu kullanın:\r\n\r\n<code>/usage [E-posta]</code>\r\n\r\nTelegram Sohbet Kimliği:\r\n<code>/id</code>",
|
||||||
"restartUsage": "<code>/restart</code>",
|
"restartUsage": "<code>/restart</code>",
|
||||||
"restartSuccess": "✅ İşlem başarılı!",
|
|
||||||
"restartFailed": "❗ İşlem hatası.\r\n\r\n<code>Hata: {{ .Error }}</code>.",
|
|
||||||
"xrayNotRunning": "❗ Xray Core çalışmıyor.",
|
"xrayNotRunning": "❗ Xray Core çalışmıyor.",
|
||||||
"startDesc": "Ana menüyü göster",
|
"startDesc": "Ana menüyü göster",
|
||||||
"helpDesc": "Bot yardımı",
|
"helpDesc": "Bot yardımı",
|
||||||
|
|||||||
@@ -282,6 +282,28 @@
|
|||||||
"streamTab": "Потік",
|
"streamTab": "Потік",
|
||||||
"securityTab": "Безпека",
|
"securityTab": "Безпека",
|
||||||
"sniffingTab": "Сніфінг",
|
"sniffingTab": "Сніфінг",
|
||||||
|
"forwardingTab": "Forwarding",
|
||||||
|
"forwarding": {
|
||||||
|
"mode": "Forwarding",
|
||||||
|
"direct": "Direct",
|
||||||
|
"forward": "Forward (entry → exit)",
|
||||||
|
"landing": "Landing",
|
||||||
|
"managed": "Managed landing",
|
||||||
|
"manual": "Manual endpoint",
|
||||||
|
"target": "Landing inbound",
|
||||||
|
"targetPlaceholder": "Pick a SOCKS (mixed) inbound",
|
||||||
|
"targetDisabled": "disabled",
|
||||||
|
"address": "Landing address",
|
||||||
|
"port": "Exit port",
|
||||||
|
"protocol": "Entry → exit protocol",
|
||||||
|
"username": "SOCKS5 username",
|
||||||
|
"password": "Landing password",
|
||||||
|
"importLink": "Import from link",
|
||||||
|
"importPlaceholder": "socks5://user:pass@host:port",
|
||||||
|
"importApply": "Import",
|
||||||
|
"importFailed": "Could not parse that link",
|
||||||
|
"help": "Applies when this inbound is deployed to an agent node: on every config pull the panel compiles this forwarding into a dedicated outbound plus a routing rule for that agent. A managed landing's address and credentials are resolved from the chosen inbound at build time."
|
||||||
|
},
|
||||||
"sniffingMetadataOnly": "Лише метадані",
|
"sniffingMetadataOnly": "Лише метадані",
|
||||||
"sniffingRouteOnly": "Лише маршрутизація",
|
"sniffingRouteOnly": "Лише маршрутизація",
|
||||||
"sniffingIpsExcluded": "Виключені IP",
|
"sniffingIpsExcluded": "Виключені IP",
|
||||||
@@ -1243,16 +1265,6 @@
|
|||||||
"Balancers": "Балансери",
|
"Balancers": "Балансери",
|
||||||
"balancerTagRequired": "Тег обов'язковий",
|
"balancerTagRequired": "Тег обов'язковий",
|
||||||
"balancerSelectorRequired": "Виберіть принаймні один вихідний",
|
"balancerSelectorRequired": "Виберіть принаймні один вихідний",
|
||||||
"routeTester": "Тест маршруту",
|
|
||||||
"routeTesterDesc": "Запитайте запущений Xray, через який вихідний буде оброблено з'єднання. Реальний трафік не надсилається — рішення надходить безпосередньо від живого рушія маршрутизації.",
|
|
||||||
"routeTesterDest": "Домен або IP",
|
|
||||||
"routeTesterPort": "Порт",
|
|
||||||
"routeTesterInbound": "Вхідний",
|
|
||||||
"routeTesterProtocol": "Виявлений протокол",
|
|
||||||
"routeTesterTest": "Тест маршруту",
|
|
||||||
"routeTesterMatchedOutbound": "Відповідний вихідний",
|
|
||||||
"routeTesterViaBalancer": "через балансувальник",
|
|
||||||
"routeTesterDefaultOutbound": "Жодне правило маршрутизації не збіглося — трафік надходить до вихідного за замовчуванням (першого).",
|
|
||||||
"Routings": "Правила маршрутизації",
|
"Routings": "Правила маршрутизації",
|
||||||
"importRules": "Імпортувати правила",
|
"importRules": "Імпортувати правила",
|
||||||
"exportRules": "Експортувати правила",
|
"exportRules": "Експортувати правила",
|
||||||
@@ -1717,7 +1729,6 @@
|
|||||||
"inbounds": "Вхідні",
|
"inbounds": "Вхідні",
|
||||||
"clients": "Клієнти",
|
"clients": "Клієнти",
|
||||||
"offline": "🔴 Не в мережі",
|
"offline": "🔴 Не в мережі",
|
||||||
"online": "🟢 У мережі",
|
|
||||||
"commands": {
|
"commands": {
|
||||||
"unknown": "❗ Невідома команда.",
|
"unknown": "❗ Невідома команда.",
|
||||||
"pleaseChoose": "👇 Будь ласка, виберіть:\r\n",
|
"pleaseChoose": "👇 Будь ласка, виберіть:\r\n",
|
||||||
@@ -1730,8 +1741,6 @@
|
|||||||
"helpAdminCommands": "Для перезапуску Xray Core:\r\n<code>/restart</code>\r\n\r\nДля пошуку електронної пошти клієнта:\r\n<code>/usage [Електронна пошта]</code>\r\n\r\nДля пошуку вхідних (зі статистикою клієнта):\r\n<code>/inbound [Примітка]</code>\r\n\r\nID чату Telegram:\r\n<code>/id</code>",
|
"helpAdminCommands": "Для перезапуску Xray Core:\r\n<code>/restart</code>\r\n\r\nДля пошуку електронної пошти клієнта:\r\n<code>/usage [Електронна пошта]</code>\r\n\r\nДля пошуку вхідних (зі статистикою клієнта):\r\n<code>/inbound [Примітка]</code>\r\n\r\nID чату Telegram:\r\n<code>/id</code>",
|
||||||
"helpClientCommands": "Для пошуку статистики використовуйте наступну команду:\r\n<code>/usage [Електронна пошта]</code>\r\n\r\nID чату Telegram:\r\n<code>/id</code>",
|
"helpClientCommands": "Для пошуку статистики використовуйте наступну команду:\r\n<code>/usage [Електронна пошта]</code>\r\n\r\nID чату Telegram:\r\n<code>/id</code>",
|
||||||
"restartUsage": "\r\n\r\n<code>/restart</code>",
|
"restartUsage": "\r\n\r\n<code>/restart</code>",
|
||||||
"restartSuccess": "✅ Операція успішна!",
|
|
||||||
"restartFailed": "❗ Помилка в операції.\r\n\r\n<code>Помилка: {{ .Error }}</code>.",
|
|
||||||
"xrayNotRunning": "❗ Xray Core не запущений.",
|
"xrayNotRunning": "❗ Xray Core не запущений.",
|
||||||
"startDesc": "Показати головне меню",
|
"startDesc": "Показати головне меню",
|
||||||
"helpDesc": "Довідка по боту",
|
"helpDesc": "Довідка по боту",
|
||||||
|
|||||||
@@ -282,6 +282,28 @@
|
|||||||
"streamTab": "Luồng",
|
"streamTab": "Luồng",
|
||||||
"securityTab": "Bảo mật",
|
"securityTab": "Bảo mật",
|
||||||
"sniffingTab": "Dò gói",
|
"sniffingTab": "Dò gói",
|
||||||
|
"forwardingTab": "Forwarding",
|
||||||
|
"forwarding": {
|
||||||
|
"mode": "Forwarding",
|
||||||
|
"direct": "Direct",
|
||||||
|
"forward": "Forward (entry → exit)",
|
||||||
|
"landing": "Landing",
|
||||||
|
"managed": "Managed landing",
|
||||||
|
"manual": "Manual endpoint",
|
||||||
|
"target": "Landing inbound",
|
||||||
|
"targetPlaceholder": "Pick a SOCKS (mixed) inbound",
|
||||||
|
"targetDisabled": "disabled",
|
||||||
|
"address": "Landing address",
|
||||||
|
"port": "Exit port",
|
||||||
|
"protocol": "Entry → exit protocol",
|
||||||
|
"username": "SOCKS5 username",
|
||||||
|
"password": "Landing password",
|
||||||
|
"importLink": "Import from link",
|
||||||
|
"importPlaceholder": "socks5://user:pass@host:port",
|
||||||
|
"importApply": "Import",
|
||||||
|
"importFailed": "Could not parse that link",
|
||||||
|
"help": "Applies when this inbound is deployed to an agent node: on every config pull the panel compiles this forwarding into a dedicated outbound plus a routing rule for that agent. A managed landing's address and credentials are resolved from the chosen inbound at build time."
|
||||||
|
},
|
||||||
"sniffingMetadataOnly": "Chỉ siêu dữ liệu",
|
"sniffingMetadataOnly": "Chỉ siêu dữ liệu",
|
||||||
"sniffingRouteOnly": "Chỉ định tuyến",
|
"sniffingRouteOnly": "Chỉ định tuyến",
|
||||||
"sniffingIpsExcluded": "IP bị loại trừ",
|
"sniffingIpsExcluded": "IP bị loại trừ",
|
||||||
@@ -1251,16 +1273,6 @@
|
|||||||
"Balancers": "Cân bằng",
|
"Balancers": "Cân bằng",
|
||||||
"balancerTagRequired": "Tag là bắt buộc",
|
"balancerTagRequired": "Tag là bắt buộc",
|
||||||
"balancerSelectorRequired": "Chọn ít nhất một outbound",
|
"balancerSelectorRequired": "Chọn ít nhất một outbound",
|
||||||
"routeTester": "Kiểm tra tuyến đường",
|
|
||||||
"routeTesterDesc": "Hỏi Xray đang chạy outbound nào sẽ xử lý kết nối. Không có lưu lượng nào được gửi — quyết định đến thẳng từ công cụ định tuyến trực tiếp.",
|
|
||||||
"routeTesterDest": "Tên miền hoặc IP",
|
|
||||||
"routeTesterPort": "Cổng",
|
|
||||||
"routeTesterInbound": "Inbound",
|
|
||||||
"routeTesterProtocol": "Giao thức nhận diện",
|
|
||||||
"routeTesterTest": "Kiểm tra tuyến",
|
|
||||||
"routeTesterMatchedOutbound": "Outbound phù hợp",
|
|
||||||
"routeTesterViaBalancer": "qua bộ cân bằng tải",
|
|
||||||
"routeTesterDefaultOutbound": "Không có quy tắc định tuyến nào khớp — lưu lượng đến outbound mặc định (đầu tiên).",
|
|
||||||
"Routings": "Quy tắc định tuyến",
|
"Routings": "Quy tắc định tuyến",
|
||||||
"logLevel": "Mức đăng nhập",
|
"logLevel": "Mức đăng nhập",
|
||||||
"logLevelDesc": "Cấp độ nhật ký cho nhật ký lỗi, cho biết thông tin cần được ghi lại.",
|
"logLevelDesc": "Cấp độ nhật ký cho nhật ký lỗi, cho biết thông tin cần được ghi lại.",
|
||||||
@@ -1717,7 +1729,6 @@
|
|||||||
"inbounds": "Inbound",
|
"inbounds": "Inbound",
|
||||||
"clients": "Client",
|
"clients": "Client",
|
||||||
"offline": "🔴 Ngoại tuyến",
|
"offline": "🔴 Ngoại tuyến",
|
||||||
"online": "🟢 Trực tuyến",
|
|
||||||
"commands": {
|
"commands": {
|
||||||
"unknown": "❗ Lệnh không rõ",
|
"unknown": "❗ Lệnh không rõ",
|
||||||
"pleaseChoose": "👇 Vui lòng chọn:\r\n",
|
"pleaseChoose": "👇 Vui lòng chọn:\r\n",
|
||||||
@@ -1730,8 +1741,6 @@
|
|||||||
"helpAdminCommands": "Để khởi động lại Xray Core:\r\n<code>/restart</code>\r\n\r\nĐể tìm kiếm email của khách hàng:\r\n<code>/usage [Email]</code>\r\n\r\nĐể tìm kiếm các nhập (với số liệu thống kê của khách hàng):\r\n<code>/inbound [Ghi chú]</code>\r\n\r\nID Trò chuyện Telegram:\r\n<code>/id</code>",
|
"helpAdminCommands": "Để khởi động lại Xray Core:\r\n<code>/restart</code>\r\n\r\nĐể tìm kiếm email của khách hàng:\r\n<code>/usage [Email]</code>\r\n\r\nĐể tìm kiếm các nhập (với số liệu thống kê của khách hàng):\r\n<code>/inbound [Ghi chú]</code>\r\n\r\nID Trò chuyện Telegram:\r\n<code>/id</code>",
|
||||||
"helpClientCommands": "Để tìm kiếm thống kê, sử dụng lệnh sau:\r\n<code>/usage [Email]</code>\r\n\r\nID Trò chuyện Telegram:\r\n<code>/id</code>",
|
"helpClientCommands": "Để tìm kiếm thống kê, sử dụng lệnh sau:\r\n<code>/usage [Email]</code>\r\n\r\nID Trò chuyện Telegram:\r\n<code>/id</code>",
|
||||||
"restartUsage": "\r\n\r\n<code>/restart</code>",
|
"restartUsage": "\r\n\r\n<code>/restart</code>",
|
||||||
"restartSuccess": "✅ Hoạt động thành công!",
|
|
||||||
"restartFailed": "❗ Lỗi trong quá trình hoạt động.\r\n\r\n<code>Lỗi: {{ .Error }}</code>.",
|
|
||||||
"xrayNotRunning": "❗ Xray Core không chạy.",
|
"xrayNotRunning": "❗ Xray Core không chạy.",
|
||||||
"startDesc": "Hiển thị menu chính",
|
"startDesc": "Hiển thị menu chính",
|
||||||
"helpDesc": "Trợ giúp bot",
|
"helpDesc": "Trợ giúp bot",
|
||||||
|
|||||||
@@ -1273,16 +1273,6 @@
|
|||||||
"Balancers": "负载均衡",
|
"Balancers": "负载均衡",
|
||||||
"balancerTagRequired": "标签为必填项",
|
"balancerTagRequired": "标签为必填项",
|
||||||
"balancerSelectorRequired": "至少选择一个出站",
|
"balancerSelectorRequired": "至少选择一个出站",
|
||||||
"routeTester": "路由测试",
|
|
||||||
"routeTesterDesc": "向运行中的 Xray 查询某个连接将使用哪个出站。不会发送真实流量 — 结果直接来自实时路由引擎。",
|
|
||||||
"routeTesterDest": "域名或 IP",
|
|
||||||
"routeTesterPort": "端口",
|
|
||||||
"routeTesterInbound": "入站",
|
|
||||||
"routeTesterProtocol": "嗅探协议",
|
|
||||||
"routeTesterTest": "测试路由",
|
|
||||||
"routeTesterMatchedOutbound": "匹配出站",
|
|
||||||
"routeTesterViaBalancer": "经由负载均衡器",
|
|
||||||
"routeTesterDefaultOutbound": "无路由规则匹配 — 流量将发往默认(第一个)出站。",
|
|
||||||
"Routings": "路由规则",
|
"Routings": "路由规则",
|
||||||
"logLevel": "日志级别",
|
"logLevel": "日志级别",
|
||||||
"logLevelDesc": "错误日志的日志级别,用于指示需要记录的信息",
|
"logLevelDesc": "错误日志的日志级别,用于指示需要记录的信息",
|
||||||
@@ -1739,7 +1729,6 @@
|
|||||||
"inbounds": "入站",
|
"inbounds": "入站",
|
||||||
"clients": "客户端",
|
"clients": "客户端",
|
||||||
"offline": "🔴 离线",
|
"offline": "🔴 离线",
|
||||||
"online": "🟢 在线",
|
|
||||||
"commands": {
|
"commands": {
|
||||||
"unknown": "❗ 未知命令",
|
"unknown": "❗ 未知命令",
|
||||||
"pleaseChoose": "👇 请选择:\r\n",
|
"pleaseChoose": "👇 请选择:\r\n",
|
||||||
@@ -1752,8 +1741,6 @@
|
|||||||
"helpAdminCommands": "要重新启动 Xray Core:\r\n<code>/restart</code>\r\n\r\n要搜索客户电子邮件:\r\n<code>/usage [电子邮件]</code>\r\n\r\n要搜索入站(带有客户统计数据):\r\n<code>/inbound [备注]</code>\r\n\r\nTelegram 聊天 ID:\r\n<code>/id</code>",
|
"helpAdminCommands": "要重新启动 Xray Core:\r\n<code>/restart</code>\r\n\r\n要搜索客户电子邮件:\r\n<code>/usage [电子邮件]</code>\r\n\r\n要搜索入站(带有客户统计数据):\r\n<code>/inbound [备注]</code>\r\n\r\nTelegram 聊天 ID:\r\n<code>/id</code>",
|
||||||
"helpClientCommands": "要搜索统计数据,请使用以下命令:\r\n<code>/usage [电子邮件]</code>\r\n\r\nTelegram 聊天 ID:\r\n<code>/id</code>",
|
"helpClientCommands": "要搜索统计数据,请使用以下命令:\r\n<code>/usage [电子邮件]</code>\r\n\r\nTelegram 聊天 ID:\r\n<code>/id</code>",
|
||||||
"restartUsage": "\r\n\r\n<code>/restart</code>",
|
"restartUsage": "\r\n\r\n<code>/restart</code>",
|
||||||
"restartSuccess": "✅ 操作成功!",
|
|
||||||
"restartFailed": "❗ 操作错误。\r\n\r\n<code>错误: {{ .Error }}</code>.",
|
|
||||||
"xrayNotRunning": "❗ Xray Core 未运行。",
|
"xrayNotRunning": "❗ Xray Core 未运行。",
|
||||||
"startDesc": "显示主菜单",
|
"startDesc": "显示主菜单",
|
||||||
"helpDesc": "机器人帮助",
|
"helpDesc": "机器人帮助",
|
||||||
|
|||||||
@@ -282,6 +282,28 @@
|
|||||||
"streamTab": "傳輸",
|
"streamTab": "傳輸",
|
||||||
"securityTab": "安全",
|
"securityTab": "安全",
|
||||||
"sniffingTab": "嗅探",
|
"sniffingTab": "嗅探",
|
||||||
|
"forwardingTab": "Forwarding",
|
||||||
|
"forwarding": {
|
||||||
|
"mode": "Forwarding",
|
||||||
|
"direct": "Direct",
|
||||||
|
"forward": "Forward (entry → exit)",
|
||||||
|
"landing": "Landing",
|
||||||
|
"managed": "Managed landing",
|
||||||
|
"manual": "Manual endpoint",
|
||||||
|
"target": "Landing inbound",
|
||||||
|
"targetPlaceholder": "Pick a SOCKS (mixed) inbound",
|
||||||
|
"targetDisabled": "disabled",
|
||||||
|
"address": "Landing address",
|
||||||
|
"port": "Exit port",
|
||||||
|
"protocol": "Entry → exit protocol",
|
||||||
|
"username": "SOCKS5 username",
|
||||||
|
"password": "Landing password",
|
||||||
|
"importLink": "Import from link",
|
||||||
|
"importPlaceholder": "socks5://user:pass@host:port",
|
||||||
|
"importApply": "Import",
|
||||||
|
"importFailed": "Could not parse that link",
|
||||||
|
"help": "Applies when this inbound is deployed to an agent node: on every config pull the panel compiles this forwarding into a dedicated outbound plus a routing rule for that agent. A managed landing's address and credentials are resolved from the chosen inbound at build time."
|
||||||
|
},
|
||||||
"sniffingMetadataOnly": "僅中繼資料",
|
"sniffingMetadataOnly": "僅中繼資料",
|
||||||
"sniffingRouteOnly": "僅路由",
|
"sniffingRouteOnly": "僅路由",
|
||||||
"sniffingIpsExcluded": "排除的 IP",
|
"sniffingIpsExcluded": "排除的 IP",
|
||||||
@@ -1251,16 +1273,6 @@
|
|||||||
"Balancers": "負載均衡",
|
"Balancers": "負載均衡",
|
||||||
"balancerTagRequired": "標籤為必填",
|
"balancerTagRequired": "標籤為必填",
|
||||||
"balancerSelectorRequired": "至少選擇一個出站",
|
"balancerSelectorRequired": "至少選擇一個出站",
|
||||||
"routeTester": "路由測試",
|
|
||||||
"routeTesterDesc": "向執行中的 Xray 查詢某個連線將使用哪個出站。不會傳送真實流量 — 結果直接來自即時路由引擎。",
|
|
||||||
"routeTesterDest": "網域或 IP",
|
|
||||||
"routeTesterPort": "埠號",
|
|
||||||
"routeTesterInbound": "入站",
|
|
||||||
"routeTesterProtocol": "嗅探協議",
|
|
||||||
"routeTesterTest": "測試路由",
|
|
||||||
"routeTesterMatchedOutbound": "匹配出站",
|
|
||||||
"routeTesterViaBalancer": "經由負載均衡器",
|
|
||||||
"routeTesterDefaultOutbound": "無路由規則匹配 — 流量將導向預設(第一個)出站。",
|
|
||||||
"Routings": "路由規則",
|
"Routings": "路由規則",
|
||||||
"logLevel": "日誌級別",
|
"logLevel": "日誌級別",
|
||||||
"logLevelDesc": "錯誤日誌的日誌級別,用於指示需要記錄的資訊",
|
"logLevelDesc": "錯誤日誌的日誌級別,用於指示需要記錄的資訊",
|
||||||
@@ -1717,7 +1729,6 @@
|
|||||||
"inbounds": "入站",
|
"inbounds": "入站",
|
||||||
"clients": "客戶端",
|
"clients": "客戶端",
|
||||||
"offline": "🔴 離線",
|
"offline": "🔴 離線",
|
||||||
"online": "🟢 上線",
|
|
||||||
"commands": {
|
"commands": {
|
||||||
"unknown": "❗ 未知命令",
|
"unknown": "❗ 未知命令",
|
||||||
"pleaseChoose": "👇 請選擇:\r\n",
|
"pleaseChoose": "👇 請選擇:\r\n",
|
||||||
@@ -1730,8 +1741,6 @@
|
|||||||
"helpAdminCommands": "要重新啟動 Xray Core:\r\n<code>/restart</code>\r\n\r\n要搜尋客戶電子郵件:\r\n<code>/usage [電子郵件]</code>\r\n\r\n要搜尋入站(帶有客戶統計資料):\r\n<code>/inbound [備註]</code>\r\n\r\nTelegram 聊天 ID:\r\n<code>/id</code>",
|
"helpAdminCommands": "要重新啟動 Xray Core:\r\n<code>/restart</code>\r\n\r\n要搜尋客戶電子郵件:\r\n<code>/usage [電子郵件]</code>\r\n\r\n要搜尋入站(帶有客戶統計資料):\r\n<code>/inbound [備註]</code>\r\n\r\nTelegram 聊天 ID:\r\n<code>/id</code>",
|
||||||
"helpClientCommands": "要搜尋統計資料,請使用以下命令:\r\n<code>/usage [電子郵件]</code>\r\n\r\nTelegram 聊天 ID:\r\n<code>/id</code>",
|
"helpClientCommands": "要搜尋統計資料,請使用以下命令:\r\n<code>/usage [電子郵件]</code>\r\n\r\nTelegram 聊天 ID:\r\n<code>/id</code>",
|
||||||
"restartUsage": "\r\n\r\n<code>/restart</code>",
|
"restartUsage": "\r\n\r\n<code>/restart</code>",
|
||||||
"restartSuccess": "✅ 操作成功!",
|
|
||||||
"restartFailed": "❗ 操作錯誤。\r\n\r\n<code>錯誤: {{ .Error }}</code>.",
|
|
||||||
"xrayNotRunning": "❗ Xray Core 未運行。",
|
"xrayNotRunning": "❗ Xray Core 未運行。",
|
||||||
"startDesc": "顯示主選單",
|
"startDesc": "顯示主選單",
|
||||||
"helpDesc": "機器人幫助",
|
"helpDesc": "機器人幫助",
|
||||||
|
|||||||
Reference in New Issue
Block a user