diff --git a/CHANGELOG.md b/CHANGELOG.md index 1be19c8..d203e7a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ - Moved Gallery view toggle button into header. - Removed css entries that are not needed anymore for Gallery View Toggle. - Change search box text when enabling advanced search. +- Advanced/Basic search button as material icon on same row as search bar. ### Advanced Search Implementation diff --git a/css/styles.css b/css/styles.css index b3d1546..03c3a92 100644 --- a/css/styles.css +++ b/css/styles.css @@ -1696,21 +1696,6 @@ body.dark-mode .folder-help-icon { } -body.dark-mode #searchIcon { - background-color: #444; - border: 1px solid #555; - border-radius: 4px; - color: #fff; - padding: 4px 8px; -} - -body.dark-mode #searchInput { - background-color: #333; - color: #e0e0e0; - border: 1px solid #555; -} - - body.dark-mode .CodeMirror { background: #1e1e1e !important; color: #ffffff !important; @@ -2128,3 +2113,57 @@ body.dark-mode .header-drop-zone.drag-active { body.dark-mode #fileSummary { color: white; } + +#searchIcon { + border-radius: 4px; + padding: 4px 8px; +} + +body.dark-mode #searchIcon { + background-color: #444; + border: 1px solid #555; + color: #fff; +} + +body.dark-mode #searchInput { + background-color: #333; + color: #e0e0e0; + border: 1px solid #555; +} + +.btn-icon { + background: transparent; + border: none; + padding: 6px 8px; + margin: 0; + display: inline-flex; + align-items: center; + justify-content: center; + cursor: pointer; + transition: background 0.2s, color 0.2s; +} + +.btn-icon .material-icons, +#searchIcon .material-icons { + font-size: 24px; + line-height: 1; + margin: 0; + padding: 0; + color: #333; +} + +.btn-icon:hover, +.btn-icon:focus { + background: rgba(0, 0, 0, 0.1); + outline: none; +} + +body.dark-mode .btn-icon .material-icons, +body.dark-mode #searchIcon .material-icons { + color: #fff; +} + +body.dark-mode .btn-icon:hover, +body.dark-mode .btn-icon:focus { + background: rgba(255, 255, 255, 0.1); +} \ No newline at end of file diff --git a/js/domUtils.js b/js/domUtils.js index 9522fe0..0e633f4 100644 --- a/js/domUtils.js +++ b/js/domUtils.js @@ -94,16 +94,24 @@ export function buildSearchAndPaginationControls({ currentPage, totalPages, sear const placeholderText = window.advancedSearchEnabled ? t("search_placeholder_advanced") : t("search_placeholder"); - + return `
+ +
+ +
+
search
+
diff --git a/js/fileListView.js b/js/fileListView.js index a85ea47..ca5e21d 100644 --- a/js/fileListView.js +++ b/js/fileListView.js @@ -293,10 +293,8 @@ export function renderFileTable(folder, container) { totalPages, searchTerm: window.currentSearchTerm || "" }); - const advancedToggleHTML = ``; - const combinedTopHTML = topControlsHTML + advancedToggleHTML; + + const combinedTopHTML = topControlsHTML; let headerHTML = buildFileTableHeader(sortOrder); const startIndex = (currentPage - 1) * itemsPerPageSetting; diff --git a/js/i18n.js b/js/i18n.js index 0d2281c..b01d9af 100644 --- a/js/i18n.js +++ b/js/i18n.js @@ -1,612 +1,614 @@ /* i18n.js */ const translations = { - en: { /* English translations */ - "please_log_in_to_continue": "Please log in to continue.", - "no_files_selected": "No files selected.", - "confirm_delete_files": "Are you sure you want to delete {count} selected file(s)?", - "element_not_found": "Element with id \"{id}\" not found.", - "search_placeholder": "Search files, tags, & uploader...", - "search_placeholder_advanced": "Advanced Search: files, tags, uploader & content...", - "file_name": "File Name", - "date_modified": "Date Modified", - "upload_date": "Upload Date", - "file_size": "File Size", - "uploader": "Uploader", - "enter_totp_code": "Enter TOTP Code", - "use_recovery_code_instead": "Use Recovery Code instead", - "enter_recovery_code": "Enter Recovery Code", - "editing": "Editing", - "decrease_font": "A-", - "increase_font": "A+", - "save": "Save", - "close": "Close", - "no_files_found": "No files found.", - "switch_to_table_view": "Switch to Table View", - "switch_to_gallery_view": "Switch to Gallery View", - "share_file": "Share File", - "set_expiration": "Set Expiration:", - "password_optional": "Password (optional):", - "generate_share_link": "Generate Share Link", - "shareable_link": "Shareable Link:", - "copy_link": "Copy Link", - "tag_file": "Tag File", - "tag_name": "Tag Name:", - "tag_color": "Tag Color:", - "save_tag": "Save Tag", - "files_in": "Files in", - "light_mode": "Light Mode", - "dark_mode": "Dark Mode", - "upload_instruction": "Drop files/folders here or click 'Choose files'", - "no_files_selected_default": "No files selected", - "choose_files": "Choose files", - "delete_selected": "Delete Selected", - "copy_selected": "Copy Selected", - "move_selected": "Move Selected", - "tag_selected": "Tag Selected", - "download_zip": "Download Zip", - "extract_zip": "Extract Zip", - "preview": "Preview", - "edit": "Edit", - "rename": "Rename", - "trash_empty": "Trash is empty.", - "no_trash_selected": "No trash items selected for restore.", - - // Additional keys for HTML translations: - "title": "FileRise", - "header_title": "FileRise", - "logout": "Logout", - "change_password": "Change Password", - "restore_text": "Restore or", - "delete_text": "Delete Trash Items", - "restore_selected": "Restore Selected", - "restore_all": "Restore All", - "delete_selected_trash": "Delete Selected", - "delete_all": "Delete All", - "upload_header": "Upload Files/Folders", - - // Folder Management keys: - "folder_navigation": "Folder Navigation & Management", - "create_folder": "Create Folder", - "create_folder_title": "Create Folder", - "enter_folder_name": "Enter folder name", - "cancel": "Cancel", - "create": "Create", - "rename_folder": "Rename Folder", - "rename_folder_title": "Rename Folder", - "rename_folder_placeholder": "Enter new folder name", - "delete_folder": "Delete Folder", - "delete_folder_title": "Delete Folder", - "delete_folder_message": "Are you sure you want to delete this folder?", - "folder_help": "Folder Help", - "folder_help_item_1": "Click on a folder in the tree to view its files.", - "folder_help_item_2": "Use [-] to collapse and [+] to expand folders.", - "folder_help_item_3": "Select a folder and click \"Create Folder\" to add a subfolder.", - "folder_help_item_4": "To rename or delete a folder, select it and then click the appropriate button.", - - // File List keys: - "file_list_title": "Files in (Root)", - "files_in": "Files in", - "delete_files": "Delete Files", - "delete_selected_files_title": "Delete Selected Files", - "delete_files_message": "Are you sure you want to delete the selected files?", - "copy_files": "Copy Files", - "copy_files_title": "Copy Selected Files", - "copy_files_message": "Select a target folder for copying the selected files:", - "move_files": "Move Files", - "move_files_title": "Move Selected Files", - "move_files_message": "Select a target folder for moving the selected files:", - "move": "Move", - "extract_zip_button": "Extract Zip", - "download_zip_title": "Download Selected Files as Zip", - "download_zip_prompt": "Enter a name for the zip file:", - "zip_placeholder": "files.zip", - - // Login Form keys: - "login": "Login", - "remember_me": "Remember me", - "login_oidc": "Login with OIDC", - "basic_http_login": "Use Basic HTTP Login", - - // Change Password keys: - "change_password_title": "Change Password", - "old_password": "Old Password", - "new_password": "New Password", - "confirm_new_password": "Confirm New Password", - - // Add User keys: - "create_new_user_title": "Create New User", - "username": "Username:", - "password": "Password:", - "grant_admin": "Grant Admin Access", - "save_user": "Save User", - - // Remove User keys: - "remove_user_title": "Remove User", - "select_user_remove": "Select a user to remove:", - "delete_user": "Delete User", - - // Rename File keys: - "rename_file_title": "Rename File", - "rename_file_placeholder": "Enter new file name", + en: { /* English translations */ + "please_log_in_to_continue": "Please log in to continue.", + "no_files_selected": "No files selected.", + "confirm_delete_files": "Are you sure you want to delete {count} selected file(s)?", + "element_not_found": "Element with id \"{id}\" not found.", + "search_placeholder": "Search files, tags, & uploader...", + "search_placeholder_advanced": "Advanced Search: files, tags, uploader & content...", + "basic_search_tooltip": "Basic Search: Search by file name, tags, and uploader.", + "advanced_search_tooltip": "Advanced Search: Includes file content, in addition to file name, tags, and uploader.", + "file_name": "File Name", + "date_modified": "Date Modified", + "upload_date": "Upload Date", + "file_size": "File Size", + "uploader": "Uploader", + "enter_totp_code": "Enter TOTP Code", + "use_recovery_code_instead": "Use Recovery Code instead", + "enter_recovery_code": "Enter Recovery Code", + "editing": "Editing", + "decrease_font": "A-", + "increase_font": "A+", + "save": "Save", + "close": "Close", + "no_files_found": "No files found.", + "switch_to_table_view": "Switch to Table View", + "switch_to_gallery_view": "Switch to Gallery View", + "share_file": "Share File", + "set_expiration": "Set Expiration:", + "password_optional": "Password (optional):", + "generate_share_link": "Generate Share Link", + "shareable_link": "Shareable Link:", + "copy_link": "Copy Link", + "tag_file": "Tag File", + "tag_name": "Tag Name:", + "tag_color": "Tag Color:", + "save_tag": "Save Tag", + "files_in": "Files in", + "light_mode": "Light Mode", + "dark_mode": "Dark Mode", + "upload_instruction": "Drop files/folders here or click 'Choose files'", + "no_files_selected_default": "No files selected", + "choose_files": "Choose files", + "delete_selected": "Delete Selected", + "copy_selected": "Copy Selected", + "move_selected": "Move Selected", + "tag_selected": "Tag Selected", + "download_zip": "Download Zip", + "extract_zip": "Extract Zip", + "preview": "Preview", + "edit": "Edit", + "rename": "Rename", + "trash_empty": "Trash is empty.", + "no_trash_selected": "No trash items selected for restore.", - // Folder Share - "share_folder": "Share Folder", - "allow_uploads": "Allow Uploads", - "share_link_generated": "Share Link Generated", - "error_generating_share_link": "Error Generating Share Link", + // Additional keys for HTML translations: + "title": "FileRise", + "header_title": "FileRise", + "logout": "Logout", + "change_password": "Change Password", + "restore_text": "Restore or", + "delete_text": "Delete Trash Items", + "restore_selected": "Restore Selected", + "restore_all": "Restore All", + "delete_selected_trash": "Delete Selected", + "delete_all": "Delete All", + "upload_header": "Upload Files/Folders", - // Folder - "create_folder": "Create Folder", - "rename_folder": "Rename Folder", - "folder_share": "Share Folder", - "delete_folder": "Delete Folder", - - // Custom Confirm Modal keys: - "yes": "Yes", - "no": "No", - "delete": "Delete", - "download": "Download", - "upload": "Upload", - "copy": "Copy", - "extract": "Extract", - "user": "User:", - "unknown_error": "Unknown Error", - "link_copied": "Link Copied to Clipboard", - "minutes": "minutes", - "hours": "hours", - "days": "days", - "weeks": "weeks", - "months": "months", - "seconds": "seconds", - - // Dark Mode Toggle - "dark_mode_toggle": "Dark Mode", - "light_mode_toggle": "Light Mode" - }, - es: { /* Spanish translations */ - "please_log_in_to_continue": "Por favor, inicie sesión para continuar.", - "no_files_selected": "No se seleccionaron archivos.", - "confirm_delete_files": "¿Está seguro de que desea eliminar {count} archivo(s) seleccionado(s)?", - "element_not_found": "Elemento con id \"{id}\" no encontrado.", - "search_placeholder": "Buscar archivos o etiqueta...", - "file_name": "Nombre del archivo", - "date_modified": "Fecha de modificación", - "upload_date": "Fecha de carga", - "file_size": "Tamaño del archivo", - "uploader": "Cargado por", - "enter_totp_code": "Ingrese el código TOTP", - "use_recovery_code_instead": "Usar código de recuperación en su lugar", - "enter_recovery_code": "Ingrese el código de recuperación", - "editing": "Editando", - "decrease_font": "A-", - "increase_font": "A+", - "save": "Guardar", - "close": "Cerrar", - "no_files_found": "No se encontraron archivos.", - "switch_to_table_view": "Cambiar a vista de tabla", - "switch_to_gallery_view": "Cambiar a vista de galería", - "share_file": "Compartir archivo", - "set_expiration": "Establecer vencimiento:", - "password_optional": "Contraseña (opcional):", - "generate_share_link": "Generar enlace para compartir", - "shareable_link": "Enlace para compartir:", - "copy_link": "Copiar enlace", - "tag_file": "Etiquetar archivo", - "tag_name": "Nombre de la etiqueta:", - "tag_color": "Color de la etiqueta:", - "save_tag": "Guardar etiqueta", - "files_in": "Archivos en", - "light_mode": "Modo claro", - "dark_mode": "Modo oscuro", - "upload_instruction": "Suelte archivos/carpetas o haga clic en 'Elegir archivos'", - "no_files_selected_default": "No se seleccionaron archivos", - "choose_files": "Elegir archivos", - "delete_selected": "Eliminar seleccionados", - "copy_selected": "Copiar seleccionados", - "move_selected": "Mover seleccionados", - "tag_selected": "Etiquetar seleccionados", - "download_zip": "Descargar Zip", - "extract_zip": "Extraer Zip", - "preview": "Vista previa", - "edit": "Editar", - "rename": "Renombrar", - "trash_empty": "La papelera está vacía.", - "no_trash_selected": "No se seleccionaron elementos de la papelera para restaurar.", - - // Additional keys for HTML translations: - "title": "FileRise", - "header_title": "FileRise", - "logout": "Cerrar sesión", - "change_password": "Cambiar contraseña", - "restore_text": "Restaurar o", - "delete_text": "Eliminar elementos de la papelera", - "restore_selected": "Restaurar seleccionados", - "restore_all": "Restaurar todo", - "delete_selected_trash": "Eliminar seleccionados", - "delete_all": "Eliminar todo", - "upload_header": "Cargar archivos/carpetas", - - // Folder Management keys: - "folder_navigation": "Navegación y gestión de carpetas", - "create_folder": "Crear carpeta", - "create_folder_title": "Crear carpeta", - "enter_folder_name": "Ingrese el nombre de la carpeta", - "cancel": "Cancelar", - "create": "Crear", - "rename_folder": "Renombrar carpeta", - "rename_folder_title": "Renombrar carpeta", - "rename_folder_placeholder": "Ingrese el nuevo nombre de la carpeta", - "delete_folder": "Eliminar carpeta", - "delete_folder_title": "Eliminar carpeta", - "delete_folder_message": "¿Está seguro de que desea eliminar esta carpeta?", - "folder_help": "Ayuda de carpetas", - "folder_help_item_1": "Haga clic en una carpeta en el árbol para ver sus archivos.", - "folder_help_item_2": "Utilice [-] para colapsar y [+] para expandir carpetas.", - "folder_help_item_3": "Seleccione una carpeta y haga clic en \"Crear carpeta\" para agregar una subcarpeta.", - "folder_help_item_4": "Para renombrar o eliminar una carpeta, selecciónela y luego haga clic en el botón correspondiente.", - - // File List keys: - "file_list_title": "Archivos en (Raíz)", - "delete_files": "Eliminar archivos", - "delete_selected_files_title": "Eliminar archivos seleccionados", - "delete_files_message": "¿Está seguro de que desea eliminar los archivos seleccionados?", - "copy_files": "Copiar archivos", - "copy_files_title": "Copiar archivos seleccionados", - "copy_files_message": "Seleccione una carpeta destino para copiar los archivos seleccionados:", - "move_files": "Mover archivos", - "move_files_title": "Mover archivos seleccionados", - "move_files_message": "Seleccione una carpeta destino para mover los archivos seleccionados:", - "move": "Mover", - "extract_zip_button": "Extraer Zip", - "download_zip_title": "Descargar archivos seleccionados en Zip", - "download_zip_prompt": "Ingrese un nombre para el archivo Zip:", - "zip_placeholder": "archivos.zip", - - // Login Form keys: - "login": "Iniciar sesión", - "remember_me": "Recuérdame", - "login_oidc": "Iniciar sesión con OIDC", - "basic_http_login": "Usar autenticación HTTP básica", - - // Change Password keys: - "change_password_title": "Cambiar contraseña", - "old_password": "Contraseña antigua", - "new_password": "Nueva contraseña", - "confirm_new_password": "Confirmar nueva contraseña", - - // Add User keys: - "create_new_user_title": "Crear nuevo usuario", - "username": "Usuario:", - "password": "Contraseña:", - "grant_admin": "Otorgar acceso de administrador", - "save_user": "Guardar usuario", - - // Remove User keys: - "remove_user_title": "Eliminar usuario", - "select_user_remove": "Seleccione un usuario para eliminar:", - "delete_user": "Eliminar usuario", - - // Rename File keys: - "rename_file_title": "Renombrar archivo", - "rename_file_placeholder": "Ingrese el nuevo nombre del archivo", - - // Custom Confirm Modal keys: - "yes": "Sí", - "no": "No", - "delete": "Eliminar", - "download": "Descargar", - "upload": "Cargar", - "copy": "Copiar", - "extract": "Extraer", - - // Dark Mode Toggle - "dark_mode_toggle": "Modo oscuro" - }, - fr: { /* French translations */ - "please_log_in_to_continue": "Veuillez vous connecter pour continuer.", - "no_files_selected": "Aucun fichier sélectionné.", - "confirm_delete_files": "Êtes-vous sûr de vouloir supprimer {count} fichier(s) sélectionné(s) ?", - "element_not_found": "Élément avec l'id \"{id}\" non trouvé.", - "search_placeholder": "Rechercher des fichiers ou un tag...", - "file_name": "Nom du fichier", - "date_modified": "Date de modification", - "upload_date": "Date de téléchargement", - "file_size": "Taille du fichier", - "uploader": "Téléversé par", - "enter_totp_code": "Entrez le code TOTP", - "use_recovery_code_instead": "Utilisez le code de récupération à la place", - "enter_recovery_code": "Entrez le code de récupération", - "editing": "Modification", - "decrease_font": "A-", - "increase_font": "A+", - "save": "Enregistrer", - "close": "Fermer", - "no_files_found": "Aucun fichier trouvé.", - "switch_to_table_view": "Passer à la vue tableau", - "switch_to_gallery_view": "Passer à la vue galerie", - "share_file": "Partager le fichier", - "set_expiration": "Définir l'expiration :", - "password_optional": "Mot de passe (facultatif) :", - "generate_share_link": "Générer un lien de partage", - "shareable_link": "Lien partageable :", - "copy_link": "Copier le lien", - "tag_file": "Marquer le fichier", - "tag_name": "Nom du tag :", - "tag_color": "Couleur du tag :", - "save_tag": "Enregistrer le tag", - "files_in": "Fichiers dans", - "light_mode": "Mode clair", - "dark_mode": "Mode sombre", - "upload_instruction": "Déposez vos fichiers/dossiers ici ou cliquez sur 'Choisir des fichiers'", - "no_files_selected_default": "Aucun fichier sélectionné", - "choose_files": "Choisir des fichiers", - "delete_selected": "Supprimer la sélection", - "copy_selected": "Copier la sélection", - "move_selected": "Déplacer la sélection", - "tag_selected": "Marquer la sélection", - "download_zip": "Télécharger en Zip", - "extract_zip": "Extraire le Zip", - "preview": "Aperçu", - "edit": "Modifier", - "rename": "Renommer", - "trash_empty": "La corbeille est vide.", - "no_trash_selected": "Aucun élément de la corbeille sélectionné pour restauration.", - - // Additional keys for HTML translations: - "title": "FileRise", - "header_title": "FileRise", - "logout": "Se déconnecter", - "change_password": "Changer le mot de passe", - "restore_text": "Restaurer ou", - "delete_text": "Supprimer les éléments de la corbeille", - "restore_selected": "Restaurer la sélection", - "restore_all": "Restaurer tout", - "delete_selected_trash": "Supprimer la sélection", - "delete_all": "Supprimer tout", - "upload_header": "Téléverser des fichiers/dossiers", - - // Folder Management keys: - "folder_navigation": "Navigation et gestion des dossiers", - "create_folder": "Créer un dossier", - "create_folder_title": "Créer un dossier", - "enter_folder_name": "Entrez le nom du dossier", - "cancel": "Annuler", - "create": "Créer", - "rename_folder": "Renommer le dossier", - "rename_folder_title": "Renommer le dossier", - "rename_folder_placeholder": "Entrez le nouveau nom du dossier", - "delete_folder": "Supprimer le dossier", - "delete_folder_title": "Supprimer le dossier", - "delete_folder_message": "Êtes-vous sûr de vouloir supprimer ce dossier ?", - "folder_help": "Aide des dossiers", - "folder_help_item_1": "Cliquez sur un dossier dans l'arborescence pour voir ses fichiers.", - "folder_help_item_2": "Utilisez [-] pour réduire et [+] pour développer les dossiers.", - "folder_help_item_3": "Sélectionnez un dossier et cliquez sur \"Créer un dossier\" pour ajouter un sous-dossier.", - "folder_help_item_4": "Pour renommer ou supprimer un dossier, sélectionnez-le puis cliquez sur le bouton approprié.", - - // File List keys: - "file_list_title": "Fichiers dans (Racine)", - "delete_files": "Supprimer les fichiers", - "delete_selected_files_title": "Supprimer les fichiers sélectionnés", - "delete_files_message": "Êtes-vous sûr de vouloir supprimer les fichiers sélectionnés ?", - "copy_files": "Copier les fichiers", - "copy_files_title": "Copier les fichiers sélectionnés", - "copy_files_message": "Sélectionnez un dossier de destination pour copier les fichiers sélectionnés :", - "move_files": "Déplacer les fichiers", - "move_files_title": "Déplacer les fichiers sélectionnés", - "move_files_message": "Sélectionnez un dossier de destination pour déplacer les fichiers sélectionnés :", - "move": "Déplacer", - "extract_zip_button": "Extraire le Zip", - "download_zip_title": "Télécharger les fichiers sélectionnés en Zip", - "download_zip_prompt": "Entrez un nom pour le fichier Zip :", - "zip_placeholder": "fichiers.zip", - - // Login Form keys: - "login": "Connexion", - "remember_me": "Se souvenir de moi", - "login_oidc": "Connexion avec OIDC", - "basic_http_login": "Utiliser l'authentification HTTP basique", - - // Change Password keys: - "change_password_title": "Changer le mot de passe", - "old_password": "Ancien mot de passe", - "new_password": "Nouveau mot de passe", - "confirm_new_password": "Confirmer le nouveau mot de passe", - - // Add User keys: - "create_new_user_title": "Créer un nouvel utilisateur", - "username": "Nom d'utilisateur :", - "password": "Mot de passe :", - "grant_admin": "Accorder les droits d'administrateur", - "save_user": "Enregistrer l'utilisateur", - - // Remove User keys: - "remove_user_title": "Supprimer l'utilisateur", - "select_user_remove": "Sélectionnez un utilisateur à supprimer :", - "delete_user": "Supprimer l'utilisateur", - - // Rename File keys: - "rename_file_title": "Renommer le fichier", - "rename_file_placeholder": "Entrez le nouveau nom du fichier", - - // Custom Confirm Modal keys: - "yes": "Oui", - "no": "Non", - "delete": "Supprimer", - "download": "Télécharger", - "upload": "Téléverser", - "copy": "Copier", - "extract": "Extraire", - - // Dark Mode Toggle - "dark_mode_toggle": "Mode sombre" - }, - de: { - "please_log_in_to_continue": "Bitte melden Sie sich an, um fortzufahren.", - "no_files_selected": "Keine Dateien ausgewählt.", - "confirm_delete_files": "Sind Sie sicher, dass Sie {count} ausgewählte Datei(en) löschen möchten?", - "element_not_found": "Element mit der ID \"{id}\" wurde nicht gefunden.", - "search_placeholder": "Suche nach Dateien oder Tags...", - "file_name": "Dateiname", - "date_modified": "Änderungsdatum", - "upload_date": "Hochladedatum", - "file_size": "Dateigröße", - "uploader": "Hochgeladen von", - "enter_totp_code": "Geben Sie den TOTP-Code ein", - "use_recovery_code_instead": "Verwenden Sie stattdessen den Wiederherstellungscode", - "enter_recovery_code": "Geben Sie den Wiederherstellungscode ein", - "editing": "Bearbeitung", - "decrease_font": "A-", - "increase_font": "A+", - "save": "Speichern", - "close": "Schließen", - "no_files_found": "Keine Dateien gefunden.", - "switch_to_table_view": "Zur Tabellenansicht wechseln", - "switch_to_gallery_view": "Zur Galerieansicht wechseln", - "share_file": "Datei teilen", - "set_expiration": "Ablauf festlegen:", - "password_optional": "Passwort (optional):", - "generate_share_link": "Freigabelink generieren", - "shareable_link": "Freigabelink:", - "copy_link": "Link kopieren", - "tag_file": "Datei taggen", - "tag_name": "Tagname:", - "tag_color": "Tagfarbe:", - "save_tag": "Tag speichern", - "files_in": "Dateien in", - "light_mode": "Heller Modus", - "dark_mode": "Dunkler Modus", - "upload_instruction": "Ziehen Sie Dateien/Ordner hierher oder klicken Sie auf 'Dateien auswählen'", - "no_files_selected_default": "Keine Dateien ausgewählt", - "choose_files": "Dateien auswählen", - "delete_selected": "Ausgewählte löschen", - "copy_selected": "Ausgewählte kopieren", - "move_selected": "Ausgewählte verschieben", - "tag_selected": "Ausgewählte taggen", - "download_zip": "Zip herunterladen", - "extract_zip": "Zip entpacken", - "preview": "Vorschau", - "edit": "Bearbeiten", - "rename": "Umbenennen", - "trash_empty": "Papierkorb ist leer.", - "no_trash_selected": "Keine Elemente im Papierkorb für die Wiederherstellung ausgewählt.", - - // Additional keys for HTML translations: - "title": "FileRise", - "header_title": "FileRise", - "logout": "Abmelden", - "change_password": "Passwort ändern", - "restore_text": "Wiederherstellen oder", - "delete_text": "Papierkorbeinträge löschen", - "restore_selected": "Ausgewählte wiederherstellen", - "restore_all": "Alle wiederherstellen", - "delete_selected_trash": "Ausgewählte löschen", - "delete_all": "Alle löschen", - "upload_header": "Dateien/Ordner hochladen", - - // Folder Management keys: - "folder_navigation": "Ordnernavigation & Verwaltung", - "create_folder": "Ordner erstellen", - "create_folder_title": "Ordner erstellen", - "enter_folder_name": "Geben Sie den Ordnernamen ein", - "cancel": "Abbrechen", - "create": "Erstellen", - "rename_folder": "Ordner umbenennen", - "rename_folder_title": "Ordner umbenennen", - "rename_folder_placeholder": "Neuen Ordnernamen eingeben", - "delete_folder": "Ordner löschen", - "delete_folder_title": "Ordner löschen", - "delete_folder_message": "Sind Sie sicher, dass Sie diesen Ordner löschen möchten?", - "folder_help": "Ordnerhilfe", - "folder_help_item_1": "Klicken Sie auf einen Ordner, um dessen Dateien anzuzeigen.", - "folder_help_item_2": "Verwenden Sie [-] um zu minimieren und [+] um zu erweitern.", - "folder_help_item_3": "Klicken Sie auf \"Ordner erstellen\", um einen Unterordner hinzuzufügen.", - "folder_help_item_4": "Um einen Ordner umzubenennen oder zu löschen, wählen Sie ihn und klicken Sie auf die entsprechende Schaltfläche.", - - // File List keys: - "file_list_title": "Dateien in (Root)", - "delete_files": "Dateien löschen", - "delete_selected_files_title": "Ausgewählte Dateien löschen", - "delete_files_message": "Sind Sie sicher, dass Sie die ausgewählten Dateien löschen möchten?", - "copy_files": "Dateien kopieren", - "copy_files_title": "Ausgewählte Dateien kopieren", - "copy_files_message": "Wählen Sie einen Zielordner, um die ausgewählten Dateien zu kopieren:", - "move_files": "Dateien verschieben", - "move_files_title": "Ausgewählte Dateien verschieben", - "move_files_message": "Wählen Sie einen Zielordner, um die ausgewählten Dateien zu verschieben:", - "move": "Verschieben", - "extract_zip_button": "Zip entpacken", - "download_zip_title": "Ausgewählte Dateien als Zip herunterladen", - "download_zip_prompt": "Geben Sie einen Namen für die Zip-Datei ein:", - "zip_placeholder": "dateien.zip", - - // Login Form keys: - "login": "Anmelden", - "remember_me": "Angemeldet bleiben", - "login_oidc": "Mit OIDC anmelden", - "basic_http_login": "HTTP-Basisauthentifizierung verwenden", - - // Change Password keys: - "change_password_title": "Passwort ändern", - "old_password": "Altes Passwort", - "new_password": "Neues Passwort", - "confirm_new_password": "Neues Passwort bestätigen", - - // Add User keys: - "create_new_user_title": "Neuen Benutzer erstellen", - "username": "Benutzername:", - "password": "Passwort:", - "grant_admin": "Admin-Rechte vergeben", - "save_user": "Benutzer speichern", - - // Remove User keys: - "remove_user_title": "Benutzer entfernen", - "select_user_remove": "Wählen Sie einen Benutzer zum Entfernen:", - "delete_user": "Benutzer löschen", - - // Rename File keys: - "rename_file_title": "Datei umbenennen", - "rename_file_placeholder": "Neuen Dateinamen eingeben", - - // Custom Confirm Modal keys: - "yes": "Ja", - "no": "Nein", - "delete": "Löschen", - "download": "Herunterladen", - "upload": "Hochladen", - "copy": "Kopieren", - "extract": "Entpacken", - - // Dark Mode Toggle - "dark_mode_toggle": "Dunkler Modus" - } - }; - - let currentLocale = 'en'; - - export function setLocale(locale) { - currentLocale = locale; - } - - export function t(key, placeholders) { - const localeTranslations = translations[currentLocale] || {}; - let translation = localeTranslations[key] || key; - if (placeholders) { - Object.keys(placeholders).forEach(ph => { - translation = translation.replace(`{${ph}}`, placeholders[ph]); - }); - } - return translation; + // Folder Management keys: + "folder_navigation": "Folder Navigation & Management", + "create_folder": "Create Folder", + "create_folder_title": "Create Folder", + "enter_folder_name": "Enter folder name", + "cancel": "Cancel", + "create": "Create", + "rename_folder": "Rename Folder", + "rename_folder_title": "Rename Folder", + "rename_folder_placeholder": "Enter new folder name", + "delete_folder": "Delete Folder", + "delete_folder_title": "Delete Folder", + "delete_folder_message": "Are you sure you want to delete this folder?", + "folder_help": "Folder Help", + "folder_help_item_1": "Click on a folder in the tree to view its files.", + "folder_help_item_2": "Use [-] to collapse and [+] to expand folders.", + "folder_help_item_3": "Select a folder and click \"Create Folder\" to add a subfolder.", + "folder_help_item_4": "To rename or delete a folder, select it and then click the appropriate button.", + + // File List keys: + "file_list_title": "Files in (Root)", + "files_in": "Files in", + "delete_files": "Delete Files", + "delete_selected_files_title": "Delete Selected Files", + "delete_files_message": "Are you sure you want to delete the selected files?", + "copy_files": "Copy Files", + "copy_files_title": "Copy Selected Files", + "copy_files_message": "Select a target folder for copying the selected files:", + "move_files": "Move Files", + "move_files_title": "Move Selected Files", + "move_files_message": "Select a target folder for moving the selected files:", + "move": "Move", + "extract_zip_button": "Extract Zip", + "download_zip_title": "Download Selected Files as Zip", + "download_zip_prompt": "Enter a name for the zip file:", + "zip_placeholder": "files.zip", + + // Login Form keys: + "login": "Login", + "remember_me": "Remember me", + "login_oidc": "Login with OIDC", + "basic_http_login": "Use Basic HTTP Login", + + // Change Password keys: + "change_password_title": "Change Password", + "old_password": "Old Password", + "new_password": "New Password", + "confirm_new_password": "Confirm New Password", + + // Add User keys: + "create_new_user_title": "Create New User", + "username": "Username:", + "password": "Password:", + "grant_admin": "Grant Admin Access", + "save_user": "Save User", + + // Remove User keys: + "remove_user_title": "Remove User", + "select_user_remove": "Select a user to remove:", + "delete_user": "Delete User", + + // Rename File keys: + "rename_file_title": "Rename File", + "rename_file_placeholder": "Enter new file name", + + // Folder Share + "share_folder": "Share Folder", + "allow_uploads": "Allow Uploads", + "share_link_generated": "Share Link Generated", + "error_generating_share_link": "Error Generating Share Link", + + // Folder + "create_folder": "Create Folder", + "rename_folder": "Rename Folder", + "folder_share": "Share Folder", + "delete_folder": "Delete Folder", + + // Custom Confirm Modal keys: + "yes": "Yes", + "no": "No", + "delete": "Delete", + "download": "Download", + "upload": "Upload", + "copy": "Copy", + "extract": "Extract", + "user": "User:", + "unknown_error": "Unknown Error", + "link_copied": "Link Copied to Clipboard", + "minutes": "minutes", + "hours": "hours", + "days": "days", + "weeks": "weeks", + "months": "months", + "seconds": "seconds", + + // Dark Mode Toggle + "dark_mode_toggle": "Dark Mode", + "light_mode_toggle": "Light Mode" + }, + es: { /* Spanish translations */ + "please_log_in_to_continue": "Por favor, inicie sesión para continuar.", + "no_files_selected": "No se seleccionaron archivos.", + "confirm_delete_files": "¿Está seguro de que desea eliminar {count} archivo(s) seleccionado(s)?", + "element_not_found": "Elemento con id \"{id}\" no encontrado.", + "search_placeholder": "Buscar archivos o etiqueta...", + "file_name": "Nombre del archivo", + "date_modified": "Fecha de modificación", + "upload_date": "Fecha de carga", + "file_size": "Tamaño del archivo", + "uploader": "Cargado por", + "enter_totp_code": "Ingrese el código TOTP", + "use_recovery_code_instead": "Usar código de recuperación en su lugar", + "enter_recovery_code": "Ingrese el código de recuperación", + "editing": "Editando", + "decrease_font": "A-", + "increase_font": "A+", + "save": "Guardar", + "close": "Cerrar", + "no_files_found": "No se encontraron archivos.", + "switch_to_table_view": "Cambiar a vista de tabla", + "switch_to_gallery_view": "Cambiar a vista de galería", + "share_file": "Compartir archivo", + "set_expiration": "Establecer vencimiento:", + "password_optional": "Contraseña (opcional):", + "generate_share_link": "Generar enlace para compartir", + "shareable_link": "Enlace para compartir:", + "copy_link": "Copiar enlace", + "tag_file": "Etiquetar archivo", + "tag_name": "Nombre de la etiqueta:", + "tag_color": "Color de la etiqueta:", + "save_tag": "Guardar etiqueta", + "files_in": "Archivos en", + "light_mode": "Modo claro", + "dark_mode": "Modo oscuro", + "upload_instruction": "Suelte archivos/carpetas o haga clic en 'Elegir archivos'", + "no_files_selected_default": "No se seleccionaron archivos", + "choose_files": "Elegir archivos", + "delete_selected": "Eliminar seleccionados", + "copy_selected": "Copiar seleccionados", + "move_selected": "Mover seleccionados", + "tag_selected": "Etiquetar seleccionados", + "download_zip": "Descargar Zip", + "extract_zip": "Extraer Zip", + "preview": "Vista previa", + "edit": "Editar", + "rename": "Renombrar", + "trash_empty": "La papelera está vacía.", + "no_trash_selected": "No se seleccionaron elementos de la papelera para restaurar.", + + // Additional keys for HTML translations: + "title": "FileRise", + "header_title": "FileRise", + "logout": "Cerrar sesión", + "change_password": "Cambiar contraseña", + "restore_text": "Restaurar o", + "delete_text": "Eliminar elementos de la papelera", + "restore_selected": "Restaurar seleccionados", + "restore_all": "Restaurar todo", + "delete_selected_trash": "Eliminar seleccionados", + "delete_all": "Eliminar todo", + "upload_header": "Cargar archivos/carpetas", + + // Folder Management keys: + "folder_navigation": "Navegación y gestión de carpetas", + "create_folder": "Crear carpeta", + "create_folder_title": "Crear carpeta", + "enter_folder_name": "Ingrese el nombre de la carpeta", + "cancel": "Cancelar", + "create": "Crear", + "rename_folder": "Renombrar carpeta", + "rename_folder_title": "Renombrar carpeta", + "rename_folder_placeholder": "Ingrese el nuevo nombre de la carpeta", + "delete_folder": "Eliminar carpeta", + "delete_folder_title": "Eliminar carpeta", + "delete_folder_message": "¿Está seguro de que desea eliminar esta carpeta?", + "folder_help": "Ayuda de carpetas", + "folder_help_item_1": "Haga clic en una carpeta en el árbol para ver sus archivos.", + "folder_help_item_2": "Utilice [-] para colapsar y [+] para expandir carpetas.", + "folder_help_item_3": "Seleccione una carpeta y haga clic en \"Crear carpeta\" para agregar una subcarpeta.", + "folder_help_item_4": "Para renombrar o eliminar una carpeta, selecciónela y luego haga clic en el botón correspondiente.", + + // File List keys: + "file_list_title": "Archivos en (Raíz)", + "delete_files": "Eliminar archivos", + "delete_selected_files_title": "Eliminar archivos seleccionados", + "delete_files_message": "¿Está seguro de que desea eliminar los archivos seleccionados?", + "copy_files": "Copiar archivos", + "copy_files_title": "Copiar archivos seleccionados", + "copy_files_message": "Seleccione una carpeta destino para copiar los archivos seleccionados:", + "move_files": "Mover archivos", + "move_files_title": "Mover archivos seleccionados", + "move_files_message": "Seleccione una carpeta destino para mover los archivos seleccionados:", + "move": "Mover", + "extract_zip_button": "Extraer Zip", + "download_zip_title": "Descargar archivos seleccionados en Zip", + "download_zip_prompt": "Ingrese un nombre para el archivo Zip:", + "zip_placeholder": "archivos.zip", + + // Login Form keys: + "login": "Iniciar sesión", + "remember_me": "Recuérdame", + "login_oidc": "Iniciar sesión con OIDC", + "basic_http_login": "Usar autenticación HTTP básica", + + // Change Password keys: + "change_password_title": "Cambiar contraseña", + "old_password": "Contraseña antigua", + "new_password": "Nueva contraseña", + "confirm_new_password": "Confirmar nueva contraseña", + + // Add User keys: + "create_new_user_title": "Crear nuevo usuario", + "username": "Usuario:", + "password": "Contraseña:", + "grant_admin": "Otorgar acceso de administrador", + "save_user": "Guardar usuario", + + // Remove User keys: + "remove_user_title": "Eliminar usuario", + "select_user_remove": "Seleccione un usuario para eliminar:", + "delete_user": "Eliminar usuario", + + // Rename File keys: + "rename_file_title": "Renombrar archivo", + "rename_file_placeholder": "Ingrese el nuevo nombre del archivo", + + // Custom Confirm Modal keys: + "yes": "Sí", + "no": "No", + "delete": "Eliminar", + "download": "Descargar", + "upload": "Cargar", + "copy": "Copiar", + "extract": "Extraer", + + // Dark Mode Toggle + "dark_mode_toggle": "Modo oscuro" + }, + fr: { /* French translations */ + "please_log_in_to_continue": "Veuillez vous connecter pour continuer.", + "no_files_selected": "Aucun fichier sélectionné.", + "confirm_delete_files": "Êtes-vous sûr de vouloir supprimer {count} fichier(s) sélectionné(s) ?", + "element_not_found": "Élément avec l'id \"{id}\" non trouvé.", + "search_placeholder": "Rechercher des fichiers ou un tag...", + "file_name": "Nom du fichier", + "date_modified": "Date de modification", + "upload_date": "Date de téléchargement", + "file_size": "Taille du fichier", + "uploader": "Téléversé par", + "enter_totp_code": "Entrez le code TOTP", + "use_recovery_code_instead": "Utilisez le code de récupération à la place", + "enter_recovery_code": "Entrez le code de récupération", + "editing": "Modification", + "decrease_font": "A-", + "increase_font": "A+", + "save": "Enregistrer", + "close": "Fermer", + "no_files_found": "Aucun fichier trouvé.", + "switch_to_table_view": "Passer à la vue tableau", + "switch_to_gallery_view": "Passer à la vue galerie", + "share_file": "Partager le fichier", + "set_expiration": "Définir l'expiration :", + "password_optional": "Mot de passe (facultatif) :", + "generate_share_link": "Générer un lien de partage", + "shareable_link": "Lien partageable :", + "copy_link": "Copier le lien", + "tag_file": "Marquer le fichier", + "tag_name": "Nom du tag :", + "tag_color": "Couleur du tag :", + "save_tag": "Enregistrer le tag", + "files_in": "Fichiers dans", + "light_mode": "Mode clair", + "dark_mode": "Mode sombre", + "upload_instruction": "Déposez vos fichiers/dossiers ici ou cliquez sur 'Choisir des fichiers'", + "no_files_selected_default": "Aucun fichier sélectionné", + "choose_files": "Choisir des fichiers", + "delete_selected": "Supprimer la sélection", + "copy_selected": "Copier la sélection", + "move_selected": "Déplacer la sélection", + "tag_selected": "Marquer la sélection", + "download_zip": "Télécharger en Zip", + "extract_zip": "Extraire le Zip", + "preview": "Aperçu", + "edit": "Modifier", + "rename": "Renommer", + "trash_empty": "La corbeille est vide.", + "no_trash_selected": "Aucun élément de la corbeille sélectionné pour restauration.", + + // Additional keys for HTML translations: + "title": "FileRise", + "header_title": "FileRise", + "logout": "Se déconnecter", + "change_password": "Changer le mot de passe", + "restore_text": "Restaurer ou", + "delete_text": "Supprimer les éléments de la corbeille", + "restore_selected": "Restaurer la sélection", + "restore_all": "Restaurer tout", + "delete_selected_trash": "Supprimer la sélection", + "delete_all": "Supprimer tout", + "upload_header": "Téléverser des fichiers/dossiers", + + // Folder Management keys: + "folder_navigation": "Navigation et gestion des dossiers", + "create_folder": "Créer un dossier", + "create_folder_title": "Créer un dossier", + "enter_folder_name": "Entrez le nom du dossier", + "cancel": "Annuler", + "create": "Créer", + "rename_folder": "Renommer le dossier", + "rename_folder_title": "Renommer le dossier", + "rename_folder_placeholder": "Entrez le nouveau nom du dossier", + "delete_folder": "Supprimer le dossier", + "delete_folder_title": "Supprimer le dossier", + "delete_folder_message": "Êtes-vous sûr de vouloir supprimer ce dossier ?", + "folder_help": "Aide des dossiers", + "folder_help_item_1": "Cliquez sur un dossier dans l'arborescence pour voir ses fichiers.", + "folder_help_item_2": "Utilisez [-] pour réduire et [+] pour développer les dossiers.", + "folder_help_item_3": "Sélectionnez un dossier et cliquez sur \"Créer un dossier\" pour ajouter un sous-dossier.", + "folder_help_item_4": "Pour renommer ou supprimer un dossier, sélectionnez-le puis cliquez sur le bouton approprié.", + + // File List keys: + "file_list_title": "Fichiers dans (Racine)", + "delete_files": "Supprimer les fichiers", + "delete_selected_files_title": "Supprimer les fichiers sélectionnés", + "delete_files_message": "Êtes-vous sûr de vouloir supprimer les fichiers sélectionnés ?", + "copy_files": "Copier les fichiers", + "copy_files_title": "Copier les fichiers sélectionnés", + "copy_files_message": "Sélectionnez un dossier de destination pour copier les fichiers sélectionnés :", + "move_files": "Déplacer les fichiers", + "move_files_title": "Déplacer les fichiers sélectionnés", + "move_files_message": "Sélectionnez un dossier de destination pour déplacer les fichiers sélectionnés :", + "move": "Déplacer", + "extract_zip_button": "Extraire le Zip", + "download_zip_title": "Télécharger les fichiers sélectionnés en Zip", + "download_zip_prompt": "Entrez un nom pour le fichier Zip :", + "zip_placeholder": "fichiers.zip", + + // Login Form keys: + "login": "Connexion", + "remember_me": "Se souvenir de moi", + "login_oidc": "Connexion avec OIDC", + "basic_http_login": "Utiliser l'authentification HTTP basique", + + // Change Password keys: + "change_password_title": "Changer le mot de passe", + "old_password": "Ancien mot de passe", + "new_password": "Nouveau mot de passe", + "confirm_new_password": "Confirmer le nouveau mot de passe", + + // Add User keys: + "create_new_user_title": "Créer un nouvel utilisateur", + "username": "Nom d'utilisateur :", + "password": "Mot de passe :", + "grant_admin": "Accorder les droits d'administrateur", + "save_user": "Enregistrer l'utilisateur", + + // Remove User keys: + "remove_user_title": "Supprimer l'utilisateur", + "select_user_remove": "Sélectionnez un utilisateur à supprimer :", + "delete_user": "Supprimer l'utilisateur", + + // Rename File keys: + "rename_file_title": "Renommer le fichier", + "rename_file_placeholder": "Entrez le nouveau nom du fichier", + + // Custom Confirm Modal keys: + "yes": "Oui", + "no": "Non", + "delete": "Supprimer", + "download": "Télécharger", + "upload": "Téléverser", + "copy": "Copier", + "extract": "Extraire", + + // Dark Mode Toggle + "dark_mode_toggle": "Mode sombre" + }, + de: { + "please_log_in_to_continue": "Bitte melden Sie sich an, um fortzufahren.", + "no_files_selected": "Keine Dateien ausgewählt.", + "confirm_delete_files": "Sind Sie sicher, dass Sie {count} ausgewählte Datei(en) löschen möchten?", + "element_not_found": "Element mit der ID \"{id}\" wurde nicht gefunden.", + "search_placeholder": "Suche nach Dateien oder Tags...", + "file_name": "Dateiname", + "date_modified": "Änderungsdatum", + "upload_date": "Hochladedatum", + "file_size": "Dateigröße", + "uploader": "Hochgeladen von", + "enter_totp_code": "Geben Sie den TOTP-Code ein", + "use_recovery_code_instead": "Verwenden Sie stattdessen den Wiederherstellungscode", + "enter_recovery_code": "Geben Sie den Wiederherstellungscode ein", + "editing": "Bearbeitung", + "decrease_font": "A-", + "increase_font": "A+", + "save": "Speichern", + "close": "Schließen", + "no_files_found": "Keine Dateien gefunden.", + "switch_to_table_view": "Zur Tabellenansicht wechseln", + "switch_to_gallery_view": "Zur Galerieansicht wechseln", + "share_file": "Datei teilen", + "set_expiration": "Ablauf festlegen:", + "password_optional": "Passwort (optional):", + "generate_share_link": "Freigabelink generieren", + "shareable_link": "Freigabelink:", + "copy_link": "Link kopieren", + "tag_file": "Datei taggen", + "tag_name": "Tagname:", + "tag_color": "Tagfarbe:", + "save_tag": "Tag speichern", + "files_in": "Dateien in", + "light_mode": "Heller Modus", + "dark_mode": "Dunkler Modus", + "upload_instruction": "Ziehen Sie Dateien/Ordner hierher oder klicken Sie auf 'Dateien auswählen'", + "no_files_selected_default": "Keine Dateien ausgewählt", + "choose_files": "Dateien auswählen", + "delete_selected": "Ausgewählte löschen", + "copy_selected": "Ausgewählte kopieren", + "move_selected": "Ausgewählte verschieben", + "tag_selected": "Ausgewählte taggen", + "download_zip": "Zip herunterladen", + "extract_zip": "Zip entpacken", + "preview": "Vorschau", + "edit": "Bearbeiten", + "rename": "Umbenennen", + "trash_empty": "Papierkorb ist leer.", + "no_trash_selected": "Keine Elemente im Papierkorb für die Wiederherstellung ausgewählt.", + + // Additional keys for HTML translations: + "title": "FileRise", + "header_title": "FileRise", + "logout": "Abmelden", + "change_password": "Passwort ändern", + "restore_text": "Wiederherstellen oder", + "delete_text": "Papierkorbeinträge löschen", + "restore_selected": "Ausgewählte wiederherstellen", + "restore_all": "Alle wiederherstellen", + "delete_selected_trash": "Ausgewählte löschen", + "delete_all": "Alle löschen", + "upload_header": "Dateien/Ordner hochladen", + + // Folder Management keys: + "folder_navigation": "Ordnernavigation & Verwaltung", + "create_folder": "Ordner erstellen", + "create_folder_title": "Ordner erstellen", + "enter_folder_name": "Geben Sie den Ordnernamen ein", + "cancel": "Abbrechen", + "create": "Erstellen", + "rename_folder": "Ordner umbenennen", + "rename_folder_title": "Ordner umbenennen", + "rename_folder_placeholder": "Neuen Ordnernamen eingeben", + "delete_folder": "Ordner löschen", + "delete_folder_title": "Ordner löschen", + "delete_folder_message": "Sind Sie sicher, dass Sie diesen Ordner löschen möchten?", + "folder_help": "Ordnerhilfe", + "folder_help_item_1": "Klicken Sie auf einen Ordner, um dessen Dateien anzuzeigen.", + "folder_help_item_2": "Verwenden Sie [-] um zu minimieren und [+] um zu erweitern.", + "folder_help_item_3": "Klicken Sie auf \"Ordner erstellen\", um einen Unterordner hinzuzufügen.", + "folder_help_item_4": "Um einen Ordner umzubenennen oder zu löschen, wählen Sie ihn und klicken Sie auf die entsprechende Schaltfläche.", + + // File List keys: + "file_list_title": "Dateien in (Root)", + "delete_files": "Dateien löschen", + "delete_selected_files_title": "Ausgewählte Dateien löschen", + "delete_files_message": "Sind Sie sicher, dass Sie die ausgewählten Dateien löschen möchten?", + "copy_files": "Dateien kopieren", + "copy_files_title": "Ausgewählte Dateien kopieren", + "copy_files_message": "Wählen Sie einen Zielordner, um die ausgewählten Dateien zu kopieren:", + "move_files": "Dateien verschieben", + "move_files_title": "Ausgewählte Dateien verschieben", + "move_files_message": "Wählen Sie einen Zielordner, um die ausgewählten Dateien zu verschieben:", + "move": "Verschieben", + "extract_zip_button": "Zip entpacken", + "download_zip_title": "Ausgewählte Dateien als Zip herunterladen", + "download_zip_prompt": "Geben Sie einen Namen für die Zip-Datei ein:", + "zip_placeholder": "dateien.zip", + + // Login Form keys: + "login": "Anmelden", + "remember_me": "Angemeldet bleiben", + "login_oidc": "Mit OIDC anmelden", + "basic_http_login": "HTTP-Basisauthentifizierung verwenden", + + // Change Password keys: + "change_password_title": "Passwort ändern", + "old_password": "Altes Passwort", + "new_password": "Neues Passwort", + "confirm_new_password": "Neues Passwort bestätigen", + + // Add User keys: + "create_new_user_title": "Neuen Benutzer erstellen", + "username": "Benutzername:", + "password": "Passwort:", + "grant_admin": "Admin-Rechte vergeben", + "save_user": "Benutzer speichern", + + // Remove User keys: + "remove_user_title": "Benutzer entfernen", + "select_user_remove": "Wählen Sie einen Benutzer zum Entfernen:", + "delete_user": "Benutzer löschen", + + // Rename File keys: + "rename_file_title": "Datei umbenennen", + "rename_file_placeholder": "Neuen Dateinamen eingeben", + + // Custom Confirm Modal keys: + "yes": "Ja", + "no": "Nein", + "delete": "Löschen", + "download": "Herunterladen", + "upload": "Hochladen", + "copy": "Kopieren", + "extract": "Entpacken", + + // Dark Mode Toggle + "dark_mode_toggle": "Dunkler Modus" } +}; - export function applyTranslations() { - document.querySelectorAll('[data-i18n-key]').forEach(el => { - el.innerText = t(el.getAttribute('data-i18n-key')); +let currentLocale = 'en'; + +export function setLocale(locale) { + currentLocale = locale; +} + +export function t(key, placeholders) { + const localeTranslations = translations[currentLocale] || {}; + let translation = localeTranslations[key] || key; + if (placeholders) { + Object.keys(placeholders).forEach(ph => { + translation = translation.replace(`{${ph}}`, placeholders[ph]); }); - document.querySelectorAll('[data-i18n-placeholder]').forEach(el => { - el.setAttribute('placeholder', t(el.getAttribute('data-i18n-placeholder'))); - }); - document.querySelectorAll('[data-i18n-title]').forEach(el => { - el.setAttribute('title', t(el.getAttribute('data-i18n-title'))); - }); - } \ No newline at end of file + } + return translation; +} + +export function applyTranslations() { + document.querySelectorAll('[data-i18n-key]').forEach(el => { + el.innerText = t(el.getAttribute('data-i18n-key')); + }); + document.querySelectorAll('[data-i18n-placeholder]').forEach(el => { + el.setAttribute('placeholder', t(el.getAttribute('data-i18n-placeholder'))); + }); + document.querySelectorAll('[data-i18n-title]').forEach(el => { + el.setAttribute('title', t(el.getAttribute('data-i18n-title'))); + }); +} \ No newline at end of file