From d0353b137b674aa7f9dea60f260224f45f126b95 Mon Sep 17 00:00:00 2001 From: Ryan Date: Tue, 8 Apr 2025 18:48:22 -0400 Subject: [PATCH] German translation added --- CONTRIBUTING.md | 151 +++++++++++++++++++++++++++++++++++++++++++++++ js/authModals.js | 1 + js/i18n.js | 142 +++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 293 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0b77209..1e89841 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -11,6 +11,7 @@ Thank you for your interest in contributing to FileRise! We appreciate your help - [Coding Guidelines](#coding-guidelines) - [Documentation](#documentation) - [Questions and Support](#questions-and-support) +- [Adding New Language Translations](#adding-new-language-translations) ## Getting Started @@ -87,6 +88,156 @@ If you notice any areas in the documentation that need improvement or updating, If you have any questions, ideas, or need support, please open an issue or join our discussion on [GitHub Discussions](https://github.com/error311/FileRise/discussions). We’re here to help and appreciate your contributions. +## Adding New Language Translations + +FileRise supports internationalization (i18n) and localization via a central translation file (`i18n.js`). If you would like to contribute a new language translation, please follow these steps: + +1. **Update `i18n.js`:** + Open the `i18n.js` file located in the `js` directory. Within the `translations` object, add a new property using the appropriate [ISO language code](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) as the key. Copy the structure from an existing language block and translate each key. + + **Example (for German):** + + ```js + 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" + } + --- Thank you for helping to improve FileRise and happy coding! diff --git a/js/authModals.js b/js/authModals.js index da7692f..1126a1b 100644 --- a/js/authModals.js +++ b/js/authModals.js @@ -206,6 +206,7 @@ export function openUserPanel() { + diff --git a/js/i18n.js b/js/i18n.js index 3337701..dbee6ee 100644 --- a/js/i18n.js +++ b/js/i18n.js @@ -137,7 +137,8 @@ const translations = { "extract": "Extract", // Dark Mode Toggle - "dark_mode_toggle": "Dark Mode" + "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.", @@ -416,6 +417,145 @@ const translations = { // 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" } };