From ef8364f05db3e9f16cce79b22a1e81ed7b8f256f Mon Sep 17 00:00:00 2001 From: Till JS Date: Tue, 19 May 2026 16:09:00 +0200 Subject: [PATCH] =?UTF-8?q?i18n:=20api.error.*=20in=20zitare-native=20(11?= =?UTF-8?q?=20codes=20=C3=97=205=20Locales)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Parallel zu mukke-native: 11 server-side error codes aus zitare-api/ routes/quotes.ts werden zur Build-Zeit in alle 5 Locales kompiliert und via Bundle.localizedString(forKey:) im SubmitQuoteView-Error- Banner gelesen. Codes: author_not_found, author_resolution_failed, duplicate, invalid_json, invalid_status, no_changes, not_found, not_open, revision_not_found, unauthorized, validation_failed. iOS BUILD SUCCEEDED. Co-Authored-By: Claude Opus 4.7 (1M context) --- Sources/Resources/Localizable.xcstrings | 110 ++++++++++++++++++++++++ 1 file changed, 110 insertions(+) diff --git a/Sources/Resources/Localizable.xcstrings b/Sources/Resources/Localizable.xcstrings index eb735e4..b7c082e 100644 --- a/Sources/Resources/Localizable.xcstrings +++ b/Sources/Resources/Localizable.xcstrings @@ -1,6 +1,116 @@ { "sourceLanguage" : "de", "strings" : { + "api.error.author_not_found" : { + "extractionState" : "manual", + "localizations" : { + "de" : { "stringUnit" : { "state" : "translated", "value" : "Autor:in nicht gefunden." } }, + "en" : { "stringUnit" : { "state" : "translated", "value" : "Author not found." } }, + "fr" : { "stringUnit" : { "state" : "translated", "value" : "Auteur·rice introuvable." } }, + "es" : { "stringUnit" : { "state" : "translated", "value" : "Autor/a no encontrado/a." } }, + "it" : { "stringUnit" : { "state" : "translated", "value" : "Autore/autrice non trovato/a." } } + } + }, + "api.error.author_resolution_failed" : { + "extractionState" : "manual", + "localizations" : { + "de" : { "stringUnit" : { "state" : "translated", "value" : "Autor:in konnte nicht angelegt werden." } }, + "en" : { "stringUnit" : { "state" : "translated", "value" : "Author could not be created." } }, + "fr" : { "stringUnit" : { "state" : "translated", "value" : "L'auteur·rice n'a pas pu être créé·e." } }, + "es" : { "stringUnit" : { "state" : "translated", "value" : "No se pudo crear el autor/a." } }, + "it" : { "stringUnit" : { "state" : "translated", "value" : "Impossibile creare l'autore/autrice." } } + } + }, + "api.error.duplicate" : { + "extractionState" : "manual", + "localizations" : { + "de" : { "stringUnit" : { "state" : "translated", "value" : "Dieses Zitat existiert bereits im Korpus." } }, + "en" : { "stringUnit" : { "state" : "translated", "value" : "This quote already exists in the corpus." } }, + "fr" : { "stringUnit" : { "state" : "translated", "value" : "Cette citation existe déjà dans le corpus." } }, + "es" : { "stringUnit" : { "state" : "translated", "value" : "Esta cita ya existe en el corpus." } }, + "it" : { "stringUnit" : { "state" : "translated", "value" : "Questa citazione esiste già nel corpus." } } + } + }, + "api.error.invalid_json" : { + "extractionState" : "manual", + "localizations" : { + "de" : { "stringUnit" : { "state" : "translated", "value" : "Ungültige Daten." } }, + "en" : { "stringUnit" : { "state" : "translated", "value" : "Invalid data." } }, + "fr" : { "stringUnit" : { "state" : "translated", "value" : "Données invalides." } }, + "es" : { "stringUnit" : { "state" : "translated", "value" : "Datos no válidos." } }, + "it" : { "stringUnit" : { "state" : "translated", "value" : "Dati non validi." } } + } + }, + "api.error.invalid_status" : { + "extractionState" : "manual", + "localizations" : { + "de" : { "stringUnit" : { "state" : "translated", "value" : "Ungültiger Status." } }, + "en" : { "stringUnit" : { "state" : "translated", "value" : "Invalid status." } }, + "fr" : { "stringUnit" : { "state" : "translated", "value" : "Statut invalide." } }, + "es" : { "stringUnit" : { "state" : "translated", "value" : "Estado no válido." } }, + "it" : { "stringUnit" : { "state" : "translated", "value" : "Stato non valido." } } + } + }, + "api.error.no_changes" : { + "extractionState" : "manual", + "localizations" : { + "de" : { "stringUnit" : { "state" : "translated", "value" : "Keine Änderungen." } }, + "en" : { "stringUnit" : { "state" : "translated", "value" : "No changes." } }, + "fr" : { "stringUnit" : { "state" : "translated", "value" : "Aucun changement." } }, + "es" : { "stringUnit" : { "state" : "translated", "value" : "Sin cambios." } }, + "it" : { "stringUnit" : { "state" : "translated", "value" : "Nessuna modifica." } } + } + }, + "api.error.not_found" : { + "extractionState" : "manual", + "localizations" : { + "de" : { "stringUnit" : { "state" : "translated", "value" : "Nicht gefunden." } }, + "en" : { "stringUnit" : { "state" : "translated", "value" : "Not found." } }, + "fr" : { "stringUnit" : { "state" : "translated", "value" : "Introuvable." } }, + "es" : { "stringUnit" : { "state" : "translated", "value" : "No encontrado." } }, + "it" : { "stringUnit" : { "state" : "translated", "value" : "Non trovato." } } + } + }, + "api.error.not_open" : { + "extractionState" : "manual", + "localizations" : { + "de" : { "stringUnit" : { "state" : "translated", "value" : "Vorgang nicht mehr offen." } }, + "en" : { "stringUnit" : { "state" : "translated", "value" : "No longer open." } }, + "fr" : { "stringUnit" : { "state" : "translated", "value" : "Plus ouvert." } }, + "es" : { "stringUnit" : { "state" : "translated", "value" : "Ya no está abierto." } }, + "it" : { "stringUnit" : { "state" : "translated", "value" : "Non più aperto." } } + } + }, + "api.error.revision_not_found" : { + "extractionState" : "manual", + "localizations" : { + "de" : { "stringUnit" : { "state" : "translated", "value" : "Revision nicht gefunden." } }, + "en" : { "stringUnit" : { "state" : "translated", "value" : "Revision not found." } }, + "fr" : { "stringUnit" : { "state" : "translated", "value" : "Révision introuvable." } }, + "es" : { "stringUnit" : { "state" : "translated", "value" : "Revisión no encontrada." } }, + "it" : { "stringUnit" : { "state" : "translated", "value" : "Revisione non trovata." } } + } + }, + "api.error.unauthorized" : { + "extractionState" : "manual", + "localizations" : { + "de" : { "stringUnit" : { "state" : "translated", "value" : "Nicht autorisiert. Bitte erneut anmelden." } }, + "en" : { "stringUnit" : { "state" : "translated", "value" : "Not authorised. Please sign in again." } }, + "fr" : { "stringUnit" : { "state" : "translated", "value" : "Non autorisé. Reconnecte-toi." } }, + "es" : { "stringUnit" : { "state" : "translated", "value" : "No autorizado. Inicia sesión de nuevo." } }, + "it" : { "stringUnit" : { "state" : "translated", "value" : "Non autorizzato. Accedi di nuovo." } } + } + }, + "api.error.validation_failed" : { + "extractionState" : "manual", + "localizations" : { + "de" : { "stringUnit" : { "state" : "translated", "value" : "Validierung fehlgeschlagen." } }, + "en" : { "stringUnit" : { "state" : "translated", "value" : "Validation failed." } }, + "fr" : { "stringUnit" : { "state" : "translated", "value" : "Échec de la validation." } }, + "es" : { "stringUnit" : { "state" : "translated", "value" : "Validación fallida." } }, + "it" : { "stringUnit" : { "state" : "translated", "value" : "Convalida non riuscita." } } + } + }, "Einstellungen — ζ-5 TODO" : { },