From fe160420c16ef833d1b9a3a67fafb20f493ab95f Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Fri, 21 Nov 2025 11:47:02 +0100 Subject: [PATCH] Update German localization for member transfer template placeholder and enhance MemberTransferSettingsView to improve error handling for translation availability --- frontend/src/i18n/locales/de.json | 2 +- .../src/views/MemberTransferSettingsView.vue | 34 +++++++++++++++---- 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/frontend/src/i18n/locales/de.json b/frontend/src/i18n/locales/de.json index f07f8c2..c724d9a 100644 --- a/frontend/src/i18n/locales/de.json +++ b/frontend/src/i18n/locales/de.json @@ -882,7 +882,7 @@ "bulkMode": "Bulk-Import-Modus (alle Mitglieder auf einmal übertragen)", "bulkModeHint": "Wenn aktiviert, werden alle Mitglieder in einem Request als Array übertragen.", "importTemplate": "Template aus vollständigem Beispiel importieren", - "importTemplatePlaceholder": "Fügen Sie hier ein vollständiges Beispiel-Template ein, z.B.:\n{\n \"membersArray\": [\n {\n \"vorname\": \"Max\",\n \"nachname\": \"Mustermann\",\n \"email\": \"max@example.com\"\n }\n ]\n}", + "importTemplatePlaceholder": "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}", "analyzeAndImport": "Template analysieren und importieren", "importTemplateHint": "Fügen Sie ein vollständiges Beispiel-Template (mit Beispiel-Mitgliedern) ein. Das System erkennt automatisch das Mitglied-Template und das Bulk-Wrapper-Template.", "bulkWrapperTemplate": "Bulk-Wrapper-Template (optional)", diff --git a/frontend/src/views/MemberTransferSettingsView.vue b/frontend/src/views/MemberTransferSettingsView.vue index 29fd0e7..26874e9 100644 --- a/frontend/src/views/MemberTransferSettingsView.vue +++ b/frontend/src/views/MemberTransferSettingsView.vue @@ -366,18 +366,40 @@ address={{address}}`; }, bulkWrapperDescriptionText() { - // Ersetze {0} durch {{members}} im übersetzten Text - return this.$t('memberTransfer.bulkWrapperDescription').replace('{0}', '{{members}}'); + // Hole den Text aus der Übersetzung und ersetze den Platzhalter + // Verwende try-catch, falls $t noch nicht verfügbar ist + try { + const text = this.$t('memberTransfer.bulkWrapperDescription'); + // Ersetze {0} durch {{members}}, aber escapen wir die geschweiften Klammern + return text.replace('{0}', '{{members}}'); + } catch (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.'; + } }, templateDescriptionText() { - // Ersetze {0} durch {{firstName}} im übersetzten Text - return this.$t('memberTransfer.templateDescription').replace('{0}', '{{firstName}}'); + // Hole den Text aus der Übersetzung und ersetze den Platzhalter + // Verwende try-catch, falls $t noch nicht verfügbar ist + try { + const text = this.$t('memberTransfer.templateDescription'); + // Ersetze {0} durch {{firstName}}, aber escapen wir die geschweiften Klammern + return text.replace('{0}', '{{firstName}}'); + } catch (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.'; + } }, importTemplatePlaceholderText() { - // Verwende den Placeholder-Text direkt, um Probleme mit vue-i18n Platzhaltern zu vermeiden - 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}`; + // Hole den Text aus der Übersetzung + // Verwende try-catch, falls $t noch nicht verfügbar ist + try { + return this.$t('memberTransfer.importTemplatePlaceholder'); + } catch (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}`; + } }, templatePlaceholder() {