- Einladen per einmaligem 6-stelligem Code (7 Tage gültig), wahlweise als Mitglied oder Pflanzen-Sitter - Beitritt über Cloud Function joinHousehold (Transaktion, Admin-Rechte) - Security Rules: Sitter dürfen an Pflanzen nur Bestätigungs-Felder ändern; invites nur erstellen, nie lesen - Haushalts-Screen: Mitgliederliste mit Rollen, Einladen, Beitreten mit Wechsel-Warnung - UI-Gating: Sitter sehen keine Anlegen-/Bearbeiten-/Löschen-Aktionen - Bestätigungen speichern den Namen (lastWateredBy/lastFertilizedBy), Anzeige im Profil - Tests: Members-Map im Seed, neuer Sitter-Test Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
716 lines
20 KiB
Dart
716 lines
20 KiB
Dart
import 'dart:async';
|
||
|
||
import 'package:flutter/foundation.dart';
|
||
import 'package:flutter/widgets.dart';
|
||
import 'package:flutter_localizations/flutter_localizations.dart';
|
||
import 'package:intl/intl.dart' as intl;
|
||
|
||
import 'app_localizations_de.dart';
|
||
|
||
// ignore_for_file: type=lint
|
||
|
||
/// Callers can lookup localized strings with an instance of AppLocalizations
|
||
/// returned by `AppLocalizations.of(context)`.
|
||
///
|
||
/// Applications need to include `AppLocalizations.delegate()` in their app's
|
||
/// `localizationDelegates` list, and the locales they support in the app's
|
||
/// `supportedLocales` list. For example:
|
||
///
|
||
/// ```dart
|
||
/// import 'generated/app_localizations.dart';
|
||
///
|
||
/// return MaterialApp(
|
||
/// localizationsDelegates: AppLocalizations.localizationsDelegates,
|
||
/// supportedLocales: AppLocalizations.supportedLocales,
|
||
/// home: MyApplicationHome(),
|
||
/// );
|
||
/// ```
|
||
///
|
||
/// ## Update pubspec.yaml
|
||
///
|
||
/// Please make sure to update your pubspec.yaml to include the following
|
||
/// packages:
|
||
///
|
||
/// ```yaml
|
||
/// dependencies:
|
||
/// # Internationalization support.
|
||
/// flutter_localizations:
|
||
/// sdk: flutter
|
||
/// intl: any # Use the pinned version from flutter_localizations
|
||
///
|
||
/// # Rest of dependencies
|
||
/// ```
|
||
///
|
||
/// ## iOS Applications
|
||
///
|
||
/// iOS applications define key application metadata, including supported
|
||
/// locales, in an Info.plist file that is built into the application bundle.
|
||
/// To configure the locales supported by your app, you’ll need to edit this
|
||
/// file.
|
||
///
|
||
/// First, open your project’s ios/Runner.xcworkspace Xcode workspace file.
|
||
/// Then, in the Project Navigator, open the Info.plist file under the Runner
|
||
/// project’s Runner folder.
|
||
///
|
||
/// Next, select the Information Property List item, select Add Item from the
|
||
/// Editor menu, then select Localizations from the pop-up menu.
|
||
///
|
||
/// Select and expand the newly-created Localizations item then, for each
|
||
/// locale your application supports, add a new item and select the locale
|
||
/// you wish to add from the pop-up menu in the Value field. This list should
|
||
/// be consistent with the languages listed in the AppLocalizations.supportedLocales
|
||
/// property.
|
||
abstract class AppLocalizations {
|
||
AppLocalizations(String locale)
|
||
: localeName = intl.Intl.canonicalizedLocale(locale.toString());
|
||
|
||
final String localeName;
|
||
|
||
static AppLocalizations of(BuildContext context) {
|
||
return Localizations.of<AppLocalizations>(context, AppLocalizations)!;
|
||
}
|
||
|
||
static const LocalizationsDelegate<AppLocalizations> delegate =
|
||
_AppLocalizationsDelegate();
|
||
|
||
/// A list of this localizations delegate along with the default localizations
|
||
/// delegates.
|
||
///
|
||
/// Returns a list of localizations delegates containing this delegate along with
|
||
/// GlobalMaterialLocalizations.delegate, GlobalCupertinoLocalizations.delegate,
|
||
/// and GlobalWidgetsLocalizations.delegate.
|
||
///
|
||
/// Additional delegates can be added by appending to this list in
|
||
/// MaterialApp. This list does not have to be used at all if a custom list
|
||
/// of delegates is preferred or required.
|
||
static const List<LocalizationsDelegate<dynamic>> localizationsDelegates =
|
||
<LocalizationsDelegate<dynamic>>[
|
||
delegate,
|
||
GlobalMaterialLocalizations.delegate,
|
||
GlobalCupertinoLocalizations.delegate,
|
||
GlobalWidgetsLocalizations.delegate,
|
||
];
|
||
|
||
/// A list of this localizations delegate's supported locales.
|
||
static const List<Locale> supportedLocales = <Locale>[Locale('de')];
|
||
|
||
/// No description provided for @appTitle.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'LeafItToMe'**
|
||
String get appTitle;
|
||
|
||
/// No description provided for @menuToday.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Heute'**
|
||
String get menuToday;
|
||
|
||
/// No description provided for @menuPlants.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Meine Pflanzen'**
|
||
String get menuPlants;
|
||
|
||
/// No description provided for @menuLocations.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Stellplätze'**
|
||
String get menuLocations;
|
||
|
||
/// No description provided for @menuHousehold.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Haushalt'**
|
||
String get menuHousehold;
|
||
|
||
/// No description provided for @menuSettings.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Einstellungen'**
|
||
String get menuSettings;
|
||
|
||
/// No description provided for @todayTitle.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Heute'**
|
||
String get todayTitle;
|
||
|
||
/// No description provided for @todayAllDone.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Alles versorgt!'**
|
||
String get todayAllDone;
|
||
|
||
/// No description provided for @todayEmptyHint.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Heute stehen keine Aufgaben an.'**
|
||
String get todayEmptyHint;
|
||
|
||
/// No description provided for @todayNextTask.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Nächste Aufgabe: {date}'**
|
||
String todayNextTask(String date);
|
||
|
||
/// No description provided for @todayOpenTasks.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'{count, plural, one{1 offene Aufgabe} other{{count} offene Aufgaben}}'**
|
||
String todayOpenTasks(int count);
|
||
|
||
/// No description provided for @taskWaterTitle.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'{name} gießen'**
|
||
String taskWaterTitle(String name);
|
||
|
||
/// No description provided for @taskFertilizeTitle.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'{name} düngen'**
|
||
String taskFertilizeTitle(String name);
|
||
|
||
/// No description provided for @taskDueToday.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Heute fällig'**
|
||
String get taskDueToday;
|
||
|
||
/// No description provided for @taskOverdue.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'{days, plural, one{Seit gestern überfällig} other{Seit {days} Tagen überfällig}}'**
|
||
String taskOverdue(int days);
|
||
|
||
/// No description provided for @taskDone.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Erledigt'**
|
||
String get taskDone;
|
||
|
||
/// No description provided for @taskDoneConfirmation.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'{name} als erledigt markiert.'**
|
||
String taskDoneConfirmation(String name);
|
||
|
||
/// No description provided for @addPlant.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Pflanze hinzufügen'**
|
||
String get addPlant;
|
||
|
||
/// No description provided for @plantsTitle.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Meine Pflanzen'**
|
||
String get plantsTitle;
|
||
|
||
/// No description provided for @plantsEmpty.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Noch keine Pflanzen angelegt.'**
|
||
String get plantsEmpty;
|
||
|
||
/// No description provided for @plantsEmptyHint.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Lege deine erste Pflanze über den Button unten an.'**
|
||
String get plantsEmptyHint;
|
||
|
||
/// No description provided for @plantDetailTitle.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Pflanzenprofil'**
|
||
String get plantDetailTitle;
|
||
|
||
/// No description provided for @nicknameLabel.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Spitzname'**
|
||
String get nicknameLabel;
|
||
|
||
/// No description provided for @speciesLabel.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Pflanzenart'**
|
||
String get speciesLabel;
|
||
|
||
/// No description provided for @locationLabel.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Stellplatz'**
|
||
String get locationLabel;
|
||
|
||
/// No description provided for @locationNone.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Kein Stellplatz'**
|
||
String get locationNone;
|
||
|
||
/// No description provided for @wateringEvery.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Gießen: alle {days} Tage'**
|
||
String wateringEvery(int days);
|
||
|
||
/// No description provided for @fertilizingEvery.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Düngen: alle {days} Tage'**
|
||
String fertilizingEvery(int days);
|
||
|
||
/// No description provided for @wateringIntervalLabel.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Gieß-Intervall (Tage)'**
|
||
String get wateringIntervalLabel;
|
||
|
||
/// No description provided for @fertilizingIntervalLabel.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Dünge-Intervall (Tage)'**
|
||
String get fertilizingIntervalLabel;
|
||
|
||
/// No description provided for @lastWatered.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Zuletzt gegossen: {date}'**
|
||
String lastWatered(String date);
|
||
|
||
/// No description provided for @lastFertilized.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Zuletzt gedüngt: {date}'**
|
||
String lastFertilized(String date);
|
||
|
||
/// No description provided for @never.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'noch nie'**
|
||
String get never;
|
||
|
||
/// No description provided for @save.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Speichern'**
|
||
String get save;
|
||
|
||
/// No description provided for @cancel.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Abbrechen'**
|
||
String get cancel;
|
||
|
||
/// No description provided for @delete.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Löschen'**
|
||
String get delete;
|
||
|
||
/// No description provided for @deletePlantQuestion.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'{name} wirklich löschen?'**
|
||
String deletePlantQuestion(String name);
|
||
|
||
/// No description provided for @requiredField.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Bitte ausfüllen'**
|
||
String get requiredField;
|
||
|
||
/// No description provided for @invalidNumber.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Bitte eine Zahl größer 0 eingeben'**
|
||
String get invalidNumber;
|
||
|
||
/// No description provided for @locationsTitle.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Stellplätze'**
|
||
String get locationsTitle;
|
||
|
||
/// No description provided for @locationsEmpty.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Noch keine Stellplätze angelegt.'**
|
||
String get locationsEmpty;
|
||
|
||
/// No description provided for @addLocation.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Stellplatz hinzufügen'**
|
||
String get addLocation;
|
||
|
||
/// No description provided for @locationNameLabel.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Name des Stellplatzes'**
|
||
String get locationNameLabel;
|
||
|
||
/// No description provided for @locationPlantCount.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'{count, plural, =0{Keine Pflanzen} one{1 Pflanze} other{{count} Pflanzen}}'**
|
||
String locationPlantCount(int count);
|
||
|
||
/// No description provided for @householdTitle.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Haushalt'**
|
||
String get householdTitle;
|
||
|
||
/// No description provided for @householdMembers.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Mitglieder'**
|
||
String get householdMembers;
|
||
|
||
/// No description provided for @roleMember.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Mitglied'**
|
||
String get roleMember;
|
||
|
||
/// No description provided for @roleSitter.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Pflanzen-Sitter'**
|
||
String get roleSitter;
|
||
|
||
/// No description provided for @meLabel.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Ich'**
|
||
String get meLabel;
|
||
|
||
/// No description provided for @inviteTitle.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Einladen'**
|
||
String get inviteTitle;
|
||
|
||
/// No description provided for @inviteMember.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Mitglied einladen'**
|
||
String get inviteMember;
|
||
|
||
/// No description provided for @inviteSitter.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Pflanzen-Sitter einladen'**
|
||
String get inviteSitter;
|
||
|
||
/// No description provided for @inviteExplanation.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Mitglieder haben volle Rechte. Pflanzen-Sitter sehen die Pläne und können Aufgaben abhaken, aber nichts ändern.'**
|
||
String get inviteExplanation;
|
||
|
||
/// No description provided for @inviteCodeTitle.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Einladungscode'**
|
||
String get inviteCodeTitle;
|
||
|
||
/// No description provided for @inviteCodeHint.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'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.'**
|
||
String get inviteCodeHint;
|
||
|
||
/// No description provided for @copyCode.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Code kopieren'**
|
||
String get copyCode;
|
||
|
||
/// No description provided for @codeCopied.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Code kopiert.'**
|
||
String get codeCopied;
|
||
|
||
/// No description provided for @joinTitle.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Haushalt beitreten'**
|
||
String get joinTitle;
|
||
|
||
/// No description provided for @joinCodeLabel.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Einladungscode eingeben'**
|
||
String get joinCodeLabel;
|
||
|
||
/// No description provided for @joinButton.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Beitreten'**
|
||
String get joinButton;
|
||
|
||
/// No description provided for @joinWarningTitle.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Haushalt wechseln?'**
|
||
String get joinWarningTitle;
|
||
|
||
/// No description provided for @joinWarningBody.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Du trittst einem anderen Haushalt bei. Die Pflanzen deines bisherigen Haushalts siehst du danach nicht mehr.'**
|
||
String get joinWarningBody;
|
||
|
||
/// No description provided for @joinSuccess.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Willkommen im Haushalt „{name}“!'**
|
||
String joinSuccess(String name);
|
||
|
||
/// No description provided for @joinErrorInvalid.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Dieser Code ist ungültig oder abgelaufen.'**
|
||
String get joinErrorInvalid;
|
||
|
||
/// No description provided for @joinErrorUsed.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Dieser Code wurde bereits verwendet.'**
|
||
String get joinErrorUsed;
|
||
|
||
/// No description provided for @doneBy.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **' · von {name}'**
|
||
String doneBy(String name);
|
||
|
||
/// No description provided for @settingsTitle.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Einstellungen'**
|
||
String get settingsTitle;
|
||
|
||
/// No description provided for @settingsAppearance.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Erscheinungsbild'**
|
||
String get settingsAppearance;
|
||
|
||
/// No description provided for @themeSystem.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'System'**
|
||
String get themeSystem;
|
||
|
||
/// No description provided for @themeLight.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Hell'**
|
||
String get themeLight;
|
||
|
||
/// No description provided for @themeDark.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Dunkel'**
|
||
String get themeDark;
|
||
|
||
/// No description provided for @settingsTextSize.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Schriftgröße'**
|
||
String get settingsTextSize;
|
||
|
||
/// No description provided for @textSizeNormal.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Normal'**
|
||
String get textSizeNormal;
|
||
|
||
/// No description provided for @textSizeLarge.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Groß'**
|
||
String get textSizeLarge;
|
||
|
||
/// No description provided for @textSizeXLarge.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Sehr groß'**
|
||
String get textSizeXLarge;
|
||
|
||
/// No description provided for @settingsHighContrast.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Hoher Kontrast'**
|
||
String get settingsHighContrast;
|
||
|
||
/// No description provided for @settingsReminderTime.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Erinnerungszeit'**
|
||
String get settingsReminderTime;
|
||
|
||
/// No description provided for @settingsReminderTimeHint.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Zu dieser Uhrzeit erinnert dich LeafItToMe an offene Aufgaben.'**
|
||
String get settingsReminderTimeHint;
|
||
|
||
/// No description provided for @settingsAccount.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Konto'**
|
||
String get settingsAccount;
|
||
|
||
/// No description provided for @logout.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Abmelden'**
|
||
String get logout;
|
||
|
||
/// No description provided for @loginSubtitle.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Melde dich an, um deine Pflanzen zu versorgen.'**
|
||
String get loginSubtitle;
|
||
|
||
/// No description provided for @emailLabel.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'E-Mail-Adresse'**
|
||
String get emailLabel;
|
||
|
||
/// No description provided for @passwordLabel.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Passwort'**
|
||
String get passwordLabel;
|
||
|
||
/// No description provided for @signInButton.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Anmelden'**
|
||
String get signInButton;
|
||
|
||
/// No description provided for @signUpButton.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Konto erstellen'**
|
||
String get signUpButton;
|
||
|
||
/// No description provided for @switchToSignUp.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Neu hier? Konto erstellen'**
|
||
String get switchToSignUp;
|
||
|
||
/// No description provided for @switchToSignIn.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Du hast schon ein Konto? Anmelden'**
|
||
String get switchToSignIn;
|
||
|
||
/// No description provided for @authErrorInvalidCredential.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'E-Mail-Adresse oder Passwort ist falsch.'**
|
||
String get authErrorInvalidCredential;
|
||
|
||
/// No description provided for @authErrorEmailInUse.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Mit dieser E-Mail-Adresse gibt es bereits ein Konto.'**
|
||
String get authErrorEmailInUse;
|
||
|
||
/// No description provided for @authErrorWeakPassword.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Das Passwort muss mindestens 6 Zeichen lang sein.'**
|
||
String get authErrorWeakPassword;
|
||
|
||
/// No description provided for @authErrorInvalidEmail.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Bitte gib eine gültige E-Mail-Adresse ein.'**
|
||
String get authErrorInvalidEmail;
|
||
|
||
/// No description provided for @authErrorGeneric.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Das hat leider nicht geklappt. Bitte versuche es erneut.'**
|
||
String get authErrorGeneric;
|
||
|
||
/// No description provided for @takePhoto.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Foto aufnehmen'**
|
||
String get takePhoto;
|
||
|
||
/// No description provided for @fromGallery.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Aus der Galerie'**
|
||
String get fromGallery;
|
||
|
||
/// No description provided for @recognizing.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Pflanze wird erkannt …'**
|
||
String get recognizing;
|
||
|
||
/// No description provided for @recognitionSuccess.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Erkannt: {name}'**
|
||
String recognitionSuccess(String name);
|
||
|
||
/// No description provided for @recognitionFailed.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Die Erkennung hat nicht geklappt – du kannst die Angaben auch von Hand eintragen.'**
|
||
String get recognitionFailed;
|
||
|
||
/// No description provided for @saveError.
|
||
///
|
||
/// In de, this message translates to:
|
||
/// **'Speichern fehlgeschlagen. Bitte versuche es erneut.'**
|
||
String get saveError;
|
||
}
|
||
|
||
class _AppLocalizationsDelegate
|
||
extends LocalizationsDelegate<AppLocalizations> {
|
||
const _AppLocalizationsDelegate();
|
||
|
||
@override
|
||
Future<AppLocalizations> load(Locale locale) {
|
||
return SynchronousFuture<AppLocalizations>(lookupAppLocalizations(locale));
|
||
}
|
||
|
||
@override
|
||
bool isSupported(Locale locale) =>
|
||
<String>['de'].contains(locale.languageCode);
|
||
|
||
@override
|
||
bool shouldReload(_AppLocalizationsDelegate old) => false;
|
||
}
|
||
|
||
AppLocalizations lookupAppLocalizations(Locale locale) {
|
||
// Lookup logic when only language code is specified.
|
||
switch (locale.languageCode) {
|
||
case 'de':
|
||
return AppLocalizationsDe();
|
||
}
|
||
|
||
throw FlutterError(
|
||
'AppLocalizations.delegate failed to load unsupported locale "$locale". This is likely '
|
||
'an issue with the localizations generation tool. Please file an issue '
|
||
'on GitHub with a reproducible sample app and the gen-l10n configuration '
|
||
'that was used.',
|
||
);
|
||
}
|