721 lines
39 KiB
PHP
721 lines
39 KiB
PHP
<?php
|
||
/**
|
||
* Multilingual System Helper (IT, EN, ES, FR)
|
||
*/
|
||
|
||
if (session_status() === PHP_SESSION_NONE) {
|
||
session_start();
|
||
}
|
||
|
||
/**
|
||
* Get current user language code.
|
||
*/
|
||
function get_current_lang() {
|
||
$user = $_SESSION['user'] ?? null;
|
||
$lang = $user['language'] ?? $_SESSION['guest_language'] ?? 'it';
|
||
if (!in_array($lang, ['it', 'en', 'es', 'fr'])) {
|
||
$lang = 'it';
|
||
}
|
||
return $lang;
|
||
}
|
||
|
||
/**
|
||
* Set guest/active language.
|
||
*/
|
||
function set_active_lang($lang) {
|
||
if (in_array($lang, ['it', 'en', 'es', 'fr'])) {
|
||
if (isset($_SESSION['user'])) {
|
||
$_SESSION['user']['language'] = $lang;
|
||
global $conn;
|
||
if (isset($conn) && !empty($_SESSION['user']['id'])) {
|
||
$stmt = $conn->prepare("UPDATE users SET language = ? WHERE id = ?");
|
||
$stmt->bind_param("si", $lang, $_SESSION['user']['id']);
|
||
$stmt->execute();
|
||
$stmt->close();
|
||
}
|
||
} else {
|
||
$_SESSION['guest_language'] = $lang;
|
||
}
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Translations Dictionary
|
||
*/
|
||
function get_translations() {
|
||
return [
|
||
'it' => [
|
||
// Login Page
|
||
'login_title' => 'Accedi a Blocknotes',
|
||
'login_subtitle' => 'Gestisci le tue note e i tuoi comandi',
|
||
'label_username' => 'Nome Utente',
|
||
'label_password' => 'Password',
|
||
'placeholder_username' => 'Inserisci username',
|
||
'placeholder_password' => 'Inserisci password',
|
||
'btn_submit_login' => '🔑 Accedi',
|
||
'login_hint_footer' => 'Accredito predefinito per il primo accesso',
|
||
'login_installed_success' => '🎉 Setup completato! Accedi con le credenziali create.',
|
||
|
||
// Navbar
|
||
'nav_blocknotes' => '📓 Blocknotes',
|
||
'nav_colors_profile' => '🎨 Colori & Profilo',
|
||
'nav_admin' => '👑 Gestione Utenti',
|
||
'nav_logout' => '🚪 Esci',
|
||
'nav_login' => '🔑 Accedi',
|
||
'nav_language' => '🌐 Lingua',
|
||
|
||
// Dashboard (home)
|
||
'dashboard_title_user' => 'I Miei Blocknotes',
|
||
'dashboard_title_admin' => 'Tutti i Blocknotes (Vista Admin)',
|
||
'dashboard_desc_user' => 'Crea, organizza e consulta i tuoi blocknotes.',
|
||
'dashboard_desc_admin' => 'In qualità di Admin puoi visualizzare, gestire ed eliminare i blocknotes di tutti gli utenti.',
|
||
'btn_new_blocknote' => '➕ Nuovo Blocknote',
|
||
'btn_import_json' => '📥 Importa JSON',
|
||
'btn_export_json' => '💾 Esporta JSON',
|
||
'btn_open_edit' => '👁️ Apri & Modifica',
|
||
'btn_rename' => '✏️ Rinomina',
|
||
'btn_delete' => '🗑️ Elimina',
|
||
'empty_blocknotes_title' => 'Nessun Blocknote trovato',
|
||
'empty_blocknotes_desc_user' => 'Non hai ancora creato nessun blocknote. Inizia subito!',
|
||
'empty_blocknotes_desc_admin' => 'Non ci sono ancora blocknotes salvati nel sistema.',
|
||
'modal_create_title' => '➕ Crea Nuovo Blocknote',
|
||
'modal_rename_title' => '✏️ Rinomina Blocknote',
|
||
'modal_import_title' => '📥 Importa Blocknote (JSON)',
|
||
'label_title' => 'Titolo Blocknote',
|
||
'label_file_json' => 'Carica File .json',
|
||
'label_paste_json' => 'Oppure incolla qui il codice JSON',
|
||
'btn_cancel' => 'Annulla',
|
||
'btn_save' => 'Salva',
|
||
'btn_create' => 'Crea Blocknote',
|
||
'btn_import' => 'Importa Blocknote',
|
||
'note_single' => 'Nota',
|
||
'note_plural' => 'Note',
|
||
|
||
// View Blocknote
|
||
'btn_back_list' => '⬅️ Torna ai Blocknotes',
|
||
'btn_expand_all' => '📂 Espandi Tutte',
|
||
'btn_collapse_all' => '📁 Riduci Tutte',
|
||
'btn_new_note' => '➕ Nuova Nota',
|
||
'btn_add_subnote' => '➕ Sottonota',
|
||
'subnote_single' => 'sottonota',
|
||
'subnote_plural' => 'sottonote',
|
||
'badge_text' => '📄 Testo',
|
||
'badge_command' => '⚡ Comando',
|
||
'btn_copy' => '📋 Copia',
|
||
'btn_copied' => '✓ Copiato!',
|
||
'search_placeholder' => '🔍 Cerca note, sottonote o comandi in questo blocknote...',
|
||
'btn_clear_search' => '❌ Annulla Cerca',
|
||
'search_no_results' => 'Nessun risultato trovato',
|
||
'search_no_results_desc' => 'Nessuna nota o comando corrisponde al termine cercato in questo blocknote.',
|
||
'modal_add_note' => '➕ Nuova Nota a Blocchi',
|
||
'modal_edit_note' => '✏️ Modifica Nota',
|
||
'modal_add_subnote' => '➕ Aggiungi Sottonota',
|
||
'modal_edit_subnote' => '✏️ Modifica Sottonota',
|
||
'label_note_description' => 'Descrizione (opzionale)',
|
||
'label_subnote_title' => 'Titolo Sottonota',
|
||
'label_subnote_type' => 'Tipo di Sottonota',
|
||
'label_subnote_content' => 'Contenuto',
|
||
'type_option_text' => '📄 Testo generico',
|
||
'type_option_command' => '⚡ Comando (con pulsante Copia)',
|
||
|
||
// Profile & Settings
|
||
'profile_title' => '🎨 Impostazioni Profilo & Tema',
|
||
'profile_desc' => 'Personalizza password, colori dell\'interfaccia, lingua e pagina di avvio.',
|
||
'card_password_title' => '🔒 Cambio Password',
|
||
'card_colors_title' => '🎨 Personalizza Colori Interfaccia (HSL)',
|
||
'card_lang_title' => '🌍 Lingua dell\'Interfaccia',
|
||
'card_landing_title' => '🏠 Pagina di Primo Accesso (Landing Page)',
|
||
'label_new_pass' => 'Nuova Password',
|
||
'label_confirm_pass' => 'Conferma Nuova Password',
|
||
'label_select_lang' => 'Seleziona Lingua',
|
||
'label_select_landing' => 'Seleziona Pagina di Avvio',
|
||
'landing_option_dashboard' => '📋 Pagina Principale (Tutti i Blocknotes)',
|
||
'landing_option_bn_prefix' => '📌 Apri direttamente: ',
|
||
'btn_update_pass' => '🔑 Aggiorna Password',
|
||
'btn_save_colors' => '💾 Salva Preferenze Colori',
|
||
'btn_save_lang' => '🌍 Salva Lingua',
|
||
'btn_save_landing' => '🏠 Salva Pagina di Avvio',
|
||
|
||
// Admin Users
|
||
'admin_title' => '👑 Pannello Amministrazione Utenti',
|
||
'admin_desc' => 'Crea, gestisci e modifica i ruoli e gli accessi degli utenti.',
|
||
'btn_add_user' => '➕ Aggiungi Nuovo Utente',
|
||
'col_username' => 'Nome Utente',
|
||
'col_role' => 'Ruolo',
|
||
'col_bns' => 'Blocknotes Creati',
|
||
'col_created' => 'Data Registrazione',
|
||
'col_actions' => 'Azioni Admin',
|
||
'role_standard' => 'Standard User',
|
||
'role_admin' => 'Administrator',
|
||
'role_owner' => '👑 Owner (Proprietario)',
|
||
'badge_owner' => '👑 Owner',
|
||
'btn_reset_pass' => '🔑 Reset Pass',
|
||
'modal_create_user' => '➕ Registra Nuovo Utente',
|
||
'modal_reset_pass' => '🔑 Reset Password Utente',
|
||
// Confirm Dialogs
|
||
'confirm_delete_blocknote' => 'Sei sicuro di voler eliminare questo blocknote e tutte le sue note?',
|
||
'confirm_delete_note' => 'Sei sicuro di voler eliminare questa nota e tutte le sue sottonote?',
|
||
'confirm_delete_subnote' => 'Sei sicuro di voler eliminare questa sottonota?',
|
||
'confirm_delete_user' => 'Sei sicuro di voler eliminare questo utente?',
|
||
|
||
// Placeholders
|
||
'placeholder_bn_title' => 'Es. Comandi Server Linux, Note Progetto PHP...',
|
||
'placeholder_rename_title' => 'Nuovo titolo...',
|
||
'placeholder_import_title' => 'Es. Positive Internet',
|
||
'placeholder_paste_json' => 'Incolla qui il JSON nel vecchio o nuovo formato...',
|
||
'placeholder_note_title' => 'Es. Installazione MySQL, Server Setup...',
|
||
'placeholder_note_desc' => 'Breve descrizione di questo blocco di note...',
|
||
'placeholder_subnote_title' => 'Es. Comando creazione database, Note configurazione...',
|
||
'placeholder_subnote_content' => 'Inserisci il testo o le istruzioni del comando...',
|
||
'placeholder_site_title' => 'Es. Blocknotes, Enterprise Notes...',
|
||
'placeholder_username_new' => 'es. mario, giuseppe...',
|
||
'placeholder_password_new' => 'Inserisci nuova password',
|
||
'placeholder_password_confirm' => 'Ripeti nuova password',
|
||
|
||
// Extra Labels
|
||
'label_owner_prefix' => 'Proprietario: ',
|
||
'label_updated_prefix' => 'Ultimo aggiornamento: ',
|
||
'label_you' => 'Tu',
|
||
'label_unknown' => 'Sconosciuto',
|
||
'label_current_favicon' => 'Favicon Attuale: ',
|
||
|
||
// First Start Installer Setup
|
||
'setup_title' => '🚀 Setup Iniziale Blocknotes',
|
||
'setup_subtitle' => 'Configura il database MySQL e crea i primi utenti privilegiati (Owner & Admin).',
|
||
'setup_sec1_title' => '1. Configurazione Database MySQL',
|
||
'setup_db_host' => 'Host Database',
|
||
'setup_db_name' => 'Nome Database',
|
||
'setup_db_user' => 'Utente MySQL',
|
||
'setup_db_pass' => 'Password MySQL',
|
||
'setup_db_pass_placeholder' => 'Password (lascia vuoto se nessuna)',
|
||
'setup_sec2_title' => '2. Account Owner (Proprietario Unico)',
|
||
'setup_owner_user' => 'Username Owner',
|
||
'setup_owner_pass' => 'Password Owner',
|
||
'setup_owner_pass_placeholder' => 'Inserisci password per Owner',
|
||
'setup_sec3_title' => '3. Primo Account Amministratore (Admin)',
|
||
'setup_admin_user' => 'Username Admin',
|
||
'setup_admin_pass' => 'Password Admin',
|
||
'setup_admin_pass_placeholder' => 'Inserisci password per Admin',
|
||
'setup_btn_submit' => '⚡ Completa Installazione & Configura Sistema',
|
||
'err_setup_db_fields' => 'Compila tutti i dati di connessione al Database MySQL.',
|
||
'err_setup_owner_fields' => 'Inserisci username e password per l\'utente Owner (Proprietario).',
|
||
'err_setup_admin_fields' => 'Inserisci username e password per il primo utente Admin.',
|
||
'err_setup_same_user' => 'L\'utente Owner e l\'utente Admin devono avere nomi utente differenti.'
|
||
],
|
||
|
||
'en' => [
|
||
// Login Page
|
||
'login_title' => 'Login to Blocknotes',
|
||
'login_subtitle' => 'Manage your notes and commands',
|
||
'label_username' => 'Username',
|
||
'label_password' => 'Password',
|
||
'placeholder_username' => 'Enter username',
|
||
'placeholder_password' => 'Enter password',
|
||
'btn_submit_login' => '🔑 Login',
|
||
'login_hint_footer' => 'Default first login credential',
|
||
'login_installed_success' => '🎉 Setup completed! Login with your created credentials.',
|
||
|
||
// Navbar
|
||
'nav_blocknotes' => '📓 Blocknotes',
|
||
'nav_colors_profile' => '🎨 Colors & Profile',
|
||
'nav_admin' => '👑 User Management',
|
||
'nav_logout' => '🚪 Logout',
|
||
'nav_login' => '🔑 Login',
|
||
'nav_language' => '🌐 Language',
|
||
|
||
// Dashboard (home)
|
||
'dashboard_title_user' => 'My Blocknotes',
|
||
'dashboard_title_admin' => 'All Blocknotes (Admin View)',
|
||
'dashboard_desc_user' => 'Create, organize, and view your blocknotes.',
|
||
'dashboard_desc_admin' => 'As an Admin you can view, manage, and delete blocknotes of all users.',
|
||
'btn_new_blocknote' => '➕ New Blocknote',
|
||
'btn_import_json' => '📥 Import JSON',
|
||
'btn_export_json' => '💾 Export JSON',
|
||
'btn_open_edit' => '👁️ Open & Edit',
|
||
'btn_rename' => '✏️ Rename',
|
||
'btn_delete' => '🗑️ Delete',
|
||
'empty_blocknotes_title' => 'No Blocknotes found',
|
||
'empty_blocknotes_desc_user' => 'You haven\'t created any blocknote yet. Start now!',
|
||
'empty_blocknotes_desc_admin' => 'There are no blocknotes saved in the system yet.',
|
||
'modal_create_title' => '➕ Create New Blocknote',
|
||
'modal_rename_title' => '✏️ Rename Blocknote',
|
||
'modal_import_title' => '📥 Import Blocknote (JSON)',
|
||
'label_title' => 'Blocknote Title',
|
||
'label_file_json' => 'Upload .json File',
|
||
'label_paste_json' => 'Or paste JSON code here',
|
||
'btn_cancel' => 'Cancel',
|
||
'btn_save' => 'Save',
|
||
'btn_create' => 'Create Blocknote',
|
||
'btn_import' => 'Import Blocknote',
|
||
'note_single' => 'Note',
|
||
'note_plural' => 'Notes',
|
||
|
||
// View Blocknote
|
||
'btn_back_list' => '⬅️ Back to Blocknotes',
|
||
'btn_expand_all' => '📂 Expand All',
|
||
'btn_collapse_all' => '📁 Collapse All',
|
||
'btn_new_note' => '➕ New Note',
|
||
'btn_add_subnote' => '➕ Subnote',
|
||
'subnote_single' => 'subnote',
|
||
'subnote_plural' => 'subnotes',
|
||
'badge_text' => '📄 Text',
|
||
'badge_command' => '⚡ Command',
|
||
'btn_copy' => '📋 Copy',
|
||
'btn_copied' => '✓ Copied!',
|
||
'search_placeholder' => '🔍 Search notes, subnotes, or commands in this blocknote...',
|
||
'btn_clear_search' => '❌ Clear Search',
|
||
'search_no_results' => 'No results found',
|
||
'search_no_results_desc' => 'No notes or commands match your search term in this blocknote.',
|
||
'modal_add_note' => '➕ New Block Note',
|
||
'modal_edit_note' => '✏️ Edit Note',
|
||
'modal_add_subnote' => '➕ Add Subnote',
|
||
'modal_edit_subnote' => '✏️ Edit Subnote',
|
||
'label_note_description' => 'Description (optional)',
|
||
'label_subnote_title' => 'Subnote Title',
|
||
'label_subnote_type' => 'Subnote Type',
|
||
'label_subnote_content' => 'Content',
|
||
'type_option_text' => '📄 Generic Text',
|
||
'type_option_command' => '⚡ Command (with Copy button)',
|
||
|
||
// Profile & Settings
|
||
'profile_title' => '🎨 Profile & Theme Settings',
|
||
'profile_desc' => 'Customize password, UI colors, language, and default landing page.',
|
||
'card_password_title' => '🔒 Change Password',
|
||
'card_colors_title' => '🎨 Interface Colors (HSL)',
|
||
'card_lang_title' => '🌍 Interface Language',
|
||
'card_landing_title' => '🏠 Default Landing Page',
|
||
'label_new_pass' => 'New Password',
|
||
'label_confirm_pass' => 'Confirm New Password',
|
||
'label_select_lang' => 'Select Language',
|
||
'label_select_landing' => 'Select Landing Page',
|
||
'landing_option_dashboard' => '📋 Main Selection Page (All Blocknotes)',
|
||
'landing_option_bn_prefix' => '📌 Open directly: ',
|
||
'btn_update_pass' => '🔑 Update Password',
|
||
'btn_save_colors' => '💾 Save Color Preferences',
|
||
'btn_save_lang' => '🌍 Save Language',
|
||
'btn_save_landing' => '🏠 Save Landing Page',
|
||
|
||
// Admin Users
|
||
'admin_title' => '👑 User Administration Panel',
|
||
'admin_desc' => 'Create, manage, and edit user roles and access.',
|
||
'btn_add_user' => '➕ Add New User',
|
||
'col_username' => 'Username',
|
||
'col_role' => 'Role',
|
||
'col_bns' => 'Blocknotes Created',
|
||
'col_created' => 'Created Date',
|
||
'col_actions' => 'Admin Actions',
|
||
'role_standard' => 'Standard User',
|
||
'role_admin' => 'Administrator',
|
||
'role_owner' => '👑 Owner',
|
||
'badge_owner' => '👑 Owner',
|
||
'btn_reset_pass' => '🔑 Reset Pass',
|
||
'modal_create_user' => '➕ Register New User',
|
||
'modal_reset_pass' => '🔑 Reset User Password',
|
||
'card_site_settings_title' => '⚙️ Site Settings (Owner Only)',
|
||
'label_site_title' => 'Global Application / Site Title',
|
||
'label_favicon' => 'Site Favicon (High Resolution, min 64x64px)',
|
||
'btn_save_site_title' => '💾 Save Site Title',
|
||
'btn_upload_favicon' => '📤 Upload New Favicon',
|
||
|
||
// Confirm Dialogs
|
||
'confirm_delete_blocknote' => 'Are you sure you want to delete this blocknote and all its notes?',
|
||
'confirm_delete_note' => 'Are you sure you want to delete this note and all its subnotes?',
|
||
'confirm_delete_subnote' => 'Are you sure you want to delete this subnote?',
|
||
'confirm_delete_user' => 'Are you sure you want to delete this user?',
|
||
|
||
// Placeholders
|
||
'placeholder_bn_title' => 'E.g. Linux Server Commands, PHP Notes...',
|
||
'placeholder_rename_title' => 'New title...',
|
||
'placeholder_import_title' => 'E.g. Positive Internet',
|
||
'placeholder_paste_json' => 'Paste JSON here in old or new format...',
|
||
'placeholder_note_title' => 'E.g. MySQL Installation, Server Setup...',
|
||
'placeholder_note_desc' => 'Short description of this note block...',
|
||
'placeholder_subnote_title' => 'E.g. Database creation command...',
|
||
'placeholder_subnote_content' => 'Enter text or command instructions...',
|
||
'placeholder_site_title' => 'E.g. Blocknotes, Enterprise Notes...',
|
||
'placeholder_username_new' => 'e.g. john, mary...',
|
||
'placeholder_password_new' => 'Enter new password',
|
||
'placeholder_password_confirm' => 'Repeat new password',
|
||
|
||
// Extra Labels
|
||
'label_owner_prefix' => 'Owner: ',
|
||
'label_updated_prefix' => 'Last updated: ',
|
||
'label_you' => 'You',
|
||
'label_unknown' => 'Unknown',
|
||
'label_current_favicon' => 'Current Favicon: ',
|
||
|
||
// First Start Installer Setup
|
||
'setup_title' => '🚀 Blocknotes Initial Setup',
|
||
'setup_subtitle' => 'Configure MySQL database and create the initial privileged users (Owner & Admin).',
|
||
'setup_sec1_title' => '1. MySQL Database Configuration',
|
||
'setup_db_host' => 'Database Host',
|
||
'setup_db_name' => 'Database Name',
|
||
'setup_db_user' => 'MySQL User',
|
||
'setup_db_pass' => 'MySQL Password',
|
||
'setup_db_pass_placeholder' => 'Password (leave empty if none)',
|
||
'setup_sec2_title' => '2. Owner Account (Single Owner)',
|
||
'setup_owner_user' => 'Owner Username',
|
||
'setup_owner_pass' => 'Owner Password',
|
||
'setup_owner_pass_placeholder' => 'Enter password for Owner',
|
||
'setup_sec3_title' => '3. First Admin Account',
|
||
'setup_admin_user' => 'Admin Username',
|
||
'setup_admin_pass' => 'Admin Password',
|
||
'setup_admin_pass_placeholder' => 'Enter password for Admin',
|
||
'setup_btn_submit' => '⚡ Complete Installation & Configure System',
|
||
'err_setup_db_fields' => 'Please fill in all MySQL database connection fields.',
|
||
'err_setup_owner_fields' => 'Please enter username and password for the Owner user.',
|
||
'err_setup_admin_fields' => 'Please enter username and password for the first Admin user.',
|
||
'err_setup_same_user' => 'Owner user and Admin user must have different usernames.'
|
||
],
|
||
|
||
'es' => [
|
||
// Login Page
|
||
'login_title' => 'Iniciar sesión en Blocknotes',
|
||
'login_subtitle' => 'Gestiona tus notas y comandos',
|
||
'label_username' => 'Nombre de Usuario',
|
||
'label_password' => 'Contraseña',
|
||
'placeholder_username' => 'Introduce nombre de usuario',
|
||
'placeholder_password' => 'Introduce contraseña',
|
||
'btn_submit_login' => '🔑 Iniciar Sesión',
|
||
'login_hint_footer' => 'Credencial predeterminada para el primer acceso',
|
||
'login_installed_success' => '🎉 ¡Configuración completada! Inicia sesión con tus credenciales.',
|
||
|
||
// Navbar
|
||
'nav_blocknotes' => '📓 Blocknotes',
|
||
'nav_colors_profile' => '🎨 Colores y Perfil',
|
||
'nav_admin' => '👑 Gestión de Usuarios',
|
||
'nav_logout' => '🚪 Salir',
|
||
'nav_login' => '🔑 Iniciar Sesión',
|
||
'nav_language' => '🌐 Idioma',
|
||
|
||
// Dashboard (home)
|
||
'dashboard_title_user' => 'Mis Blocknotes',
|
||
'dashboard_title_admin' => 'Todos los Blocknotes (Vista Admin)',
|
||
'dashboard_desc_user' => 'Crea, organiza y consulta tus blocknotes.',
|
||
'dashboard_desc_admin' => 'Como Admin puedes ver, gestionar y eliminar los blocknotes de todos los usuarios.',
|
||
'btn_new_blocknote' => '➕ Nuevo Blocknote',
|
||
'btn_import_json' => '📥 Importar JSON',
|
||
'btn_export_json' => '💾 Exportar JSON',
|
||
'btn_open_edit' => '👁️ Abrir y Editar',
|
||
'btn_rename' => '✏️ Renombrar',
|
||
'btn_delete' => '🗑️ Eliminar',
|
||
'empty_blocknotes_title' => 'No se encontraron blocknotes',
|
||
'empty_blocknotes_desc_user' => 'Aún no has creado ningún blocknote. ¡Empieza ahora!',
|
||
'empty_blocknotes_desc_admin' => 'Aún no hay blocknotes guardados en el sistema.',
|
||
'modal_create_title' => '➕ Crear Nuevo Blocknote',
|
||
'modal_rename_title' => '✏️ Renombrar Blocknote',
|
||
'modal_import_title' => '📥 Importar Blocknote (JSON)',
|
||
'label_title' => 'Título del Blocknote',
|
||
'label_file_json' => 'Subir archivo .json',
|
||
'label_paste_json' => 'O pega el código JSON aquí',
|
||
'btn_cancel' => 'Cancelar',
|
||
'btn_save' => 'Guardar',
|
||
'btn_create' => 'Crear Blocknote',
|
||
'btn_import' => 'Importar Blocknote',
|
||
'note_single' => 'Nota',
|
||
'note_plural' => 'Notas',
|
||
|
||
// View Blocknote
|
||
'btn_back_list' => '⬅️ Volver a Blocknotes',
|
||
'btn_expand_all' => '📂 Expandir Todas',
|
||
'btn_collapse_all' => '📁 Contraer Todas',
|
||
'btn_new_note' => '➕ Nueva Nota',
|
||
'btn_add_subnote' => '➕ Subnota',
|
||
'subnote_single' => 'subnota',
|
||
'subnote_plural' => 'subnotas',
|
||
'badge_text' => '📄 Texto',
|
||
'badge_command' => '⚡ Comando',
|
||
'btn_copy' => '📋 Copiar',
|
||
'btn_copied' => '✓ ¡Copiado!',
|
||
'search_placeholder' => '🔍 Buscar notas, subnotas o comandos...',
|
||
'btn_clear_search' => '❌ Cancelar Búsqueda',
|
||
'search_no_results' => 'No se encontraron resultados',
|
||
'search_no_results_desc' => 'Ninguna nota o comando coincide con tu búsqueda.',
|
||
'modal_add_note' => '➕ Nueva Nota en Bloque',
|
||
'modal_edit_note' => '✏️ Editar Nota',
|
||
'modal_add_subnote' => '➕ Añadir Subnota',
|
||
'modal_edit_subnote' => '✏️ Editar Subnota',
|
||
'label_note_description' => 'Descripción (opcional)',
|
||
'label_subnote_title' => 'Título de Subnota',
|
||
'label_subnote_type' => 'Tipo de Subnota',
|
||
'label_subnote_content' => 'Contenido',
|
||
'type_option_text' => '📄 Texto genérico',
|
||
'type_option_command' => '⚡ Comando (con botón Copiar)',
|
||
|
||
// Profile & Settings
|
||
'profile_title' => '🎨 Ajustes de Perfil y Tema',
|
||
'profile_desc' => 'Personaliza contraseña, colores de interfaz, idioma y página de inicio.',
|
||
'card_password_title' => '🔒 Cambiar Contraseña',
|
||
'card_colors_title' => '🎨 Colores de Interfaz (HSL)',
|
||
'card_lang_title' => '🌍 Idioma de la Interfaz',
|
||
'card_landing_title' => '🏠 Página de Inicio Predeterminada',
|
||
'label_new_pass' => 'Nueva Contraseña',
|
||
'label_confirm_pass' => 'Confirmar Nueva Contraseña',
|
||
'label_select_lang' => 'Seleccionar Idioma',
|
||
'label_select_landing' => 'Seleccionar Página de Inicio',
|
||
'landing_option_dashboard' => '📋 Página Principal (Todos los Blocknotes)',
|
||
'landing_option_bn_prefix' => '📌 Abrir directamente: ',
|
||
'btn_update_pass' => '🔑 Actualizar Contraseña',
|
||
'btn_save_colors' => '💾 Guardar Colores',
|
||
'btn_save_lang' => '🌍 Guardar Idioma',
|
||
'btn_save_landing' => '🏠 Guardar Página de Inicio',
|
||
|
||
// Admin Users
|
||
'admin_title' => '👑 Panel de Administración de Usuarios',
|
||
'admin_desc' => 'Crea, gestiona y edita roles de usuarios y accesos.',
|
||
'btn_add_user' => '➕ Añadir Nuevo Usuario',
|
||
'col_username' => 'Nombre de Usuario',
|
||
'col_role' => 'Rol',
|
||
'col_bns' => 'Blocknotes Creados',
|
||
'col_created' => 'Fecha de Creación',
|
||
'col_actions' => 'Acciones de Admin',
|
||
'role_standard' => 'Usuario Estándar',
|
||
'role_admin' => 'Administrador',
|
||
'role_owner' => '👑 Propietario (Owner)',
|
||
'badge_owner' => '👑 Propietario',
|
||
'btn_reset_pass' => '🔑 Reset Pass',
|
||
'modal_create_user' => '➕ Registrar Nuevo Usuario',
|
||
'modal_reset_pass' => '🔑 Resetear Contraseña',
|
||
'card_site_settings_title' => '⚙️ Ajustes del Sitio (Solo Propietario)',
|
||
'label_site_title' => 'Título del Sitio / Aplicación',
|
||
'label_favicon' => 'Favicon del Sitio (Alta resolución, mín 64x64px)',
|
||
'btn_save_site_title' => '💾 Guardar Título',
|
||
'btn_upload_favicon' => '📤 Subir Nueva Favicon',
|
||
|
||
// Confirm Dialogs
|
||
'confirm_delete_blocknote' => '¿Estás seguro de que quieres eliminar este blocknote y todas sus notas?',
|
||
'confirm_delete_note' => '¿Estás seguro de que quieres eliminar esta nota y todas sus subnotas?',
|
||
'confirm_delete_subnote' => '¿Estás seguro de que quieres eliminar esta subnota?',
|
||
'confirm_delete_user' => '¿Estás seguro de que quieres eliminar este usuario?',
|
||
|
||
// Placeholders
|
||
'placeholder_bn_title' => 'Ej. Comandos Servidor Linux...',
|
||
'placeholder_rename_title' => 'Nuevo título...',
|
||
'placeholder_import_title' => 'Ej. Positive Internet',
|
||
'placeholder_paste_json' => 'Pega el JSON aquí en formato antiguo o nuevo...',
|
||
'placeholder_note_title' => 'Ej. Instalación MySQL...',
|
||
'placeholder_note_desc' => 'Breve descripción de este bloque de notas...',
|
||
'placeholder_subnote_title' => 'Ej. Comando creación base de datos...',
|
||
'placeholder_subnote_content' => 'Introduce el texto o instrucciones del comando...',
|
||
'placeholder_site_title' => 'Ej. Blocknotes...',
|
||
'placeholder_username_new' => 'ej. mario, juan...',
|
||
'placeholder_password_new' => 'Introduce nueva contraseña',
|
||
'placeholder_password_confirm' => 'Repite nueva contraseña',
|
||
|
||
// Extra Labels
|
||
'label_owner_prefix' => 'Propietario: ',
|
||
'label_updated_prefix' => 'Última actualización: ',
|
||
'label_you' => 'Tú',
|
||
'label_unknown' => 'Desconocido',
|
||
'label_current_favicon' => 'Favicon Actual: ',
|
||
|
||
// First Start Installer Setup
|
||
'setup_title' => '🚀 Configuración Inicial de Blocknotes',
|
||
'setup_subtitle' => 'Configura la base de datos MySQL y crea los primeros usuarios privilegiados (Propietario y Admin).',
|
||
'setup_sec1_title' => '1. Configuración de Base de Datos MySQL',
|
||
'setup_db_host' => 'Host de Base de Datos',
|
||
'setup_db_name' => 'Nombre de la Base de Datos',
|
||
'setup_db_user' => 'Usuario MySQL',
|
||
'setup_db_pass' => 'Contraseña MySQL',
|
||
'setup_db_pass_placeholder' => 'Contraseña (deja en blanco si no hay)',
|
||
'setup_sec2_title' => '2. Cuenta de Propietario (Único)',
|
||
'setup_owner_user' => 'Nombre de Usuario Propietario',
|
||
'setup_owner_pass' => 'Contraseña de Propietario',
|
||
'setup_owner_pass_placeholder' => 'Introduce contraseña para Propietario',
|
||
'setup_sec3_title' => '3. Primera Cuenta de Administrador (Admin)',
|
||
'setup_admin_user' => 'Nombre de Usuario Admin',
|
||
'setup_admin_pass' => 'Contraseña de Admin',
|
||
'setup_admin_pass_placeholder' => 'Introduce contraseña para Admin',
|
||
'setup_btn_submit' => '⚡ Completar Instalación y Configurar Sistema',
|
||
'err_setup_db_fields' => 'Por favor completa todos los campos de conexión a la base de datos MySQL.',
|
||
'err_setup_owner_fields' => 'Por favor introduce nombre de usuario y contraseña para el Propietario.',
|
||
'err_setup_admin_fields' => 'Por favor introduce nombre de usuario y contraseña para el primer Admin.',
|
||
'err_setup_same_user' => 'El usuario Propietario y el usuario Admin deben tener nombres diferentes.'
|
||
],
|
||
|
||
'fr' => [
|
||
// Login Page
|
||
'login_title' => 'Connexion à Blocknotes',
|
||
'login_subtitle' => 'Gérez vos notes et vos commandes',
|
||
'label_username' => 'Nom d\'Utilisateur',
|
||
'label_password' => 'Mot de Passe',
|
||
'placeholder_username' => 'Entrez nom d\'utilisateur',
|
||
'placeholder_password' => 'Entrez mot de passe',
|
||
'btn_submit_login' => '🔑 Connexion',
|
||
'login_hint_footer' => 'Identifiant par défaut pour le premier accès',
|
||
'login_installed_success' => '🎉 Configuration terminée! Connectez-vous avec vos identifiants.',
|
||
|
||
// Navbar
|
||
'nav_blocknotes' => '📓 Blocknotes',
|
||
'nav_colors_profile' => '🎨 Couleurs & Profil',
|
||
'nav_admin' => '👑 Gestion des Utilisateurs',
|
||
'nav_logout' => '🚪 Déconnexion',
|
||
'nav_login' => '🔑 Connexion',
|
||
'nav_language' => '🌐 Langue',
|
||
|
||
// Dashboard (home)
|
||
'dashboard_title_user' => 'Mes Blocknotes',
|
||
'dashboard_title_admin' => 'Tous les Blocknotes (Vue Admin)',
|
||
'dashboard_desc_user' => 'Créez, organisez et consultez vos blocknotes.',
|
||
'dashboard_desc_admin' => 'En tant qu\'Admin vous pouvez afficher, gérer et supprimer les blocknotes de tous les utilisateurs.',
|
||
'btn_new_blocknote' => '➕ Nouveau Blocknote',
|
||
'btn_import_json' => '📥 Importer JSON',
|
||
'btn_export_json' => '💾 Exporter JSON',
|
||
'btn_open_edit' => '👁️ Ouvrir & Modifier',
|
||
'btn_rename' => '✏️ Renommer',
|
||
'btn_delete' => '🗑️ Supprimer',
|
||
'empty_blocknotes_title' => 'Aucun blocknote trouvé',
|
||
'empty_blocknotes_desc_user' => 'Vous n\'avez pas encore créé de blocknote. Commencez dès maintenant!',
|
||
'empty_blocknotes_desc_admin' => 'Il n\'y a encore aucun blocknote enregistré dans le système.',
|
||
'modal_create_title' => '➕ Créer un Nouveau Blocknote',
|
||
'modal_rename_title' => '✏️ Renommer le Blocknote',
|
||
'modal_import_title' => '📥 Importer Blocknote (JSON)',
|
||
'label_title' => 'Titre du Blocknote',
|
||
'label_file_json' => 'Téléverser le fichier .json',
|
||
'label_paste_json' => 'Ou collez le code JSON ici',
|
||
'btn_cancel' => 'Annuler',
|
||
'btn_save' => 'Enregistrer',
|
||
'btn_create' => 'Créer Blocknote',
|
||
'btn_import' => 'Importer Blocknote',
|
||
'note_single' => 'Note',
|
||
'note_plural' => 'Notes',
|
||
|
||
// View Blocknote
|
||
'btn_back_list' => '⬅️ Retour aux Blocknotes',
|
||
'btn_expand_all' => '📂 Tout Développer',
|
||
'btn_collapse_all' => '📁 Tout Réduire',
|
||
'btn_new_note' => '➕ Nouvelle Note',
|
||
'btn_add_subnote' => '➕ Sous-note',
|
||
'subnote_single' => 'sous-note',
|
||
'subnote_plural' => 'sous-notes',
|
||
'badge_text' => '📄 Texte',
|
||
'badge_command' => '⚡ Commande',
|
||
'btn_copy' => '📋 Copier',
|
||
'btn_copied' => '✓ Copié!',
|
||
'search_placeholder' => '🔍 Rechercher notes, sous-notes ou commandes...',
|
||
'btn_clear_search' => '❌ Annuler la Recherche',
|
||
'search_no_results' => 'Aucun résultat trouvé',
|
||
'search_no_results_desc' => 'Aucune note ou commande ne correspond à votre recherche.',
|
||
'modal_add_note' => '➕ Nouvelle Note par Bloc',
|
||
'modal_edit_note' => '✏️ Modifier la Note',
|
||
'modal_add_subnote' => '➕ Ajouter une Sous-note',
|
||
'modal_edit_subnote' => '✏️ Modifier la Sous-note',
|
||
'label_note_description' => 'Description (facultatif)',
|
||
'label_subnote_title' => 'Titre de la Sous-note',
|
||
'label_subnote_type' => 'Type de Sous-note',
|
||
'label_subnote_content' => 'Contenu',
|
||
'type_option_text' => '📄 Texte générique',
|
||
'type_option_command' => '⚡ Commande (avec bouton Copier)',
|
||
|
||
// Profile & Settings
|
||
'profile_title' => '🎨 Paramètres Profil & Thème',
|
||
'profile_desc' => 'Personnalisez votre mot de passe, couleurs, langue et page d\'accueil.',
|
||
'card_password_title' => '🔒 Changer le Mot de Passe',
|
||
'card_colors_title' => '🎨 Couleurs de l\'Interface (HSL)',
|
||
'card_lang_title' => '🌍 Langue de l\'Interface',
|
||
'card_landing_title' => '🏠 Page d\'Accueil par Défaut',
|
||
'label_new_pass' => 'Nouveau Mot de Passe',
|
||
'label_confirm_pass' => 'Confirmer le Mot de Passe',
|
||
'label_select_lang' => 'Sélectionner la Langue',
|
||
'label_select_landing' => 'Sélectionner la Page d\'Accueil',
|
||
'landing_option_dashboard' => '📋 Page Principale (Tous les Blocknotes)',
|
||
'landing_option_bn_prefix' => '📌 Ouvrir directement: ',
|
||
'btn_update_pass' => '🔑 Mettre à Jour',
|
||
'btn_save_colors' => '💾 Enregistrer les Couleurs',
|
||
'btn_save_lang' => '🌍 Enregistrer la Langue',
|
||
'btn_save_landing' => '🏠 Enregistrer la Page d\'Accueil',
|
||
|
||
// Admin Users
|
||
'admin_title' => '👑 Panneau d\'Administration Utilisateurs',
|
||
'admin_desc' => 'Créez, gérez et modifiez les rôles et accès des utilisateurs.',
|
||
'btn_add_user' => '➕ Ajouter un Utilisateur',
|
||
'col_username' => 'Nom d\'Utilisateur',
|
||
'col_role' => 'Rôle',
|
||
'col_bns' => 'Blocknotes Créés',
|
||
'col_created' => 'Date de Création',
|
||
'col_actions' => 'Actions Admin',
|
||
'role_standard' => 'Utilisateur Standard',
|
||
'role_admin' => 'Administrateur',
|
||
'role_owner' => '👑 Propriétaire (Owner)',
|
||
'badge_owner' => '👑 Propriétaire',
|
||
'btn_reset_pass' => '🔑 Réinit Pass',
|
||
'modal_create_user' => '➕ Enregistrer un Utilisateur',
|
||
'modal_reset_pass' => '🔑 Réinitialiser le Mot de Passe',
|
||
'card_site_settings_title' => '⚙️ Paramètres du Site (Propriétaire Uniquement)',
|
||
'label_site_title' => 'Titre Global du Site',
|
||
'label_favicon' => 'Favicon du Site (Haute résolution, min 64x64px)',
|
||
'btn_save_site_title' => '💾 Enregistrer le Titre',
|
||
'btn_upload_favicon' => '📤 Téléverser la Favicon',
|
||
|
||
// Confirm Dialogs
|
||
'confirm_delete_blocknote' => 'Êtes-vous sûr de vouloir supprimer ce blocknote et toutes ses notes?',
|
||
'confirm_delete_note' => 'Êtes-vous sûr de vouloir supprimer cette note et toutes ses sous-notes?',
|
||
'confirm_delete_subnote' => 'Êtes-vous sûr de vouloir supprimer cette sous-note?',
|
||
'confirm_delete_user' => 'Êtes-vous sûr de vouloir supprimer cet utilisateur?',
|
||
|
||
// Placeholders
|
||
'placeholder_bn_title' => 'Ex. Commandes Serveur Linux...',
|
||
'placeholder_rename_title' => 'Nouveau titre...',
|
||
'placeholder_import_title' => 'Ex. Positive Internet',
|
||
'placeholder_paste_json' => 'Collez le JSON ici au format ancien ou nouveau...',
|
||
'placeholder_note_title' => 'Ex. Installation MySQL...',
|
||
'placeholder_note_desc' => 'Brève description de ce bloc de notes...',
|
||
'placeholder_subnote_title' => 'Ex. Commande création base de données...',
|
||
'placeholder_subnote_content' => 'Entrez le texte ou les instructions de la commande...',
|
||
'placeholder_site_title' => 'Ex. Blocknotes...',
|
||
'placeholder_username_new' => 'ex. pierre, marie...',
|
||
'placeholder_password_new' => 'Entrez nouveau mot de passe',
|
||
'placeholder_password_confirm' => 'Répétez le mot de passe',
|
||
|
||
// Extra Labels
|
||
'label_owner_prefix' => 'Propriétaire: ',
|
||
'label_updated_prefix' => 'Dernière mise à jour: ',
|
||
'label_you' => 'Vous',
|
||
'label_unknown' => 'Inconnu',
|
||
'label_current_favicon' => 'Favicon Actuelle: ',
|
||
|
||
// First Start Installer Setup
|
||
'setup_title' => '🚀 Configuration Initiale de Blocknotes',
|
||
'setup_subtitle' => 'Configurez la base de données MySQL et créez les premiers utilisateurs privilégiés (Propriétaire et Admin).',
|
||
'setup_sec1_title' => '1. Configuration de la Base de Données MySQL',
|
||
'setup_db_host' => 'Hôte de la Base de Données',
|
||
'setup_db_name' => 'Nom de la Base de Données',
|
||
'setup_db_user' => 'Utilisateur MySQL',
|
||
'setup_db_pass' => 'Mot de Passe MySQL',
|
||
'setup_db_pass_placeholder' => 'Mot de passe (laissez vide si aucun)',
|
||
'setup_sec2_title' => '2. Compte Propriétaire (Unique)',
|
||
'setup_owner_user' => 'Nom d\'Utilisateur Propriétaire',
|
||
'setup_owner_pass' => 'Mot de Passe Propriétaire',
|
||
'setup_owner_pass_placeholder' => 'Entrez le mot de passe pour le Propriétaire',
|
||
'setup_sec3_title' => '3. Premier Compte Administrateur (Admin)',
|
||
'setup_admin_user' => 'Nom d\'Utilisateur Admin',
|
||
'setup_admin_pass' => 'Mot de Passe Admin',
|
||
'setup_admin_pass_placeholder' => 'Entrez le mot de passe pour Admin',
|
||
'setup_btn_submit' => '⚡ Terminer l\'Installation et Configurer le Système',
|
||
'err_setup_db_fields' => 'Veuillez remplir tous les champs de connexion à la base de données MySQL.',
|
||
'err_setup_owner_fields' => 'Veuillez entrer le nom d\'utilisateur et le mot de passe pour le Propriétaire.',
|
||
'err_setup_admin_fields' => 'Veuillez entrer le nom d\'utilisateur et le mot de passe pour le premier Admin.',
|
||
'err_setup_same_user' => 'L\'utilisateur Propriétaire et l\'utilisateur Admin doivent avoir des noms différents.'
|
||
]
|
||
];
|
||
}
|
||
|
||
/**
|
||
* Translate key to current active language string.
|
||
*/
|
||
function __($key, $default = '') {
|
||
$lang = get_current_lang();
|
||
$translations = get_translations();
|
||
|
||
if (isset($translations[$lang][$key])) {
|
||
return $translations[$lang][$key];
|
||
}
|
||
if (isset($translations['it'][$key])) {
|
||
return $translations['it'][$key];
|
||
}
|
||
if (isset($translations['en'][$key])) {
|
||
return $translations['en'][$key];
|
||
}
|
||
return !empty($default) ? $default : $key;
|
||
}
|