fix: polish localization switcher translations
Some checks failed
PR Fast Feedback / fast-feedback (pull_request) Failing after 1m2s

This commit is contained in:
Ahmed Darrazi 2026-04-28 21:44:27 +02:00
parent d51df2800b
commit 7fc4d23357
5 changed files with 130 additions and 128 deletions

View File

@ -18,71 +18,71 @@
'badge_evidence_gaps' => 'Evidence Gaps: :count', 'badge_evidence_gaps' => 'Evidence Gaps: :count',
'evidence_gaps_tooltip' => 'Wichtigste Gaps: :summary', 'evidence_gaps_tooltip' => 'Wichtigste Gaps: :summary',
'evidence_gap_details_heading' => 'Evidence-Gap-Details', 'evidence_gap_details_heading' => 'Evidence-Gap-Details',
'evidence_gap_details_description' => 'Durchsuchen Sie aufgezeichnete Gap-Subjekte nach Grund, Governed Subject, Subjektklasse, Ergebnis, naechster Aktion oder Subject Key, bevor Sie Rohdiagnosen verwenden.', 'evidence_gap_details_description' => 'Durchsuchen Sie aufgezeichnete Gap-Subjekte nach Grund, Governed Subject, Subjektklasse, Ergebnis, nächster Aktion oder Subject Key, bevor Sie Rohdiagnosen verwenden.',
'evidence_gap_search_label' => 'Gap-Details suchen', 'evidence_gap_search_label' => 'Gap-Details suchen',
'evidence_gap_search_placeholder' => 'Nach Grund, Typ, Klasse, Ergebnis, Aktion oder Subject Key suchen', 'evidence_gap_search_placeholder' => 'Nach Grund, Typ, Klasse, Ergebnis, Aktion oder Subject Key suchen',
'evidence_gap_search_help' => 'Filtert ueber Grund, Governed Subject, Subjektklasse, Ergebnis, naechste Aktion und Subject Key.', 'evidence_gap_search_help' => 'Filtert über Grund, Governed Subject, Subjektklasse, Ergebnis, nächste Aktion und Subject Key.',
'evidence_gap_bucket_help_ambiguous_match' => 'Mehrere Inventory-Datensaetze passten zum gleichen Policy-Subjekt. Pruefen Sie das Mapping.', 'evidence_gap_bucket_help_ambiguous_match' => 'Mehrere Inventory-Datensätze passten zum gleichen Policy-Subjekt. Prüfen Sie das Mapping.',
'evidence_gap_bucket_help_policy_record_missing' => 'Der erwartete Policy-Datensatz wurde im Baseline-Snapshot nicht gefunden. Pruefen Sie, ob die Policy im Tenant noch existiert.', 'evidence_gap_bucket_help_policy_record_missing' => 'Der erwartete Policy-Datensatz wurde im Baseline-Snapshot nicht gefunden. Prüfen Sie, ob die Policy im Tenant noch existiert.',
'evidence_gap_bucket_help_inventory_record_missing' => 'Fuer diese Subjekte konnte kein Inventory-Datensatz gefunden werden. Pruefen Sie, ob der Inventory Sync aktuell ist.', 'evidence_gap_bucket_help_inventory_record_missing' => 'Für diese Subjekte konnte kein Inventory-Datensatz gefunden werden. Prüfen Sie, ob der Inventory Sync aktuell ist.',
'evidence_gap_bucket_help_foundation_not_policy_backed' => 'Diese Subjekte existieren in der Foundation-Schicht, sind aber nicht durch eine verwaltete Policy abgedeckt. Pruefen Sie, ob eine Policy erstellt werden sollte.', 'evidence_gap_bucket_help_foundation_not_policy_backed' => 'Diese Subjekte existieren in der Foundation-Schicht, sind aber nicht durch eine verwaltete Policy abgedeckt. Prüfen Sie, ob eine Policy erstellt werden sollte.',
'evidence_gap_bucket_help_capture_failed' => 'Evidence Capture ist fuer diese Subjekte fehlgeschlagen. Wiederholen Sie den Vergleich oder pruefen Sie die Graph-Konnektivitaet.', 'evidence_gap_bucket_help_capture_failed' => 'Evidence Capture ist für diese Subjekte fehlgeschlagen. Wiederholen Sie den Vergleich oder prüfen Sie die Graph-Konnektivität.',
'evidence_gap_bucket_help_default' => 'Diese Subjekte wurden beim Vergleich markiert. Pruefen Sie die betroffenen Zeilen.', 'evidence_gap_bucket_help_default' => 'Diese Subjekte wurden beim Vergleich markiert. Prüfen Sie die betroffenen Zeilen.',
'evidence_gap_reason' => 'Grund', 'evidence_gap_reason' => 'Grund',
'evidence_gap_reason_affected' => ':count betroffen', 'evidence_gap_reason_affected' => ':count betroffen',
'evidence_gap_reason_recorded' => ':count aufgezeichnet', 'evidence_gap_reason_recorded' => ':count aufgezeichnet',
'evidence_gap_reason_missing_detail' => ':count ohne Detail', 'evidence_gap_reason_missing_detail' => ':count ohne Detail',
'evidence_gap_structural' => 'Strukturell: :count', 'evidence_gap_structural' => 'Strukturell: :count',
'evidence_gap_operational' => 'Operativ: :count', 'evidence_gap_operational' => 'Operativ: :count',
'evidence_gap_transient' => 'Temporaer: :count', 'evidence_gap_transient' => 'Temporär: :count',
'evidence_gap_bucket_structural' => ':count strukturell', 'evidence_gap_bucket_structural' => ':count strukturell',
'evidence_gap_bucket_operational' => ':count operativ', 'evidence_gap_bucket_operational' => ':count operativ',
'evidence_gap_bucket_transient' => ':count temporaer', 'evidence_gap_bucket_transient' => ':count temporär',
'evidence_gap_missing_details_title' => 'Fuer diesen Run wurden keine Detailzeilen aufgezeichnet', 'evidence_gap_missing_details_title' => 'Für diesen Run wurden keine Detailzeilen aufgezeichnet',
'evidence_gap_missing_details_body' => 'Evidence Gaps wurden fuer diesen Compare Run gezaehlt, aber Details auf Subjektebene wurden nicht gespeichert. Pruefen Sie Rohdiagnosen oder wiederholen Sie den Vergleich.', 'evidence_gap_missing_details_body' => 'Evidence Gaps wurden für diesen Compare Run gezählt, aber Details auf Subjektebene wurden nicht gespeichert. Prüfen Sie Rohdiagnosen oder wiederholen Sie den Vergleich.',
'evidence_gap_missing_reason_body' => ':count betroffene Subjekte wurden fuer diesen Grund gezaehlt, aber Detailzeilen wurden nicht aufgezeichnet.', 'evidence_gap_missing_reason_body' => ':count betroffene Subjekte wurden für diesen Grund gezählt, aber Detailzeilen wurden nicht aufgezeichnet.',
'evidence_gap_legacy_title' => 'Legacy-Development-Gap-Payload erkannt', 'evidence_gap_legacy_title' => 'Legacy-Development-Gap-Payload erkannt',
'evidence_gap_legacy_body' => 'Dieser Run verwendet noch die retired breite Grundform. Erzeugen Sie den Run neu oder bereinigen Sie alte lokale Development-Payloads.', 'evidence_gap_legacy_body' => 'Dieser Run verwendet noch die retired breite Grundform. Erzeugen Sie den Run neu oder bereinigen Sie alte lokale Development-Payloads.',
'evidence_gap_diagnostics_heading' => 'Baseline-Compare-Evidence', 'evidence_gap_diagnostics_heading' => 'Baseline-Compare-Evidence',
'evidence_gap_diagnostics_description' => 'Rohdiagnosen bleiben fuer Support und tiefere Fehlersuche nach Operator-Zusammenfassung und Detailansicht verfuegbar.', 'evidence_gap_diagnostics_description' => 'Rohdiagnosen bleiben für Support und tiefere Fehlersuche nach Operator-Zusammenfassung und Detailansicht verfügbar.',
'evidence_gap_policy_type' => 'Governed Subject', 'evidence_gap_policy_type' => 'Governed Subject',
'evidence_gap_subject_class' => 'Subjektklasse', 'evidence_gap_subject_class' => 'Subjektklasse',
'evidence_gap_outcome' => 'Ergebnis', 'evidence_gap_outcome' => 'Ergebnis',
'evidence_gap_next_action' => 'Naechste Aktion', 'evidence_gap_next_action' => 'Nächste Aktion',
'evidence_gap_subject_key' => 'Subject Key', 'evidence_gap_subject_key' => 'Subject Key',
'evidence_gap_table_empty_heading' => 'Keine aufgezeichneten Gap-Zeilen passen zu dieser Ansicht', 'evidence_gap_table_empty_heading' => 'Keine aufgezeichneten Gap-Zeilen passen zu dieser Ansicht',
'evidence_gap_table_empty_description' => 'Passen Sie Suche oder Filter an, um andere betroffene Subjekte zu pruefen.', 'evidence_gap_table_empty_description' => 'Passen Sie Suche oder Filter an, um andere betroffene Subjekte zu prüfen.',
'comparing_indicator' => 'Vergleich laeuft...', 'comparing_indicator' => 'Vergleich läuft...',
'no_findings_all_clear' => 'Kein bestaetigter Drift im letzten Vergleich', 'no_findings_all_clear' => 'Kein bestätigter Drift im letzten Vergleich',
'no_findings_coverage_warnings' => 'Kein Drift angezeigt, aber Coverage limitiert diesen Vergleich', 'no_findings_coverage_warnings' => 'Kein Drift angezeigt, aber Coverage limitiert diesen Vergleich',
'no_findings_evidence_gaps' => 'Kein Drift angezeigt, aber Evidence Gaps muessen geprueft werden', 'no_findings_evidence_gaps' => 'Kein Drift angezeigt, aber Evidence Gaps müssen geprüft werden',
'no_findings_default' => 'Aktuell sind keine Drift Findings sichtbar', 'no_findings_default' => 'Aktuell sind keine Drift Findings sichtbar',
'coverage_warning_title' => 'Vergleich mit Warnungen abgeschlossen', 'coverage_warning_title' => 'Vergleich mit Warnungen abgeschlossen',
'coverage_unproven_body' => 'Coverage Proof fehlte oder war nicht lesbar. Findings wurden aus Sicherheitsgruenden unterdrueckt.', 'coverage_unproven_body' => 'Coverage Proof fehlte oder war nicht lesbar. Findings wurden aus Sicherheitsgründen unterdrückt.',
'coverage_incomplete_body' => 'Findings wurden fuer :count Policy :types wegen unvollstaendiger Coverage uebersprungen.', 'coverage_incomplete_body' => 'Findings wurden für :count Policy :types wegen unvollständiger Coverage übersprungen.',
'coverage_uncovered_label' => 'Nicht abgedeckt: :list', 'coverage_uncovered_label' => 'Nicht abgedeckt: :list',
'failed_title' => 'Vergleich fehlgeschlagen', 'failed_title' => 'Vergleich fehlgeschlagen',
'failed_body_default' => 'Der letzte Baseline-Vergleich ist fehlgeschlagen. Pruefen Sie die Run-Details oder wiederholen Sie ihn.', 'failed_body_default' => 'Der letzte Baseline-Vergleich ist fehlgeschlagen. Prüfen Sie die Run-Details oder wiederholen Sie ihn.',
'critical_drift_title' => 'Kritischer Drift erkannt', 'critical_drift_title' => 'Kritischer Drift erkannt',
'critical_drift_body' => 'Der aktuelle Tenant-Zustand weicht von Baseline :profile ab. :count High-Severity :findings erfordern sofortige Aufmerksamkeit.', 'critical_drift_body' => 'Der aktuelle Tenant-Zustand weicht von Baseline :profile ab. :count High-Severity :findings erfordern sofortige Aufmerksamkeit.',
'empty_no_tenant' => 'Kein Tenant ausgewaehlt', 'empty_no_tenant' => 'Kein Tenant ausgewählt',
'empty_no_assignment' => 'Keine Baseline zugewiesen', 'empty_no_assignment' => 'Keine Baseline zugewiesen',
'empty_no_snapshot' => 'Kein Snapshot verfuegbar', 'empty_no_snapshot' => 'Kein Snapshot verfügbar',
'findings_description' => 'Die Tenant-Konfiguration weicht vom Baseline-Profil ab.', 'findings_description' => 'Die Tenant-Konfiguration weicht vom Baseline-Profil ab.',
'rbac_summary_title' => 'Intune-RBAC-Rollendefinitionen', 'rbac_summary_title' => 'Intune-RBAC-Rollendefinitionen',
'rbac_summary_description' => 'Rollenzuweisungen sind in diesem Baseline-Compare-Release nicht enthalten.', 'rbac_summary_description' => 'Rollenzuweisungen sind in diesem Baseline-Compare-Release nicht enthalten.',
'rbac_summary_compared' => 'Verglichen', 'rbac_summary_compared' => 'Verglichen',
'rbac_summary_unchanged' => 'Unveraendert', 'rbac_summary_unchanged' => 'Unverändert',
'rbac_summary_modified' => 'Geaendert', 'rbac_summary_modified' => 'Geändert',
'rbac_summary_missing' => 'Fehlend', 'rbac_summary_missing' => 'Fehlend',
'rbac_summary_unexpected' => 'Unerwartet', 'rbac_summary_unexpected' => 'Unerwartet',
'no_drift_title' => 'Kein Drift erkannt', 'no_drift_title' => 'Kein Drift erkannt',
'no_drift_body' => 'Der letzte Vergleich hat keinen bestaetigten Drift fuer das zugewiesene Baseline-Profil aufgezeichnet.', 'no_drift_body' => 'Der letzte Vergleich hat keinen bestätigten Drift für das zugewiesene Baseline-Profil aufgezeichnet.',
'coverage_warnings_title' => 'Coverage-Warnungen', 'coverage_warnings_title' => 'Coverage-Warnungen',
'coverage_warnings_body' => 'Der letzte Vergleich wurde mit Warnungen abgeschlossen und erzeugte keine bestaetigten Drift Findings. Aktualisieren Sie Evidence, bevor Sie dies als Entwarnung werten.', 'coverage_warnings_body' => 'Der letzte Vergleich wurde mit Warnungen abgeschlossen und erzeugte keine bestätigten Drift Findings. Aktualisieren Sie Evidence, bevor Sie dies als Entwarnung werten.',
'idle_title' => 'Bereit zum Vergleich', 'idle_title' => 'Bereit zum Vergleich',
'button_view_run' => 'Run anzeigen', 'button_view_run' => 'Run anzeigen',
'button_view_failed_run' => 'Fehlgeschlagenen Run anzeigen', 'button_view_failed_run' => 'Fehlgeschlagenen Run anzeigen',
'button_view_findings' => 'Alle Findings anzeigen', 'button_view_findings' => 'Alle Findings anzeigen',
'button_review_last_run' => 'Letzten Run pruefen', 'button_review_last_run' => 'Letzten Run prüfen',
]; ];

