- Datenmodell: users/{uid}, households/{id} mit memberUids, plants/locations als Subcollections
- StreamProvider liefern Live-Daten, Repositories kapseln Schreibzugriffe
- Login-Screen mit Registrierung (legt Haushalt automatisch an), Logout in Einstellungen
- Router-Redirect bei Login/Logout, firestore.rules mit Haushalts-Prinzip
- Tests auf firebase_auth_mocks + fake_cloud_firestore umgestellt
- Verifiziert: analyze/test grün, Android-Debug-Build erfolgreich
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
280 lines
5.9 KiB
Dart
280 lines
5.9 KiB
Dart
// ignore: unused_import
|
|
import 'package:intl/intl.dart' as intl;
|
|
import 'app_localizations.dart';
|
|
|
|
// ignore_for_file: type=lint
|
|
|
|
/// The translations for German (`de`).
|
|
class AppLocalizationsDe extends AppLocalizations {
|
|
AppLocalizationsDe([String locale = 'de']) : super(locale);
|
|
|
|
@override
|
|
String get appTitle => 'LeafItToMe';
|
|
|
|
@override
|
|
String get menuToday => 'Heute';
|
|
|
|
@override
|
|
String get menuPlants => 'Meine Pflanzen';
|
|
|
|
@override
|
|
String get menuLocations => 'Stellplätze';
|
|
|
|
@override
|
|
String get menuHousehold => 'Haushalt';
|
|
|
|
@override
|
|
String get menuSettings => 'Einstellungen';
|
|
|
|
@override
|
|
String get todayTitle => 'Heute';
|
|
|
|
@override
|
|
String get todayAllDone => 'Alles versorgt!';
|
|
|
|
@override
|
|
String get todayEmptyHint => 'Heute stehen keine Aufgaben an.';
|
|
|
|
@override
|
|
String todayNextTask(String date) {
|
|
return 'Nächste Aufgabe: $date';
|
|
}
|
|
|
|
@override
|
|
String todayOpenTasks(int count) {
|
|
String _temp0 = intl.Intl.pluralLogic(
|
|
count,
|
|
locale: localeName,
|
|
other: '$count offene Aufgaben',
|
|
one: '1 offene Aufgabe',
|
|
);
|
|
return '$_temp0';
|
|
}
|
|
|
|
@override
|
|
String taskWaterTitle(String name) {
|
|
return '$name gießen';
|
|
}
|
|
|
|
@override
|
|
String taskFertilizeTitle(String name) {
|
|
return '$name düngen';
|
|
}
|
|
|
|
@override
|
|
String get taskDueToday => 'Heute fällig';
|
|
|
|
@override
|
|
String taskOverdue(int days) {
|
|
String _temp0 = intl.Intl.pluralLogic(
|
|
days,
|
|
locale: localeName,
|
|
other: 'Seit $days Tagen überfällig',
|
|
one: 'Seit gestern überfällig',
|
|
);
|
|
return '$_temp0';
|
|
}
|
|
|
|
@override
|
|
String get taskDone => 'Erledigt';
|
|
|
|
@override
|
|
String taskDoneConfirmation(String name) {
|
|
return '$name als erledigt markiert.';
|
|
}
|
|
|
|
@override
|
|
String get addPlant => 'Pflanze hinzufügen';
|
|
|
|
@override
|
|
String get plantsTitle => 'Meine Pflanzen';
|
|
|
|
@override
|
|
String get plantsEmpty => 'Noch keine Pflanzen angelegt.';
|
|
|
|
@override
|
|
String get plantsEmptyHint =>
|
|
'Lege deine erste Pflanze über den Button unten an.';
|
|
|
|
@override
|
|
String get plantDetailTitle => 'Pflanzenprofil';
|
|
|
|
@override
|
|
String get nicknameLabel => 'Spitzname';
|
|
|
|
@override
|
|
String get speciesLabel => 'Pflanzenart';
|
|
|
|
@override
|
|
String get locationLabel => 'Stellplatz';
|
|
|
|
@override
|
|
String get locationNone => 'Kein Stellplatz';
|
|
|
|
@override
|
|
String wateringEvery(int days) {
|
|
return 'Gießen: alle $days Tage';
|
|
}
|
|
|
|
@override
|
|
String fertilizingEvery(int days) {
|
|
return 'Düngen: alle $days Tage';
|
|
}
|
|
|
|
@override
|
|
String get wateringIntervalLabel => 'Gieß-Intervall (Tage)';
|
|
|
|
@override
|
|
String get fertilizingIntervalLabel => 'Dünge-Intervall (Tage)';
|
|
|
|
@override
|
|
String lastWatered(String date) {
|
|
return 'Zuletzt gegossen: $date';
|
|
}
|
|
|
|
@override
|
|
String lastFertilized(String date) {
|
|
return 'Zuletzt gedüngt: $date';
|
|
}
|
|
|
|
@override
|
|
String get never => 'noch nie';
|
|
|
|
@override
|
|
String get save => 'Speichern';
|
|
|
|
@override
|
|
String get cancel => 'Abbrechen';
|
|
|
|
@override
|
|
String get delete => 'Löschen';
|
|
|
|
@override
|
|
String deletePlantQuestion(String name) {
|
|
return '$name wirklich löschen?';
|
|
}
|
|
|
|
@override
|
|
String get requiredField => 'Bitte ausfüllen';
|
|
|
|
@override
|
|
String get invalidNumber => 'Bitte eine Zahl größer 0 eingeben';
|
|
|
|
@override
|
|
String get locationsTitle => 'Stellplätze';
|
|
|
|
@override
|
|
String get locationsEmpty => 'Noch keine Stellplätze angelegt.';
|
|
|
|
@override
|
|
String get addLocation => 'Stellplatz hinzufügen';
|
|
|
|
@override
|
|
String get locationNameLabel => 'Name des Stellplatzes';
|
|
|
|
@override
|
|
String locationPlantCount(int count) {
|
|
String _temp0 = intl.Intl.pluralLogic(
|
|
count,
|
|
locale: localeName,
|
|
other: '$count Pflanzen',
|
|
one: '1 Pflanze',
|
|
zero: 'Keine Pflanzen',
|
|
);
|
|
return '$_temp0';
|
|
}
|
|
|
|
@override
|
|
String get householdTitle => 'Haushalt';
|
|
|
|
@override
|
|
String get householdPlaceholder =>
|
|
'Hier kannst du bald deinen Haushalt teilen, damit Familie oder Pflanzen-Sitter die Pflanzen mitversorgen können.';
|
|
|
|
@override
|
|
String get householdComingSoon => 'Kommt in Version 2';
|
|
|
|
@override
|
|
String get settingsTitle => 'Einstellungen';
|
|
|
|
@override
|
|
String get settingsAppearance => 'Erscheinungsbild';
|
|
|
|
@override
|
|
String get themeSystem => 'System';
|
|
|
|
@override
|
|
String get themeLight => 'Hell';
|
|
|
|
@override
|
|
String get themeDark => 'Dunkel';
|
|
|
|
@override
|
|
String get settingsTextSize => 'Schriftgröße';
|
|
|
|
@override
|
|
String get textSizeNormal => 'Normal';
|
|
|
|
@override
|
|
String get textSizeLarge => 'Groß';
|
|
|
|
@override
|
|
String get textSizeXLarge => 'Sehr groß';
|
|
|
|
@override
|
|
String get settingsHighContrast => 'Hoher Kontrast';
|
|
|
|
@override
|
|
String get settingsReminderTime => 'Erinnerungszeit';
|
|
|
|
@override
|
|
String get settingsReminderTimeHint =>
|
|
'Zu dieser Uhrzeit erinnert dich LeafItToMe an offene Aufgaben.';
|
|
|
|
@override
|
|
String get settingsAccount => 'Konto';
|
|
|
|
@override
|
|
String get logout => 'Abmelden';
|
|
|
|
@override
|
|
String get loginSubtitle => 'Melde dich an, um deine Pflanzen zu versorgen.';
|
|
|
|
@override
|
|
String get emailLabel => 'E-Mail-Adresse';
|
|
|
|
@override
|
|
String get passwordLabel => 'Passwort';
|
|
|
|
@override
|
|
String get signInButton => 'Anmelden';
|
|
|
|
@override
|
|
String get signUpButton => 'Konto erstellen';
|
|
|
|
@override
|
|
String get switchToSignUp => 'Neu hier? Konto erstellen';
|
|
|
|
@override
|
|
String get switchToSignIn => 'Du hast schon ein Konto? Anmelden';
|
|
|
|
@override
|
|
String get authErrorInvalidCredential =>
|
|
'E-Mail-Adresse oder Passwort ist falsch.';
|
|
|
|
@override
|
|
String get authErrorEmailInUse =>
|
|
'Mit dieser E-Mail-Adresse gibt es bereits ein Konto.';
|
|
|
|
@override
|
|
String get authErrorWeakPassword =>
|
|
'Das Passwort muss mindestens 6 Zeichen lang sein.';
|
|
|
|
@override
|
|
String get authErrorInvalidEmail =>
|
|
'Bitte gib eine gültige E-Mail-Adresse ein.';
|
|
|
|
@override
|
|
String get authErrorGeneric =>
|
|
'Das hat leider nicht geklappt. Bitte versuche es erneut.';
|
|
}
|