Letzter Roadmap-Punkt von V3. Foto-basierte Lichtverhältnis-Analyse pro Stellplatz (Cloud Function analyzeLocation) und darauf aufbauende, rein textbasierte Eignungs-Bewertung einer Pflanze (assessPlantFit) — beides ausschließlich auf Abruf, nicht automatisch (Kostenkontrolle, eigener Anthropic-Key). Neue Stellplatz-Detailseite, Verlinkung im Pflanzen-Detail, Erkennung veralteter Bewertungen bei Umzug/Neuanalyse. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
299 lines
11 KiB
Text
299 lines
11 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)",
|
||
"repottingIntervalLabel": "Umtopf-Intervall (Monate)",
|
||
"repottingIntervalHelper": "Leer lassen, wenn du keine Umtopf-Erinnerung möchtest.",
|
||
"lastRepottedLabel": "Zuletzt umgetopft",
|
||
"pickDate": "Datum wählen",
|
||
"taskRepotTitle": "{name} umtopfen",
|
||
"@taskRepotTitle": {
|
||
"placeholders": {
|
||
"name": { "type": "String" }
|
||
}
|
||
},
|
||
"repottingEvery": "Umtopfen: alle {months} Monate",
|
||
"@repottingEvery": {
|
||
"placeholders": {
|
||
"months": { "type": "int" }
|
||
}
|
||
},
|
||
"lastRepotted": "Zuletzt umgetopft: {date}",
|
||
"@lastRepotted": {
|
||
"placeholders": {
|
||
"date": { "type": "String" }
|
||
}
|
||
},
|
||
"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" }
|
||
}
|
||
},
|
||
"locationAnalysisButton": "Standort analysieren",
|
||
"locationAnalyzing": "Standort wird analysiert …",
|
||
"locationAnalysisEmpty": "Noch keine Analyse. Foto aufnehmen, damit die KI die Lichtverhältnisse einschätzen kann.",
|
||
"locationAnalysisFailed": "Die Analyse hat nicht geklappt. Bitte versuche es erneut.",
|
||
"locationAssignedPlants": "Zugeordnete Pflanzen",
|
||
"locationNoPlantsAssigned": "Diesem Stellplatz ist noch keine Pflanze zugeordnet.",
|
||
"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",
|
||
"signInWithGoogle": "Mit Google anmelden",
|
||
"authErrorAppleFailed": "Die Anmeldung mit Apple hat nicht geklappt. Bitte versuche es erneut.",
|
||
"authErrorGoogleFailed": "Die Anmeldung mit Google 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.",
|
||
"diagnoseButton": "Pflanze untersuchen",
|
||
"diagnoseHint": "Foto von kranken Blättern oder Stellen aufnehmen – die KI beurteilt den Zustand und gibt Behandlungstipps.",
|
||
"diagnosing": "Foto wird untersucht …",
|
||
"diagnosisTreatmentTitle": "Was du tun kannst",
|
||
"diagnosisPreventionTitle": "So beugst du vor",
|
||
"diagnosisDisclaimer": "Die Einschätzung kommt von einer KI und kann falsch liegen. Bei wertvollen Pflanzen im Zweifel eine Gärtnerei fragen.",
|
||
"diagnosisSpeciesMismatch": "Das Foto zeigt offenbar eine andere Pflanze als „{name}“. Die Einschätzung unten bezieht sich auf die Pflanze im Bild.",
|
||
"@diagnosisSpeciesMismatch": {
|
||
"placeholders": {
|
||
"name": { "type": "String" }
|
||
}
|
||
},
|
||
"diagnosisFailed": "Die Untersuchung hat nicht geklappt. Bitte versuche es erneut.",
|
||
"diagnosisHistoryTitle": "Untersuchungen",
|
||
"diagnosisHistoryButton": "Frühere Untersuchungen",
|
||
"diagnosisHistoryEmpty": "Noch keine Untersuchungen gespeichert.",
|
||
"diagnosisDate": "Untersucht am {date}",
|
||
"@diagnosisDate": {
|
||
"placeholders": {
|
||
"date": { "type": "String" }
|
||
}
|
||
},
|
||
"deleteDiagnosisQuestion": "Untersuchung vom {date} löschen?",
|
||
"@deleteDiagnosisQuestion": {
|
||
"placeholders": {
|
||
"date": { "type": "String" }
|
||
}
|
||
},
|
||
"fitCheckButton": "Eignung prüfen",
|
||
"fitChecking": "Wird geprüft …",
|
||
"fitCheckNeedsAnalysis": "Erst den Stellplatz analysieren (Foto oben)",
|
||
"fitCheckStale": "Stellplatz hat sich geändert – neu prüfen",
|
||
"fitCheckFailed": "Die Prüfung hat nicht geklappt. Bitte versuche es erneut.",
|
||
"fitCheckNotDone": "Eignung noch nicht geprüft",
|
||
"saveError": "Speichern fehlgeschlagen. Bitte versuche es erneut.",
|
||
"saveErrorDetail": "Speichern fehlgeschlagen ({detail}). Bitte versuche es erneut.",
|
||
"@saveErrorDetail": {
|
||
"placeholders": {
|
||
"detail": { "type": "String" }
|
||
}
|
||
}
|
||
}
|