From 76b2d713f11c0cc303fb9b4d83ce31060da36b29 Mon Sep 17 00:00:00 2001 From: PEDZEO Date: Wed, 21 Jan 2026 03:25:46 +0300 Subject: [PATCH] Add Russian translations for common settings in AdminSettings - Introduced a dictionary for translating various settings into Russian. - Updated the `formatSettingName` function to return translated names when available. - Adjusted layout for sidebar and main content to improve responsiveness and organization. --- src/pages/AdminSettings.tsx | 75 +++++++++++++++++++++++++++++++------ 1 file changed, 64 insertions(+), 11 deletions(-) diff --git a/src/pages/AdminSettings.tsx b/src/pages/AdminSettings.tsx index 03714c9..10f44df 100644 --- a/src/pages/AdminSettings.tsx +++ b/src/pages/AdminSettings.tsx @@ -105,11 +105,61 @@ const MenuIcon = () => ( ) // ============ HELPER FUNCTIONS ============ +// Словарь переводов для распространенных настроек +const SETTING_TRANSLATIONS: Record = { + // Skip + 'Skip Referral Code': 'Пропуск реферального кода', + 'Skip Rules Accept': 'Пропуск принятия правил', + // HAPP + 'Connect Button Happ Download Enabled': 'Кнопка скачивания Happ', + 'Happ Cryptolink Redirect Template': 'Шаблон редиректа Happ', + 'Happ Download Link Android': 'Ссылка скачивания Happ (Android)', + 'Happ Download Link Ios': 'Ссылка скачивания Happ (iOS)', + 'Happ Download Link Macos': 'Ссылка скачивания Happ (macOS)', + 'Happ Download Link Pc': 'Ссылка скачивания Happ (PC)', + 'Happ Download Link Windows': 'Ссылка скачивания Happ (Windows)', + // Interface + 'Main Menu Mode': 'Режим главного меню', + // MiniApp + 'Cabinet Remna Sub Config': 'UUID конфига RemnaWave', + 'Miniapp Purchase Url': 'URL покупки в MiniApp', + 'Miniapp Service Description En': 'Описание сервиса (EN)', + 'Miniapp Service Description Ru': 'Описание сервиса (RU)', + 'Miniapp Service Name En': 'Название сервиса (EN)', + 'Miniapp Service Name Ru': 'Название сервиса (RU)', + 'Miniapp Static Path': 'Путь к статике MiniApp', + 'Miniapp Support Type': 'Тип поддержки MiniApp', + 'Miniapp Support Url': 'URL поддержки MiniApp', + 'Miniapp Tickets Enabled': 'Тикеты в MiniApp', + // Branding + 'Bot Name': 'Название бота', + 'Logo Letter': 'Буква логотипа', + // Connect Button + 'Connect Button Enabled': 'Кнопка подключения', + 'Connect Button Text': 'Текст кнопки подключения', + // Additional + 'Additional Menu Enabled': 'Дополнительное меню', + 'Additional Menu Items': 'Элементы доп. меню', + 'Additional Menu Title': 'Заголовок доп. меню', + // Subscription Interface + 'Subscription Page Layout': 'Макет страницы подписки', + // Common + 'Enabled': 'Включено', + 'Disabled': 'Отключено', + 'Debug Mode': 'Режим отладки', + 'Log Level': 'Уровень логирования', + 'Api Url': 'URL API', + 'Api Key': 'API ключ', + 'Api Token': 'API токен', + 'Webhook Url': 'URL вебхука', + 'Webhook Secret': 'Секрет вебхука', +} + // Форматирование названия настройки (Snake_Case / CamelCase -> читаемый текст) function formatSettingName(name: string): string { if (!name) return '' - // Убираем префиксы типа "Miniapp ", "Happ " и т.д. + // Сначала форматируем в читаемый вид let formatted = name // CamelCase -> пробелы .replace(/([a-z])([A-Z])/g, '$1 $2') @@ -119,8 +169,11 @@ function formatSettingName(name: string): string { .replace(/\s+/g, ' ') .trim() - // Делаем первую букву заглавной, остальные как есть - return formatted.charAt(0).toUpperCase() + formatted.slice(1) + // Делаем первую букву заглавной + formatted = formatted.charAt(0).toUpperCase() + formatted.slice(1) + + // Проверяем есть ли перевод + return SETTING_TRANSLATIONS[formatted] || formatted } // Очистка HTML тегов из описания @@ -896,7 +949,7 @@ export default function AdminSettings() { // ============ RENDER ============ return ( -
+
{/* Mobile overlay */} {mobileMenuOpen && (
)} - {/* Sidebar - hidden on mobile, visible on desktop */} -
@@ -964,10 +1017,10 @@ export default function AdminSettings() {
))} -
+ {/* Main content */} -
+
{/* Header */}
@@ -1025,7 +1078,7 @@ export default function AdminSettings() { {activeSection === 'theme' && renderThemeContent()} {['payments', 'subscriptions', 'interface', 'notifications', 'database', 'system', 'users'].includes(activeSection) && renderSettingsContent()}
-
+
) }