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:
Muse
2026-10-22 18:23:22 +00:00
parent 8e89960474
commit a47e64f70a
14 changed files with 249 additions and 172 deletions
+22 -13
View File
@@ -282,6 +282,28 @@
"streamTab": "انتقال",
"securityTab": "امنیت",
"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": "فقط متادیتا",
"sniffingRouteOnly": "فقط مسیریابی",
"sniffingIpsExcluded": "IPهای مستثنا",
@@ -1243,16 +1265,6 @@
"Balancers": "بالانسرها",
"balancerTagRequired": "تگ الزامی است",
"balancerSelectorRequired": "حداقل یک خروجی انتخاب کنید",
"routeTester": "آزمایش مسیر",
"routeTesterDesc": "از Xray در حال اجرا بپرسید یک اتصال از کدام خروجی عبور می‌کند. هیچ ترافیکی ارسال نمی‌شود — پاسخ مستقیماً از موتور مسیریابی زنده می‌آید.",
"routeTesterDest": "دامنه یا IP",
"routeTesterPort": "پورت",
"routeTesterInbound": "ورودی",
"routeTesterProtocol": "پروتکل تشخیصی",
"routeTesterTest": "آزمایش مسیر",
"routeTesterMatchedOutbound": "خروجی منطبق",
"routeTesterViaBalancer": "از طریق بالانسر",
"routeTesterDefaultOutbound": "هیچ قانونی منطبق نشد — ترافیک به خروجی پیش‌فرض (اولین خروجی) می‌رود.",
"Routings": "قوانین مسیریابی",
"importRules": "ورود قوانین",
"exportRules": "خروج قوانین",
@@ -1717,7 +1729,6 @@
"inbounds": "ورودی‌ها",
"clients": "کاربران",
"offline": "🔴 آفلاین",
"online": "🟢 آنلاین",
"commands": {
"unknown": "❗ دستور ناشناخته",
"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>",
"helpClientCommands": "برای جستجوی آمار، از دستور زیر استفاده کنید:\r\n<code>/usage [ایمیل]</code>\r\n\r\nشناسه گفتگوی تلگرام:\r\n<code>/id</code>",
"restartUsage": "\r\n\r\n<code>/restart</code>",
"restartSuccess": "✅ عملیات با موفقیت انجام شد!",
"restartFailed": "❗ خطا در عملیات.\r\n\r\n<code>خطا: {{ .Error }}</code>.",
"xrayNotRunning": "❗ Xray Core در حال اجرا نیست.",
"startDesc": "نمایش منوی اصلی",
"helpDesc": "راهنمای ربات",