View File

@ -12,20 +12,20 @@
], ],
'rbac' => [ 'rbac' => [
'detail_heading' => 'Intune-RBAC-Rollendefinitions-Drift', 'detail_heading' => 'Intune-RBAC-Rollendefinitions-Drift',
'detail_subheading' => 'Rollenzuweisungen sind nicht enthalten. RBAC-Restore wird nicht unterstuetzt.', 'detail_subheading' => 'Rollenzuweisungen sind nicht enthalten. RBAC-Restore wird nicht unterstützt.',
'metadata_only' => 'Nur Metadaten geaendert', 'metadata_only' => 'Nur Metadaten geändert',
'permission_change' => 'Berechtigung geaendert', 'permission_change' => 'Berechtigung geändert',
'missing' => 'Im aktuellen Tenant fehlend', 'missing' => 'Im aktuellen Tenant fehlend',
'unexpected' => 'Unerwartet im aktuellen Tenant', 'unexpected' => 'Unerwartet im aktuellen Tenant',
'changed_fields' => 'Geaenderte Felder', 'changed_fields' => 'Geänderte Felder',
'baseline' => 'Baseline', 'baseline' => 'Baseline',
'current' => 'Aktuell', 'current' => 'Aktuell',
'absent' => 'Nicht vorhanden', 'absent' => 'Nicht vorhanden',
'role_source' => 'Rollenquelle', 'role_source' => 'Rollenquelle',
'permission_blocks' => 'Berechtigungsbloecke', 'permission_blocks' => 'Berechtigungsblöcke',
'built_in' => 'Integriert', 'built_in' => 'Integriert',
'custom' => 'Benutzerdefiniert', 'custom' => 'Benutzerdefiniert',
'assignments_excluded' => 'Rollenzuweisungen sind in diesem Baseline-Compare-Release nicht enthalten.', 'assignments_excluded' => 'Rollenzuweisungen sind in diesem Baseline-Compare-Release nicht enthalten.',
'restore_unsupported' => 'RBAC-Restore wird in diesem Release nicht unterstuetzt.', 'restore_unsupported' => 'RBAC-Restore wird in diesem Release nicht unterstützt.',
], ],
]; ];

