diff --git a/src/locales/en.json b/src/locales/en.json index 8c7e3a8..9c5f6d5 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -863,6 +863,11 @@ "memory": "Memory", "uptime": "Uptime", "traffic": "Traffic Statistics", + "traffic2days": "2 days", + "traffic7days": "7 days", + "traffic30days": "30 days", + "trafficMonth": "Month", + "trafficYear": "Year", "usersByStatus": "Users by Status" }, "nodes": { @@ -874,29 +879,62 @@ "enable": "Enable", "disable": "Disable", "restartAll": "Restart All", - "confirmRestartAll": "Are you sure you want to restart all nodes?" + "confirmRestartAll": "Are you sure you want to restart all nodes?", + "usersOnline": "online", + "trafficUsed": "used", + "uptimeLabel": "Uptime", + "stats": { + "total": "Total", + "online": "Online", + "offline": "Offline", + "disabled": "Disabled", + "users": "Users" + } }, "squads": { "synced": "Synced", "notSynced": "Not synced", "noSquads": "No squads found", - "syncServers": "Sync Servers" + "syncServers": "Sync Servers", + "members": "members", + "inbounds": "inbounds", + "available": "Available", + "unavailable": "Unavailable", + "stats": { + "total": "Total", + "synced": "Synced", + "available": "Available", + "members": "Members" + }, + "detail": "Squad Details", + "loadError": "Failed to load squad", + "info": "Information", + "originalName": "Original Name", + "countryCode": "Country", + "statsTitle": "Statistics", + "inboundsList": "Inbounds", + "localSettings": "Local Settings", + "trialEligible": "Trial Eligible", + "price": "Price", + "users": "Users" }, "sync": { "autoSync": "Auto Sync", - "runNow": "Run Now", - "manual": "Manual Sync", - "fromPanel": "Sync from Panel", - "fromPanelDesc": "Import users from RemnaWave panel to bot database", - "toPanel": "Sync to Panel", - "toPanelDesc": "Export users from bot database to RemnaWave panel", - "subscriptions": "Subscriptions", - "validate": "Validate", - "validateDesc": "Check and fix subscription inconsistencies", - "cleanup": "Cleanup", - "cleanupDesc": "Remove orphaned subscriptions without users", - "statuses": "Sync Statuses", - "statusesDesc": "Synchronize subscription statuses with panel" + "runNow": "Run", + "run": "Run", + "running": "Running...", + "schedule": "Schedule", + "status": "Status", + "lastRun": "Last Run", + "nextRun": "Next Run", + "enabled": "Enabled", + "disabled": "Disabled", + "success": "Success", + "runAutoSyncNow": "Run Auto Sync Now", + "fromPanel": "From Panel", + "fromPanelDesc": "Import users from RemnaWave to bot", + "toPanel": "To Panel", + "toPanelDesc": "Export users from bot to RemnaWave" } }, "wheel": { diff --git a/src/locales/fa.json b/src/locales/fa.json index e5c74b3..162be2d 100644 --- a/src/locales/fa.json +++ b/src/locales/fa.json @@ -1702,7 +1702,17 @@ "offline": "آفلاین", "online": "آنلاین", "restart": "راهاندازی مجدد", - "restartAll": "راهاندازی مجدد همه" + "restartAll": "راهاندازی مجدد همه", + "usersOnline": "آنلاین", + "trafficUsed": "استفاده شده", + "uptimeLabel": "زمان فعالیت", + "stats": { + "total": "کل", + "online": "آنلاین", + "offline": "آفلاین", + "disabled": "غیرفعال", + "users": "کاربران" + } }, "overview": { "bandwidth": "پهنای باند لحظهای", @@ -1716,6 +1726,11 @@ "total": "کل", "totalUsers": "کل کاربران", "traffic": "آمار ترافیک", + "traffic2days": "۲ روز", + "traffic7days": "۷ روز", + "traffic30days": "۳۰ روز", + "trafficMonth": "ماه", + "trafficYear": "سال", "upload": "آپلود", "uptime": "زمان فعالیت", "usersByStatus": "کاربران بر اساس وضعیت", @@ -1725,23 +1740,46 @@ "noSquads": "گروهی یافت نشد", "notSynced": "همگام نشده", "syncServers": "همگامسازی سرورها", - "synced": "همگام شده" + "synced": "همگام شده", + "members": "اعضا", + "inbounds": "ورودیها", + "available": "در دسترس", + "unavailable": "در دسترس نیست", + "stats": { + "total": "کل", + "synced": "همگام", + "available": "در دسترس", + "members": "اعضا" + }, + "detail": "جزئیات گروه", + "loadError": "بارگذاری گروه ناموفق بود", + "info": "اطلاعات", + "originalName": "نام اصلی", + "countryCode": "کشور", + "statsTitle": "آمار", + "inboundsList": "لیست ورودیها", + "localSettings": "تنظیمات محلی", + "trialEligible": "واجد شرایط آزمایشی", + "price": "قیمت", + "users": "کاربران" }, "sync": { "autoSync": "همگامسازی خودکار", - "cleanup": "پاکسازی", - "cleanupDesc": "حذف اشتراکهای بدون کاربر", - "fromPanel": "همگامسازی از پنل", - "fromPanelDesc": "وارد کردن کاربران از پنل RemnaWave به پایگاه داده ربات", - "manual": "همگامسازی دستی", - "runNow": "اجرای فوری", - "statuses": "همگامسازی وضعیتها", - "statusesDesc": "همگامسازی وضعیت اشتراکها با پنل", - "subscriptions": "اشتراکها", - "toPanel": "همگامسازی به پنل", - "toPanelDesc": "صادر کردن کاربران از پایگاه داده ربات به پنل RemnaWave", - "validate": "اعتبارسنجی", - "validateDesc": "بررسی و رفع ناسازگاریهای اشتراک" + "runNow": "اجرا", + "run": "اجرا", + "running": "در حال اجرا...", + "schedule": "برنامه", + "status": "وضعیت", + "lastRun": "آخرین اجرا", + "nextRun": "اجرای بعدی", + "enabled": "فعال", + "disabled": "غیرفعال", + "success": "موفق", + "runAutoSyncNow": "اجرای همگامسازی خودکار", + "fromPanel": "از پنل", + "fromPanelDesc": "وارد کردن کاربران از RemnaWave به ربات", + "toPanel": "به پنل", + "toPanelDesc": "صادر کردن کاربران از ربات به RemnaWave" } }, "theme": { diff --git a/src/locales/ru.json b/src/locales/ru.json index 059ffa9..9f0ff4d 100644 --- a/src/locales/ru.json +++ b/src/locales/ru.json @@ -879,6 +879,11 @@ "memory": "Память", "uptime": "Аптайм", "traffic": "Статистика трафика", + "traffic2days": "2 дня", + "traffic7days": "7 дней", + "traffic30days": "30 дней", + "trafficMonth": "Месяц", + "trafficYear": "Год", "usersByStatus": "Пользователи по статусу" }, "nodes": { @@ -890,29 +895,62 @@ "enable": "Включить", "disable": "Отключить", "restartAll": "Перезапустить все", - "confirmRestartAll": "Вы уверены, что хотите перезапустить все ноды?" + "confirmRestartAll": "Вы уверены, что хотите перезапустить все ноды?", + "usersOnline": "онлайн", + "trafficUsed": "использовано", + "uptimeLabel": "Аптайм", + "stats": { + "total": "Всего", + "online": "Онлайн", + "offline": "Офлайн", + "disabled": "Отключены", + "users": "Пользователей" + } }, "squads": { "synced": "Синхронизирован", "notSynced": "Не синхронизирован", "noSquads": "Сквады не найдены", - "syncServers": "Синхронизировать серверы" + "syncServers": "Синхронизировать серверы", + "members": "участников", + "inbounds": "inbounds", + "available": "Доступен", + "unavailable": "Недоступен", + "stats": { + "total": "Всего", + "synced": "Синхр.", + "available": "Доступно", + "members": "Участников" + }, + "detail": "Детали сквада", + "loadError": "Не удалось загрузить сквад", + "info": "Информация", + "originalName": "Оригинальное имя", + "countryCode": "Страна", + "statsTitle": "Статистика", + "inboundsList": "Inbounds", + "localSettings": "Локальные настройки", + "trialEligible": "Доступен триал", + "price": "Цена", + "users": "Пользователей" }, "sync": { "autoSync": "Автосинхронизация", - "runNow": "Запустить сейчас", - "manual": "Ручная синхронизация", - "fromPanel": "Синхронизация из панели", - "fromPanelDesc": "Импорт пользователей из RemnaWave панели в базу бота", - "toPanel": "Синхронизация в панель", - "toPanelDesc": "Экспорт пользователей из базы бота в RemnaWave панель", - "subscriptions": "Подписки", - "validate": "Валидация", - "validateDesc": "Проверка и исправление несоответствий подписок", - "cleanup": "Очистка", - "cleanupDesc": "Удаление orphaned подписок без пользователей", - "statuses": "Синхронизация статусов", - "statusesDesc": "Синхронизация статусов подписок с панелью" + "runNow": "Запустить", + "run": "Запустить", + "running": "Выполняется...", + "schedule": "Расписание", + "status": "Статус", + "lastRun": "Посл. запуск", + "nextRun": "След. запуск", + "enabled": "Включено", + "disabled": "Выключено", + "success": "Успешно", + "runAutoSyncNow": "Запустить автосинхронизацию", + "fromPanel": "Из панели", + "fromPanelDesc": "Импорт пользователей из RemnaWave в бота", + "toPanel": "В панель", + "toPanelDesc": "Экспорт пользователей из бота в RemnaWave" } }, "wheel": { diff --git a/src/locales/zh.json b/src/locales/zh.json index cedbc8d..c9ce377 100644 --- a/src/locales/zh.json +++ b/src/locales/zh.json @@ -1710,7 +1710,17 @@ "offline": "离线", "online": "在线", "restart": "重启", - "restartAll": "全部重启" + "restartAll": "全部重启", + "usersOnline": "在线", + "trafficUsed": "已使用", + "uptimeLabel": "运行时间", + "stats": { + "total": "总计", + "online": "在线", + "offline": "离线", + "disabled": "已禁用", + "users": "用户" + } }, "overview": { "bandwidth": "实时带宽", @@ -1724,6 +1734,11 @@ "total": "总计", "totalUsers": "总用户数", "traffic": "流量统计", + "traffic2days": "2天", + "traffic7days": "7天", + "traffic30days": "30天", + "trafficMonth": "本月", + "trafficYear": "本年", "upload": "上传", "uptime": "运行时间", "usersByStatus": "按状态分类的用户", @@ -1733,23 +1748,46 @@ "noSquads": "未找到小队", "notSynced": "未同步", "syncServers": "同步服务器", - "synced": "已同步" + "synced": "已同步", + "members": "成员", + "inbounds": "入站", + "available": "可用", + "unavailable": "不可用", + "stats": { + "total": "总计", + "synced": "已同步", + "available": "可用", + "members": "成员" + }, + "detail": "小队详情", + "loadError": "加载小队失败", + "info": "信息", + "originalName": "原始名称", + "countryCode": "国家", + "statsTitle": "统计", + "inboundsList": "入站列表", + "localSettings": "本地设置", + "trialEligible": "可试用", + "price": "价格", + "users": "用户" }, "sync": { "autoSync": "自动同步", - "cleanup": "清理", - "cleanupDesc": "删除无用户的孤立订阅", - "fromPanel": "从面板同步", - "fromPanelDesc": "从RemnaWave面板导入用户到机器人数据库", - "manual": "手动同步", - "runNow": "立即运行", - "statuses": "同步状态", - "statusesDesc": "与面板同步订阅状态", - "subscriptions": "订阅", - "toPanel": "同步到面板", - "toPanelDesc": "从机器人数据库导出用户到RemnaWave面板", - "validate": "验证", - "validateDesc": "检查并修复订阅不一致" + "runNow": "运行", + "run": "运行", + "running": "运行中...", + "schedule": "计划", + "status": "状态", + "lastRun": "上次运行", + "nextRun": "下次运行", + "enabled": "已启用", + "disabled": "已禁用", + "success": "成功", + "runAutoSyncNow": "立即运行自动同步", + "fromPanel": "从面板", + "fromPanelDesc": "从RemnaWave导入用户到机器人", + "toPanel": "到面板", + "toPanelDesc": "从机器人导出用户到RemnaWave" } } }, diff --git a/src/pages/AdminRemnawave.tsx b/src/pages/AdminRemnawave.tsx index e5b9365..166ab0a 100644 --- a/src/pages/AdminRemnawave.tsx +++ b/src/pages/AdminRemnawave.tsx @@ -157,12 +157,19 @@ function NodeCard({ node, onAction, isLoading }: NodeCardProps) {
{t('admin.remnawave.sync.schedule', 'Schedule')} @@ -727,24 +769,6 @@ function SyncTab({ {autoSyncStatus.times.length > 0 ? autoSyncStatus.times.join(', ') : '—'}
- {t('admin.remnawave.sync.nextRun', 'Next Run')} -
-- {autoSyncStatus.next_run ? new Date(autoSyncStatus.next_run).toLocaleString() : '—'} -
-- {t('admin.remnawave.sync.lastRun', 'Last Run')} -
-- {autoSyncStatus.last_run_finished_at - ? new Date(autoSyncStatus.last_run_finished_at).toLocaleString() - : '—'} -
-{t('admin.remnawave.sync.status', 'Status')}
+ {t('admin.remnawave.sync.lastRun', 'Last Run')} +
++ {autoSyncStatus.last_run_finished_at + ? new Date(autoSyncStatus.last_run_finished_at).toLocaleString() + : '—'} +
++ {t('admin.remnawave.sync.nextRun', 'Next Run')} +
++ {autoSyncStatus.next_run ? new Date(autoSyncStatus.next_run).toLocaleString() : '—'} +
+