Der Bootstrap hing an signInWithApple und lief erst, nachdem der Router den Nutzer schon in die App geleitet hatte — Fehler blieben unsichtbar, der Account blieb ohne users-Doc/Haushalt und alle Writes scheiterten an den Rules. Jetzt beobachtet householdBootstrapProvider das users-Dokument und legt Profil + Haushalt reaktiv an (alle Login-Wege); das BootstrapGate hält die App so lange zurück und macht Fehler mit „Erneut versuchen" sichtbar. Bestehende kaputte Accounts heilen beim nächsten Start selbst. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
229 lines
7.9 KiB
Text
229 lines
7.9 KiB
Text
{
|
||
"@@locale": "de",
|
||
"appTitle": "LeafItToMe",
|
||
"menuToday": "Heute",
|
||
"menuPlants": "Meine Pflanzen",
|
||
"menuLocations": "Stellplätze",
|
||
"menuHousehold": "Haushalt",
|
||
"menuSettings": "Einstellungen",
|
||
"todayTitle": "Heute",
|
||
"todayAllDone": "Alles versorgt!",
|
||
"todayEmptyHint": "Heute stehen keine Aufgaben an.",
|
||
"todayNextTask": "Nächste Aufgabe: {date}",
|
||
"@todayNextTask": {
|
||
"placeholders": {
|
||
"date": { "type": "String" }
|
||
}
|
||
},
|
||
"todayOpenTasks": "{count, plural, one{1 offene Aufgabe} other{{count} offene Aufgaben}}",
|
||
"@todayOpenTasks": {
|
||
"placeholders": {
|
||
"count": { "type": "int" }
|
||
}
|
||
},
|
||
"taskWaterTitle": "{name} gießen",
|
||
"@taskWaterTitle": {
|
||
"placeholders": {
|
||
"name": { "type": "String" }
|
||
}
|
||
},
|
||
"taskFertilizeTitle": "{name} düngen",
|
||
"@taskFertilizeTitle": {
|
||
"placeholders": {
|
||
"name": { "type": "String" }
|
||
}
|
||
},
|
||
"taskDueToday": "Heute fällig",
|
||
"taskOverdue": "{days, plural, one{Seit gestern überfällig} other{Seit {days} Tagen überfällig}}",
|
||
"@taskOverdue": {
|
||
"placeholders": {
|
||
"days": { "type": "int" }
|
||
}
|
||
},
|
||
"taskDone": "Erledigt",
|
||
"taskDoneConfirmation": "{name} als erledigt markiert.",
|
||
"@taskDoneConfirmation": {
|
||
"placeholders": {
|
||
"name": { "type": "String" }
|
||
}
|
||
},
|
||
"addPlant": "Pflanze hinzufügen",
|
||
"plantsTitle": "Meine Pflanzen",
|
||
"plantsEmpty": "Noch keine Pflanzen angelegt.",
|
||
"plantsEmptyHint": "Lege deine erste Pflanze über den Button unten an.",
|
||
"plantDetailTitle": "Pflanzenprofil",
|
||
"nicknameLabel": "Spitzname",
|
||
"speciesLabel": "Pflanzenart",
|
||
"locationLabel": "Stellplatz",
|
||
"locationNone": "Kein Stellplatz",
|
||
"wateringEvery": "Gießen: alle {days} Tage",
|
||
"@wateringEvery": {
|
||
"placeholders": {
|
||
"days": { "type": "int" }
|
||
}
|
||
},
|
||
"fertilizingEvery": "Düngen: alle {days} Tage",
|
||
"@fertilizingEvery": {
|
||
"placeholders": {
|
||
"days": { "type": "int" }
|
||
}
|
||
},
|
||
"wateringIntervalLabel": "Gieß-Intervall (Tage)",
|
||
"fertilizingIntervalLabel": "Dünge-Intervall (Tage)",
|
||
"lastWatered": "Zuletzt gegossen: {date}",
|
||
"@lastWatered": {
|
||
"placeholders": {
|
||
"date": { "type": "String" }
|
||
}
|
||
},
|
||
"lastFertilized": "Zuletzt gedüngt: {date}",
|
||
"@lastFertilized": {
|
||
"placeholders": {
|
||
"date": { "type": "String" }
|
||
}
|
||
},
|
||
"never": "noch nie",
|
||
"save": "Speichern",
|
||
"cancel": "Abbrechen",
|
||
"delete": "Löschen",
|
||
"deletePlantQuestion": "{name} wirklich löschen?",
|
||
"@deletePlantQuestion": {
|
||
"placeholders": {
|
||
"name": { "type": "String" }
|
||
}
|
||
},
|
||
"requiredField": "Bitte ausfüllen",
|
||
"invalidNumber": "Bitte eine Zahl größer 0 eingeben",
|
||
"locationsTitle": "Stellplätze",
|
||
"locationsEmpty": "Noch keine Stellplätze angelegt.",
|
||
"addLocation": "Stellplatz hinzufügen",
|
||
"locationNameLabel": "Name des Stellplatzes",
|
||
"locationPlantCount": "{count, plural, =0{Keine Pflanzen} one{1 Pflanze} other{{count} Pflanzen}}",
|
||
"@locationPlantCount": {
|
||
"placeholders": {
|
||
"count": { "type": "int" }
|
||
}
|
||
},
|
||
"householdTitle": "Haushalt",
|
||
"myHouseholds": "Meine Haushalte",
|
||
"activeHouseholdLabel": "Aktiv",
|
||
"switchHouseholdSuccess": "Du bist jetzt im Haushalt „{name}“.",
|
||
"@switchHouseholdSuccess": {
|
||
"placeholders": {
|
||
"name": { "type": "String" }
|
||
}
|
||
},
|
||
"householdMembers": "Mitglieder",
|
||
"roleMember": "Mitglied",
|
||
"roleSitter": "Pflanzen-Sitter",
|
||
"ownerLabel": "Besitzer",
|
||
"ownerIsMe": "Dein Haushalt",
|
||
"ownerIs": "Besitzer: {name}",
|
||
"@ownerIs": {
|
||
"placeholders": {
|
||
"name": { "type": "String" }
|
||
}
|
||
},
|
||
"renameHousehold": "Haushalt umbenennen",
|
||
"householdNameLabel": "Name des Haushalts",
|
||
"saveButton": "Speichern",
|
||
"leaveHousehold": "Haushalt verlassen",
|
||
"leaveHouseholdConfirmTitle": "Haushalt verlassen?",
|
||
"leaveHouseholdConfirmBody": "Du verlierst den Zugriff auf „{name}“ und alle Pflanzen darin. Ein neuer Beitritt ist nur mit einem neuen Einladungscode möglich.",
|
||
"@leaveHouseholdConfirmBody": {
|
||
"placeholders": {
|
||
"name": { "type": "String" }
|
||
}
|
||
},
|
||
"leftHousehold": "Du hast den Haushalt „{name}“ verlassen.",
|
||
"@leftHousehold": {
|
||
"placeholders": {
|
||
"name": { "type": "String" }
|
||
}
|
||
},
|
||
"removeMemberConfirmTitle": "Mitglied entfernen?",
|
||
"removeMemberConfirmBody": "{name} verliert sofort den Zugriff auf diesen Haushalt und alle Pflanzen darin.",
|
||
"@removeMemberConfirmBody": {
|
||
"placeholders": {
|
||
"name": { "type": "String" }
|
||
}
|
||
},
|
||
"removeMemberAction": "Entfernen",
|
||
"memberRemoved": "{name} wurde aus dem Haushalt entfernt.",
|
||
"@memberRemoved": {
|
||
"placeholders": {
|
||
"name": { "type": "String" }
|
||
}
|
||
},
|
||
"meLabel": "Ich",
|
||
"inviteTitle": "Einladen",
|
||
"inviteMember": "Mitglied einladen",
|
||
"inviteSitter": "Pflanzen-Sitter einladen",
|
||
"inviteExplanation": "Mitglieder haben volle Rechte. Pflanzen-Sitter sehen die Pläne und können Aufgaben abhaken, aber nichts ändern.",
|
||
"inviteCodeTitle": "Einladungscode",
|
||
"inviteCodeHint": "Gib diesen Code an die Person weiter. Sie trägt ihn in ihrer App unter „Haushalt“ ein. Der Code ist 7 Tage gültig und einmal verwendbar.",
|
||
"copyCode": "Code kopieren",
|
||
"codeCopied": "Code kopiert.",
|
||
"joinTitle": "Haushalt beitreten",
|
||
"joinCodeLabel": "Einladungscode eingeben",
|
||
"joinButton": "Beitreten",
|
||
"joinWarningTitle": "Haushalt beitreten?",
|
||
"joinWarningBody": "Du trittst dem Haushalt bei und wechselst direkt dorthin. Deine bisherigen Haushalte bleiben erhalten – unter „Meine Haushalte“ kannst du jederzeit zurückwechseln.",
|
||
"joinSuccess": "Willkommen im Haushalt „{name}“!",
|
||
"@joinSuccess": {
|
||
"placeholders": {
|
||
"name": { "type": "String" }
|
||
}
|
||
},
|
||
"joinErrorInvalid": "Dieser Code ist ungültig oder abgelaufen.",
|
||
"joinErrorUsed": "Dieser Code wurde bereits verwendet.",
|
||
"doneBy": " · von {name}",
|
||
"@doneBy": {
|
||
"placeholders": {
|
||
"name": { "type": "String" }
|
||
}
|
||
},
|
||
"settingsTitle": "Einstellungen",
|
||
"settingsAppearance": "Erscheinungsbild",
|
||
"themeSystem": "System",
|
||
"themeLight": "Hell",
|
||
"themeDark": "Dunkel",
|
||
"settingsTextSize": "Schriftgröße",
|
||
"textSizeNormal": "Normal",
|
||
"textSizeLarge": "Groß",
|
||
"textSizeXLarge": "Sehr groß",
|
||
"settingsHighContrast": "Hoher Kontrast",
|
||
"settingsReminderTime": "Erinnerungszeit",
|
||
"settingsReminderTimeHint": "Zu dieser Uhrzeit erinnert dich LeafItToMe an offene Aufgaben.",
|
||
"settingsAccount": "Konto",
|
||
"logout": "Abmelden",
|
||
"loginSubtitle": "Melde dich an, um deine Pflanzen zu versorgen.",
|
||
"emailLabel": "E-Mail-Adresse",
|
||
"passwordLabel": "Passwort",
|
||
"signInButton": "Anmelden",
|
||
"signUpButton": "Konto erstellen",
|
||
"switchToSignUp": "Neu hier? Konto erstellen",
|
||
"switchToSignIn": "Du hast schon ein Konto? Anmelden",
|
||
"orDivider": "oder",
|
||
"signInWithApple": "Mit Apple anmelden",
|
||
"authErrorAppleFailed": "Die Anmeldung mit Apple hat nicht geklappt. Bitte versuche es erneut.",
|
||
"authErrorInvalidCredential": "E-Mail-Adresse oder Passwort ist falsch.",
|
||
"authErrorEmailInUse": "Mit dieser E-Mail-Adresse gibt es bereits ein Konto.",
|
||
"authErrorWeakPassword": "Das Passwort muss mindestens 6 Zeichen lang sein.",
|
||
"authErrorInvalidEmail": "Bitte gib eine gültige E-Mail-Adresse ein.",
|
||
"authErrorGeneric": "Das hat leider nicht geklappt. Bitte versuche es erneut.",
|
||
"bootstrapPreparing": "Dein Haushalt wird eingerichtet …",
|
||
"bootstrapFailed": "Dein Haushalt konnte nicht eingerichtet werden. Bitte prüfe deine Internetverbindung und versuche es erneut.",
|
||
"bootstrapRetry": "Erneut versuchen",
|
||
"takePhoto": "Foto aufnehmen",
|
||
"fromGallery": "Aus der Galerie",
|
||
"recognizing": "Pflanze wird erkannt …",
|
||
"recognitionSuccess": "Erkannt: {name}",
|
||
"@recognitionSuccess": {
|
||
"placeholders": {
|
||
"name": { "type": "String" }
|
||
}
|
||
},
|
||
"recognitionFailed": "Die Erkennung hat nicht geklappt – du kannst die Angaben auch von Hand eintragen.",
|
||
"saveError": "Speichern fehlgeschlagen. Bitte versuche es erneut."
|
||
}
|