View File

@ -8,50 +8,50 @@
'de' => 'Deutsch', 'de' => 'Deutsch',
], ],
'source' => [ 'source' => [
'explicit_override' => 'Sitzungsueberschreibung', 'explicit_override' => 'Sitzungsüberschreibung',
'user_preference' => 'persoenliche Einstellung', 'user_preference' => 'persönliche Einstellung',
'workspace_default' => 'Workspace-Standard', 'workspace_default' => 'Workspace-Standard',
'workspace_override' => 'Workspace-Ueberschreibung', 'workspace_override' => 'Workspace-Überschreibung',
'system_default' => 'Systemstandard', 'system_default' => 'Systemstandard',
], ],
'shell' => [ 'shell' => [
'language' => 'Sprache', 'language' => 'Sprache',
'current_language' => 'Aktuelle Sprache', 'current_language' => 'Aktuelle Sprache',
'language_source' => 'Quelle: :source', 'language_source' => 'Quelle: :source',
'temporary_override' => 'Temporaere Ueberschreibung', 'temporary_override' => 'Temporäre Überschreibung',
'switch_language' => 'Sprache wechseln', 'switch_language' => 'Sprache wechseln',
'clear_override' => 'Geerbte Sprache verwenden', 'clear_override' => 'Geerbte Sprache verwenden',
'personal_preference' => 'Persoenliche Einstellung', 'personal_preference' => 'Persönliche Einstellung',
'save_preference' => 'Einstellung speichern', 'save_preference' => 'Einstellung speichern',
'inherit_workspace' => 'Workspace-Standard verwenden', 'inherit_workspace' => 'Workspace-Standard verwenden',
'workspace' => 'Workspace', 'workspace' => 'Workspace',
'choose_workspace' => 'Workspace auswaehlen', 'choose_workspace' => 'Workspace auswählen',
'switch_workspace' => 'Workspace wechseln', 'switch_workspace' => 'Workspace wechseln',
'workspace_home' => 'Workspace-Start', 'workspace_home' => 'Workspace-Start',
'tenant_scope' => 'Tenant-Kontext', 'tenant_scope' => 'Tenant-Kontext',
'select_tenant' => 'Tenant auswaehlen', 'select_tenant' => 'Tenant auswählen',
'selected_tenant' => 'Ausgewaehlter Tenant', 'selected_tenant' => 'Ausgewählter Tenant',
'no_tenant_selected' => 'Kein Tenant ausgewaehlt', 'no_tenant_selected' => 'Kein Tenant ausgewählt',
'switch_tenant' => 'Tenant wechseln', 'switch_tenant' => 'Tenant wechseln',
'clear_tenant_scope' => 'Tenant-Kontext loeschen', 'clear_tenant_scope' => 'Tenant-Kontext löschen',
'context_unavailable' => 'Kontext nicht verfuegbar', 'context_unavailable' => 'Kontext nicht verfügbar',
'context_unavailable_workspace' => 'Der angeforderte Kontext konnte nicht wiederhergestellt werden. Die Shell zeigt stattdessen einen gueltigen Workspace-Kontext.', 'context_unavailable_workspace' => 'Der angeforderte Kontext konnte nicht wiederhergestellt werden. Die Shell zeigt stattdessen einen gültigen Workspace-Kontext.',
'context_unavailable_no_workspace' => 'Waehlen Sie einen Workspace aus, um mit einem gueltigen Admin-Kontext fortzufahren.', 'context_unavailable_no_workspace' => 'Wählen Sie einen Workspace aus, um mit einem gültigen Admin-Kontext fortzufahren.',
'no_active_tenants' => 'In diesem Workspace sind keine aktiven Tenants fuer den Standardbetrieb verfuegbar.', 'no_active_tenants' => 'In diesem Workspace sind keine aktiven Tenants für den Standardbetrieb verfügbar.',
'view_managed_tenants' => 'Managed Tenants anzeigen', 'view_managed_tenants' => 'Managed Tenants anzeigen',
'workspace_wide_available' => 'Kein Tenant ausgewaehlt. Workspace-weite Seiten bleiben verfuegbar; ein Tenant setzt nur den normalen aktiven Betriebskontext.', 'workspace_wide_available' => 'Kein Tenant ausgewählt. Workspace-weite Seiten bleiben verfügbar; ein Tenant setzt nur den normalen aktiven Betriebskontext.',
'search_tenants' => 'Tenants suchen...', 'search_tenants' => 'Tenants suchen...',
'choose_workspace_first' => 'Waehlen Sie zuerst einen Workspace aus.', 'choose_workspace_first' => 'Wählen Sie zuerst einen Workspace aus.',
], ],
'workspace' => [ 'workspace' => [
'title' => 'Workspace-Einstellungen', 'title' => 'Workspace-Einstellungen',
'save' => 'Speichern', 'save' => 'Speichern',
'reset' => 'Zuruecksetzen', 'reset' => 'Zurücksetzen',
'no_manage_permission' => 'Sie haben keine Berechtigung zum Verwalten der Workspace-Einstellungen.', 'no_manage_permission' => 'Sie haben keine Berechtigung zum Verwalten der Workspace-Einstellungen.',
'no_workspace_override' => 'Keine Workspace-Ueberschreibung zum Zuruecksetzen vorhanden.', 'no_workspace_override' => 'Keine Workspace-Überschreibung zum Zurücksetzen vorhanden.',
'last_modified_by' => ':description - Zuletzt geaendert von :user, :time.', 'last_modified_by' => ':description - Zuletzt geändert von :user, :time.',
'section' => 'Lokalisierung', 'section' => 'Lokalisierung',
'section_description' => 'Workspace-Standard fuer Benutzer ohne persoenliche Spracheinstellung.', 'section_description' => 'Workspace-Standard für Benutzer ohne persönliche Spracheinstellung.',
'default_locale_label' => 'Standardsprache', 'default_locale_label' => 'Standardsprache',
'default_locale_placeholder' => 'Nicht gesetzt (verwendet Systemstandard)', 'default_locale_placeholder' => 'Nicht gesetzt (verwendet Systemstandard)',
'default_locale_helper_unset' => 'Nicht gesetzt. Effektive Sprache: :locale (:source).', 'default_locale_helper_unset' => 'Nicht gesetzt. Effektive Sprache: :locale (:source).',
@ -79,7 +79,7 @@
'system_title' => 'System-Dashboard', 'system_title' => 'System-Dashboard',
'request_support' => 'Support anfragen', 'request_support' => 'Support anfragen',
'support_request_heading' => 'Support anfragen', 'support_request_heading' => 'Support anfragen',
'support_request_description' => 'Teilen Sie eine kurze Zusammenfassung. TenantAtlas fuegt redaktionell bereinigten Kontext aus bestehenden Datensaetzen hinzu.', 'support_request_description' => 'Teilen Sie eine kurze Zusammenfassung. TenantAtlas fügt redaktionell bereinigten Kontext aus bestehenden Datensätzen hinzu.',
'submit_request' => 'Anfrage senden', 'submit_request' => 'Anfrage senden',
'included_context' => 'Enthaltener Kontext', 'included_context' => 'Enthaltener Kontext',
'severity' => 'Schweregrad', 'severity' => 'Schweregrad',
@ -88,10 +88,10 @@
'contact_name' => 'Kontaktname', 'contact_name' => 'Kontaktname',
'contact_email' => 'Kontakt-E-Mail', 'contact_email' => 'Kontakt-E-Mail',
'support_request_submitted' => 'Supportanfrage gesendet', 'support_request_submitted' => 'Supportanfrage gesendet',
'open_support_diagnostics' => 'Supportdiagnosen oeffnen', 'open_support_diagnostics' => 'Supportdiagnosen öffnen',
'support_diagnostics' => 'Supportdiagnosen', 'support_diagnostics' => 'Supportdiagnosen',
'support_diagnostics_description' => 'Redaktionell bereinigter Tenant-Kontext aus bestehenden Datensaetzen.', 'support_diagnostics_description' => 'Redaktionell bereinigter Tenant-Kontext aus bestehenden Datensätzen.',
'close' => 'Schliessen', 'close' => 'Schließen',
'time_window' => 'Zeitfenster', 'time_window' => 'Zeitfenster',
'window' => 'Fenster', 'window' => 'Fenster',
'enter_break_glass' => 'Break-Glass-Modus aktivieren', 'enter_break_glass' => 'Break-Glass-Modus aktivieren',
@ -104,36 +104,36 @@
'customer_reviews' => 'Kundenreviews', 'customer_reviews' => 'Kundenreviews',
'customer_review_workspace' => 'Kundenreview-Workspace', 'customer_review_workspace' => 'Kundenreview-Workspace',
'customer_safe_review_workspace' => 'Kundensicherer Review-Workspace', 'customer_safe_review_workspace' => 'Kundensicherer Review-Workspace',
'customer_workspace_intro' => 'Pruefen Sie den zuletzt veroeffentlichten kundensicheren Status fuer jeden berechtigten Tenant, ohne den aktuellen Workspace-Kontext zu verlassen.', 'customer_workspace_intro' => 'Prüfen Sie den zuletzt veröffentlichten kundensicheren Status für jeden berechtigten Tenant, ohne den aktuellen Workspace-Kontext zu verlassen.',
'customer_workspace_canonical_note' => 'Eine Zeile oeffnet die bestehende Tenant-Review-Detailseite, damit Evidence, Review-Packs und auditfaehige Nachweise auf ihren kanonischen tenantbezogenen Oberflaechen bleiben.', 'customer_workspace_canonical_note' => 'Eine Zeile öffnet die bestehende Tenant-Review-Detailseite, damit Evidence, Review-Packs und auditfähige Nachweise auf ihren kanonischen tenantbezogenen Oberflächen bleiben.',
'reviews' => 'Reviews', 'reviews' => 'Reviews',
'clear_filters' => 'Filter loeschen', 'clear_filters' => 'Filter löschen',
'tenant' => 'Tenant', 'tenant' => 'Tenant',
'latest_review' => 'Letztes Review', 'latest_review' => 'Letztes Review',
'key_findings' => 'Wichtige Findings', 'key_findings' => 'Wichtige Findings',
'accepted_risks' => 'Akzeptierte Risiken', 'accepted_risks' => 'Akzeptierte Risiken',
'published' => 'Veroeffentlicht', 'published' => 'Veröffentlicht',
'review_pack' => 'Review-Pack', 'review_pack' => 'Review-Pack',
'open_latest_review' => 'Letztes Review oeffnen', 'open_latest_review' => 'Letztes Review öffnen',
'download_review_pack' => 'Review-Pack herunterladen', 'download_review_pack' => 'Review-Pack herunterladen',
'no_entitled_tenants' => 'Keine berechtigten Tenants passen zu dieser Ansicht', 'no_entitled_tenants' => 'Keine berechtigten Tenants passen zu dieser Ansicht',
'clear_filters_description' => 'Loeschen Sie die aktuellen Filter, um zum vollstaendigen Kundenreview-Workspace fuer Ihre berechtigten Tenants zurueckzukehren.', 'clear_filters_description' => 'Löschen Sie die aktuellen Filter, um zum vollständigen Kundenreview-Workspace für Ihre berechtigten Tenants zurückzukehren.',
'adjust_filters_description' => 'Passen Sie die Filter an, um zum vollstaendigen Kundenreview-Workspace fuer Ihre berechtigten Tenants zurueckzukehren.', 'adjust_filters_description' => 'Passen Sie die Filter an, um zum vollständigen Kundenreview-Workspace für Ihre berechtigten Tenants zurückzukehren.',
'no_published_review' => 'Kein veroeffentlichtes Review', 'no_published_review' => 'Kein veröffentlichtes Review',
'no_published_review_available' => 'Noch kein veroeffentlichtes Review verfuegbar', 'no_published_review_available' => 'Noch kein veröffentlichtes Review verfügbar',
'no_findings_recorded' => 'Im veroeffentlichten Review sind keine Findings erfasst.', 'no_findings_recorded' => 'Im veröffentlichten Review sind keine Findings erfasst.',
'findings_count_summary' => ':count Findings im veroeffentlichten Review zusammengefasst.', 'findings_count_summary' => ':count Findings im veröffentlichten Review zusammengefasst.',
'findings_count_with_outcomes' => ':count Findings. Terminale Ergebnisse: :outcomes.', 'findings_count_with_outcomes' => ':count Findings. Terminale Ergebnisse: :outcomes.',
'no_accepted_risks_recorded' => 'Keine akzeptierten Risiken erfasst.', 'no_accepted_risks_recorded' => 'Keine akzeptierten Risiken erfasst.',
'accepted_risks_need_follow_up' => ':warnings akzeptierte Risiken benoetigen Governance-Nacharbeit (:total gesamt).', 'accepted_risks_need_follow_up' => ':warnings akzeptierte Risiken benötigen Governance-Nacharbeit (:total gesamt).',
'accepted_risks_governed' => ':count akzeptierte Risiken sind governed.', 'accepted_risks_governed' => ':count akzeptierte Risiken sind governed.',
'accepted_risks_on_record' => ':count akzeptierte Risiken sind erfasst.', 'accepted_risks_on_record' => ':count akzeptierte Risiken sind erfasst.',
'unavailable' => 'Nicht verfuegbar', 'unavailable' => 'Nicht verfügbar',
'available' => 'Verfuegbar', 'available' => 'Verfügbar',
'outcome_summary' => 'Ergebniszusammenfassung', 'outcome_summary' => 'Ergebniszusammenfassung',
'review' => 'Review', 'review' => 'Review',
'review_date' => 'Review-Datum', 'review_date' => 'Review-Datum',
'completeness' => 'Vollstaendigkeit', 'completeness' => 'Vollständigkeit',
'evidence_snapshot' => 'Evidence-Snapshot', 'evidence_snapshot' => 'Evidence-Snapshot',
'current_export' => 'Aktueller Export', 'current_export' => 'Aktueller Export',
'executive_posture' => 'Executive-Status', 'executive_posture' => 'Executive-Status',
@ -142,42 +142,42 @@
'export_executive_pack' => 'Executive-Pack exportieren', 'export_executive_pack' => 'Executive-Pack exportieren',
'outcome' => 'Ergebnis', 'outcome' => 'Ergebnis',
'export' => 'Export', 'export' => 'Export',
'next_step' => 'Naechster Schritt', 'next_step' => 'Nächster Schritt',
'no_tenant_reviews_yet' => 'Noch keine Tenant-Reviews', 'no_tenant_reviews_yet' => 'Noch keine Tenant-Reviews',
'create_first_review_description' => 'Erstellen Sie das erste Review aus einem verankerten Evidence-Snapshot, um die wiederkehrende Review-Historie fuer diesen Tenant zu starten.', 'create_first_review_description' => 'Erstellen Sie das erste Review aus einem verankerten Evidence-Snapshot, um die wiederkehrende Review-Historie für diesen Tenant zu starten.',
'create_first_review' => 'Erstes Review erstellen', 'create_first_review' => 'Erstes Review erstellen',
'create_review' => 'Review erstellen', 'create_review' => 'Review erstellen',
'evidence_basis' => 'Evidence-Basis', 'evidence_basis' => 'Evidence-Basis',
'evidence_basis_helper' => 'Waehlen Sie den verankerten Evidence-Snapshot fuer dieses Review.', 'evidence_basis_helper' => 'Wählen Sie den verankerten Evidence-Snapshot für dieses Review.',
'unable_create_missing_context' => 'Review kann nicht erstellt werden - Kontext fehlt.', 'unable_create_missing_context' => 'Review kann nicht erstellt werden - Kontext fehlt.',
'select_valid_evidence_snapshot' => 'Waehlen Sie einen gueltigen Evidence-Snapshot aus.', 'select_valid_evidence_snapshot' => 'Wählen Sie einen gültigen Evidence-Snapshot aus.',
'unable_create_review' => 'Review kann nicht erstellt werden', 'unable_create_review' => 'Review kann nicht erstellt werden',
'review_already_available' => 'Review bereits verfuegbar', 'review_already_available' => 'Review bereits verfügbar',
'review_already_available_body' => 'Ein passendes veraenderbares Review ist fuer diese Evidence-Basis bereits vorhanden.', 'review_already_available_body' => 'Ein passendes veränderbares Review ist für diese Evidence-Basis bereits vorhanden.',
'view_review' => 'Review anzeigen', 'view_review' => 'Review anzeigen',
'open_operation' => 'Operation oeffnen', 'open_operation' => 'Operation öffnen',
'review_composing_background' => 'Das Review wird im Hintergrund zusammengestellt.', 'review_composing_background' => 'Das Review wird im Hintergrund zusammengestellt.',
'unable_export_missing_context' => 'Review kann nicht exportiert werden - Kontext fehlt.', 'unable_export_missing_context' => 'Review kann nicht exportiert werden - Kontext fehlt.',
'export_already_queued_body' => 'Ein Executive-Pack-Export ist fuer dieses Review bereits eingereiht oder laeuft.', 'export_already_queued_body' => 'Ein Executive-Pack-Export ist für dieses Review bereits eingereiht oder läuft.',
'executive_pack_export_unavailable' => 'Executive-Pack-Export nicht verfuegbar', 'executive_pack_export_unavailable' => 'Executive-Pack-Export nicht verfügbar',
'unable_export_executive_pack' => 'Executive-Pack kann nicht exportiert werden', 'unable_export_executive_pack' => 'Executive-Pack kann nicht exportiert werden',
'executive_pack_already_available' => 'Executive-Pack bereits verfuegbar', 'executive_pack_already_available' => 'Executive-Pack bereits verfügbar',
'executive_pack_already_available_body' => 'Ein passendes Executive-Pack ist fuer dieses Review bereits vorhanden.', 'executive_pack_already_available_body' => 'Ein passendes Executive-Pack ist für dieses Review bereits vorhanden.',
'view_pack' => 'Pack anzeigen', 'view_pack' => 'Pack anzeigen',
'executive_pack_generating_background' => 'Das Executive-Pack wird im Hintergrund erstellt.', 'executive_pack_generating_background' => 'Das Executive-Pack wird im Hintergrund erstellt.',
'review_explanation' => 'Review-Erklaerung', 'review_explanation' => 'Review-Erklärung',
'reason_owner' => 'Reason Owner', 'reason_owner' => 'Reason Owner',
'platform_core' => 'Platform Core', 'platform_core' => 'Platform Core',
'platform_reason_family' => 'Platform-Reason-Familie', 'platform_reason_family' => 'Platform-Reason-Familie',
'compatibility' => 'Kompatibilitaet', 'compatibility' => 'Kompatibilität',
'highlights' => 'Highlights', 'highlights' => 'Highlights',
'next_actions' => 'Naechste Aktionen', 'next_actions' => 'Nächste Aktionen',
'related_context' => 'Verwandter Kontext', 'related_context' => 'Verwandter Kontext',
'publication_readiness' => 'Veroeffentlichungsreife', 'publication_readiness' => 'Veröffentlichungsreife',
'ready_for_publication' => 'Dieses Review ist bereit fuer Veroeffentlichung und Executive-Pack-Export.', 'ready_for_publication' => 'Dieses Review ist bereit für Veröffentlichung und Executive-Pack-Export.',
'internal_only' => 'Dieses Review ist aktuell nur fuer interne Nutzung geeignet.', 'internal_only' => 'Dieses Review ist aktuell nur für interne Nutzung geeignet.',
'needs_follow_up' => 'Dieses Review benoetigt vor der Veroeffentlichung noch Nacharbeit.', 'needs_follow_up' => 'Dieses Review benötigt vor der Veröffentlichung noch Nacharbeit.',
'key_entries' => 'Wichtige Eintraege', 'key_entries' => 'Wichtige Einträge',
'entry' => 'Eintrag', 'entry' => 'Eintrag',
'follow_up' => 'Follow-up', 'follow_up' => 'Follow-up',
'diagnostics' => 'Diagnosen', 'diagnostics' => 'Diagnosen',
@ -195,36 +195,36 @@
'terminal_outcomes' => 'Terminale Ergebnisse', 'terminal_outcomes' => 'Terminale Ergebnisse',
'pending' => 'Ausstehend', 'pending' => 'Ausstehend',
'operation' => 'Operation', 'operation' => 'Operation',
'operation_description' => 'Pruefen Sie die letzte Review-Zusammenstellung oder den Aktualisierungslauf.', 'operation_description' => 'Prüfen Sie die letzte Review-Zusammenstellung oder den Aktualisierungslauf.',
'executive_pack' => 'Executive-Pack', 'executive_pack' => 'Executive-Pack',
'view_executive_pack' => 'Executive-Pack anzeigen', 'view_executive_pack' => 'Executive-Pack anzeigen',
'executive_pack_description' => 'Oeffnet den aktuellen Export, der zu diesem Review gehoert.', 'executive_pack_description' => 'Öffnet den aktuellen Export, der zu diesem Review gehört.',
'customer_workspace' => 'Kunden-Workspace', 'customer_workspace' => 'Kunden-Workspace',
'open_customer_workspace' => 'Kunden-Workspace oeffnen', 'open_customer_workspace' => 'Kunden-Workspace öffnen',
'customer_workspace_description' => 'Oeffnet den kundensicheren Review-Workspace mit Filter auf diesen Tenant.', 'customer_workspace_description' => 'Öffnet den kundensicheren Review-Workspace mit Filter auf diesen Tenant.',
'view_evidence_snapshot' => 'Evidence-Snapshot anzeigen', 'view_evidence_snapshot' => 'Evidence-Snapshot anzeigen',
'evidence_snapshot_description' => 'Zur Evidence-Basis hinter diesem Review zurueckkehren.', 'evidence_snapshot_description' => 'Zur Evidence-Basis hinter diesem Review zurückkehren.',
], ],
'findings' => [ 'findings' => [
'all' => 'Alle', 'all' => 'Alle',
'needs_action' => 'Handlungsbedarf', 'needs_action' => 'Handlungsbedarf',
'overdue' => 'Ueberfaellig', 'overdue' => 'Überfällig',
'risk_accepted' => 'Risiko akzeptiert', 'risk_accepted' => 'Risiko akzeptiert',
'resolved' => 'Geloest', 'resolved' => 'Gelöst',
'actions' => 'Aktionen', 'actions' => 'Aktionen',
'open_approval_queue' => 'Freigabewarteschlange oeffnen', 'open_approval_queue' => 'Freigabewarteschlange öffnen',
], ],
'notifications' => [ 'notifications' => [
'locale_override_saved' => 'Sprachueberschreibung angewendet.', 'locale_override_saved' => 'Sprachüberschreibung angewendet.',
'locale_override_cleared' => 'Sprachueberschreibung geloescht.', 'locale_override_cleared' => 'Sprachüberschreibung gelöscht.',
'user_preference_saved' => 'Spracheinstellung gespeichert.', 'user_preference_saved' => 'Spracheinstellung gespeichert.',
'user_preference_cleared' => 'Spracheinstellung geloescht.', 'user_preference_cleared' => 'Spracheinstellung gelöscht.',
'workspace_settings_saved' => 'Workspace-Einstellungen gespeichert', 'workspace_settings_saved' => 'Workspace-Einstellungen gespeichert',
'workspace_settings_unchanged' => 'Keine Einstellungsaenderungen zu speichern', 'workspace_settings_unchanged' => 'Keine Einstellungsänderungen zu speichern',
'workspace_setting_reset' => 'Workspace-Einstellung auf Standard zurueckgesetzt', 'workspace_setting_reset' => 'Workspace-Einstellung auf Standard zurückgesetzt',
'setting_already_default' => 'Einstellung verwendet bereits den Standard', 'setting_already_default' => 'Einstellung verwendet bereits den Standard',
], ],
'validation' => [ 'validation' => [
'unsupported_locale' => 'Waehlen Sie eine unterstuetzte Sprache.', 'unsupported_locale' => 'Wählen Sie eine unterstützte Sprache.',
], ],
]; ];

