diff --git a/README.md b/README.md index d1ae335..a8e1cfe 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,9 @@ Notes: - notification rule custom subjects and bodies in DE/EN - welcome email subject and body in DE/EN - request language capture on onboarding/offboarding to choose the correct email language +- Language stability hardening is in place: + - onboarding/offboarding request records normalize `preferred_language` at model-save time + - both request tables now have a database default of `de` - Several generated PDF business text blocks are still not fully bilingual yet. - CI now validates that translation catalogs compile successfully on push and pull request. diff --git a/backend/locale/en/LC_MESSAGES/django.mo b/backend/locale/en/LC_MESSAGES/django.mo index 031e539..9ce53b4 100644 Binary files a/backend/locale/en/LC_MESSAGES/django.mo and b/backend/locale/en/LC_MESSAGES/django.mo differ diff --git a/backend/locale/en/LC_MESSAGES/django.po b/backend/locale/en/LC_MESSAGES/django.po index 684bf9c..caddfd8 100644 --- a/backend/locale/en/LC_MESSAGES/django.po +++ b/backend/locale/en/LC_MESSAGES/django.po @@ -1,403 +1,1178 @@ msgid "" msgstr "" "Project-Id-Version: tubco-portal\n" -"POT-Creation-Date: 2026-03-24 00:00+0000\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-03-24 11:49+0000\n" "PO-Revision-Date: 2026-03-24 00:00+0000\n" "Language: en\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -msgid "%(count)s Auswahl(en) konnten nicht verarbeitet werden." -msgstr "%(count)s selection(s) could not be processed." - -msgid "%(count)s Eintrag/Einträge gelöscht." -msgstr "%(count)s entry/entries deleted." - -msgid "%(count)s Einträge sichtbar" -msgstr "%(count)s entries visible" - -msgid "14 Tage" -msgstr "14 days" - -msgid "Abmelden" -msgstr "Log out" - -msgid "Abschluss" -msgstr "Finish" - -msgid "Admin" -msgstr "Admin" - -msgid "Admin Apps" -msgstr "Admin Apps" - -msgid "Aktion" -msgstr "Action" - -msgid "Aktivität 14 Tage" -msgstr "Activity 14 Days" - -msgid "Aktivitätsverlauf" -msgstr "Activity Timeline" - -msgid "Alle Vorgänge, durchsuchbar und mit Dokumenten verknüpft." -msgstr "All requests, searchable and linked with documents." - -msgid "Alle erfassten Onboarding-Vorgänge im aktuellen System." -msgstr "All onboarding requests captured in the current system." - -msgid "Anfrage gespeichert" -msgstr "Request saved" - -msgid "Anfragen Dashboard" -msgstr "Requests Dashboard" - -msgid "Anmelden" -msgstr "Sign in" - +#: workflows/templates/registration/login.html:7 +#: workflows/templates/registration/login.html:28 msgid "Anmeldung" msgstr "Sign in" -msgid "Anmeldung fehlgeschlagen. Bitte Zugangsdaten prüfen." -msgstr "Login failed. Please check your credentials." - -msgid "Apps" -msgstr "Apps" - -msgid "Austritte und Rückgaben in derselben Prozessübersicht." -msgstr "Departures and returns in the same process overview." - -msgid "Auswahl löschen" -msgstr "Delete selection" - -msgid "Beschäftigung und Termine" -msgstr "Employment and dates" - +#: workflows/templates/registration/login.html:29 msgid "Bitte melden Sie sich mit Ihrem Benutzerkonto an." msgstr "Please sign in with your user account." -msgid "Bitte prüfen Sie die markierten Felder. Ungültige Eingaben wurden erkannt." -msgstr "Please check the highlighted fields. Invalid input was detected." +#: workflows/templates/registration/login.html:34 +msgid "Anmeldung fehlgeschlagen. Bitte Zugangsdaten prüfen." +msgstr "Login failed. Please check your credentials." -msgid "Checklistenpunkte für das Einweisungsprotokoll konfigurieren." -msgstr "Configure checklist items for the introduction protocol." - -msgid "Dashboard öffnen" -msgstr "Open dashboard" - -msgid "Datensätze können direkt in der Tabelle gefiltert, geöffnet, geprüft oder gelöscht werden." -msgstr "Records can be filtered, opened, checked, or deleted directly in the table." - -msgid "Die letzten 14 Tage in einer kompakten Ansicht über alle Onboarding- und Offboarding-Vorgänge." -msgstr "The last 14 days in a compact view across all onboarding and offboarding requests." - -msgid "Django Admin" -msgstr "Django Admin" - -msgid "Dokument" -msgstr "Document" - -msgid "Dokumentation, Architektur und Runbook." -msgstr "Documentation, architecture, and runbook." - -msgid "Dokumente, Status und Einweisungsaktionen in einer verdichteten Arbeitsansicht." -msgstr "Documents, status, and introduction actions in a condensed work view." - -msgid "E-Mail" -msgstr "Email" - -msgid "E-Mail Routing" -msgstr "Email routing" - -msgid "E-Mail:" -msgstr "Email:" - -msgid "Einweisung" -msgstr "Introduction" - -msgid "Einweisung wurde als Entwurf gespeichert." -msgstr "Introduction was saved as draft." - -msgid "Einweisung wurde als abgeschlossen gespeichert." -msgstr "Introduction was saved as completed." - -msgid "Einweisung wurde zurückgesetzt." -msgstr "Introduction was reset." - -msgid "Einweisung öffnen" -msgstr "Open introduction" - -msgid "Einweisungs- und Übergabeprotokoll wurde erzeugt." -msgstr "Introduction and handover protocol was generated." - -msgid "Einweisungs-Builder" -msgstr "Introduction Builder" - -msgid "Einweisungsprotokoll aus Live-Status wurde erzeugt." -msgstr "Introduction protocol from live status was generated." - -msgid "Erstellt" -msgstr "Created" - -msgid "Fast geschafft. Bitte Abschlussdaten prüfen und die Anfrage absenden." -msgstr "Almost done. Please review the final details and submit the request." - -msgid "Felder, Schritte und Optionen verwalten." -msgstr "Manage fields, steps, and options." +#: workflows/templates/registration/login.html:38 +msgid "Anmelden" +msgstr "Sign in" +#: workflows/templates/workflows/form_builder.html:7 +#: workflows/templates/workflows/form_builder.html:19 +#: workflows/templates/workflows/home.html:553 msgid "Form Builder" msgstr "Form Builder" -msgid "Geplante Welcome Mails verwalten." -msgstr "Manage scheduled welcome emails." - -msgid "Geräte, Software und Zugänge" -msgstr "Devices, software, and access" - -msgid "Gesamtbestand" -msgstr "Total records" - -msgid "Hardware-Liste" -msgstr "Hardware list" - -msgid "IT-Rückgabe" -msgstr "IT return" - -msgid "IT-Setup" -msgstr "IT setup" - -msgid "Integrationen" -msgstr "Integrations" - -msgid "Keine Einträge ausgewählt." -msgstr "No entries selected." - -msgid "Keine konfigurierten Felder in diesem Schritt." -msgstr "No configured fields in this step." - -msgid "Keine passenden Einträge gefunden." -msgstr "No matching entries found." - -msgid "Konfiguration, Tests und Steuerung." -msgstr "Configuration, tests, and controls." - -msgid "Live-Protokoll" -msgstr "Live protocol" - -msgid "Live-Protokoll öffnen" -msgstr "Open live protocol" - -msgid "Löschen" -msgstr "Delete" - -msgid "Mehrschritt-Formular" -msgstr "Multi-step form" - -msgid "Mehrseitiges Formular mit konfigurierbaren Feldern aus dem Admin." -msgstr "Multi-page form with configurable fields from the admin." - -msgid "Mitarbeitende suchen (Name oder E-Mail)" -msgstr "Search employees (name or email)" - -msgid "Mitarbeitende suchen, Daten vorbefüllen, Offboarding-Dokumente erzeugen und Rückgabe-Prozess starten." -msgstr "Search employees, prefill data, generate offboarding documents, and start the return process." - -msgid "Mitarbeiter" -msgstr "Staff" - -msgid "Nach Name oder E-Mail suchen" -msgstr "Search by name or email" - -msgid "Neu erzeugen" -msgstr "Regenerate" - -msgid "Neue Mitarbeitende erfassen, PDF mit Briefkopf erstellen, Benachrichtigungen senden und in Nextcloud ablegen." -msgstr "Capture new employees, generate a PDF with letterhead, send notifications, and store it in Nextcloud." - -msgid "Nextcloud- und E-Mail-Setup." -msgstr "Nextcloud and email setup." - -msgid "Nextcloud:" -msgstr "Nextcloud:" - -msgid "Nicht relevant" -msgstr "Not relevant" - -msgid "Noch keine Vorgänge vorhanden." -msgstr "No requests available yet." - -msgid "Noch nicht verfügbar" -msgstr "Not available yet" - -msgid "Notizen und Freigabe" -msgstr "Notes and approval" - -msgid "Offboarding" -msgstr "Offboarding" - -msgid "Offboarding starten" -msgstr "Start offboarding" - -msgid "Offboarding wurde erfolgreich gespeichert (ID: %(request_id)s). Das PDF wird im Hintergrund erzeugt." -msgstr "Offboarding was saved successfully (ID: %(request_id)s). The PDF is being generated in the background." - -msgid "Offboarding-Anfrage" -msgstr "Offboarding request" - -msgid "Offboarding-Anfrage speichern" -msgstr "Save offboarding request" - -msgid "Onboarding" -msgstr "Onboarding" - -msgid "Onboarding + Offboarding" -msgstr "Onboarding + Offboarding" - -msgid "Onboarding starten" -msgstr "Start onboarding" - -msgid "Onboarding wurde erfolgreich gespeichert (ID: %(request_id)s). Das PDF wird im Hintergrund erzeugt." -msgstr "Onboarding was saved successfully (ID: %(request_id)s). The PDF is being generated in the background." - -msgid "Onboarding-Anfrage" -msgstr "Onboarding request" - -msgid "Onboarding-Anfrage absenden" -msgstr "Submit onboarding request" - -msgid "Operations Console" -msgstr "Operations Console" - -msgid "PDF + E-Mail Workflow bereit" -msgstr "PDF + Email Workflow Ready" - -msgid "PDF Zugriff" -msgstr "PDF access" - -msgid "PDF erzeugen" -msgstr "Generate PDF" - -msgid "PDF öffnen" -msgstr "Open PDF" - -msgid "PDFs + Live-Protokolle" -msgstr "PDFs + live protocols" - -msgid "Person" -msgstr "Person" - -msgid "Person, Rolle, Abteilung" -msgstr "Person, role, department" - -msgid "Produktion" -msgstr "Production" - -msgid "Profile-Suche" -msgstr "Profile search" - -msgid "Projekt Wiki" -msgstr "Project Wiki" - -msgid "Rolle:" -msgstr "Role:" - -msgid "Schließen" -msgstr "Close" - -msgid "Sie haben keine Berechtigung für diese Aktion." -msgstr "You do not have permission for this action." - -msgid "Stammdaten" -msgstr "Master data" - -msgid "Standard-Einweisungs-PDF" -msgstr "Standard introduction PDF" - -msgid "Standard-PDF öffnen" -msgstr "Open standard PDF" - -msgid "Status" -msgstr "Status" - -msgid "Status, Suchfunktion, PDF-Links und Verlauf aller Onboarding-/Offboarding-Anfragen." -msgstr "Status, search, PDF links, and history of all onboarding/offboarding requests." - -msgid "Status:" -msgstr "Status:" - -msgid "Steuert Onboarding- und Offboarding-Prozesse an einem Ort. Die Oberfläche priorisiert Kennzahlen, Aktivität und direkte Aktionen in der Vorgangsliste." -msgstr "Controls onboarding and offboarding processes in one place. The interface prioritizes metrics, activity, and direct actions in the request list." - -msgid "Suche" -msgstr "Search" - -msgid "Suche + Bulk-Aktionen" -msgstr "Search + bulk actions" - -msgid "Suchen" -msgstr "Search" - -msgid "TUBCO Onboarding & Offboarding Portal" -msgstr "TUBCO Onboarding & Offboarding Portal" - -msgid "Testmodus" -msgstr "Test mode" - -msgid "Tipp: Die letzten Vorgänge sehen Sie jederzeit im Anfragen Dashboard." -msgstr "Tip: You can always see the latest requests in the Requests Dashboard." - -msgid "Typ" -msgstr "Type" - -msgid "Vertrag" -msgstr "Contract" - -msgid "Vollständige Datenverwaltung." -msgstr "Full data management." - -msgid "Vorbefüllt aus:" -msgstr "Prefilled from:" - -msgid "Vorgänge" -msgstr "Requests" - -msgid "Weiter" -msgstr "Next" - -msgid "Welcome E-Mails" -msgstr "Welcome Emails" - -msgid "Wählen Sie den gewünschten Prozess." -msgstr "Choose the desired process." - -msgid "Zeitraum des visuellen Aktivitätsverlaufs in dieser Übersicht." -msgstr "Time span of the visual activity timeline in this overview." - -msgid "Zentrale Arbeitsfläche für Anfragen, PDF-Generierung, E-Mail-Workflows und Ablage in Nextcloud." -msgstr "Central workspace for requests, PDF generation, email workflows, and storage in Nextcloud." - +#: workflows/templates/workflows/form_builder.html:15 +#: workflows/templates/workflows/integrations_setup.html:77 +#: workflows/templates/workflows/intro_builder.html:39 +#: workflows/templates/workflows/offboarding_form.html:30 +#: workflows/templates/workflows/onboarding_form.html:30 +#: workflows/templates/workflows/requests_dashboard.html:889 +#: workflows/templates/workflows/requests_dashboard.html:1119 +#: workflows/templates/workflows/welcome_emails.html:48 msgid "Zur Startseite" msgstr "Back to home" -msgid "Zurück" -msgstr "Back" +#: workflows/templates/workflows/form_builder.html:20 +msgid "Felder per Drag-and-Drop sortieren und pro Schritt gruppieren." +msgstr "Sort fields by drag and drop and group them by step." -msgid "Zurücksetzen" -msgstr "Reset" +#: workflows/templates/workflows/form_builder.html:38 +msgid "Reihenfolge speichern" +msgstr "Save order" +#: workflows/templates/workflows/form_builder.html:55 +msgid "Fix" +msgstr "Fixed" + +#: workflows/templates/workflows/form_builder.html:56 +msgid "Ausgeblendet" +msgstr "Hidden" + +#: workflows/templates/workflows/form_builder.html:57 +msgid "Pflicht" +msgstr "Required" + +#: workflows/templates/workflows/form_builder.html:68 +msgid "Optionen verwalten" +msgstr "Manage options" + +#: workflows/templates/workflows/form_builder.html:71 +msgid "Kategorie" +msgstr "Category" + +#: workflows/templates/workflows/form_builder.html:84 +#: workflows/templates/workflows/form_builder.html:97 +#: workflows/templates/workflows/form_builder.html:142 +msgid "Label (DE)" +msgstr "Label (DE)" + +#: workflows/templates/workflows/form_builder.html:85 +msgid "Label (EN, optional)" +msgstr "Label (EN, optional)" + +#: workflows/templates/workflows/form_builder.html:86 +msgid "Technischer Wert (optional)" +msgstr "Technical value (optional)" + +#: workflows/templates/workflows/form_builder.html:87 +msgid "Option hinzufügen" +msgstr "Add option" + +#: workflows/templates/workflows/form_builder.html:96 +#: workflows/templates/workflows/intro_builder.html:90 +msgid "Sortierung" +msgstr "Sort order" + +#: workflows/templates/workflows/form_builder.html:98 +#: workflows/templates/workflows/form_builder.html:143 +msgid "Label (EN)" +msgstr "Label (EN)" + +#: workflows/templates/workflows/form_builder.html:100 +#: workflows/templates/workflows/integrations_setup.html:290 +#: workflows/templates/workflows/intro_builder.html:97 +msgid "Aktiv" +msgstr "Active" + +#: workflows/templates/workflows/form_builder.html:101 +#: workflows/templates/workflows/form_builder.html:116 +#: workflows/templates/workflows/integrations_setup.html:292 +#: workflows/templates/workflows/intro_builder.html:98 +#: workflows/templates/workflows/intro_builder.html:134 +#: workflows/templates/workflows/requests_dashboard.html:1102 +#: workflows/templates/workflows/welcome_emails.html:110 +msgid "Löschen" +msgstr "Delete" + +#: workflows/templates/workflows/form_builder.html:109 +msgid "Ziehen zum Sortieren" +msgstr "Drag to reorder" + +#: workflows/templates/workflows/form_builder.html:116 +msgid "Option wirklich löschen?" +msgstr "Delete this option?" + +#: workflows/templates/workflows/form_builder.html:120 +msgid "Keine Optionen in dieser Kategorie." +msgstr "No options in this category." + +#: workflows/templates/workflows/form_builder.html:126 +msgid "Optionen speichern" +msgstr "Save options" + +#: workflows/templates/workflows/form_builder.html:133 +msgid "Feldtexte verwalten" +msgstr "Manage field text" + +#: workflows/templates/workflows/form_builder.html:141 +msgid "Feld" +msgstr "Field" + +#: workflows/templates/workflows/form_builder.html:144 +msgid "Hilfetext (DE)" +msgstr "Help text (DE)" + +#: workflows/templates/workflows/form_builder.html:145 +msgid "Hilfetext (EN)" +msgstr "Help text (EN)" + +#: workflows/templates/workflows/form_builder.html:155 +msgid "Fallback: Standardlabel" +msgstr "Fallback: default label" + +#: workflows/templates/workflows/form_builder.html:156 +msgid "English label" +msgstr "English label" + +#: workflows/templates/workflows/form_builder.html:157 +msgid "Optionaler Hilfetext" +msgstr "Optional help text" + +#: workflows/templates/workflows/form_builder.html:158 +msgid "Optional English help text" +msgstr "Optional English help text" + +#: workflows/templates/workflows/form_builder.html:161 +msgid "Keine Feldkonfigurationen verfügbar." +msgstr "No field configurations available." + +#: workflows/templates/workflows/form_builder.html:167 +msgid "Feldtexte speichern" +msgstr "Save field text" + +#: workflows/templates/workflows/handbook.html:7 +#: workflows/templates/workflows/handbook.html:31 +#: workflows/templates/workflows/home.html:563 +msgid "Handbook" +msgstr "Handbook" + +#: workflows/templates/workflows/handbook.html:32 +msgid "Back to Home" +msgstr "Back to home" + +#: workflows/templates/workflows/handbook.html:34 +msgid "" +"Single documentation entry point for both operational knowledge and long-" +"term engineering knowledge." +msgstr "" +"Single documentation entry point for both operational knowledge and long-" +"term engineering knowledge." + +#: workflows/templates/workflows/handbook.html:38 +msgid "Operations" +msgstr "Operations" + +#: workflows/templates/workflows/handbook.html:39 +msgid "Project Wiki" +msgstr "Project Wiki" + +#: workflows/templates/workflows/handbook.html:40 +msgid "" +"Operational and product-level documentation for onboarding, offboarding, " +"PDFs, integrations, admin tools, and system behavior." +msgstr "" +"Operational and product-level documentation for onboarding, offboarding, " +"PDFs, integrations, admin tools, and system behavior." + +#: workflows/templates/workflows/handbook.html:42 +msgid "workflow overview" +msgstr "workflow overview" + +#: workflows/templates/workflows/handbook.html:43 +msgid "admin tools and system behavior" +msgstr "admin tools and system behavior" + +#: workflows/templates/workflows/handbook.html:44 +msgid "integrations and operations" +msgstr "integrations and operations" + +#: workflows/templates/workflows/handbook.html:45 +msgid "runbook and troubleshooting" +msgstr "runbook and troubleshooting" + +#: workflows/templates/workflows/handbook.html:48 +msgid "Open Project Wiki" +msgstr "Open Project Wiki" + +#: workflows/templates/workflows/handbook.html:53 +msgid "Engineering" +msgstr "Engineering" + +#: workflows/templates/workflows/handbook.html:54 +msgid "Developer Handbook" +msgstr "Developer Handbook" + +#: workflows/templates/workflows/handbook.html:55 +msgid "" +"Engineering documentation for architecture, local setup, Docker, migrations, " +"translations, deployment, testing, and long-term maintenance." +msgstr "" +"Engineering documentation for architecture, local setup, Docker, migrations, " +"translations, deployment, testing, and long-term maintenance." + +#: workflows/templates/workflows/handbook.html:57 +msgid "repository and service structure" +msgstr "repository and service structure" + +#: workflows/templates/workflows/handbook.html:58 +msgid "Docker and migration workflow" +msgstr "Docker and migration workflow" + +#: workflows/templates/workflows/handbook.html:59 +msgid "translation and builder architecture" +msgstr "translation and builder architecture" + +#: workflows/templates/workflows/handbook.html:60 +msgid "deployment, security, and maintenance notes" +msgstr "deployment, security, and maintenance notes" + +#: workflows/templates/workflows/handbook.html:63 +msgid "Open Developer Handbook" +msgstr "Open Developer Handbook" + +#: workflows/templates/workflows/home.html:8 +#: workflows/templates/workflows/home.html:469 +#: workflows/templates/workflows/requests_dashboard.html:1118 +msgid "TUBCO Onboarding & Offboarding Portal" +msgstr "TUBCO Onboarding & Offboarding Portal" + +#: workflows/templates/workflows/home.html:460 +msgid "Abmelden" +msgstr "Log out" + +#: workflows/templates/workflows/home.html:468 +#: workflows/templates/workflows/requests_dashboard.html:897 +msgid "Operations Console" +msgstr "Operations Console" + +#: workflows/templates/workflows/home.html:470 +msgid "" +"Zentrale Arbeitsfläche für Anfragen, PDF-Generierung, E-Mail-Workflows und " +"Ablage in Nextcloud." +msgstr "" +"Central workspace for requests, PDF generation, email workflows, and storage " +"in Nextcloud." + +#: workflows/templates/workflows/home.html:472 +msgid "Rolle:" +msgstr "Role:" + +#: workflows/templates/workflows/home.html:472 +msgid "Admin" +msgstr "Admin" + +#: workflows/templates/workflows/home.html:472 +msgid "Mitarbeiter" +msgstr "Staff" + +#: workflows/templates/workflows/home.html:474 +msgid "Nextcloud:" +msgstr "Nextcloud:" + +#: workflows/templates/workflows/home.html:474 msgid "aktiv" msgstr "active" -msgid "ausgewählt" -msgstr "selected" - +#: workflows/templates/workflows/home.html:474 msgid "inaktiv" msgstr "inactive" -msgid "z. B. max.mustermann@tub.co" -msgstr "e.g. john.doe@tub.co" +#: workflows/templates/workflows/home.html:477 +msgid "E-Mail:" +msgstr "Email:" +#: workflows/templates/workflows/home.html:477 +msgid "Testmodus" +msgstr "Test mode" + +#: workflows/templates/workflows/home.html:477 +msgid "Produktion" +msgstr "Production" + +#: workflows/templates/workflows/home.html:479 +msgid "PDF + E-Mail Workflow bereit" +msgstr "PDF + Email Workflow Ready" + +#: workflows/templates/workflows/home.html:493 +msgid "Apps" +msgstr "Apps" + +#: workflows/templates/workflows/home.html:494 +msgid "Wählen Sie den gewünschten Prozess." +msgstr "Choose the desired process." + +#: workflows/templates/workflows/home.html:500 +#: workflows/templates/workflows/onboarding_form.html:36 +#: workflows/templates/workflows/requests_dashboard.html:933 +msgid "Onboarding" +msgstr "Onboarding" + +#: workflows/templates/workflows/home.html:501 +msgid "" +"Neue Mitarbeitende erfassen, PDF mit Briefkopf erstellen, Benachrichtigungen " +"senden und in Nextcloud ablegen." +msgstr "" +"Capture new employees, generate a PDF with letterhead, send notifications, " +"and store it in Nextcloud." + +#: workflows/templates/workflows/home.html:503 +msgid "Mehrschritt-Formular" +msgstr "Multi-step form" + +#: workflows/templates/workflows/home.html:505 +msgid "E-Mail Routing" +msgstr "Email routing" + +#: workflows/templates/workflows/home.html:509 +msgid "Onboarding starten" +msgstr "Start onboarding" + +#: workflows/templates/workflows/home.html:516 +#: workflows/templates/workflows/requests_dashboard.html:943 +msgid "Offboarding" +msgstr "Offboarding" + +#: workflows/templates/workflows/home.html:517 +msgid "" +"Mitarbeitende suchen, Daten vorbefüllen, Offboarding-Dokumente erzeugen und " +"Rückgabe-Prozess starten." +msgstr "" +"Search employees, prefill data, generate offboarding documents, and start " +"the return process." + +#: workflows/templates/workflows/home.html:519 +msgid "Profile-Suche" +msgstr "Profile search" + +#: workflows/templates/workflows/home.html:520 +msgid "Hardware-Liste" +msgstr "Hardware list" + +#: workflows/templates/workflows/home.html:521 +msgid "IT-Rückgabe" +msgstr "IT return" + +#: workflows/templates/workflows/home.html:525 +msgid "Offboarding starten" +msgstr "Start offboarding" + +#: workflows/templates/workflows/home.html:532 +#: workflows/templates/workflows/requests_dashboard.html:8 +#: workflows/templates/workflows/requests_dashboard.html:898 +msgid "Anfragen Dashboard" +msgstr "Requests Dashboard" + +#: workflows/templates/workflows/home.html:533 +msgid "" +"Status, Suchfunktion, PDF-Links und Verlauf aller Onboarding-/Offboarding-" +"Anfragen." +msgstr "" +"Status, search, PDF links, and history of all onboarding/offboarding " +"requests." + +#: workflows/templates/workflows/home.html:535 +msgid "Suche" +msgstr "Search" + +#: workflows/templates/workflows/home.html:536 +#: workflows/templates/workflows/welcome_emails.html:125 +msgid "Status" +msgstr "Status" + +#: workflows/templates/workflows/home.html:537 +msgid "PDF Zugriff" +msgstr "PDF access" + +#: workflows/templates/workflows/home.html:541 +msgid "Dashboard öffnen" +msgstr "Open dashboard" + +#: workflows/templates/workflows/home.html:548 +msgid "Admin Apps" +msgstr "Admin Apps" + +#: workflows/templates/workflows/home.html:549 +msgid "Konfiguration, Tests und Steuerung." +msgstr "Configuration, tests, and controls." + +#: workflows/templates/workflows/home.html:554 +msgid "Felder, Schritte und Optionen verwalten." +msgstr "Manage fields, steps, and options." + +#: workflows/templates/workflows/home.html:555 +#: workflows/templates/workflows/home.html:560 +#: workflows/templates/workflows/home.html:565 +#: workflows/templates/workflows/home.html:570 +#: workflows/templates/workflows/home.html:575 +#: workflows/templates/workflows/home.html:580 msgid "Öffnen" msgstr "Open" +#: workflows/templates/workflows/home.html:558 +#: workflows/templates/workflows/intro_builder.html:7 +#: workflows/templates/workflows/intro_builder.html:44 +msgid "Einweisungs-Builder" +msgstr "Introduction Builder" + +#: workflows/templates/workflows/home.html:559 +msgid "Checklistenpunkte für das Einweisungsprotokoll konfigurieren." +msgstr "Configure checklist items for the introduction protocol." + +#: workflows/templates/workflows/home.html:564 +msgid "Project wiki and developer documentation in one place." +msgstr "" + +#: workflows/templates/workflows/home.html:568 +msgid "Integrationen" +msgstr "Integrations" + +#: workflows/templates/workflows/home.html:569 +msgid "Nextcloud- und E-Mail-Setup." +msgstr "Nextcloud and email setup." + +#: workflows/templates/workflows/home.html:573 +#: workflows/templates/workflows/welcome_emails.html:7 +msgid "Welcome E-Mails" +msgstr "Welcome Emails" + +#: workflows/templates/workflows/home.html:574 +msgid "Geplante Welcome Mails verwalten." +msgstr "Manage scheduled welcome emails." + +#: workflows/templates/workflows/home.html:578 +msgid "Django Admin" +msgstr "Django Admin" + +#: workflows/templates/workflows/home.html:579 +msgid "Vollständige Datenverwaltung." +msgstr "Full data management." + +#: workflows/templates/workflows/home.html:625 +msgid "Tipp: Die letzten Vorgänge sehen Sie jederzeit im Anfragen Dashboard." +msgstr "Tip: You can always see the latest requests in the Requests Dashboard." + +#: workflows/templates/workflows/integrations_setup.html:7 +#: workflows/templates/workflows/integrations_setup.html:79 +msgid "Integrationen Setup" +msgstr "Integrations Setup" + +#: workflows/templates/workflows/integrations_setup.html:80 +msgid "Verwalten Sie Nextcloud- und Mail-Konfiguration ohne Backend-Wechsel." +msgstr "Manage Nextcloud and mail configuration without switching to the backend." + +#: workflows/templates/workflows/integrations_setup.html:83 +msgid "Setup Nextcloud" +msgstr "Setup Nextcloud" + +#: workflows/templates/workflows/integrations_setup.html:84 +msgid "Setup Mail" +msgstr "Setup Mail" + +#: workflows/templates/workflows/integrations_setup.html:85 +msgid "E-Mail Routing & Vorlagen" +msgstr "Email routing & templates" + +#: workflows/templates/workflows/integrations_setup.html:120 +msgid "Nextcloud speichern" +msgstr "Save Nextcloud" + +#: workflows/templates/workflows/integrations_setup.html:122 +#: workflows/templates/workflows/integrations_setup.html:162 +msgid "Leeres Passwortfeld lässt das bestehende Passwort unverändert." +msgstr "Leaving the password field empty keeps the current password unchanged." + +#: workflows/templates/workflows/integrations_setup.html:156 +msgid "SMTP SSL" +msgstr "SMTP SSL" + +#: workflows/templates/workflows/integrations_setup.html:157 +msgid "SMTP TLS" +msgstr "SMTP TLS" + +#: workflows/templates/workflows/integrations_setup.html:160 +msgid "Mail speichern" +msgstr "Save mail settings" + +#: workflows/templates/workflows/integrations_setup.html:171 +msgid "It onboarding email" +msgstr "IT onboarding email" + +#: workflows/templates/workflows/integrations_setup.html:175 +msgid "General info email" +msgstr "General info email" + +#: workflows/templates/workflows/integrations_setup.html:179 +msgid "Business card email" +msgstr "Business card email" + +#: workflows/templates/workflows/integrations_setup.html:183 +msgid "Hr works email" +msgstr "HR Works email" + +#: workflows/templates/workflows/integrations_setup.html:187 +msgid "Key notification email" +msgstr "Key notification email" + +#: workflows/templates/workflows/integrations_setup.html:191 +msgid "Diese Empfänger werden für condition-based E-Mail Routing genutzt." +msgstr "These recipients are used for condition-based email routing." + +#: workflows/templates/workflows/integrations_setup.html:218 +msgid "E-Mail Routing & Vorlagen speichern" +msgstr "Save email routing & templates" + +#: workflows/templates/workflows/integrations_setup.html:224 +msgid "Bedingungsregeln für zusätzliche E-Mails" +msgstr "Conditional rules for additional emails" + +#: workflows/templates/workflows/integrations_setup.html:225 +msgid "Zusätzliche Regeln laufen nach dem Standard-Routing." +msgstr "Additional rules run after the standard routing flow." + +#: workflows/templates/workflows/integrations_setup.html:232 +#: workflows/templates/workflows/integrations_setup.html:303 +msgid "Regelname" +msgstr "Rule name" + +#: workflows/templates/workflows/integrations_setup.html:236 +#: workflows/templates/workflows/integrations_setup.html:307 +msgid "Event" +msgstr "Event" + +#: workflows/templates/workflows/integrations_setup.html:244 +#: workflows/templates/workflows/integrations_setup.html:315 +msgid "Feldname" +msgstr "Field name" + +#: workflows/templates/workflows/integrations_setup.html:248 +#: workflows/templates/workflows/integrations_setup.html:319 +#: workflows/templates/workflows/intro_builder.html:95 +msgid "Operator" +msgstr "Operator" + +#: workflows/templates/workflows/integrations_setup.html:256 +#: workflows/templates/workflows/integrations_setup.html:327 +msgid "Vergleichswert" +msgstr "Comparison value" + +#: workflows/templates/workflows/integrations_setup.html:260 +#: workflows/templates/workflows/integrations_setup.html:331 +#: workflows/templates/workflows/welcome_emails.html:123 +msgid "Empfänger" +msgstr "Recipients" + +#: workflows/templates/workflows/integrations_setup.html:264 +#: workflows/templates/workflows/integrations_setup.html:335 +msgid "Template Key (optional)" +msgstr "Template key (optional)" + +#: workflows/templates/workflows/integrations_setup.html:266 +#: workflows/templates/workflows/integrations_setup.html:337 +msgid "-- Custom Betreff/Body verwenden --" +msgstr "-- Use custom subject/body --" + +#: workflows/templates/workflows/integrations_setup.html:273 +#: workflows/templates/workflows/integrations_setup.html:344 +msgid "Custom Subject (optional)" +msgstr "Custom subject (optional)" + +#: workflows/templates/workflows/integrations_setup.html:277 +#: workflows/templates/workflows/integrations_setup.html:348 +msgid "Custom Body (optional)" +msgstr "Custom body (optional)" + +#: workflows/templates/workflows/integrations_setup.html:281 +#: workflows/templates/workflows/integrations_setup.html:352 +msgid "Custom Subject (EN, optional)" +msgstr "Custom subject (EN, optional)" + +#: workflows/templates/workflows/integrations_setup.html:285 +#: workflows/templates/workflows/integrations_setup.html:356 +msgid "Custom Body (EN, optional)" +msgstr "Custom body (EN, optional)" + +#: workflows/templates/workflows/integrations_setup.html:291 +#: workflows/templates/workflows/integrations_setup.html:361 +msgid "PDF anhängen" +msgstr "Attach PDF" + +#: workflows/templates/workflows/integrations_setup.html:296 +msgid "Noch keine zusätzlichen Regeln vorhanden." +msgstr "No additional rules configured yet." + +#: workflows/templates/workflows/integrations_setup.html:300 +msgid "Neue Regel hinzufügen" +msgstr "Add new rule" + +#: workflows/templates/workflows/integrations_setup.html:366 +msgid "Regeln speichern" +msgstr "Save rules" + +#: workflows/templates/workflows/intro_builder.html:45 +msgid "Checklistenpunkte für das Einweisungs- und Übergabeprotokoll verwalten." +msgstr "Manage checklist items for the introduction and handover protocol." + +#: workflows/templates/workflows/intro_builder.html:47 +msgid "Zum Dashboard" +msgstr "Go to dashboard" + +#: workflows/templates/workflows/intro_builder.html:61 +#: workflows/templates/workflows/intro_builder.html:91 +msgid "Abschnitt" +msgstr "Section" + +#: workflows/templates/workflows/intro_builder.html:69 +#: workflows/templates/workflows/intro_builder.html:92 +msgid "Checklistenpunkt (DE)" +msgstr "Checklist item (DE)" + +#: workflows/templates/workflows/intro_builder.html:70 +msgid "z. B. Nextcloud Ordnerstruktur erklärt" +msgstr "e.g. Nextcloud folder structure explained" + +#: workflows/templates/workflows/intro_builder.html:73 +msgid "Checklist item (EN)" +msgstr "Checklist item (EN)" + +#: workflows/templates/workflows/intro_builder.html:74 +msgid "e.g. Nextcloud folder structure explained" +msgstr "e.g. Nextcloud folder structure explained" + +#: workflows/templates/workflows/intro_builder.html:77 +msgid "Punkt hinzufügen" +msgstr "Add item" + +#: workflows/templates/workflows/intro_builder.html:80 +msgid "" +"Bedingungen und Sortierung können anschließend in der Tabelle bearbeitet " +"werden." +msgstr "" +"Conditions and sort order can then be edited in the table." + +#: workflows/templates/workflows/intro_builder.html:93 +msgid "Checklistenpunkt (EN)" +msgstr "Checklist item (EN)" + +#: workflows/templates/workflows/intro_builder.html:94 +msgid "Feld-Bedingung" +msgstr "Field condition" + +#: workflows/templates/workflows/intro_builder.html:96 +msgid "Wert" +msgstr "Value" + +#: workflows/templates/workflows/intro_builder.html:131 +msgid "z. B. HR Works" +msgstr "e.g. HR Works" + +#: workflows/templates/workflows/intro_builder.html:134 +msgid "Checklistenpunkt wirklich löschen?" +msgstr "Delete this checklist item?" + +#: workflows/templates/workflows/intro_builder.html:138 +msgid "" +"Noch keine benutzerdefinierten Checklistenpunkte angelegt. Solange die Liste " +"leer ist, nutzt das System die integrierten Standardpunkte." +msgstr "" +"No custom checklist items have been created yet. As long as the list is " +"empty, the system uses the built-in default items." + +#: workflows/templates/workflows/intro_builder.html:143 +msgid "Reihenfolge folgt derzeit der Tabellenreihenfolge beim Speichern." +msgstr "Order currently follows the table order when saving." + +#: workflows/templates/workflows/intro_builder.html:145 +msgid "Checkliste speichern" +msgstr "Save checklist" + +#: workflows/templates/workflows/offboarding_form.html:8 +#: workflows/templates/workflows/offboarding_form.html:32 +msgid "Offboarding-Anfrage" +msgstr "Offboarding request" + +#: workflows/templates/workflows/offboarding_form.html:15 +#: workflows/templates/workflows/onboarding_form.html:15 +msgid "Anfrage gespeichert" +msgstr "Request saved" + +#: workflows/templates/workflows/offboarding_form.html:16 +#, python-format +msgid "" +"Offboarding wurde erfolgreich gespeichert (ID: %(request_id)s). Das PDF wird " +"im Hintergrund erzeugt." +msgstr "" +"Offboarding was saved successfully (ID: %(request_id)s). The PDF is being " +"generated in the background." + +#: workflows/templates/workflows/offboarding_form.html:17 +#: workflows/templates/workflows/onboarding_form.html:17 +msgid "Schließen" +msgstr "Close" + +#: workflows/templates/workflows/offboarding_form.html:35 +msgid "Mitarbeitende suchen (Name oder E-Mail)" +msgstr "Search employees (name or email)" + +#: workflows/templates/workflows/offboarding_form.html:36 +msgid "z. B. max.mustermann@tub.co" +msgstr "e.g. john.doe@tub.co" + +#: workflows/templates/workflows/offboarding_form.html:38 +#: workflows/templates/workflows/requests_dashboard.html:996 +msgid "Suchen" +msgstr "Search" + +#: workflows/templates/workflows/offboarding_form.html:50 +msgid "Vorbefüllt aus:" +msgstr "Prefilled from:" + +#: workflows/templates/workflows/offboarding_form.html:69 +msgid "Offboarding-Anfrage speichern" +msgstr "Save offboarding request" + +#: workflows/templates/workflows/onboarding_form.html:8 +msgid "Onboarding-Anfrage" +msgstr "Onboarding request" + +#: workflows/templates/workflows/onboarding_form.html:16 +#, python-format +msgid "" +"Onboarding wurde erfolgreich gespeichert (ID: %(request_id)s). Das PDF wird " +"im Hintergrund erzeugt." +msgstr "" +"Onboarding was saved successfully (ID: %(request_id)s). The PDF is being " +"generated in the background." + +#: workflows/templates/workflows/onboarding_form.html:37 +msgid "Mehrseitiges Formular mit konfigurierbaren Feldern aus dem Admin." +msgstr "Multi-page form with configurable fields from the admin." + +#: workflows/templates/workflows/onboarding_form.html:53 +msgid "" +"Bitte prüfen Sie die markierten Felder. Ungültige Eingaben wurden erkannt." +msgstr "Please check the highlighted fields. Invalid input was detected." + +#: workflows/templates/workflows/onboarding_form.html:113 +msgid "Keine konfigurierten Felder in diesem Schritt." +msgstr "No configured fields in this step." + +#: workflows/templates/workflows/onboarding_form.html:118 +msgid "Fast geschafft. Bitte Abschlussdaten prüfen und die Anfrage absenden." +msgstr "Almost done. Please review the final details and submit the request." + +#: workflows/templates/workflows/onboarding_form.html:130 +msgid "Zurück" +msgstr "Back" + +#: workflows/templates/workflows/onboarding_form.html:131 +msgid "Weiter" +msgstr "Next" + +#: workflows/templates/workflows/onboarding_form.html:132 +msgid "Onboarding-Anfrage absenden" +msgstr "Submit onboarding request" + +#: workflows/templates/workflows/requests_dashboard.html:899 +msgid "" +"Steuert Onboarding- und Offboarding-Prozesse an einem Ort. Die Oberfläche " +"priorisiert Kennzahlen, Aktivität und direkte Aktionen in der Vorgangsliste." +msgstr "" +"Controls onboarding and offboarding processes in one place. The interface " +"prioritizes metrics, activity, and direct actions in the request list." + +#: workflows/templates/workflows/requests_dashboard.html:901 +msgid "Onboarding + Offboarding" +msgstr "Onboarding + Offboarding" + +#: workflows/templates/workflows/requests_dashboard.html:902 +msgid "PDFs + Live-Protokolle" +msgstr "PDFs + live protocols" + +#: workflows/templates/workflows/requests_dashboard.html:903 +msgid "Suche + Bulk-Aktionen" +msgstr "Search + bulk actions" + +#: workflows/templates/workflows/requests_dashboard.html:909 +msgid "Aktivitätsverlauf" +msgstr "Activity Timeline" + +#: workflows/templates/workflows/requests_dashboard.html:910 +msgid "" +"Die letzten 14 Tage in einer kompakten Ansicht über alle Onboarding- und " +"Offboarding-Vorgänge." +msgstr "" +"The last 14 days in a compact view across all onboarding and offboarding " +"requests." + +#: workflows/templates/workflows/requests_dashboard.html:912 +msgid "14 Tage" +msgstr "14 days" + +#: workflows/templates/workflows/requests_dashboard.html:938 +msgid "Alle erfassten Onboarding-Vorgänge im aktuellen System." +msgstr "All onboarding requests captured in the current system." + +#: workflows/templates/workflows/requests_dashboard.html:948 +msgid "Austritte und Rückgaben in derselben Prozessübersicht." +msgstr "Departures and returns in the same process overview." + +#: workflows/templates/workflows/requests_dashboard.html:953 +msgid "Gesamtbestand" +msgstr "Total records" + +#: workflows/templates/workflows/requests_dashboard.html:958 +msgid "Alle Vorgänge, durchsuchbar und mit Dokumenten verknüpft." +msgstr "All requests, searchable and linked with documents." + +#: workflows/templates/workflows/requests_dashboard.html:963 +msgid "Aktivität 14 Tage" +msgstr "Activity 14 Days" + +#: workflows/templates/workflows/requests_dashboard.html:968 +msgid "Zeitraum des visuellen Aktivitätsverlaufs in dieser Übersicht." +msgstr "Time span of the visual activity timeline in this overview." + +#: workflows/templates/workflows/requests_dashboard.html:983 +msgid "Vorgänge" +msgstr "Requests" + +#: workflows/templates/workflows/requests_dashboard.html:984 +msgid "" +"Dokumente, Status und Einweisungsaktionen in einer verdichteten " +"Arbeitsansicht." +msgstr "Documents, status, and introduction actions in a condensed work view." + +#: workflows/templates/workflows/requests_dashboard.html:986 +#, python-format +msgid "%(count)s Einträge sichtbar" +msgstr "%(count)s entries visible" + +#: workflows/templates/workflows/requests_dashboard.html:993 +msgid "Nach Name oder E-Mail suchen" +msgstr "Search by name or email" + +#: workflows/templates/workflows/requests_dashboard.html:998 +msgid "Zurücksetzen" +msgstr "Reset" + +#: workflows/templates/workflows/requests_dashboard.html:1002 +msgid "" +"Datensätze können direkt in der Tabelle gefiltert, geöffnet, geprüft oder " +"gelöscht werden." +msgstr "" +"Records can be filtered, opened, checked, or deleted directly in the table." + +#: workflows/templates/workflows/requests_dashboard.html:1009 +#: workflows/templates/workflows/welcome_emails.html:114 +msgid "ausgewählt" +msgstr "selected" + +#: workflows/templates/workflows/requests_dashboard.html:1010 +msgid "Auswahl löschen" +msgstr "Delete selection" + +#: workflows/templates/workflows/requests_dashboard.html:1022 +msgid "Typ" +msgstr "Type" + +#: workflows/templates/workflows/requests_dashboard.html:1023 +msgid "Person" +msgstr "Person" + +#: workflows/templates/workflows/requests_dashboard.html:1024 +msgid "E-Mail" +msgstr "Email" + +#: workflows/templates/workflows/requests_dashboard.html:1025 +msgid "Erstellt" +msgstr "Created" + +#: workflows/templates/workflows/requests_dashboard.html:1026 +msgid "Dokument" +msgstr "Document" + +#: workflows/templates/workflows/requests_dashboard.html:1027 +#: workflows/templates/workflows/requests_dashboard.html:1062 +msgid "Einweisung" +msgstr "Introduction" + +#: workflows/templates/workflows/requests_dashboard.html:1028 +#: workflows/templates/workflows/welcome_emails.html:127 +msgid "Aktion" +msgstr "Action" + +#: workflows/templates/workflows/requests_dashboard.html:1053 +msgid "PDF öffnen" +msgstr "Open PDF" + +#: workflows/templates/workflows/requests_dashboard.html:1055 +msgid "Noch nicht verfügbar" +msgstr "Not available yet" + +#: workflows/templates/workflows/requests_dashboard.html:1065 +msgid "Live-Protokoll" +msgstr "Live protocol" + +#: workflows/templates/workflows/requests_dashboard.html:1067 +msgid "Einweisung öffnen" +msgstr "Open introduction" + +#: workflows/templates/workflows/requests_dashboard.html:1069 +msgid "Live-Protokoll öffnen" +msgstr "Open live protocol" + +#: workflows/templates/workflows/requests_dashboard.html:1074 +msgid "Standard-Einweisungs-PDF" +msgstr "Standard introduction PDF" + +#: workflows/templates/workflows/requests_dashboard.html:1079 +msgid "Neu erzeugen" +msgstr "Regenerate" + +#: workflows/templates/workflows/requests_dashboard.html:1081 +msgid "Standard-PDF öffnen" +msgstr "Open standard PDF" + +#: workflows/templates/workflows/requests_dashboard.html:1085 +msgid "PDF erzeugen" +msgstr "Generate PDF" + +#: workflows/templates/workflows/requests_dashboard.html:1092 +msgid "Status:" +msgstr "Status:" + +#: workflows/templates/workflows/requests_dashboard.html:1096 +msgid "Nicht relevant" +msgstr "Not relevant" + +#: workflows/templates/workflows/requests_dashboard.html:1109 +msgid "Noch keine Vorgänge vorhanden." +msgstr "No requests available yet." + +#: workflows/templates/workflows/welcome_emails.html:50 +#, fuzzy +#| msgid "Geplante Welcome Mails verwalten." +msgid "Geplante Welcome E-Mails" +msgstr "Manage scheduled welcome emails." + +#: workflows/templates/workflows/welcome_emails.html:51 +msgid "" +"Welcome-Mails konfigurieren und geplante Mails steuern (sofort senden, " +"pausieren, fortsetzen, abbrechen)." +msgstr "" +"Configure welcome emails and control scheduled messages (send now, pause, " +"resume, cancel)." + +#: workflows/templates/workflows/welcome_emails.html:63 +msgid "Verzögerung in Tagen" +msgstr "Delay in days" + +#: workflows/templates/workflows/welcome_emails.html:67 +msgid "Absenderadresse (optional)" +msgstr "Sender address (optional)" + +#: workflows/templates/workflows/welcome_emails.html:68 +msgid "Leer = System-Absender" +msgstr "Empty = system sender" + +#: workflows/templates/workflows/welcome_emails.html:88 +msgid "Onboarding-PDF anhängen" +msgstr "Attach onboarding PDF" + +#: workflows/templates/workflows/welcome_emails.html:91 +msgid "Verfügbare Keywords:" +msgstr "Available keywords:" + +#: workflows/templates/workflows/welcome_emails.html:97 +msgid "Welcome-Einstellungen speichern" +msgstr "Save welcome settings" + +#: workflows/templates/workflows/welcome_emails.html:105 +msgid "Alle auswählen" +msgstr "Select all" + +#: workflows/templates/workflows/welcome_emails.html:108 +#: workflows/templates/workflows/welcome_emails.html:163 +msgid "Pausieren" +msgstr "Pause" + +#: workflows/templates/workflows/welcome_emails.html:109 +#: workflows/templates/workflows/welcome_emails.html:157 +msgid "Sofort senden" +msgstr "Send now" + +#: workflows/templates/workflows/welcome_emails.html:113 +msgid "Bulk ausführen" +msgstr "Run bulk action" + +#: workflows/templates/workflows/welcome_emails.html:120 +msgid "Auswahl" +msgstr "Select" + +#: workflows/templates/workflows/welcome_emails.html:122 +msgid "Mitarbeitende Person" +msgstr "Employee" + +#: workflows/templates/workflows/welcome_emails.html:124 +msgid "Geplant für" +msgstr "Scheduled for" + +#: workflows/templates/workflows/welcome_emails.html:126 +msgid "Gesendet am" +msgstr "Sent at" + +#: workflows/templates/workflows/welcome_emails.html:140 +msgid "Geplant" +msgstr "Scheduled" + +#: workflows/templates/workflows/welcome_emails.html:142 +msgid "Pausiert" +msgstr "Paused" + +#: workflows/templates/workflows/welcome_emails.html:144 +msgid "Abgebrochen" +msgstr "Cancelled" + +#: workflows/templates/workflows/welcome_emails.html:146 +msgid "Gesendet" +msgstr "Sent" + +#: workflows/templates/workflows/welcome_emails.html:148 +msgid "Fehlgeschlagen" +msgstr "Failed" + +#: workflows/templates/workflows/welcome_emails.html:168 +msgid "Fortsetzen" +msgstr "Resume" + +#: workflows/templates/workflows/welcome_emails.html:174 +msgid "Abbrechen" +msgstr "Cancel" + +#: workflows/templates/workflows/welcome_emails.html:181 +msgid "Keine geplanten Welcome E-Mails vorhanden." +msgstr "No scheduled welcome emails available." + +#: workflows/templates/workflows/welcome_emails.html:224 +msgid "Bitte mindestens einen Welcome-Eintrag auswählen." +msgstr "Please select at least one welcome entry." + +#: workflows/templates/workflows/welcome_emails.html:229 +msgid "Ausgewählte Welcome-Einträge wirklich löschen?" +msgstr "Delete the selected welcome entries?" + +#: workflows/templates/workflows/welcome_emails.html:232 +msgid "Ausgewählte Welcome-Einträge pausieren?" +msgstr "Pause the selected welcome entries?" + +#: workflows/templates/workflows/welcome_emails.html:234 +msgid "Ausgewählte Welcome-Einträge sofort senden?" +msgstr "Send the selected welcome entries now?" + +#: workflows/views.py:76 +msgid "Stammdaten" +msgstr "Master data" + +#: workflows/views.py:76 +msgid "Person, Rolle, Abteilung" +msgstr "Person, role, department" + +#: workflows/views.py:77 +msgid "Vertrag" +msgstr "Contract" + +#: workflows/views.py:77 +msgid "Beschäftigung und Termine" +msgstr "Employment and dates" + +#: workflows/views.py:78 +msgid "IT-Setup" +msgstr "IT setup" + +#: workflows/views.py:78 +msgid "Geräte, Software und Zugänge" +msgstr "Devices, software, and access" + +#: workflows/views.py:79 +msgid "Abschluss" +msgstr "Finish" + +#: workflows/views.py:79 +msgid "Notizen und Freigabe" +msgstr "Notes and approval" + +#: workflows/views.py:239 +msgid "Sie haben keine Berechtigung für diese Aktion." +msgstr "You do not have permission for this action." + +#: workflows/views.py:248 +msgid "Keine Einträge ausgewählt." +msgstr "No entries selected." + +#: workflows/views.py:277 +#, python-format +msgid "%(count)s Eintrag/Einträge gelöscht." +msgstr "%(count)s entry/entries deleted." + +#: workflows/views.py:279 +#, python-format +msgid "%(count)s Auswahl(en) konnten nicht verarbeitet werden." +msgstr "%(count)s selection(s) could not be processed." + +#: workflows/views.py:281 +msgid "Keine passenden Einträge gefunden." +msgstr "No matching entries found." + +#: workflows/views.py:440 +msgid "Einweisungs- und Übergabeprotokoll wurde erzeugt." +msgstr "Introduction and handover protocol was generated." + +#: workflows/views.py:457 +msgid "Einweisungsprotokoll aus Live-Status wurde erzeugt." +msgstr "Introduction protocol from live status was generated." + +#: workflows/views.py:486 +msgid "Einweisung wurde zurückgesetzt." +msgstr "Introduction was reset." + +#: workflows/views.py:492 +msgid "Einweisung wurde als abgeschlossen gespeichert." +msgstr "Introduction was saved as completed." + +#: workflows/views.py:497 +msgid "Einweisung wurde als Entwurf gespeichert." +msgstr "Introduction was saved as draft." + +#~ msgid "Dokumentation, Architektur und Runbook." +#~ msgstr "Documentation, architecture, and runbook." diff --git a/backend/workflows/forms.py b/backend/workflows/forms.py index a40e1ff..9752b8a 100644 --- a/backend/workflows/forms.py +++ b/backend/workflows/forms.py @@ -326,6 +326,8 @@ class OnboardingRequestForm(forms.ModelForm): def save(self, commit=True): instance = super().save(commit=False) + if not (instance.preferred_language or '').strip(): + instance.preferred_language = (get_language() or 'de').split('-')[0] instance.group_mailboxes_required = self.cleaned_data.get('group_mailboxes_required_choice') == 'ja' instance.additional_software_needed = self.cleaned_data.get('additional_software_needed_choice') == 'ja' diff --git a/backend/workflows/migrations/0031_alter_offboardingrequest_preferred_language_and_more.py b/backend/workflows/migrations/0031_alter_offboardingrequest_preferred_language_and_more.py new file mode 100644 index 0000000..0f0ab12 --- /dev/null +++ b/backend/workflows/migrations/0031_alter_offboardingrequest_preferred_language_and_more.py @@ -0,0 +1,23 @@ +# Generated by Django 5.1.5 on 2026-03-24 12:05 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('workflows', '0030_notificationrule_custom_body_en_and_more'), + ] + + operations = [ + migrations.AlterField( + model_name='offboardingrequest', + name='preferred_language', + field=models.CharField(blank=True, db_default='de', default='de', max_length=10), + ), + migrations.AlterField( + model_name='onboardingrequest', + name='preferred_language', + field=models.CharField(blank=True, db_default='de', default='de', max_length=10), + ), + ] diff --git a/backend/workflows/models.py b/backend/workflows/models.py index d732220..477849c 100644 --- a/backend/workflows/models.py +++ b/backend/workflows/models.py @@ -2,6 +2,11 @@ from django.db import models from django.utils.translation import get_language +def _normalized_language_code(value: str | None) -> str: + lang = (value or '').strip().split('-')[0].lower() + return lang or 'de' + + class EmployeeProfile(models.Model): full_name = models.CharField(max_length=255) first_name = models.CharField(max_length=100) @@ -80,12 +85,16 @@ class OnboardingRequest(models.Model): generated_pdf_path = models.CharField(max_length=500, blank=True) intro_pdf_path = models.CharField(max_length=500, blank=True) - preferred_language = models.CharField(max_length=10, blank=True, default='de') + preferred_language = models.CharField(max_length=10, blank=True, default='de', db_default='de') created_at = models.DateTimeField(auto_now_add=True) def __str__(self) -> str: return f"Onboarding #{self.id} - {self.full_name}" + def save(self, *args, **kwargs): + self.preferred_language = _normalized_language_code(self.preferred_language) + super().save(*args, **kwargs) + class FormOption(models.Model): CATEGORY_CHOICES = [ @@ -422,9 +431,13 @@ class OffboardingRequest(models.Model): signature = models.CharField(max_length=255, blank=True, verbose_name='Unterschrift (Name)') requested_by_email = models.EmailField(verbose_name='E-Mail der anfordernden Person') requested_by_name = models.CharField(max_length=255, blank=True, verbose_name='Name der anfordernden Person') - preferred_language = models.CharField(max_length=10, blank=True, default='de') + preferred_language = models.CharField(max_length=10, blank=True, default='de', db_default='de') generated_pdf_path = models.CharField(max_length=500, blank=True) created_at = models.DateTimeField(auto_now_add=True) def __str__(self) -> str: return f"Offboarding #{self.id} - {self.full_name}" + + def save(self, *args, **kwargs): + self.preferred_language = _normalized_language_code(self.preferred_language) + super().save(*args, **kwargs) diff --git a/backend/workflows/templates/workflows/developer_handbook.html b/backend/workflows/templates/workflows/developer_handbook.html index 2e222f4..1662ec8 100644 --- a/backend/workflows/templates/workflows/developer_handbook.html +++ b/backend/workflows/templates/workflows/developer_handbook.html @@ -124,10 +124,11 @@ docker compose exec -T web django-admin compilemessages
gettext is installed in the Docker image..mo compilation anymore.NotificationTemplate, NotificationRule, and the welcome-email settings UI with explicit DE/EN subject/body fields.preferred_language so workflow emails can render in the submitter's active UI language with German fallback.preferred_language is normalized in model save() and also has a DB default of de, so alternate creation paths cannot insert null values.NotificationTemplate and NotificationRule.preferred_language value.Felder per Drag-and-Drop sortieren und pro Schritt gruppieren.
+{% trans "Felder per Drag-and-Drop sortieren und pro Schritt gruppieren." %}