View file lang.php

File size: 21.51Kb
<?php
session_start();

// Set default language from database settings or fallback to 'en'
if (!isset($_SESSION['lang'])) {
    $def = 'en';
    if (file_exists(__DIR__ . '/db.php')) {
        try {
            require_once 'db.php';
            $stmt = $pdo->query("SELECT value FROM settings WHERE name = 'default_lang'");
            $val = $stmt->fetchColumn();
            if ($val) $def = $val;
        } catch (Exception $e) {
        }
    }
    $_SESSION['lang'] = $def;
}

// Handle change
if (isset($_GET['lang'])) {
    $lang = $_GET['lang'];
    if (in_array($lang, ['en', 'uk', 'ru'])) {
        $_SESSION['lang'] = $lang;
    }
}

$lang = $_SESSION['lang'];

$translations = [
    'en' => [
        'login_title' => 'Login',
        'register_title' => 'Register',
        'username_email' => 'Username or Email',
        'username' => 'Username',
        'email' => 'Email',
        'password' => 'Password',
        'login_btn' => 'Login',
        'register_btn' => 'Register',
        'no_account' => "Don't have an account?",
        'has_account' => "Already have an account?",
        'error_auth' => 'Invalid credentials.',
        'error_fields' => 'All fields are required.',
        'error_taken' => 'Username or Email already taken.',
        'pass_mismatch' => 'Passwords do not match.',
        'welcome' => 'Welcome',
        'logout' => 'Logout',
        'type_msg' => 'Type a message...',
        'online' => 'Online',
        'connecting' => 'Connecting...',
        'no_online' => 'No one else online',
        'typing' => 'is typing...',
        'bot_typing' => 'is typing...',
        'recording' => 'Recording...',
        'voice_message' => 'Voice Message',
        'replying_to' => 'Replying to',
        'confirm_delete' => 'Delete this message?',
        'msg_deleted' => 'Message deleted',
        'rooms_title' => 'Rooms',
        'new_room_placeholder' => 'New Room',
        'rename_room_prompt' => 'New name:',
        'delete_room_confirm' => 'Delete this room and its messages?',
        'rooms' => 'Rooms',
        'new_room' => 'New Room',
        'cancel' => 'Cancel',
        'room_general' => 'General',
        'admin_panel' => 'Admin Panel',
        'username' => 'Username',
        'password' => 'Password',
        'role' => 'Role',
        'dashboard' => 'Dashboard',
        'users' => 'Users',
        'rooms' => 'Rooms',
        'settings' => 'Settings',
        'back_to_chat' => 'Back to Chat',
        'total_users' => 'Total Users',
        'total_msgs' => 'Total Messages',
        'active_rooms' => 'Active Rooms',
        'quick_nav' => 'Quick Navigation',
        'admin_welcome' => 'Welcome to the administration panel. Here you can manage users, control chat rooms, and customize the global settings of your application.',
        'manage_users' => 'Manage Users',
        'create_user' => 'Create New User',
        'standard_user' => 'Standard User',
        'administrator' => 'Administrator',
        'create_account' => 'Create Account',
        'last_activity' => 'Last Activity',
        'status' => 'Status',
        'actions' => 'Actions',
        'active' => 'Active',
        'blocked' => 'Blocked',
        'unblock' => 'Unblock',
        'block' => 'Block',
        'delete' => 'Delete',
        'delete_room_btn' => 'Delete Room',
        'site_title' => 'Site Title',
        'site_logo' => 'Site Logo / Favicon',
        'footer_copyright' => 'Footer Copyright Text',
        'primary_lang' => 'Primary Site Language',
        'apply_settings' => 'Apply Global Settings',
        'settings_updated' => 'Settings updated!',
        'user_deleted' => 'User deleted.',
        'room_deleted' => 'Room deleted.',
        'status_updated' => 'Status updated.',
        'role_updated' => 'User role updated to',
        'profile' => 'Profile',
        'change_avatar' => 'Change Avatar',
        'save_changes' => 'Save Changes',
        'upload_new_avatar' => 'Upload New Avatar',
        'update_success' => 'Profile updated successfully!',
        'account_blocked' => 'Your account is blocked. Please contact admin.',
        'registration_failed' => 'Registration failed.',
        'avatar_optional' => 'Avatar (Optional)',
        'user_info' => 'User Info',
        'edit_user' => 'Edit User',
        'new_nickname' => 'New Nickname',
        'new_email' => 'New Email',
        'add_bot' => 'Add Bot',
        'remove_bot' => 'Remove Bot',
        'bot_joined' => 'ChatBot has joined the room!',
        'bot_left' => 'ChatBot has left the room.',
        'edit_room' => 'Edit Room',
        'room_name_new' => 'New Room Name',
        'video_call' => 'Video Call',
        'start_video_call' => 'Start Video Call',
        'incoming_call' => 'Incoming Video Call',
        'accept_call' => 'Accept',
        'decline_call' => 'Decline',
        'end_call' => 'End Call',
        'calling' => 'Calling',
        'call_ended' => 'Call Ended',
        'camera_off' => 'Camera Off',
        'camera_on' => 'Camera On',
        'mic_off' => 'Microphone Off',
        'mic_on' => 'Microphone On',
        'call_failed' => 'Call failed. Please try again.',
        'close' => 'Close',
        'room_members' => 'members',
        'save_changes' => 'Save Changes',
        'choose_file' => 'Choose file...',
        'browse' => 'Browse',
        'or_enter_url' => 'Or enter URL below:',
        'default_lang_help' => 'This will be the default for new guest users.',
        'user_created' => 'User created successfully.',
        'connected' => 'Connected',
        'video_call_started' => 'Video call started',
        'video_call_ended' => 'Video call ended',
        'audio_video_calls' => 'Audio & Video Calls',
        'next_gen_messenger' => 'NEXT GENERATION MESSENGER',
        'video_module_activated' => '[Video Module Activated 💎]',
        'video_license' => 'SECURE CONNECTION • END-TO-END ENCRYPTED',

    ],
    'uk' => [
        'login_title' => 'Вхід',
        'register_title' => 'Реєстрація',
        'username_email' => 'Логін або Email',
        'username' => 'Логін',
        'email' => 'Email',
        'password' => 'Пароль',
        'login_btn' => 'Увійти',
        'register_btn' => 'Зареєструватися',
        'no_account' => "Немає аккаунту?",
        'has_account' => "Вже є аккаунт?",
        'error_auth' => 'Невірні дані.',
        'error_fields' => 'Всі поля обов\'язкові.',
        'error_taken' => 'Логін або Email вже зайняті.',
        'pass_mismatch' => 'Паролі не співпадають.',
        'welcome' => 'Вітаємо',
        'logout' => 'Вийти',
        'type_msg' => 'Введіть повідомлення...',
        'online' => 'Онлайн',
        'connecting' => 'З\'єднання...',
        'no_online' => 'Більше нікого немає',
        'typing' => 'друкує...',
        'bot_typing' => 'набирає повідомлення...',
        'recording' => 'Запис...',
        'voice_message' => 'Голосове повідомлення',
        'replying_to' => 'Відповідь для',
        'confirm_delete' => 'Видалити це повідомлення?',
        'msg_deleted' => 'Повідомлення видалено',
        'rooms_title' => 'Кімнати',
        'new_room_placeholder' => 'Нова кімната',
        'rename_room_prompt' => 'Нова назва:',
        'delete_room_confirm' => 'Видалити цю кімнату та всі повідомлення?',
        'rooms' => 'Кімнати',
        'new_room' => 'Нова кімната',
        'cancel' => 'Скасувати',
        'room_general' => 'Загальна',
        'admin_panel' => 'Адмін-панель',
        'username' => 'Логін',
        'password' => 'Пароль',
        'role' => 'Роль',
        'dashboard' => 'Дашборд',
        'users' => 'Користувачі',
        'rooms' => 'Кімнати',
        'settings' => 'Налаштування',
        'back_to_chat' => 'Назад до чату',
        'total_users' => 'Всього користувачів',
        'total_msgs' => 'Всього повідомлень',
        'active_rooms' => 'Активні кімнати',
        'quick_nav' => 'Швидка навігація',
        'admin_welcome' => 'Ласкаво просимо до адміністративної панелі. Тут ви можете керувати користувачами, контролювати чат-кімнати та налаштовувати глобальні параметри вашої програми.',
        'manage_users' => 'Керування користувачами',
        'create_user' => 'Створити нового користувача',
        'standard_user' => 'Звичайний користувач',
        'administrator' => 'Адміністратор',
        'create_account' => 'Створити акаунт',
        'last_activity' => 'Остання активність',
        'status' => 'Статус',
        'actions' => 'Дії',
        'active' => 'Активний',
        'blocked' => 'Заблокований',
        'unblock' => 'Розблокувати',
        'block' => 'Блок',
        'delete' => 'Видалити',
        'delete_room_btn' => 'Видалити кімнату',
        'site_title' => 'Заголовок сайту',
        'site_logo' => 'Логотип / Favicon',
        'footer_copyright' => 'Текст копірайту у футері',
        'primary_lang' => 'Основна мова сайту',
        'apply_settings' => 'Застосувати налаштування',
        'settings_updated' => 'Налаштування оновлено!',
        'user_deleted' => 'Користувача видалено.',
        'room_deleted' => 'Кімнату видалено.',
        'status_updated' => 'Статус оновлено.',
        'role_updated' => 'Роль користувача оновлено на',
        'profile' => 'Профіль',
        'change_avatar' => 'Змінити аватар',
        'save_changes' => 'Зберегти зміни',
        'upload_new_avatar' => 'Завантажити новий аватар',
        'update_success' => 'Профіль успішно оновлено!',
        'account_blocked' => 'Ваш акаунт заблоковано. Будь ласка, зверніться до адміністратора.',
        'registration_failed' => 'Помилка реєстрації.',
        'avatar_optional' => 'Аватар (необов\'язково)',
        'user_info' => 'Інформація про користувача',
        'edit_user' => 'Редагувати користувача',
        'new_nickname' => 'Новий нікнейм',
        'new_email' => 'Новий Email',
        'add_bot' => 'Додати бота',
        'remove_bot' => 'Прибрати бота',
        'bot_joined' => 'ChatBot приєднався до кімнати!',
        'bot_left' => 'ChatBot покинув кімнату.',
        'edit_room' => 'Редагувати кімнату',
        'room_name_new' => 'Нова назва кімнати',
        'video_call' => 'Відеодзвінок',
        'start_video_call' => 'Почати відеодзвінок',
        'incoming_call' => 'Вхідний відеодзвінок',
        'accept_call' => 'Прийняти',
        'decline_call' => 'Відхилити',
        'end_call' => 'Завершити дзвінок',
        'calling' => 'Дзвінок',
        'call_ended' => 'Дзвінок завершено',
        'camera_off' => 'Камера вимкнена',
        'camera_on' => 'Камера увімкнена',
        'mic_off' => 'Мікрофон вимкнений',
        'mic_on' => 'Мікрофон увімкнений',
        'call_failed' => 'Дзвінок не вдався. Спробуйте ще раз.',
        'close' => 'Закрити',
        'room_members' => 'учасників',
        'save_changes' => 'Зберегти зміни',
        'choose_file' => 'Виберіть файл...',
        'browse' => 'Огляд',
        'or_enter_url' => 'Або введіть URL нижче:',
        'dashboard' => 'Дашборд',
        'users' => 'Користувачі',
        'rooms' => 'Кімнати',
        'settings' => 'Налаштування',
        'back_to_chat' => 'Назад до чату',
        'features' => 'Функціонал',
        'enable_voice' => 'Увімкнути голосові повідомлення',
        'enable_video' => 'Увімкнути відеодзвінки',
        'connected' => 'З\'єднано',
        'video_call_started' => 'Відеодзвінок розпочато',
        'video_call_ended' => 'Відеодзвінок завершено',
        'audio_video_calls' => 'Аудіо та Відео дзвінки',
        'next_gen_messenger' => 'МЕСЕНДЖЕР нового покоління',
        'video_module_activated' => '[Відеомодуль активовано 💎]',
        'video_license' => 'БЕЗПЕЧНЕ З\'ЄДНАННЯ • НАСКРІЗНЕ ШИФРУВАННЯ',

    ],
    'ru' => [
        'login_title' => 'Вход',
        'register_title' => 'Регистрация',
        'username_email' => 'Логин или Email',
        'username' => 'Логин',
        'email' => 'Email',
        'password' => 'Пароль',
        'login_btn' => 'Войти',
        'register_btn' => 'Зарегистрироваться',
        'no_account' => "Нет аккаунта?",
        'has_account' => "Уже есть аккаунт?",
        'error_auth' => 'Неверные данные.',
        'error_fields' => 'Все поля обязательны.',
        'error_taken' => 'Логин или Email уже заняты.',
        'pass_mismatch' => 'Пароли не совпадают.',
        'welcome' => 'Добро пожаловать',
        'logout' => 'Выйти',
        'type_msg' => 'Введите сообщение...',
        'online' => 'Онлайн',
        'connecting' => 'Соединение...',
        'no_online' => 'Больше никого нет',
        'typing' => 'печатает...',
        'bot_typing' => 'набирает сообщение...',
        'recording' => 'Запись...',
        'voice_message' => 'Голосовое сообщение',
        'replying_to' => 'Ответ для',
        'confirm_delete' => 'Удалить это сообщение?',
        'msg_deleted' => 'Сообщение удалено',
        'rooms_title' => 'Комнаты',
        'new_room_placeholder' => 'Новая комната',
        'rename_room_prompt' => 'Новое название:',
        'delete_room_confirm' => 'Удалить эту комнату и все сообщения?',
        'rooms' => 'Комнаты',
        'new_room' => 'Новая комната',
        'cancel' => 'Отмена',
        'room_general' => 'Общая',
        'admin_panel' => 'Админ-панель',
        'username' => 'Логин',
        'password' => 'Пароль',
        'role' => 'Роль',
        'dashboard' => 'Дашборд',
        'users' => 'Пользователи',
        'rooms' => 'Комнаты',
        'settings' => 'Настройки',
        'back_to_chat' => 'Назад в чат',
        'total_users' => 'Всего пользователей',
        'total_msgs' => 'Всего сообщений',
        'active_rooms' => 'Активные комнаты',
        'quick_nav' => 'Быстрая навигация',
        'admin_welcome' => 'Добро пожаловать в административную панель. Здесь вы можете управлять пользователями, контролировать чат-комнаты и настраивать глобальные параметры вашего приложения.',
        'manage_users' => 'Управление пользователями',
        'create_user' => 'Создать пользователя',
        'standard_user' => 'Обычный пользователь',
        'administrator' => 'Администратор',
        'create_account' => 'Создать аккаунт',
        'last_activity' => 'Последняя активность',
        'status' => 'Статус',
        'actions' => 'Действия',
        'active' => 'Активен',
        'blocked' => 'Заблокирован',
        'unblock' => 'Разблокировать',
        'block' => 'Блок',
        'delete' => 'Удалить',
        'delete_room_btn' => 'Удалить комнату',
        'site_title' => 'Заголовок сайта',
        'site_logo' => 'Логотип / Favicon',
        'footer_copyright' => 'Текст копирайта в футере',
        'primary_lang' => 'Основной язык сайта',
        'apply_settings' => 'Применить настройки',
        'settings_updated' => 'Настройки обновлены!',
        'user_deleted' => 'Пользователь удален.',
        'room_deleted' => 'Комната удалена.',
        'status_updated' => 'Статус обновлен.',
        'role_updated' => 'Роль пользователя обновлена на',
        'profile' => 'Профиль',
        'change_avatar' => 'Сменить аватар',
        'save_changes' => 'Сохранить изменения',
        'upload_new_avatar' => 'Загрузить новый аватар',
        'update_success' => 'Профиль успешно обновлен!',
        'account_blocked' => 'Ваш аккаунт заблокирован. Пожалуйста, свяжитесь с администратором.',
        'registration_failed' => 'Ошибка регистрации.',
        'avatar_optional' => 'Аватар (необязательно)',
        'user_info' => 'Информация о пользователе',
        'edit_user' => 'Редактировать пользователя',
        'new_nickname' => 'Новый никнейм',
        'new_email' => 'Новый Email',
        'add_bot' => 'Добавить бота',
        'remove_bot' => 'Убрать бота',
        'bot_joined' => 'ChatBot присоединился к комнате!',
        'bot_left' => 'ChatBot покинул комнату.',
        'edit_room' => 'Редактировать комнату',
        'room_name_new' => 'Новое название комнаты',
        'video_call' => 'Видеозвонок',
        'start_video_call' => 'Начать видеозвонок',
        'incoming_call' => 'Входящий видеозвонок',
        'accept_call' => 'Принять',
        'decline_call' => 'Отклонить',
        'end_call' => 'Завершить звонок',
        'calling' => 'Звонок',
        'call_ended' => 'Звонок завершен',
        'camera_off' => 'Камера выключена',
        'camera_on' => 'Камера включена',
        'mic_off' => 'Микрофон выключен',
        'mic_on' => 'Микрофон включен',
        'call_failed' => 'Звонок не удался. Попробуйте еще раз.',
        'close' => 'Закрыть',
        'room_members' => 'участников',
        'save_changes' => 'Сохранить изменения',
        'choose_file' => 'Выберите файл...',
        'browse' => 'Обзор',
        'or_enter_url' => 'Или введите URL ниже:',
        'dashboard' => 'Дашборд',
        'users' => 'Пользователи',
        'rooms' => 'Комнаты',
        'settings' => 'Настройки',
        'back_to_chat' => 'Назад к чату',
        'user_created' => 'Пользователь успешно создан.',
        'connected' => 'Соединено',
        'video_call_started' => 'Видеозвонок начат',
        'video_call_ended' => 'Видеозвонок завершен',
        'audio_video_calls' => 'Аудио и Видео звонки',
        'next_gen_messenger' => 'МЕССЕНДЖЕР нового поколения',
        'video_module_activated' => '[Видеомодуль активирован 💎]',
        'video_license' => 'БЕЗОПАСНОЕ СОЕДИНЕНИЕ • СКВОЗНОЕ ШИФРОВАНИЕ',

    ]
];

$t = $translations[$lang];

function lang_links()
{
    $uri = strtok($_SERVER["REQUEST_URI"], '?');
    $qs = $_GET;
    unset($qs['lang']);

    $langs = ['en', 'uk', 'ru'];
    $html = '<div class="lang-switcher" style="text-align:center; margin-bottom: 1rem;">';
    foreach ($langs as $l) {
        $qs['lang'] = $l;
        $link = $uri . '?' . http_build_query($qs);
        $active = ($_SESSION['lang'] === $l) ? 'font-weight:bold; text-decoration:underline;' : '';
        $html .= "<a href='$link' style='margin:0 5px; color:var(--text-secondary); $active'>" . strtoupper($l) . "</a>";
    }
    $html .= '</div>';
    return $html;
}