View File

@ -55,15 +55,16 @@ class="inline-flex items-center gap-1.5 rounded-r-lg px-2 py-1.5 text-sm transit
<label class="text-xs font-semibold uppercase tracking-wider text-gray-400 dark:text-gray-500" for="tenantpilot-locale-override-{{ $plane }}"> <label class="text-xs font-semibold uppercase tracking-wider text-gray-400 dark:text-gray-500" for="tenantpilot-locale-override-{{ $plane }}">
{{ __('localization.shell.temporary_override') }} {{ __('localization.shell.temporary_override') }}
</label> </label>
<select <x-filament::input.wrapper class="w-full">
<x-filament::input.select
id="tenantpilot-locale-override-{{ $plane }}" id="tenantpilot-locale-override-{{ $plane }}"
name="locale" name="locale"
class="fi-input fi-select-input w-full"
> >
@foreach ($localeOptions as $locale => $label) @foreach ($localeOptions as $locale => $label)
<option value="{{ $locale }}" @selected($currentLocale === $locale)>{{ $label }}</option> <option value="{{ $locale }}" @selected($currentLocale === $locale)>{{ $label }}</option>
@endforeach @endforeach
</select> </x-filament::input.select>
</x-filament::input.wrapper>
<button type="submit" class="w-full rounded-lg bg-primary-600 px-3 py-1.5 text-sm font-medium text-white transition hover:bg-primary-500"> <button type="submit" class="w-full rounded-lg bg-primary-600 px-3 py-1.5 text-sm font-medium text-white transition hover:bg-primary-500">
{{ __('localization.shell.switch_language') }} {{ __('localization.shell.switch_language') }}
</button> </button>
@ -87,16 +88,17 @@ class="fi-input fi-select-input w-full"
<label class="text-xs font-semibold uppercase tracking-wider text-gray-400 dark:text-gray-500" for="tenantpilot-locale-preference-{{ $plane }}"> <label class="text-xs font-semibold uppercase tracking-wider text-gray-400 dark:text-gray-500" for="tenantpilot-locale-preference-{{ $plane }}">
{{ __('localization.shell.personal_preference') }} {{ __('localization.shell.personal_preference') }}
</label> </label>
<select <x-filament::input.wrapper class="w-full">
<x-filament::input.select
id="tenantpilot-locale-preference-{{ $plane }}" id="tenantpilot-locale-preference-{{ $plane }}"
name="preferred_locale" name="preferred_locale"
class="fi-input fi-select-input w-full"
> >
<option value="" @selected($preferredLocale === null)>{{ __('localization.shell.inherit_workspace') }}</option> <option value="" @selected($preferredLocale === null)>{{ __('localization.shell.inherit_workspace') }}</option>
@foreach ($localeOptions as $locale => $label) @foreach ($localeOptions as $locale => $label)
<option value="{{ $locale }}" @selected($preferredLocale === $locale)>{{ $label }}</option> <option value="{{ $locale }}" @selected($preferredLocale === $locale)>{{ $label }}</option>
@endforeach @endforeach
</select> </x-filament::input.select>
</x-filament::input.wrapper>
<button type="submit" class="w-full rounded-lg px-3 py-1.5 text-sm font-medium text-primary-600 transition hover:bg-primary-50 hover:text-primary-500 dark:text-primary-400 dark:hover:bg-primary-500/10 dark:hover:text-primary-300"> <button type="submit" class="w-full rounded-lg px-3 py-1.5 text-sm font-medium text-primary-600 transition hover:bg-primary-50 hover:text-primary-500 dark:text-primary-400 dark:hover:bg-primary-500/10 dark:hover:text-primary-300">
{{ __('localization.shell.save_preference') }} {{ __('localization.shell.save_preference') }}
</button> </button>

View File

@ -34,7 +34,7 @@
->withSession([WorkspaceContext::SESSION_KEY => (int) $workspace->getKey()]) ->withSession([WorkspaceContext::SESSION_KEY => (int) $workspace->getKey()])
->post(route('localization.override.update'), ['locale' => 'de']) ->post(route('localization.override.update'), ['locale' => 'de'])
->assertRedirect() ->assertRedirect()
->assertSessionHas('status', 'Sprachueberschreibung angewendet.'); ->assertSessionHas('status', 'Sprachüberschreibung angewendet.');
$this->actingAs($user) $this->actingAs($user)
->withSession([ ->withSession([
@ -43,5 +43,5 @@
]) ])
->delete(route('localization.override.clear')) ->delete(route('localization.override.clear'))
->assertRedirect() ->assertRedirect()
->assertSessionHas('status', 'Sprachueberschreibung geloescht.'); ->assertSessionHas('status', 'Sprachüberschreibung gelöscht.');
}); });