From 938ce4d9911a56df3f094f5d1155735d7fc845fd Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Fri, 21 Nov 2025 11:58:47 +0100 Subject: [PATCH] Improve error handling in MemberTransferSettingsView for translation availability, ensuring fallback text is provided when localization is unavailable. Update comments for clarity and maintain consistent localization handling across bulk wrapper, template, and import template placeholder texts. --- .../src/views/MemberTransferSettingsView.vue | 39 ++++++++++++++----- 1 file changed, 30 insertions(+), 9 deletions(-) diff --git a/frontend/src/views/MemberTransferSettingsView.vue b/frontend/src/views/MemberTransferSettingsView.vue index 1ae68eb..0344adf 100644 --- a/frontend/src/views/MemberTransferSettingsView.vue +++ b/frontend/src/views/MemberTransferSettingsView.vue @@ -367,12 +367,19 @@ address={{address}}`; bulkWrapperDescriptionText() { // Hole den Text aus der Übersetzung und ersetze den Platzhalter - // Verwende try-catch, falls $t noch nicht verfügbar ist + // Prüfe, ob $t verfügbar ist, bevor wir es verwenden + if (!this.$t || typeof this.$t !== 'function') { + return 'Optional können Sie die äußere Struktur definieren, in die die Mitglieder-Array eingefügt wird. Verwenden Sie {{members}} als Platzhalter für das Array der Mitglieder.'; + } try { const text = this.$t('memberTransfer.bulkWrapperDescription'); - // Ersetze {0} durch {{members}}, aber escapen wir die geschweiften Klammern - return text.replace('{0}', '{{members}}'); + if (typeof text === 'string') { + // Ersetze {0} durch {{members}} + return text.replace('{0}', '{{members}}'); + } + return 'Optional können Sie die äußere Struktur definieren, in die die Mitglieder-Array eingefügt wird. Verwenden Sie {{members}} als Platzhalter für das Array der Mitglieder.'; } catch (e) { + console.warn('Fehler beim Laden der Übersetzung für bulkWrapperDescription:', e); // Fallback, falls $t nicht verfügbar ist return 'Optional können Sie die äußere Struktur definieren, in die die Mitglieder-Array eingefügt wird. Verwenden Sie {{members}} als Platzhalter für das Array der Mitglieder.'; } @@ -380,12 +387,19 @@ address={{address}}`; templateDescriptionText() { // Hole den Text aus der Übersetzung und ersetze den Platzhalter - // Verwende try-catch, falls $t noch nicht verfügbar ist + // Prüfe, ob $t verfügbar ist, bevor wir es verwenden + if (!this.$t || typeof this.$t !== 'function') { + return 'Das Template definiert das Format, in dem die Mitgliederdaten an das externe System übertragen werden. Verwenden Sie Platzhalter wie {{firstName}}, um die Daten automatisch zu ersetzen.'; + } try { const text = this.$t('memberTransfer.templateDescription'); - // Ersetze {0} durch {{firstName}}, aber escapen wir die geschweiften Klammern - return text.replace('{0}', '{{firstName}}'); + if (typeof text === 'string') { + // Ersetze {0} durch {{firstName}} + return text.replace('{0}', '{{firstName}}'); + } + return 'Das Template definiert das Format, in dem die Mitgliederdaten an das externe System übertragen werden. Verwenden Sie Platzhalter wie {{firstName}}, um die Daten automatisch zu ersetzen.'; } catch (e) { + console.warn('Fehler beim Laden der Übersetzung für templateDescription:', e); // Fallback, falls $t nicht verfügbar ist return 'Das Template definiert das Format, in dem die Mitgliederdaten an das externe System übertragen werden. Verwenden Sie Platzhalter wie {{firstName}}, um die Daten automatisch zu ersetzen.'; } @@ -393,12 +407,19 @@ address={{address}}`; importTemplatePlaceholderText() { // Hole den Text aus der Übersetzung und ersetze die Platzhalter - // Verwende try-catch, falls $t noch nicht verfügbar ist + // Prüfe, ob $t verfügbar ist, bevor wir es verwenden + if (!this.$t || typeof this.$t !== 'function') { + return `Fügen Sie hier ein vollständiges Beispiel-Template ein, z.B.:\n{\n "members": [\n {\n "firstName": "Max",\n "lastName": "Mustermann",\n "email": "max@example.com"\n }\n ]\n}`; + } try { const text = this.$t('memberTransfer.importTemplatePlaceholder'); - // Ersetze die Platzhalter durch geschweifte Klammern - return text.replace(/__BRACE_OPEN__/g, '{').replace(/__BRACE_CLOSE__/g, '}'); + if (typeof text === 'string') { + // Ersetze die Platzhalter durch geschweifte Klammern + return text.replace(/__BRACE_OPEN__/g, '{').replace(/__BRACE_CLOSE__/g, '}'); + } + return `Fügen Sie hier ein vollständiges Beispiel-Template ein, z.B.:\n{\n "members": [\n {\n "firstName": "Max",\n "lastName": "Mustermann",\n "email": "max@example.com"\n }\n ]\n}`; } catch (e) { + console.warn('Fehler beim Laden der Übersetzung für importTemplatePlaceholder:', e); // Fallback, falls $t nicht verfügbar ist return `Fügen Sie hier ein vollständiges Beispiel-Template ein, z.B.:\n{\n "members": [\n {\n "firstName": "Max",\n "lastName": "Mustermann",\n "email": "max@example.com"\n }\n ]\n}`; }