mirror of
https://github.com/chillpadclub/bedolaga-cabinet.git
synced 2026-07-28 09:33:46 +00:00
fix(i18n): spell the brand "Remnawave" instead of camelCase "RemnaWave"
Replace the user-facing 'RemnaWave' spelling with 'Remnawave' across all locale values (en/ru/zh/fa, 67 strings), t() display fallbacks, and code comments. Translation keys (refreshRemnaWave, ...) and code identifiers (RemnaWaveService, setRemnaWaveUuid, ...) are left untouched.
This commit is contained in:
@@ -9,7 +9,7 @@ export interface LocalizedText {
|
||||
}
|
||||
|
||||
export const adminAppsApi = {
|
||||
// Get RemnaWave config status
|
||||
// Get Remnawave config status
|
||||
getRemnaWaveStatus: async (): Promise<{ enabled: boolean; config_uuid: string | null }> => {
|
||||
const response = await apiClient.get<{ enabled: boolean; config_uuid: string | null }>(
|
||||
'/cabinet/admin/apps/remnawave/status',
|
||||
@@ -17,7 +17,7 @@ export const adminAppsApi = {
|
||||
return response.data;
|
||||
},
|
||||
|
||||
// Set RemnaWave config UUID
|
||||
// Set Remnawave config UUID
|
||||
setRemnaWaveUuid: async (
|
||||
uuid: string | null,
|
||||
): Promise<{ enabled: boolean; config_uuid: string | null }> => {
|
||||
@@ -28,7 +28,7 @@ export const adminAppsApi = {
|
||||
return response.data;
|
||||
},
|
||||
|
||||
// List available RemnaWave configs
|
||||
// List available Remnawave configs
|
||||
listRemnaWaveConfigs: async (): Promise<
|
||||
{ uuid: string; name: string; view_position: number }[]
|
||||
> => {
|
||||
@@ -38,7 +38,7 @@ export const adminAppsApi = {
|
||||
return response.data;
|
||||
},
|
||||
|
||||
// Get RemnaWave subscription config
|
||||
// Get Remnawave subscription config
|
||||
getRemnaWaveConfig: async (): Promise<RemnawaveConfig> => {
|
||||
const response = await apiClient.get<{
|
||||
uuid: string;
|
||||
@@ -50,7 +50,7 @@ export const adminAppsApi = {
|
||||
},
|
||||
};
|
||||
|
||||
// ============== RemnaWave Format Types ==============
|
||||
// ============== Remnawave Format Types ==============
|
||||
|
||||
export interface RemnawaveButton {
|
||||
url: string;
|
||||
|
||||
@@ -698,7 +698,7 @@ export const adminUsersApi = {
|
||||
return response.data;
|
||||
},
|
||||
|
||||
// Get subscription request history from RemnaWave panel
|
||||
// Get subscription request history from Remnawave panel
|
||||
getSubscriptionRequestHistory: async (
|
||||
userId: number,
|
||||
subscriptionId?: number,
|
||||
|
||||
@@ -134,7 +134,7 @@ export const serversApi = {
|
||||
return response.data;
|
||||
},
|
||||
|
||||
// Sync servers with RemnaWave
|
||||
// Sync servers with Remnawave
|
||||
syncServers: async (): Promise<ServerSyncResponse> => {
|
||||
const response = await apiClient.post('/cabinet/admin/servers/sync');
|
||||
return response.data;
|
||||
|
||||
@@ -87,7 +87,7 @@ export interface TariffDetail {
|
||||
daily_price_kopeks: number;
|
||||
// Режим сброса трафика
|
||||
traffic_reset_mode: string | null; // 'DAY', 'WEEK', 'MONTH', 'MONTH_ROLLING', 'NO_RESET', null = глобальная настройка
|
||||
// Внешний сквад RemnaWave
|
||||
// Внешний сквад Remnawave
|
||||
external_squad_uuid: string | null;
|
||||
created_at: string;
|
||||
updated_at: string | null;
|
||||
@@ -126,7 +126,7 @@ export interface TariffCreateRequest {
|
||||
daily_price_kopeks?: number;
|
||||
// Режим сброса трафика
|
||||
traffic_reset_mode?: string | null;
|
||||
// Внешний сквад RemnaWave
|
||||
// Внешний сквад Remnawave
|
||||
external_squad_uuid?: string | null;
|
||||
}
|
||||
|
||||
@@ -170,7 +170,7 @@ export interface TariffUpdateRequest {
|
||||
daily_price_kopeks?: number;
|
||||
// Режим сброса трафика
|
||||
traffic_reset_mode?: string | null;
|
||||
// Внешний сквад RemnaWave
|
||||
// Внешний сквад Remnawave
|
||||
external_squad_uuid?: string | null;
|
||||
}
|
||||
|
||||
@@ -266,7 +266,7 @@ export const tariffsApi = {
|
||||
return response.data;
|
||||
},
|
||||
|
||||
// Get available external squads from RemnaWave
|
||||
// Get available external squads from Remnawave
|
||||
getAvailableExternalSquads: async (): Promise<ExternalSquadInfo[]> => {
|
||||
const response = await apiClient.get('/cabinet/admin/tariffs/available-external-squads');
|
||||
return response.data;
|
||||
|
||||
@@ -1207,7 +1207,7 @@
|
||||
"broadcasts": "Broadcasts",
|
||||
"users": "Users",
|
||||
"payments": "Payments",
|
||||
"remnawave": "RemnaWave",
|
||||
"remnawave": "Remnawave",
|
||||
"emailTemplates": "Email Templates",
|
||||
"paymentMethods": "Payment Methods",
|
||||
"campaigns": "Campaigns",
|
||||
@@ -1605,7 +1605,7 @@
|
||||
"notFound": "Payment method not found"
|
||||
},
|
||||
"remnawave": {
|
||||
"title": "RemnaWave",
|
||||
"title": "Remnawave",
|
||||
"subtitle": "Panel management and statistics",
|
||||
"connected": "Connected",
|
||||
"disconnected": "Not configured",
|
||||
@@ -1719,9 +1719,9 @@
|
||||
"success": "Success",
|
||||
"runAutoSyncNow": "Run Auto Sync Now",
|
||||
"fromPanel": "From Panel",
|
||||
"fromPanelDesc": "Import users from RemnaWave to bot",
|
||||
"fromPanelDesc": "Import users from Remnawave to bot",
|
||||
"toPanel": "To Panel",
|
||||
"toPanelDesc": "Export users from bot to RemnaWave"
|
||||
"toPanelDesc": "Export users from bot to Remnawave"
|
||||
}
|
||||
},
|
||||
"wheel": {
|
||||
@@ -2128,7 +2128,7 @@
|
||||
"db_sqlite": "SQLite",
|
||||
"db_redis": "Redis",
|
||||
"sys_core": "Core & Debug",
|
||||
"sys_remnawave": "RemnaWave",
|
||||
"sys_remnawave": "Remnawave",
|
||||
"sys_webapi": "Web API",
|
||||
"sys_webhook": "Webhook",
|
||||
"sys_server": "Server status",
|
||||
@@ -2178,7 +2178,7 @@
|
||||
"deleteUser": "Delete users"
|
||||
},
|
||||
"deleteSubscription": {
|
||||
"warning": "Selected subscriptions will be permanently deleted from the bot and RemnaWave panel!",
|
||||
"warning": "Selected subscriptions will be permanently deleted from the bot and Remnawave panel!",
|
||||
"hint": "Users will lose VPN access for deleted subscriptions. This action cannot be undone.",
|
||||
"activePaidWarning": "{{count}} of {{total}} selected subscriptions are active paid",
|
||||
"forceDeleteConfirm": "I confirm deletion of active paid subscriptions"
|
||||
@@ -2186,7 +2186,7 @@
|
||||
"deleteUser": {
|
||||
"warning": "Selected users will be permanently deleted from the bot! All their subscriptions, balance, and data will be lost!",
|
||||
"hint": "This action cannot be undone. Users will need to restart the bot to create a new account.",
|
||||
"deleteFromPanel": "Also delete from RemnaWave panel"
|
||||
"deleteFromPanel": "Also delete from Remnawave panel"
|
||||
},
|
||||
"params": {
|
||||
"days": "Number of days",
|
||||
@@ -2370,16 +2370,16 @@
|
||||
"importError": "Invalid JSON file format",
|
||||
"importCreateError": "Failed to create some apps",
|
||||
"noAppsToImport": "No apps to import",
|
||||
"remnaWaveToggle": "Toggle RemnaWave source",
|
||||
"refreshRemnaWave": "Refresh from RemnaWave",
|
||||
"remnaWaveMode": "Showing apps from RemnaWave panel. Read-only mode.",
|
||||
"remnaWaveSettings": "RemnaWave Settings",
|
||||
"remnaWaveToggle": "Toggle Remnawave source",
|
||||
"refreshRemnaWave": "Refresh from Remnawave",
|
||||
"remnaWaveMode": "Showing apps from Remnawave panel. Read-only mode.",
|
||||
"remnaWaveSettings": "Remnawave Settings",
|
||||
"remnaWaveConfigUuid": "Config UUID",
|
||||
"remnaWaveConfigUuidHint": "UUID of subscription page config from RemnaWave panel",
|
||||
"remnaWaveConfigUuidHint": "UUID of subscription page config from Remnawave panel",
|
||||
"availableConfigs": "Available configs",
|
||||
"noConfigs": "No configs",
|
||||
"remnaWaveConnected": "RemnaWave connected",
|
||||
"remnaWaveDisconnected": "RemnaWave disconnected"
|
||||
"remnaWaveConnected": "Remnawave connected",
|
||||
"remnaWaveDisconnected": "Remnawave disconnected"
|
||||
},
|
||||
"tickets": {
|
||||
"title": "Ticket Management",
|
||||
@@ -2528,7 +2528,7 @@
|
||||
"daysShort": "d.",
|
||||
"serversTitle": "Servers",
|
||||
"externalSquadTitle": "External Squad",
|
||||
"externalSquadHint": "Assign a RemnaWave external squad for users on this tariff. When a subscription is created, the user will be automatically added to the selected squad.",
|
||||
"externalSquadHint": "Assign a Remnawave external squad for users on this tariff. When a subscription is created, the user will be automatically added to the selected squad.",
|
||||
"noExternalSquad": "No external squad",
|
||||
"externalSquadUsers": "users",
|
||||
"serversTabHint": "Select servers available on this tariff.",
|
||||
@@ -2607,7 +2607,7 @@
|
||||
"sync": "Sync",
|
||||
"syncing": "Syncing...",
|
||||
"syncNow": "Sync now",
|
||||
"noServers": "No servers. Sync with RemnaWave.",
|
||||
"noServers": "No servers. Sync with Remnawave.",
|
||||
"edit": "Edit Server",
|
||||
"originalName": "Original Name",
|
||||
"displayName": "Display Name",
|
||||
|
||||
@@ -1086,7 +1086,7 @@
|
||||
"promoOffers": "پیشنهادات تبلیغاتی",
|
||||
"promocodes": "کدهای تخفیف",
|
||||
"promoGroups": "گروههای تخفیف",
|
||||
"remnawave": "RemnaWave",
|
||||
"remnawave": "Remnawave",
|
||||
"users": "کاربران",
|
||||
"trafficUsage": "مصرف ترافیک",
|
||||
"updates": "بهروزرسانیها",
|
||||
@@ -1832,7 +1832,7 @@
|
||||
"db_sqlite": "SQLite",
|
||||
"db_redis": "Redis",
|
||||
"sys_core": "هسته و اشکالزدایی",
|
||||
"sys_remnawave": "RemnaWave",
|
||||
"sys_remnawave": "Remnawave",
|
||||
"sys_webapi": "Web API",
|
||||
"sys_webhook": "Webhook",
|
||||
"sys_server": "وضعیت سرور",
|
||||
@@ -1957,15 +1957,15 @@
|
||||
"importError": "فرمت فایل JSON نامعتبر",
|
||||
"importPreview": "پیشنمایش وارد کردن",
|
||||
"noAppsToImport": "هیچ برنامهای برای وارد کردن نیست",
|
||||
"refreshRemnaWave": "بازخوانی از RemnaWave",
|
||||
"refreshRemnaWave": "بازخوانی از Remnawave",
|
||||
"remnaWaveConfigUuid": "UUID پیکربندی",
|
||||
"remnaWaveConfigUuidHint": "UUID پیکربندی صفحه اشتراک از پنل RemnaWave",
|
||||
"remnaWaveMode": "نمایش برنامهها از پنل RemnaWave. حالت فقط خواندنی.",
|
||||
"remnaWaveSettings": "تنظیمات RemnaWave",
|
||||
"remnaWaveToggle": "تغییر منبع RemnaWave",
|
||||
"remnaWaveConfigUuidHint": "UUID پیکربندی صفحه اشتراک از پنل Remnawave",
|
||||
"remnaWaveMode": "نمایش برنامهها از پنل Remnawave. حالت فقط خواندنی.",
|
||||
"remnaWaveSettings": "تنظیمات Remnawave",
|
||||
"remnaWaveToggle": "تغییر منبع Remnawave",
|
||||
"noConfigs": "هیچ تنظیماتی وجود ندارد",
|
||||
"remnaWaveConnected": "RemnaWave متصل است",
|
||||
"remnaWaveDisconnected": "RemnaWave قطع است"
|
||||
"remnaWaveConnected": "Remnawave متصل است",
|
||||
"remnaWaveDisconnected": "Remnawave قطع است"
|
||||
},
|
||||
"tickets": {
|
||||
"title": "مدیریت تیکتها",
|
||||
@@ -2107,7 +2107,7 @@
|
||||
"daysShort": "روز",
|
||||
"serversTitle": "سرورها",
|
||||
"externalSquadTitle": "گروه خارجی",
|
||||
"externalSquadHint": "یک گروه خارجی RemnaWave برای کاربران این تعرفه تعیین کنید. هنگام ایجاد اشتراک، کاربر به طور خودکار به گروه انتخاب شده اضافه میشود.",
|
||||
"externalSquadHint": "یک گروه خارجی Remnawave برای کاربران این تعرفه تعیین کنید. هنگام ایجاد اشتراک، کاربر به طور خودکار به گروه انتخاب شده اضافه میشود.",
|
||||
"noExternalSquad": "بدون گروه خارجی",
|
||||
"externalSquadUsers": "کاربران",
|
||||
"serversTabHint": "سرورهای موجود در این تعرفه را انتخاب کنید.",
|
||||
@@ -2186,7 +2186,7 @@
|
||||
"sync": "همگامسازی",
|
||||
"syncing": "در حال همگامسازی...",
|
||||
"syncNow": "همگامسازی الان",
|
||||
"noServers": "سروری نیست. با RemnaWave همگامسازی کنید.",
|
||||
"noServers": "سروری نیست. با Remnawave همگامسازی کنید.",
|
||||
"edit": "ویرایش سرور",
|
||||
"originalName": "نام اصلی",
|
||||
"displayName": "نام نمایشی",
|
||||
@@ -3138,7 +3138,7 @@
|
||||
"connected": "متصل",
|
||||
"disconnected": "تنظیم نشده",
|
||||
"noData": "بارگذاری دادهها ناموفق بود",
|
||||
"title": "RemnaWave",
|
||||
"title": "Remnawave",
|
||||
"subtitle": "مدیریت پنل و آمار",
|
||||
"tabs": {
|
||||
"overview": "نمای کلی",
|
||||
@@ -3246,9 +3246,9 @@
|
||||
"success": "موفق",
|
||||
"runAutoSyncNow": "اجرای همگامسازی خودکار",
|
||||
"fromPanel": "از پنل",
|
||||
"fromPanelDesc": "وارد کردن کاربران از RemnaWave به ربات",
|
||||
"fromPanelDesc": "وارد کردن کاربران از Remnawave به ربات",
|
||||
"toPanel": "به پنل",
|
||||
"toPanelDesc": "صادر کردن کاربران از ربات به RemnaWave"
|
||||
"toPanelDesc": "صادر کردن کاربران از ربات به Remnawave"
|
||||
}
|
||||
},
|
||||
"theme": {
|
||||
@@ -3824,7 +3824,7 @@
|
||||
"deleteUser": "حذف کاربران"
|
||||
},
|
||||
"deleteSubscription": {
|
||||
"warning": "اشتراکهای انتخاب شده برای همیشه از ربات و پنل RemnaWave حذف خواهند شد!",
|
||||
"warning": "اشتراکهای انتخاب شده برای همیشه از ربات و پنل Remnawave حذف خواهند شد!",
|
||||
"hint": "کاربران دسترسی VPN اشتراکهای حذف شده را از دست خواهند داد. این عملیات قابل بازگشت نیست.",
|
||||
"activePaidWarning": "{{count}} از {{total}} اشتراک انتخابشده اشتراکهای فعال پرداختی هستند",
|
||||
"forceDeleteConfirm": "حذف اشتراکهای فعال پرداختی را تأیید میکنم"
|
||||
@@ -3832,7 +3832,7 @@
|
||||
"deleteUser": {
|
||||
"warning": "کاربران انتخاب شده برای همیشه از ربات حذف خواهند شد! تمام اشتراکها، موجودی و دادههای آنها از بین خواهد رفت!",
|
||||
"hint": "این عملیات قابل بازگشت نیست. کاربران باید ربات را دوباره راهاندازی کنند تا حساب جدید بسازند.",
|
||||
"deleteFromPanel": "همچنین از پنل RemnaWave حذف شود"
|
||||
"deleteFromPanel": "همچنین از پنل Remnawave حذف شود"
|
||||
},
|
||||
"params": {
|
||||
"days": "تعداد روز",
|
||||
|
||||
@@ -1229,7 +1229,7 @@
|
||||
"broadcasts": "Рассылки",
|
||||
"users": "Пользователи",
|
||||
"payments": "Платежи",
|
||||
"remnawave": "RemnaWave",
|
||||
"remnawave": "Remnawave",
|
||||
"emailTemplates": "Email-шаблоны",
|
||||
"paymentMethods": "Платёжные методы",
|
||||
"campaigns": "Кампании",
|
||||
@@ -1627,7 +1627,7 @@
|
||||
"notFound": "Метод оплаты не найден"
|
||||
},
|
||||
"remnawave": {
|
||||
"title": "RemnaWave",
|
||||
"title": "Remnawave",
|
||||
"subtitle": "Управление панелью и статистика",
|
||||
"connected": "Подключено",
|
||||
"disconnected": "Не настроено",
|
||||
@@ -1744,9 +1744,9 @@
|
||||
"success": "Успешно",
|
||||
"runAutoSyncNow": "Запустить автосинхронизацию",
|
||||
"fromPanel": "Из панели",
|
||||
"fromPanelDesc": "Импорт пользователей из RemnaWave в бота",
|
||||
"fromPanelDesc": "Импорт пользователей из Remnawave в бота",
|
||||
"toPanel": "В панель",
|
||||
"toPanelDesc": "Экспорт пользователей из бота в RemnaWave"
|
||||
"toPanelDesc": "Экспорт пользователей из бота в Remnawave"
|
||||
}
|
||||
},
|
||||
"wheel": {
|
||||
@@ -2145,7 +2145,7 @@
|
||||
"db_sqlite": "SQLite",
|
||||
"db_redis": "Redis",
|
||||
"sys_core": "Ядро и отладка",
|
||||
"sys_remnawave": "RemnaWave",
|
||||
"sys_remnawave": "Remnawave",
|
||||
"sys_webapi": "Web API",
|
||||
"sys_webhook": "Webhook",
|
||||
"sys_server": "Статус сервера",
|
||||
@@ -2355,8 +2355,8 @@
|
||||
"Api Key": "API ключ",
|
||||
"Api Token": "API токен",
|
||||
"Webhook Secret": "Секрет вебхука",
|
||||
"Remnawave Url": "URL RemnaWave",
|
||||
"Remnawave Token": "Токен RemnaWave",
|
||||
"Remnawave Url": "URL Remnawave",
|
||||
"Remnawave Token": "Токен Remnawave",
|
||||
"Server Status Enabled": "Статус сервера",
|
||||
"Monitoring Enabled": "Мониторинг",
|
||||
"Backup Enabled": "Бэкап",
|
||||
@@ -2646,7 +2646,7 @@
|
||||
"SQLITE": "SQLite",
|
||||
"REDIS": "Redis",
|
||||
"CORE": "Бот",
|
||||
"REMNAWAVE": "RemnaWave",
|
||||
"REMNAWAVE": "Remnawave",
|
||||
"SERVER_STATUS": "Статус сервера",
|
||||
"MONITORING": "Мониторинг",
|
||||
"MAINTENANCE": "Обслуживание",
|
||||
@@ -2765,16 +2765,16 @@
|
||||
"importError": "Неверный формат JSON файла",
|
||||
"importCreateError": "Ошибка при создании приложений",
|
||||
"noAppsToImport": "Нет приложений для импорта",
|
||||
"remnaWaveToggle": "Переключить источник RemnaWave",
|
||||
"refreshRemnaWave": "Обновить данные из RemnaWave",
|
||||
"remnaWaveMode": "Отображаются приложения из панели RemnaWave. Режим только для чтения.",
|
||||
"remnaWaveSettings": "Настройки RemnaWave",
|
||||
"remnaWaveToggle": "Переключить источник Remnawave",
|
||||
"refreshRemnaWave": "Обновить данные из Remnawave",
|
||||
"remnaWaveMode": "Отображаются приложения из панели Remnawave. Режим только для чтения.",
|
||||
"remnaWaveSettings": "Настройки Remnawave",
|
||||
"remnaWaveConfigUuid": "UUID конфигурации",
|
||||
"remnaWaveConfigUuidHint": "UUID конфигурации страницы подписки из панели RemnaWave",
|
||||
"remnaWaveConfigUuidHint": "UUID конфигурации страницы подписки из панели Remnawave",
|
||||
"availableConfigs": "Доступные конфигурации",
|
||||
"noConfigs": "Нет настроенных конфигов",
|
||||
"remnaWaveConnected": "RemnaWave подключён",
|
||||
"remnaWaveDisconnected": "RemnaWave отключён"
|
||||
"remnaWaveConnected": "Remnawave подключён",
|
||||
"remnaWaveDisconnected": "Remnawave отключён"
|
||||
},
|
||||
"tickets": {
|
||||
"title": "Управление тикетами",
|
||||
@@ -2926,7 +2926,7 @@
|
||||
"daysShort": "дн.",
|
||||
"serversTitle": "Серверы",
|
||||
"externalSquadTitle": "Внешний сквад",
|
||||
"externalSquadHint": "Назначьте внешний сквад RemnaWave для пользователей этого тарифа. При создании подписки пользователь будет автоматически добавлен в выбранный сквад.",
|
||||
"externalSquadHint": "Назначьте внешний сквад Remnawave для пользователей этого тарифа. При создании подписки пользователь будет автоматически добавлен в выбранный сквад.",
|
||||
"noExternalSquad": "Без внешнего сквада",
|
||||
"externalSquadUsers": "пользователей",
|
||||
"serversTabHint": "Выберите серверы, доступные на этом тарифе.",
|
||||
@@ -3005,7 +3005,7 @@
|
||||
"sync": "Синхронизировать",
|
||||
"syncing": "Синхронизация...",
|
||||
"syncNow": "Синхронизировать сейчас",
|
||||
"noServers": "Нет серверов. Синхронизируйте с RemnaWave.",
|
||||
"noServers": "Нет серверов. Синхронизируйте с Remnawave.",
|
||||
"edit": "Редактировать сервер",
|
||||
"originalName": "Оригинальное название",
|
||||
"displayName": "Отображаемое название",
|
||||
@@ -3976,7 +3976,7 @@
|
||||
"deleteUser": "Удалить пользователей"
|
||||
},
|
||||
"deleteSubscription": {
|
||||
"warning": "Выбранные подписки будут безвозвратно удалены из бота и панели RemnaWave!",
|
||||
"warning": "Выбранные подписки будут безвозвратно удалены из бота и панели Remnawave!",
|
||||
"hint": "Пользователи потеряют доступ к VPN по удалённым подпискам. Это действие нельзя отменить.",
|
||||
"activePaidWarning": "{{count}} из {{total}} выбранных подписок: активные платные",
|
||||
"forceDeleteConfirm": "Подтверждаю удаление активных платных подписок"
|
||||
@@ -3984,7 +3984,7 @@
|
||||
"deleteUser": {
|
||||
"warning": "Выбранные пользователи будут безвозвратно удалены из бота! Все их подписки, баланс и данные будут потеряны!",
|
||||
"hint": "Это действие нельзя отменить. Пользователям придётся заново запустить бота для создания нового аккаунта.",
|
||||
"deleteFromPanel": "Также удалить из панели RemnaWave"
|
||||
"deleteFromPanel": "Также удалить из панели Remnawave"
|
||||
},
|
||||
"params": {
|
||||
"days": "Количество дней",
|
||||
|
||||
@@ -1086,7 +1086,7 @@
|
||||
"promoOffers": "促销优惠",
|
||||
"promocodes": "促销码",
|
||||
"promoGroups": "折扣组",
|
||||
"remnawave": "RemnaWave",
|
||||
"remnawave": "Remnawave",
|
||||
"users": "用户",
|
||||
"trafficUsage": "流量使用",
|
||||
"updates": "更新",
|
||||
@@ -1873,7 +1873,7 @@
|
||||
"db_sqlite": "SQLite",
|
||||
"db_redis": "Redis",
|
||||
"sys_core": "核心与调试",
|
||||
"sys_remnawave": "RemnaWave",
|
||||
"sys_remnawave": "Remnawave",
|
||||
"sys_webapi": "Web API",
|
||||
"sys_webhook": "Webhook",
|
||||
"sys_server": "服务器状态",
|
||||
@@ -1991,12 +1991,12 @@
|
||||
"importError": "无效的JSON文件格式",
|
||||
"importPreview": "导入预览",
|
||||
"noAppsToImport": "没有可导入的应用",
|
||||
"refreshRemnaWave": "从RemnaWave刷新",
|
||||
"refreshRemnaWave": "从Remnawave刷新",
|
||||
"remnaWaveConfigUuid": "配置UUID",
|
||||
"remnaWaveConfigUuidHint": "来自RemnaWave面板的订阅页面配置UUID",
|
||||
"remnaWaveMode": "显示来自RemnaWave面板的应用。只读模式。",
|
||||
"remnaWaveSettings": "RemnaWave设置",
|
||||
"remnaWaveToggle": "切换RemnaWave源",
|
||||
"remnaWaveConfigUuidHint": "来自Remnawave面板的订阅页面配置UUID",
|
||||
"remnaWaveMode": "显示来自Remnawave面板的应用。只读模式。",
|
||||
"remnaWaveSettings": "Remnawave设置",
|
||||
"remnaWaveToggle": "切换Remnawave源",
|
||||
"tabs": {
|
||||
"basic": "基本",
|
||||
"installation": "安装",
|
||||
@@ -2005,8 +2005,8 @@
|
||||
"additional": "附加"
|
||||
},
|
||||
"noConfigs": "未配置任何配置",
|
||||
"remnaWaveConnected": "RemnaWave 已连接",
|
||||
"remnaWaveDisconnected": "RemnaWave 未连接"
|
||||
"remnaWaveConnected": "Remnawave 已连接",
|
||||
"remnaWaveDisconnected": "Remnawave 未连接"
|
||||
},
|
||||
"tickets": {
|
||||
"title": "工单管理",
|
||||
@@ -2147,7 +2147,7 @@
|
||||
"daysShort": "天",
|
||||
"serversTitle": "服务器",
|
||||
"externalSquadTitle": "外部小组",
|
||||
"externalSquadHint": "为此套餐的用户分配RemnaWave外部小组。创建订阅时,用户将自动添加到所选小组。",
|
||||
"externalSquadHint": "为此套餐的用户分配Remnawave外部小组。创建订阅时,用户将自动添加到所选小组。",
|
||||
"noExternalSquad": "无外部小组",
|
||||
"externalSquadUsers": "用户",
|
||||
"serversTabHint": "选择此套餐上可用的服务器。",
|
||||
@@ -2226,7 +2226,7 @@
|
||||
"sync": "同步",
|
||||
"syncing": "同步中...",
|
||||
"syncNow": "立即同步",
|
||||
"noServers": "暂无服务器。请与RemnaWave同步。",
|
||||
"noServers": "暂无服务器。请与Remnawave同步。",
|
||||
"edit": "编辑服务器",
|
||||
"originalName": "原始名称",
|
||||
"displayName": "显示名称",
|
||||
@@ -3146,7 +3146,7 @@
|
||||
"connected": "已连接",
|
||||
"disconnected": "未配置",
|
||||
"noData": "加载数据失败",
|
||||
"title": "RemnaWave",
|
||||
"title": "Remnawave",
|
||||
"subtitle": "面板管理和统计",
|
||||
"tabs": {
|
||||
"overview": "概览",
|
||||
@@ -3254,9 +3254,9 @@
|
||||
"success": "成功",
|
||||
"runAutoSyncNow": "立即运行自动同步",
|
||||
"fromPanel": "从面板",
|
||||
"fromPanelDesc": "从RemnaWave导入用户到机器人",
|
||||
"fromPanelDesc": "从Remnawave导入用户到机器人",
|
||||
"toPanel": "到面板",
|
||||
"toPanelDesc": "从机器人导出用户到RemnaWave"
|
||||
"toPanelDesc": "从机器人导出用户到Remnawave"
|
||||
}
|
||||
},
|
||||
"roles": {
|
||||
@@ -3823,7 +3823,7 @@
|
||||
"deleteUser": "删除用户"
|
||||
},
|
||||
"deleteSubscription": {
|
||||
"warning": "选中的订阅将从机器人和RemnaWave面板中永久删除!",
|
||||
"warning": "选中的订阅将从机器人和Remnawave面板中永久删除!",
|
||||
"hint": "用户将失去已删除订阅的VPN访问权限。此操作无法撤销。",
|
||||
"activePaidWarning": "所选订阅中有 {{count}} / {{total}} 是有效的付费订阅",
|
||||
"forceDeleteConfirm": "我确认删除有效的付费订阅"
|
||||
@@ -3831,7 +3831,7 @@
|
||||
"deleteUser": {
|
||||
"warning": "选中的用户将从机器人中永久删除!他们的所有订阅、余额和数据将丢失!",
|
||||
"hint": "此操作无法撤销。用户需要重新启动机器人以创建新账户。",
|
||||
"deleteFromPanel": "同时从RemnaWave面板删除"
|
||||
"deleteFromPanel": "同时从Remnawave面板删除"
|
||||
},
|
||||
"params": {
|
||||
"days": "天数",
|
||||
|
||||
@@ -11,7 +11,7 @@ export default function AdminApps() {
|
||||
const queryClient = useQueryClient();
|
||||
const { capabilities } = usePlatform();
|
||||
|
||||
// RemnaWave status
|
||||
// Remnawave status
|
||||
const { data: status } = useQuery({
|
||||
queryKey: ['remnawave-status'],
|
||||
queryFn: adminAppsApi.getRemnaWaveStatus,
|
||||
@@ -60,8 +60,8 @@ export default function AdminApps() {
|
||||
/>
|
||||
<span className="text-sm font-medium text-dark-200">
|
||||
{status?.enabled
|
||||
? t('admin.apps.remnaWaveConnected', 'RemnaWave connected')
|
||||
: t('admin.apps.remnaWaveDisconnected', 'RemnaWave not connected')}
|
||||
? t('admin.apps.remnaWaveConnected', 'Remnawave connected')
|
||||
: t('admin.apps.remnaWaveDisconnected', 'Remnawave not connected')}
|
||||
</span>
|
||||
</div>
|
||||
{status?.config_uuid && (
|
||||
|
||||
@@ -1122,7 +1122,7 @@ function SyncTab({
|
||||
title={t('admin.remnawave.sync.fromPanel', 'Sync from Panel')}
|
||||
description={t(
|
||||
'admin.remnawave.sync.fromPanelDesc',
|
||||
'Import users from RemnaWave panel to bot',
|
||||
'Import users from Remnawave panel to bot',
|
||||
)}
|
||||
onAction={onSyncFromPanel}
|
||||
isLoading={loadingStates.fromPanel}
|
||||
@@ -1132,7 +1132,7 @@ function SyncTab({
|
||||
title={t('admin.remnawave.sync.toPanel', 'Sync to Panel')}
|
||||
description={t(
|
||||
'admin.remnawave.sync.toPanelDesc',
|
||||
'Export users from bot to RemnaWave panel',
|
||||
'Export users from bot to Remnawave panel',
|
||||
)}
|
||||
onAction={onSyncToPanel}
|
||||
isLoading={loadingStates.toPanel}
|
||||
@@ -1498,7 +1498,7 @@ export default function AdminRemnawave() {
|
||||
</div>
|
||||
<div>
|
||||
<h1 className="text-xl font-semibold text-dark-100">
|
||||
{t('admin.remnawave.title', 'RemnaWave')}
|
||||
{t('admin.remnawave.title', 'Remnawave')}
|
||||
</h1>
|
||||
<p className="text-sm text-dark-400">
|
||||
{t('admin.remnawave.subtitle', 'Panel management and statistics')}
|
||||
|
||||
@@ -438,7 +438,7 @@ export default function Subscription() {
|
||||
queryClient.invalidateQueries({ queryKey: ['subscription'] });
|
||||
queryClient.invalidateQueries({ queryKey: ['connection-link', subscriptionId] });
|
||||
queryClient.invalidateQueries({ queryKey: ['subscriptions-list'] });
|
||||
// RemnaWave resets device HWIDs on revoke — make sure the cabinet
|
||||
// Remnawave resets device HWIDs on revoke — make sure the cabinet
|
||||
// re-reads the now-empty device list instead of showing the stale cache.
|
||||
queryClient.invalidateQueries({ queryKey: ['devices', subscriptionId] });
|
||||
haptic.notification('success');
|
||||
|
||||
@@ -538,7 +538,7 @@ export interface LocalizedText {
|
||||
[key: string]: string;
|
||||
}
|
||||
|
||||
// RemnaWave format types
|
||||
// Remnawave format types
|
||||
export interface RemnawaveButtonClient {
|
||||
url?: string;
|
||||
link?: string;
|
||||
@@ -581,7 +581,7 @@ export interface AppConfig {
|
||||
supportUrl?: string;
|
||||
};
|
||||
|
||||
// RemnaWave
|
||||
// Remnawave
|
||||
isRemnawave?: boolean;
|
||||
svgLibrary?: Record<string, string | { svgString: string }>;
|
||||
baseTranslations?: Record<string, LocalizedText>;
|
||||
|
||||
Reference in New Issue
Block a user