Fixes 9 of 10 review findings (10th requires a manual Play Console step, no code change): 1. app.dart/banner_anuncio_superior.dart: move the top SafeArea inside BannerAnuncioSuperior so it only reserves status-bar height when an ad actually renders, restoring edge-to-edge layout for premium and free-unloaded users. 2. servicio_anuncios.dart: bound every interstitial await (load, presentation, and the injected implementation itself) with injectable timeouts so a callback that never fires can no longer hang a caller. 3. estado_entitlement.dart/hoja_premium.dart: expose a typed resultadoUsuario signal for purchase/restore failures and restore-found-nothing, with dedicated localized messages (compraError, restauracionSinCompras) across all 13 locales -- never the raw developer/exception string. 4. main.dart/servicio_consentimiento.dart: add a GDPR/UMP consent flow (ConsentInformation/ConsentForm) that gates Mobile Ads SDK init on canRequestAds(); premium users never see a consent form; failures degrade to no ads instead of crashing or blocking startup. 6. servicio_anuncios.dart: track real ad presentation (onAdShowedFullScreenContent) so a failed-to-show interstitial no longer consumes a session cap slot. 7. banner_anuncio_superior.dart: add an explicit load-attempted guard so repeated didChangeDependencies (e.g. entitlement notifyListeners during a purchase) can only ever trigger one banner load attempt. 8. servicio_anuncios.dart: make esPremium a required constructor parameter, matching the hardened contract already applied to EstadoAlarmas/EstadoGrabacion/EstadoRadio. 9. hoja_premium.dart: add a dedicated premiumActivo localized string instead of reusing the equalizer's equalizerActive translation, across all 13 locales. All fixes implemented RED-first (failing test before production code). Full suite: 1261 passed, 2 pre-existing skips, 0 failures. flutter analyze: 5 pre-existing issues only, 0 new. [version set]
1892 lines
47 KiB
Dart
1892 lines
47 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 => 'PluriWave';
|
||
|
||
@override
|
||
String get navHome => 'Hören';
|
||
|
||
@override
|
||
String get navSearch => 'Suche';
|
||
|
||
@override
|
||
String get navFavorites => 'Favoriten';
|
||
|
||
@override
|
||
String get navAlarms => 'Alarme';
|
||
|
||
@override
|
||
String get navSettings => 'Einstellungen';
|
||
|
||
@override
|
||
String get actionOk => 'OK';
|
||
|
||
@override
|
||
String get sleepTimer => 'Sleep-Timer';
|
||
|
||
@override
|
||
String get sleepTimerDescription =>
|
||
'Sanftes Ausschalten des Radios mit genauem Countdown.';
|
||
|
||
@override
|
||
String get cancelTimer => 'Timer abbrechen';
|
||
|
||
@override
|
||
String get optionOther => 'Andere';
|
||
|
||
@override
|
||
String get customDurationTitle => 'Benutzerdefinierte Dauer';
|
||
|
||
@override
|
||
String get durationGreaterThanZero => 'Wähle eine Dauer größer als null.';
|
||
|
||
@override
|
||
String get hoursLabel => 'Stunden';
|
||
|
||
@override
|
||
String get minutesLabel => 'Minuten';
|
||
|
||
@override
|
||
String get secondsLabel => 'Sekunden';
|
||
|
||
@override
|
||
String durationHoursMinutesSeconds(
|
||
Object hours,
|
||
Object minutes,
|
||
Object seconds,
|
||
) {
|
||
return '$hours Std $minutes Min $seconds Sek';
|
||
}
|
||
|
||
@override
|
||
String durationMinutesSeconds(Object minutes, Object seconds) {
|
||
return '$minutes Min $seconds Sek';
|
||
}
|
||
|
||
@override
|
||
String durationMinutesOnly(Object minutes) {
|
||
return '$minutes Min';
|
||
}
|
||
|
||
@override
|
||
String durationSecondsOnly(Object seconds) {
|
||
return '$seconds Sek';
|
||
}
|
||
|
||
@override
|
||
String get saveQuickAccess => 'Als Schnellzugriff speichern';
|
||
|
||
@override
|
||
String get startTimer => 'Timer starten';
|
||
|
||
@override
|
||
String skipCurrentAlarmExecution(Object alarmName) {
|
||
return 'Diese Ausführung von $alarmName wurde ausgelassen.';
|
||
}
|
||
|
||
@override
|
||
String get settingsTitle => 'Einstellungen';
|
||
|
||
@override
|
||
String get settingsSubtitle =>
|
||
'Feinabstimmung von Klang, Backups und benutzerdefinierten Sendern.';
|
||
|
||
@override
|
||
String get settingsGroupAudioTitle => 'AUDIO';
|
||
|
||
@override
|
||
String get settingsGroupStationsTitle => 'SENDER';
|
||
|
||
@override
|
||
String get settingsGroupRecordingsTitle => 'AUFNAHMEN & MUSIK';
|
||
|
||
@override
|
||
String get settingsGroupApplicationTitle => 'ANWENDUNG';
|
||
|
||
@override
|
||
String get infoSectionTitle => 'Info';
|
||
|
||
@override
|
||
String get languageSectionTitle => 'Sprache';
|
||
|
||
@override
|
||
String get languageSectionDescription =>
|
||
'Wähle, wie die Sprache der App angezeigt wird.';
|
||
|
||
@override
|
||
String get languageSystemDefault => 'System';
|
||
|
||
@override
|
||
String get languageSpanish => 'Spanisch';
|
||
|
||
@override
|
||
String get languageEnglish => 'Englisch';
|
||
|
||
@override
|
||
String languageUpdated(Object languageName) {
|
||
return 'Sprache aktualisiert: $languageName';
|
||
}
|
||
|
||
@override
|
||
String get languageUpdatedSystem => 'Sprache aktualisiert: System';
|
||
|
||
@override
|
||
String get timerSectionTitle => 'Sleep-Timer';
|
||
|
||
@override
|
||
String get timerSectionAdd => 'Hinzufügen';
|
||
|
||
@override
|
||
String get timerSectionDescription =>
|
||
'Passe die Schnellzugriffe an, die beim automatischen Ausschalten des Radios angezeigt werden.';
|
||
|
||
@override
|
||
String get timerSectionRestoreRecommended =>
|
||
'Empfohlene Zeiten wiederherstellen';
|
||
|
||
@override
|
||
String get newQuickAccessTitle => 'Neuer Schnellzugriff';
|
||
|
||
@override
|
||
String get saveQuickAccessButton => 'Schnellzugriff speichern';
|
||
|
||
@override
|
||
String get settingsSafeStatus => 'Sicher';
|
||
|
||
@override
|
||
String get recordingsSectionTitle => 'Aufnahmen';
|
||
|
||
@override
|
||
String get recordingsFolderDialogTitle => 'Aufnahmeordner auswählen';
|
||
|
||
@override
|
||
String get recordingsPathUpdated => 'Aufnahmepfad aktualisiert';
|
||
|
||
@override
|
||
String recordingsPathSaveError(Object error) {
|
||
return 'Pfad konnte nicht gespeichert werden: $error';
|
||
}
|
||
|
||
@override
|
||
String get recordingsDefaultFolderRestored =>
|
||
'Der interne Standardordner wird verwendet';
|
||
|
||
@override
|
||
String get recordingsFolderTitle => 'Aufnahmeordner';
|
||
|
||
@override
|
||
String get recordingsPathCalculating => 'Pfad wird berechnet...';
|
||
|
||
@override
|
||
String get recordingsChangePath => 'Pfad ändern';
|
||
|
||
@override
|
||
String get recordingsUseDefaultPath => 'Standardpfad verwenden';
|
||
|
||
@override
|
||
String get recordingsOriginalStreamHint =>
|
||
'Das Radio wird aus dem Originalstream gespeichert, ohne erneute Komprimierung.';
|
||
|
||
@override
|
||
String get equalizerActive => 'Aktiv';
|
||
|
||
@override
|
||
String get equalizerDisabled => 'Deaktiviert';
|
||
|
||
@override
|
||
String get equalizerEnable => 'Equalizer aktivieren';
|
||
|
||
@override
|
||
String get equalizerRealtimeSubtitle =>
|
||
'Änderungen werden in Echtzeit auf den aktuellen Sender angewendet.';
|
||
|
||
@override
|
||
String get equalizerPendingSubtitle =>
|
||
'Änderungen werden gespeichert und angewendet, sobald Android den Effekt aktiviert.';
|
||
|
||
@override
|
||
String get equalizerPerStationTitle =>
|
||
'Eigenen EQ für diesen Favoriten verwenden';
|
||
|
||
@override
|
||
String equalizerPerStationActive(Object stationName) {
|
||
return 'Aktiv für $stationName';
|
||
}
|
||
|
||
@override
|
||
String equalizerPerStationMain(Object stationName) {
|
||
return 'Haupt-EQ für $stationName wird verwendet';
|
||
}
|
||
|
||
@override
|
||
String get equalizerBaseExplainer =>
|
||
'Dies ist der Basis-Equalizer: Er gilt für alle Sender ohne eigene Einstellung. Der eigene EQ eines Senders wird auf dessen eigenem Wiedergabebildschirm festgelegt und hat Vorrang vor diesem hier.';
|
||
|
||
@override
|
||
String get equalizerActiveOutputLabel => 'Aktiver Ausgang';
|
||
|
||
@override
|
||
String get equalizerActiveOutputDefault => 'Der Lautsprecher dieses Geräts';
|
||
|
||
@override
|
||
String get equalizerStationsWithOwnEqTitle => 'Sender mit eigenem EQ';
|
||
|
||
@override
|
||
String get equalizerStationsWithOwnEqSubtitle =>
|
||
'Ignorieren diesen Basis-Equalizer';
|
||
|
||
@override
|
||
String get equalizerStationsWithOwnEqEmpty =>
|
||
'Noch kein Sender hat einen eigenen EQ.';
|
||
|
||
@override
|
||
String get equalizerSaveAsPresetAction => 'Als Preset speichern';
|
||
|
||
@override
|
||
String get equalizerResetToFlatAction => 'Auf neutral zurücksetzen';
|
||
|
||
@override
|
||
String get equalizerSavePresetDialogTitle => 'Als Preset speichern';
|
||
|
||
@override
|
||
String get equalizerSavePresetNameLabel => 'Preset-Name';
|
||
|
||
@override
|
||
String get equalizerSavePresetEmptyNameError =>
|
||
'Gib einen Namen für das Preset ein.';
|
||
|
||
@override
|
||
String get equalizerSavePresetConfirm => 'Speichern';
|
||
|
||
@override
|
||
String get preferredStationTitle => 'Bevorzugter Sender';
|
||
|
||
@override
|
||
String get preferredStationDescription =>
|
||
'Wird beim Erstellen von Alarmen vorausgewählt und kann als Schnellwiedergabe gestartet werden.';
|
||
|
||
@override
|
||
String get preferredStationNoStationsTitle => 'Noch keine Sender verfügbar';
|
||
|
||
@override
|
||
String get preferredStationNoStationsSubtitle =>
|
||
'Speichere Favoriten oder lade Sender, um einen bevorzugten auszuwählen.';
|
||
|
||
@override
|
||
String get preferredStationAutomaticFallback => 'Automatischer Fallback';
|
||
|
||
@override
|
||
String get preferredStationDefaultFavorite => 'Standardfavorit';
|
||
|
||
@override
|
||
String preferredStationCurrent(Object stationName) {
|
||
return 'Aktuell bevorzugt: $stationName';
|
||
}
|
||
|
||
@override
|
||
String preferredStationAutoUsing(Object stationName) {
|
||
return 'Keine Favoriten: $stationName wird automatisch verwendet';
|
||
}
|
||
|
||
@override
|
||
String get preferredStationPlay => 'Bevorzugten Sender abspielen';
|
||
|
||
@override
|
||
String get customStationsTitle => 'Benutzerdefinierte Sender';
|
||
|
||
@override
|
||
String get customStationsAdd => 'Hinzufügen';
|
||
|
||
@override
|
||
String get customStationsEmpty => 'Keine benutzerdefinierten Sender.';
|
||
|
||
@override
|
||
String get playAction => 'Wiedergeben';
|
||
|
||
@override
|
||
String get deleteAction => 'Löschen';
|
||
|
||
@override
|
||
String get addStationTitle => 'Sender hinzufügen';
|
||
|
||
@override
|
||
String get stationNameLabel => 'Name *';
|
||
|
||
@override
|
||
String get unnamedStation => 'Unbenannter Sender';
|
||
|
||
@override
|
||
String get requiredField => 'Pflichtfeld';
|
||
|
||
@override
|
||
String get streamUrlLabel => 'Stream-URL *';
|
||
|
||
@override
|
||
String get invalidUrl => 'Ungültige URL';
|
||
|
||
@override
|
||
String get countryOptionalLabel => 'Land (optional)';
|
||
|
||
@override
|
||
String get saveStation => 'Sender speichern';
|
||
|
||
@override
|
||
String get backupSectionTitle => 'Sicherung';
|
||
|
||
@override
|
||
String get backupExportTitle => 'Konfiguration exportieren';
|
||
|
||
@override
|
||
String get backupExportSubtitle =>
|
||
'Favoriten, benutzerdefinierte Sender und EQ-Presets';
|
||
|
||
@override
|
||
String get backupImportTitle => 'Konfiguration importieren';
|
||
|
||
@override
|
||
String get backupImportSubtitle =>
|
||
'Aus einer Sicherungsdatei wiederherstellen';
|
||
|
||
@override
|
||
String get backupShareSubject => 'PluriWave — Sicherung';
|
||
|
||
@override
|
||
String backupShareText(Object date) {
|
||
return 'PluriWave-Konfiguration exportiert am $date';
|
||
}
|
||
|
||
@override
|
||
String backupExportError(Object error) {
|
||
return 'Fehler beim Exportieren: $error';
|
||
}
|
||
|
||
@override
|
||
String get backupImportConfirmMessage =>
|
||
'Dadurch werden Favoriten, Sender und Presets aus der Datei hinzugefügt. Fortfahren?';
|
||
|
||
@override
|
||
String get backupImportSuccess => 'Konfiguration erfolgreich importiert';
|
||
|
||
@override
|
||
String backupImportError(Object error) {
|
||
return 'Fehler beim Importieren: $error';
|
||
}
|
||
|
||
@override
|
||
String get appVersionLoading => 'Version wird geladen...';
|
||
|
||
@override
|
||
String appVersionSubtitle(Object version) {
|
||
return '$version - Weltradio';
|
||
}
|
||
|
||
@override
|
||
String get savedFavoritesTitle => 'Gespeicherte Favoriten';
|
||
|
||
@override
|
||
String get stationFilterTitle => 'Senderfilter';
|
||
|
||
@override
|
||
String get stationFilterSubtitle =>
|
||
'Nur Sender, die als aktiv überprüft wurden';
|
||
|
||
@override
|
||
String get backgroundAudioTitle => 'Audio im Hintergrund';
|
||
|
||
@override
|
||
String get backgroundAudioSubtitle =>
|
||
'Läuft weiter, wenn der Bildschirm ausgeschaltet wird';
|
||
|
||
@override
|
||
String get dash => '—';
|
||
|
||
@override
|
||
String get cancelAction => 'Abbrechen';
|
||
|
||
@override
|
||
String get equalizerTitle => 'Equalizer';
|
||
|
||
@override
|
||
String get recordingsOpenFolder => 'Ordner öffnen';
|
||
|
||
@override
|
||
String recordingsOpenFolderError(Object error) {
|
||
return 'Ordner konnte nicht geöffnet werden: $error';
|
||
}
|
||
|
||
@override
|
||
String get recordingsMaxSizeTitle => 'Maximale Aufnahmegröße';
|
||
|
||
@override
|
||
String recordingsMaxSizeSubtitle(int size) {
|
||
return 'Aktuelles Limit: $size MB';
|
||
}
|
||
|
||
@override
|
||
String get recordingsMaxSizeDialogTitle => 'Maximale Größe pro Aufnahme';
|
||
|
||
@override
|
||
String get recordingsMaxSizeMbLabel => 'Maximale Megabytes';
|
||
|
||
@override
|
||
String recordingsMaxSizeSaved(int size) {
|
||
return 'Aufnahmelimit auf $size MB aktualisiert';
|
||
}
|
||
|
||
@override
|
||
String get recordingsLibraryTitle => 'Meine Aufnahmen';
|
||
|
||
@override
|
||
String recordingsLibraryStorageCaption(int usedMb, int totalMb) {
|
||
return '$usedMb MB von $totalMb MB belegt';
|
||
}
|
||
|
||
@override
|
||
String get recordingsLibraryStorageFolderCaption =>
|
||
'Music/PluriWave · älteste werden bei Erreichen des Limits gelöscht';
|
||
|
||
@override
|
||
String get recordingsLibraryEmptyTitle => 'Noch keine Aufnahmen';
|
||
|
||
@override
|
||
String get recordingsLibraryEmptySubtitle =>
|
||
'Aufnahmen, die du speicherst, erscheinen hier.';
|
||
|
||
@override
|
||
String get recordingActionRename => 'Umbenennen';
|
||
|
||
@override
|
||
String get recordingActionShare => 'Teilen';
|
||
|
||
@override
|
||
String get recordingActionDelete => 'Löschen';
|
||
|
||
@override
|
||
String get recordingRenameDialogTitle => 'Aufnahme umbenennen';
|
||
|
||
@override
|
||
String get recordingRenameLabel => 'Name';
|
||
|
||
@override
|
||
String get recordingRenameEmptyError => 'Gib einen Namen ein';
|
||
|
||
@override
|
||
String get recordingDeleteConfirmTitle => 'Aufnahme löschen?';
|
||
|
||
@override
|
||
String get recordingDeleteConfirmMessage =>
|
||
'Dies kann nicht rückgängig gemacht werden.';
|
||
|
||
@override
|
||
String get recordingsLibrarySettingsTooltip => 'Aufnahmeeinstellungen';
|
||
|
||
@override
|
||
String get stationOrderTitle => 'Senderreihenfolge';
|
||
|
||
@override
|
||
String get stationOrderByName => 'Nach Name';
|
||
|
||
@override
|
||
String get stationOrderByQuality => 'Nach Qualität';
|
||
|
||
@override
|
||
String get stationOrderByPopularity => 'Nach Beliebtheit';
|
||
|
||
@override
|
||
String get stationOrderScopeDescription =>
|
||
'Gilt für Favoriten, Suchen, nahegelegene Sender und Schnelllisten.';
|
||
|
||
@override
|
||
String get favoriteGroupsTitle => 'Favoritenlisten';
|
||
|
||
@override
|
||
String get favoriteGroupsDescription =>
|
||
'Erstelle kurze Listen, um deine gespeicherten Sender zu organisieren.';
|
||
|
||
@override
|
||
String get favoriteGroupsAdd => 'Liste hinzufügen';
|
||
|
||
@override
|
||
String get favoriteGroupsEdit => 'Liste bearbeiten';
|
||
|
||
@override
|
||
String get favoriteGroupsDelete => 'Liste löschen';
|
||
|
||
@override
|
||
String get favoriteGroupsNameLabel => 'Listenname';
|
||
|
||
@override
|
||
String get favoriteGroupsNameTooLong => 'Maximal 28 Zeichen.';
|
||
|
||
@override
|
||
String get favoriteGroupsUnassigned => 'Nicht zugewiesen';
|
||
|
||
@override
|
||
String get favoriteGroupsProtectedHint =>
|
||
'Standardliste: kann nicht bearbeitet oder gelöscht werden.';
|
||
|
||
@override
|
||
String get favoriteGroupsCreated => 'Liste erstellt';
|
||
|
||
@override
|
||
String get favoriteGroupsUpdated => 'Liste aktualisiert';
|
||
|
||
@override
|
||
String get favoriteGroupsDeleted =>
|
||
'Liste gelöscht; ihre Sender kehren zu Nicht zugewiesen zurück.';
|
||
|
||
@override
|
||
String get favoriteGroupsAssign => 'In Liste verschieben';
|
||
|
||
@override
|
||
String favoriteGroupsAssignSubtitle(Object groupName) {
|
||
return 'Aktuelle Liste: $groupName';
|
||
}
|
||
|
||
@override
|
||
String favoriteGroupsAssigned(Object stationName, Object groupName) {
|
||
return '$stationName nach $groupName verschoben';
|
||
}
|
||
|
||
@override
|
||
String get favoritesTitle => 'Favoriten';
|
||
|
||
@override
|
||
String get favoritesEmptyTitle => 'Noch keine Favoriten';
|
||
|
||
@override
|
||
String get favoritesEmptySubtitle =>
|
||
'Tippe bei einem Sender auf das Herz, um ihn in deiner Sammlung zu speichern.';
|
||
|
||
@override
|
||
String get favoritesHeaderSubtitle =>
|
||
'Organisiere deine Sammlung in Listen und halte wichtige Radios griffbereit.';
|
||
|
||
@override
|
||
String get favoritesCollection => 'Sammlung';
|
||
|
||
@override
|
||
String favoritesSavedCount(int count) {
|
||
return '$count gespeichert';
|
||
}
|
||
|
||
@override
|
||
String get favoritesRemoveTooltip => 'Aus Favoriten entfernen';
|
||
|
||
@override
|
||
String favoritesRemovedMessage(Object stationName) {
|
||
return '$stationName aus Favoriten entfernt';
|
||
}
|
||
|
||
@override
|
||
String get favoritesFilterAllLabel => 'Alle';
|
||
|
||
@override
|
||
String favoriteGroupsChipLabel(Object groupName, int count) {
|
||
return '$groupName · $count';
|
||
}
|
||
|
||
@override
|
||
String get favoriteGroupsManage => 'Listen verwalten';
|
||
|
||
@override
|
||
String get customStationsAddCta => 'Benutzerdefinierten Sender hinzufügen';
|
||
|
||
@override
|
||
String get alarmPostponedCurrentExecution =>
|
||
'Alarm für diese Ausführung verschoben.';
|
||
|
||
@override
|
||
String get searchScreenTitle => 'Signal suchen';
|
||
|
||
@override
|
||
String get searchScreenSubtitle =>
|
||
'Finde Sender nach Name, Land oder Sprache mit schnellen Filtern und hohem Kontrast.';
|
||
|
||
@override
|
||
String get searchFiltersLabel => 'Filter';
|
||
|
||
@override
|
||
String get searchHint => 'Radio Horizont, Jazz, Nachrichten...';
|
||
|
||
@override
|
||
String get searchCountryFilterLabel => 'Land';
|
||
|
||
@override
|
||
String get searchLanguageFilterLabel => 'Sprache';
|
||
|
||
@override
|
||
String get searchMinQualityFilterLabel => 'Mindestqualität';
|
||
|
||
@override
|
||
String get searchLoadingStationsLabel => 'SENDER WERDEN GESUCHT…';
|
||
|
||
@override
|
||
String get searchEmptyTitle => 'Suche nach einem Sender';
|
||
|
||
@override
|
||
String get searchNoResultsTitle => 'Keine Ergebnisse';
|
||
|
||
@override
|
||
String searchNoResultsForQueryTitle(Object query) {
|
||
return 'Keine Ergebnisse für „$query“';
|
||
}
|
||
|
||
@override
|
||
String get searchEmptySubtitle =>
|
||
'Nutze die obere Leiste oder die Chips, um Sender aus aller Welt zu entdecken.';
|
||
|
||
@override
|
||
String get searchNoResultsSubtitle =>
|
||
'Versuche, Filter zu entfernen oder einen anderen Namen einzugeben, um einen aktiven Sender zu finden.';
|
||
|
||
@override
|
||
String searchResultsCount(num count) {
|
||
String _temp0 = intl.Intl.pluralLogic(
|
||
count,
|
||
locale: localeName,
|
||
other: '$count Ergebnisse',
|
||
one: '1 Ergebnis',
|
||
);
|
||
return '$_temp0';
|
||
}
|
||
|
||
@override
|
||
String searchClearFiltersAction(num count) {
|
||
String _temp0 = intl.Intl.pluralLogic(
|
||
count,
|
||
locale: localeName,
|
||
other: '$count Filter entfernen',
|
||
one: 'Filter entfernen',
|
||
);
|
||
return '$_temp0';
|
||
}
|
||
|
||
@override
|
||
String get countriesScreenTitle => 'Länder';
|
||
|
||
@override
|
||
String get countriesSearchHint => 'Land oder Code...';
|
||
|
||
@override
|
||
String get countriesYourLanguagesTitle => 'Deine Sprachen';
|
||
|
||
@override
|
||
String get countriesAllTitle => 'Alle Länder';
|
||
|
||
@override
|
||
String get radioCountriesError => 'Die Länder konnten nicht geladen werden.';
|
||
|
||
@override
|
||
String get countrySpain => 'Spanien';
|
||
|
||
@override
|
||
String get countryUsa => 'USA';
|
||
|
||
@override
|
||
String get countryMexico => 'Mexiko';
|
||
|
||
@override
|
||
String get countryArgentina => 'Argentinien';
|
||
|
||
@override
|
||
String get countryUk => 'Vereinigtes Königreich';
|
||
|
||
@override
|
||
String get countryFrance => 'Frankreich';
|
||
|
||
@override
|
||
String get countryGermany => 'Deutschland';
|
||
|
||
@override
|
||
String get countryItaly => 'Italien';
|
||
|
||
@override
|
||
String get countryBrazil => 'Brasilien';
|
||
|
||
@override
|
||
String get countryJapan => 'Japan';
|
||
|
||
@override
|
||
String get languageNameSpanish => 'Spanisch';
|
||
|
||
@override
|
||
String get languageNameEnglish => 'Englisch';
|
||
|
||
@override
|
||
String get languageNameFrench => 'Französisch';
|
||
|
||
@override
|
||
String get languageNameGerman => 'Deutsch';
|
||
|
||
@override
|
||
String get languageNamePortuguese => 'Portugiesisch';
|
||
|
||
@override
|
||
String get languageNameItalian => 'Italienisch';
|
||
|
||
@override
|
||
String get languageNameJapanese => 'Japanisch';
|
||
|
||
@override
|
||
String get languageNameArabic => 'Arabisch';
|
||
|
||
@override
|
||
String get languageNameRussian => 'Russisch';
|
||
|
||
@override
|
||
String get homeScreenSubtitle =>
|
||
'Live-Weltradio mit klaren Signalen, intelligenten Favoriten und einer visuellen Game-Show-Erfahrung.';
|
||
|
||
@override
|
||
String get exploreStations => 'Sender erkunden';
|
||
|
||
@override
|
||
String stationsCount(int count) {
|
||
return '$count Radios';
|
||
}
|
||
|
||
@override
|
||
String get qualityHd => 'HD-Qualität';
|
||
|
||
@override
|
||
String get yourStationsTitle => 'Deine Sender';
|
||
|
||
@override
|
||
String get seeAllAction => 'Alle ansehen';
|
||
|
||
@override
|
||
String get openFullPlayerTooltip => 'Vollständigen Player öffnen';
|
||
|
||
@override
|
||
String get nowListeningLabel => 'Läuft gerade';
|
||
|
||
@override
|
||
String get nothingPlayingTitle => 'Es läuft noch nichts';
|
||
|
||
@override
|
||
String get nothingPlayingSubtitle =>
|
||
'Wähle einen Sender aus Deine Sender oder suche einen, um zu starten.';
|
||
|
||
@override
|
||
String get nearYou => 'In deiner Nähe';
|
||
|
||
@override
|
||
String nearYouInCountry(Object country) {
|
||
return 'In deiner Nähe · $country';
|
||
}
|
||
|
||
@override
|
||
String get detectAction => 'Erkennen';
|
||
|
||
@override
|
||
String get liveRadar => 'Live-Radar';
|
||
|
||
@override
|
||
String get genresTitle => 'Genres';
|
||
|
||
@override
|
||
String get exploreByTitle => 'Entdecken nach';
|
||
|
||
@override
|
||
String get exploreTrendingTitle => 'Trends';
|
||
|
||
@override
|
||
String get exploreTrendingSubtitle => 'Heute';
|
||
|
||
@override
|
||
String get exploreNewTitle => 'Neuheiten';
|
||
|
||
@override
|
||
String get exploreNewSubtitle => 'Diese Woche';
|
||
|
||
@override
|
||
String get popularNowTitle => 'Jetzt beliebt';
|
||
|
||
@override
|
||
String get offlineBannerTitle => 'Keine Verbindung';
|
||
|
||
@override
|
||
String get retryAction => 'Erneut versuchen';
|
||
|
||
@override
|
||
String get noStationsAvailable => 'Keine Sender verfügbar';
|
||
|
||
@override
|
||
String get noStationsAvailableSubtitle =>
|
||
'Versuche zu aktualisieren oder ein anderes Genre auszuwählen, um wieder ein Signal zu empfangen.';
|
||
|
||
@override
|
||
String get genrePop => 'Pop';
|
||
|
||
@override
|
||
String get genreRock => 'Rock';
|
||
|
||
@override
|
||
String get genreJazz => 'Jazz';
|
||
|
||
@override
|
||
String get genreClassical => 'Klassik';
|
||
|
||
@override
|
||
String get genreElectronic => 'Elektronisch';
|
||
|
||
@override
|
||
String get genreNews => 'Nachrichten';
|
||
|
||
@override
|
||
String get genreTalk => 'Talk';
|
||
|
||
@override
|
||
String get genreHipHop => 'Hip-hop';
|
||
|
||
@override
|
||
String get genreCountry => 'Country';
|
||
|
||
@override
|
||
String get genreMetal => 'Metal';
|
||
|
||
@override
|
||
String get genreReggae => 'Reggae';
|
||
|
||
@override
|
||
String get genreLatin => 'Latin';
|
||
|
||
@override
|
||
String get alarmScreenTitle => 'Musikalisch aufwachen';
|
||
|
||
@override
|
||
String get alarmScreenSubtitle =>
|
||
'Alarme mit Radio, sicherem Ton, intelligenten Ferien und stets sichtbarer nächster Ausführung.';
|
||
|
||
@override
|
||
String get createAlarmAction => 'Alarm erstellen';
|
||
|
||
@override
|
||
String alarmsCount(int count) {
|
||
return '$count Alarme';
|
||
}
|
||
|
||
@override
|
||
String get activeAlarmsWithoutNextTitle =>
|
||
'Aktive Alarme ohne nächste Ausführung';
|
||
|
||
@override
|
||
String get noActiveAlarms => 'Keine aktiven Alarme';
|
||
|
||
@override
|
||
String get nextAlarmTitle => 'Nächster Alarm';
|
||
|
||
@override
|
||
String activeAlarmsWithoutNextSubtitle(int count) {
|
||
return 'Es gibt $count aktive(n) Alarm(e), aber derzeit kein gültiges zukünftiges Datum. Prüfe Datum, Wochentage und Ferien.';
|
||
}
|
||
|
||
@override
|
||
String get createAlarmHint =>
|
||
'Erstelle einen Alarm und PluriWave berechnet automatisch die nächste Ausführung.';
|
||
|
||
@override
|
||
String get alarmVacationPlay => 'Läutet in den Ferien';
|
||
|
||
@override
|
||
String get alarmVacationPause => 'In den Ferien pausiert';
|
||
|
||
@override
|
||
String alarmFadeInLabel(int seconds) {
|
||
return 'Fade-in ${seconds}s';
|
||
}
|
||
|
||
@override
|
||
String alarmNextExecution(Object date) {
|
||
return 'Nächste Ausführung: $date';
|
||
}
|
||
|
||
@override
|
||
String get alarmNoNextExecution => 'Keine aktive nächste Ausführung.';
|
||
|
||
@override
|
||
String alarmSkippedExecution(Object date) {
|
||
return 'Eine Ausführung wurde ausgelassen: $date.';
|
||
}
|
||
|
||
@override
|
||
String get editAction => 'Bearbeiten';
|
||
|
||
@override
|
||
String get skipNextAction => 'Nächste auslassen';
|
||
|
||
@override
|
||
String get deleteTooltip => 'Löschen';
|
||
|
||
@override
|
||
String get alarmHeroSkipAction => 'Überspringen';
|
||
|
||
@override
|
||
String get alarmDeleteConfirmTitle => 'Alarm löschen?';
|
||
|
||
@override
|
||
String get alarmDeleteConfirmMessage =>
|
||
'Dies kann nicht rückgängig gemacht werden.';
|
||
|
||
@override
|
||
String get alarmSkippedNoNextSnackbar =>
|
||
'Alarm ausgelassen. Es bleibt keine nächste Ausführung.';
|
||
|
||
@override
|
||
String alarmSkippedReturnsSnackbar(Object date) {
|
||
return 'Alarm ausgelassen. Er kehrt am $date zurück.';
|
||
}
|
||
|
||
@override
|
||
String alarmVacationPausedNoNext(Object vacationName) {
|
||
return 'Wegen Ferien ($vacationName) pausiert und ohne nächste Ausführung.';
|
||
}
|
||
|
||
@override
|
||
String alarmVacationPausedReturns(Object vacationName, Object date) {
|
||
return 'Wegen Ferien ($vacationName) pausiert und kehrt am $date zurück.';
|
||
}
|
||
|
||
@override
|
||
String alarmVacationReturns(Object date) {
|
||
return 'Mit aktiven Ferien läutet er wieder am $date.';
|
||
}
|
||
|
||
@override
|
||
String get defaultAlarmName => 'Musikalischer Wecker';
|
||
|
||
@override
|
||
String get newAlarmTitle => 'Neuer Alarm';
|
||
|
||
@override
|
||
String get editAlarmTitle => 'Alarm bearbeiten';
|
||
|
||
@override
|
||
String get nameField => 'Name';
|
||
|
||
@override
|
||
String get timeField => 'Uhrzeit';
|
||
|
||
@override
|
||
String get dateField => 'Datum';
|
||
|
||
@override
|
||
String get onceOption => 'Einmal';
|
||
|
||
@override
|
||
String get dailyOption => 'Täglich';
|
||
|
||
@override
|
||
String get weekdaysOption => 'Tage';
|
||
|
||
@override
|
||
String get soundAndVolumeSection => 'Klang und Lautstärke';
|
||
|
||
@override
|
||
String get alarmFadeInTitle => 'Alarm-Fade-in';
|
||
|
||
@override
|
||
String get alarmFadeInOff => '0 s (ohne Übergang)';
|
||
|
||
@override
|
||
String alarmFadeInSummary(int seconds) {
|
||
return '$seconds s (von 5 % bis zur gewählten Lautstärke)';
|
||
}
|
||
|
||
@override
|
||
String get internalSafeSoundLabel => 'Interner Sicherheitston';
|
||
|
||
@override
|
||
String get soundWarmSunrise => 'Warmer Sonnenaufgang';
|
||
|
||
@override
|
||
String get soundSoftBell => 'Sanfte Glocke';
|
||
|
||
@override
|
||
String get soundDigitalPulse => 'Digitaler Puls';
|
||
|
||
@override
|
||
String get favoriteStationLabel => 'Lieblingssender';
|
||
|
||
@override
|
||
String get noStationUseInternalSound => 'Kein Sender: internen Ton verwenden';
|
||
|
||
@override
|
||
String get alarmFallbackStationLabel => 'Ersatzsender';
|
||
|
||
@override
|
||
String get alarmStationPickerSearchHint => 'Sender nach Name suchen';
|
||
|
||
@override
|
||
String get alarmSnoozeDurationTitle => 'Schlummerdauer';
|
||
|
||
@override
|
||
String get snoozeAction => 'Schlummern';
|
||
|
||
@override
|
||
String alarmSnoozeOptionLabel(int minutes) {
|
||
return '$minutes Min.';
|
||
}
|
||
|
||
@override
|
||
String get alarmSnoozeUsualLabel => 'üblich';
|
||
|
||
@override
|
||
String get saveFavoritesAlarmHint =>
|
||
'Speichere Sender in Favoriten, um sie als musikalischen Alarm zu verwenden.';
|
||
|
||
@override
|
||
String get useCurrentStationAction => 'Aktuellen Sender verwenden';
|
||
|
||
@override
|
||
String get playDuringVacations => 'Während der Ferien läuten';
|
||
|
||
@override
|
||
String get playDuringVacationsHint =>
|
||
'Wenn du das ausschaltest, springt die nächste Ausführung zum ersten gültigen Tag.';
|
||
|
||
@override
|
||
String get saveAlarmAction => 'Alarm speichern';
|
||
|
||
@override
|
||
String get chooseOneWeekdayError => 'Wähle mindestens einen Wochentag.';
|
||
|
||
@override
|
||
String get androidReliabilityReview => 'Android-Zuverlässigkeit prüfen';
|
||
|
||
@override
|
||
String get statusOk => 'OK';
|
||
|
||
@override
|
||
String get statusPending => 'ausstehend';
|
||
|
||
@override
|
||
String androidReliabilityStatus(
|
||
Object exact,
|
||
Object notifications,
|
||
Object screen,
|
||
) {
|
||
return 'Zuverlässigkeit: exakt $exact · Benachrichtigungen $notifications · Bildschirm $screen';
|
||
}
|
||
|
||
@override
|
||
String get vacationRangesTitle => 'Ferienzeiträume';
|
||
|
||
@override
|
||
String get addAction => 'Hinzufügen';
|
||
|
||
@override
|
||
String get vacationRangesHint =>
|
||
'Wenn ein Alarm „In den Ferien pausiert“ hat, werden diese Zeiträume automatisch übersprungen.';
|
||
|
||
@override
|
||
String get noVacationRangesLoaded => 'Keine Zeiträume geladen.';
|
||
|
||
@override
|
||
String get deleteRangeTooltip => 'Zeitraum löschen';
|
||
|
||
@override
|
||
String vacationRangesCount(int count) {
|
||
return '$count Zeiträume';
|
||
}
|
||
|
||
@override
|
||
String vacationSummaryActiveCountdown(int days) {
|
||
return 'Läuft gerade · noch $days Tage';
|
||
}
|
||
|
||
@override
|
||
String vacationSummaryUpcomingCountdown(int days) {
|
||
return 'Nächster Zeitraum in $days Tagen';
|
||
}
|
||
|
||
@override
|
||
String vacationImpactPausedLabel(Object times) {
|
||
return 'Pausiert: $times';
|
||
}
|
||
|
||
@override
|
||
String vacationImpactContinuesLabel(Object times) {
|
||
return 'Klingelt weiter: $times';
|
||
}
|
||
|
||
@override
|
||
String get vacationUpcomingSectionTitle => 'GEPLANT';
|
||
|
||
@override
|
||
String get vacationPastSectionTitle => 'Vergangene Zeiträume';
|
||
|
||
@override
|
||
String get addVacationRangeCta => 'Zeitraum hinzufügen';
|
||
|
||
@override
|
||
String get vacationExplainerBanner =>
|
||
'Während dieser Zeiträume klingeln Alarme mit der Markierung \"im Urlaub pausieren\" nicht. Als \"immer klingeln\" markierte Alarme sind davon nicht betroffen.';
|
||
|
||
@override
|
||
String get vacationNoActiveRangeHint =>
|
||
'Momentan ist kein aktiver Urlaubszeitraum vorhanden.';
|
||
|
||
@override
|
||
String get vacationsDefaultName => 'Ferien';
|
||
|
||
@override
|
||
String get newVacationRangeTitle => 'Neuer Ferienzeitraum';
|
||
|
||
@override
|
||
String get editVacationRangeTitle => 'Ferienzeitraum bearbeiten';
|
||
|
||
@override
|
||
String get vacationDeleteConfirmTitle => 'Ferienzeitraum löschen?';
|
||
|
||
@override
|
||
String get vacationDeleteConfirmMessage =>
|
||
'Dies kann nicht rückgängig gemacht werden.';
|
||
|
||
@override
|
||
String get startField => 'Beginn';
|
||
|
||
@override
|
||
String get endField => 'Ende';
|
||
|
||
@override
|
||
String get saveRangeAction => 'Zeitraum speichern';
|
||
|
||
@override
|
||
String get noAlarmsYetTitle => 'Noch keine Alarme.';
|
||
|
||
@override
|
||
String get noAlarmsYetSubtitle =>
|
||
'Erstelle einen, um dein musikalisches Aufwachen zu gestalten.';
|
||
|
||
@override
|
||
String get ringingInternalAudioActive =>
|
||
'Wiedergabe mit internem Sicherheitston.';
|
||
|
||
@override
|
||
String get ringingPreparingInternalAudio =>
|
||
'Interner Sicherheitston wird vorbereitet.';
|
||
|
||
@override
|
||
String get stopAlarmAction => 'Alarm stoppen';
|
||
|
||
@override
|
||
String get alarmStopFailedMessage =>
|
||
'Wir konnten nicht bestätigen, dass der Alarm gestoppt wurde. Versuche es erneut.';
|
||
|
||
@override
|
||
String get alarmForceStopAction => 'Erzwungen stoppen';
|
||
|
||
@override
|
||
String get alarmMissedNotificationTitle => 'Verpasster Alarm';
|
||
|
||
@override
|
||
String alarmMissedNotificationText(Object name) {
|
||
return '$name wurde nach 10 Minuten automatisch stummgeschaltet.';
|
||
}
|
||
|
||
@override
|
||
String get pauseAction => 'Pausieren';
|
||
|
||
@override
|
||
String miniPlayerOpenLabel(Object stationName) {
|
||
return 'Wiedergabe für $stationName öffnen';
|
||
}
|
||
|
||
@override
|
||
String get playerIconLabel => 'Wiedergabe';
|
||
|
||
@override
|
||
String get playbackStatusConnecting => 'Verbindung wird hergestellt...';
|
||
|
||
@override
|
||
String get playbackStatusLive => 'Live';
|
||
|
||
@override
|
||
String get playbackStatusPaused => 'Pausiert';
|
||
|
||
@override
|
||
String get playbackStatusReconnecting => 'Wird neu verbunden...';
|
||
|
||
@override
|
||
String get playbackStatusConnectionError => 'Verbindungsfehler';
|
||
|
||
@override
|
||
String get playbackStatusStopped => 'Gestoppt';
|
||
|
||
@override
|
||
String stationSemanticLabel(Object stationName) {
|
||
return 'Sender $stationName';
|
||
}
|
||
|
||
@override
|
||
String get favoritesAddTooltip => 'Zu Favoriten hinzufügen';
|
||
|
||
@override
|
||
String favoritesAddedMessage(Object stationName) {
|
||
return '$stationName zu Favoriten hinzugefügt';
|
||
}
|
||
|
||
@override
|
||
String get stationIconLabel => 'Sendersymbol';
|
||
|
||
@override
|
||
String get liveNow => 'Live';
|
||
|
||
@override
|
||
String equalizerBandLabel(Object band) {
|
||
return 'Band $band';
|
||
}
|
||
|
||
@override
|
||
String equalizerBandValue(Object value) {
|
||
return '$value Dezibel';
|
||
}
|
||
|
||
@override
|
||
String get equalizerPresetFlat => 'Linear';
|
||
|
||
@override
|
||
String get equalizerPresetRock => 'Rock';
|
||
|
||
@override
|
||
String get equalizerPresetPop => 'Pop';
|
||
|
||
@override
|
||
String get equalizerPresetBassBoost => 'Bassverstärkung';
|
||
|
||
@override
|
||
String get equalizerPresetJazz => 'Jazz';
|
||
|
||
@override
|
||
String get equalizerPresetVoice => 'Stimme';
|
||
|
||
@override
|
||
String get equalizerPresetCustom => 'Benutzerdefiniert';
|
||
|
||
@override
|
||
String get onboardingTitle => 'Willkommen bei PluriWave';
|
||
|
||
@override
|
||
String get onboardingNewsTitle => 'Neuigkeiten';
|
||
|
||
@override
|
||
String get onboardingStartAction => 'Loslegen';
|
||
|
||
@override
|
||
String get onboardingCloseTooltip => 'Schließen';
|
||
|
||
@override
|
||
String radioRecordingError(Object error) {
|
||
return 'Fehler beim Aufnehmen des Radios: $error';
|
||
}
|
||
|
||
@override
|
||
String get radioApiConnectionError => 'Keine Verbindung zur Radio-API';
|
||
|
||
@override
|
||
String get radioSearchError => 'Suchfehler. Überprüfe deine Verbindung.';
|
||
|
||
@override
|
||
String get radioLoadMoreStationsError =>
|
||
'Weitere Sender konnten nicht geladen werden.';
|
||
|
||
@override
|
||
String get radioNearbyStationsError =>
|
||
'Nahegelegene Sender konnten nicht erkannt werden. Nutze Filter nach Land.';
|
||
|
||
@override
|
||
String radioCannotPlayStation(Object stationName) {
|
||
return '\"$stationName\" kann nicht wiedergegeben werden';
|
||
}
|
||
|
||
@override
|
||
String get recordingSelectStationFirst =>
|
||
'Wähle zuerst einen Sender zum Aufnehmen aus.';
|
||
|
||
@override
|
||
String recordingStartError(Object error) {
|
||
return 'Aufnahme konnte nicht gestartet werden: $error';
|
||
}
|
||
|
||
@override
|
||
String get unsupportedConfigVersion =>
|
||
'Nicht unterstützte Konfigurationsversion';
|
||
|
||
@override
|
||
String get audioErrorGeneric => 'Wiedergabefehler';
|
||
|
||
@override
|
||
String get audioErrorNoInternet => 'Keine Internetverbindung';
|
||
|
||
@override
|
||
String get audioErrorInvalidUrl => 'Die Radio-URL ist ungültig';
|
||
|
||
@override
|
||
String get audioErrorNotFound => 'Das Radio ist nicht verfügbar (Fehler 404)';
|
||
|
||
@override
|
||
String get audioErrorTimeout => 'Zeitüberschreitung beim Verbinden';
|
||
|
||
@override
|
||
String get audioErrorCannotConnect =>
|
||
'Es kann keine Verbindung zum Radio hergestellt werden';
|
||
|
||
@override
|
||
String get audioErrorUnsupportedFormat => 'Nicht unterstütztes Stream-Format';
|
||
|
||
@override
|
||
String get audioErrorDecode => 'Fehler beim Decodieren des Audiostreams';
|
||
|
||
@override
|
||
String get audioErrorCleartext =>
|
||
'Dieses Radio verwendet unverschlüsseltes HTTP, was nicht erlaubt ist';
|
||
|
||
@override
|
||
String get audioErrorSsl => 'Ungültiges SSL-Zertifikat für das Radio';
|
||
|
||
@override
|
||
String get audioErrorCannotPlay =>
|
||
'Dieses Radio kann nicht wiedergegeben werden';
|
||
|
||
@override
|
||
String get audioErrorUnexpectedPlayback => 'Unerwarteter Wiedergabefehler';
|
||
|
||
@override
|
||
String get androidExactAlarmScheduleError =>
|
||
'Android konnte keinen exakten Alarm planen. Prüfe die Berechtigung für exakte Alarme.';
|
||
|
||
@override
|
||
String get recordingPathEmptyError => 'Der Aufnahmepfad darf nicht leer sein';
|
||
|
||
@override
|
||
String get recordingMaxSizeInvalidError =>
|
||
'Die maximale Größe muss größer als null sein';
|
||
|
||
@override
|
||
String get recordingAlreadyActiveError => 'Es läuft bereits eine Aufnahme';
|
||
|
||
@override
|
||
String get alarmRingingFallbackActive =>
|
||
'Wiedergabe mit internem Sicherheitsaudio.';
|
||
|
||
@override
|
||
String get alarmRingingPreparingFallback =>
|
||
'Internes Sicherheitsaudio wird vorbereitet.';
|
||
|
||
@override
|
||
String get alarmRingingTryingStation =>
|
||
'Dein Sender wird mit der bestmöglichen verfügbaren Qualität gestartet.';
|
||
|
||
@override
|
||
String get alarmScheduleDaily => 'Jeden Morgen';
|
||
|
||
@override
|
||
String alarmScheduleOnce(Object date) {
|
||
return 'Einmal · $date';
|
||
}
|
||
|
||
@override
|
||
String alarmScheduleWeekdays(Object days) {
|
||
return 'Tage: $days';
|
||
}
|
||
|
||
@override
|
||
String get alarmRepeatSectionLabel => 'WIEDERHOLEN';
|
||
|
||
@override
|
||
String get alarmVolumeLabel => 'Lautstärke';
|
||
|
||
@override
|
||
String get androidReliabilityTitle => 'Android-Zuverlässigkeit prüfen';
|
||
|
||
@override
|
||
String get closeAction => 'Schließen';
|
||
|
||
@override
|
||
String get customOption => 'Benutzerdefiniert';
|
||
|
||
@override
|
||
String get endLabel => 'Ende';
|
||
|
||
@override
|
||
String get equalizerDisable => 'Equalizer deaktivieren';
|
||
|
||
@override
|
||
String get helpTitle => 'Hilfe und Tutorial';
|
||
|
||
@override
|
||
String get helpSubtitle => '9 Bildschirme · jederzeit erneut ansehen';
|
||
|
||
@override
|
||
String get tutorialSkipAction => 'Überspringen';
|
||
|
||
@override
|
||
String get tutorialNextAction => 'Weiter';
|
||
|
||
@override
|
||
String get tutorialPage1Headline =>
|
||
'Speichere deine Sender und gruppiere sie';
|
||
|
||
@override
|
||
String get tutorialPage1Body =>
|
||
'Tippe auf das Herz, um einen Sender zu speichern. Unter „Deine Sender“ kannst du Gruppen wie „Jeden Morgen“ oder „Auto“ anlegen und sie per Ziehen neu anordnen.';
|
||
|
||
@override
|
||
String get tutorialPage2Headline =>
|
||
'Ein Basis-Equalizer und einer pro Sender';
|
||
|
||
@override
|
||
String get tutorialPage2Body =>
|
||
'In den Einstellungen legst du den allgemeinen Equalizer fest. Und während der Wiedergabe eines bestimmten Senders kannst du ihm eine eigene Einstellung geben, die Vorrang vor der allgemeinen hat.';
|
||
|
||
@override
|
||
String get tutorialPage3Headline => 'Nimm auf, was du gerade hörst';
|
||
|
||
@override
|
||
String get tutorialPage3Body =>
|
||
'Über die Werkzeugleiste des Players speichert „Aufnehmen“ den Original-Stream. Deine Aufnahmen findest du unter Einstellungen › Aufnahmen.';
|
||
|
||
@override
|
||
String get tutorialPage4Headline => 'Alarme, die sich dir anpassen';
|
||
|
||
@override
|
||
String get tutorialPage4Body =>
|
||
'Wach mit deinem Lieblingssender auf, schlummere 3, 5 oder 10 Minuten weiter und füge Urlaubszeiträume hinzu, damit manche Alarme von selbst ausgesetzt werden.';
|
||
|
||
@override
|
||
String get tutorialPage5Headline => 'Deine Favoriten, auch im Auto';
|
||
|
||
@override
|
||
String get tutorialPage5Body =>
|
||
'Verbinde dein Handy mit Android Auto und finde Favoriten, Alle Sender, Deine Sender und deine lokale Musik, mit großen, fürs Fahren gemachten Tasten.';
|
||
|
||
@override
|
||
String get tutorialPage6Headline => 'Verbindet sich von selbst neu';
|
||
|
||
@override
|
||
String get tutorialPage6Body =>
|
||
'Bricht das Signal ab, versucht PluriWave automatisch erneut und zeigt weiterhin deine gespeicherten Favoriten, auch ohne Verbindung.';
|
||
|
||
@override
|
||
String get tutorialPage7Headline => 'Wähle, wie lange du schlummerst';
|
||
|
||
@override
|
||
String get tutorialPage7Body =>
|
||
'Wenn ein Alarm klingelt, gibt es nicht nur ein „Schlummern“: Du wählst 3, 5 oder 10 Minuten, je nachdem, was du gerade brauchst.';
|
||
|
||
@override
|
||
String get tutorialPage8Headline =>
|
||
'Findest du ihn nicht? Füge ihn selbst hinzu';
|
||
|
||
@override
|
||
String get tutorialPage8Body =>
|
||
'Füge unter „Deine Sender“ → Eigenen Sender hinzufügen die Stream-URL eines Senders ein, der nicht in der Suche auftaucht. Er wird unter „Deine Sender“ gespeichert und ist auch im Auto verfügbar.';
|
||
|
||
@override
|
||
String get tutorialPage9Headline => 'Fertig, du kennst jetzt das Wichtigste';
|
||
|
||
@override
|
||
String get tutorialPage9BannerBody =>
|
||
'Um dieses Tutorial jederzeit erneut anzusehen: Einstellungen → Info → Hilfe und Tutorial.';
|
||
|
||
@override
|
||
String get indefiniteOption => 'Unbegrenzt';
|
||
|
||
@override
|
||
String get invalidNumber => 'Ungültige Zahl';
|
||
|
||
@override
|
||
String get nameLabel => 'Name';
|
||
|
||
@override
|
||
String get notPlaying => 'Wird nicht wiedergegeben';
|
||
|
||
@override
|
||
String get oneTimeOption => 'Einmal';
|
||
|
||
@override
|
||
String get pausePlaybackTooltip => 'Wiedergabe pausieren';
|
||
|
||
@override
|
||
String get playerQualityChangeAction => 'Ändern';
|
||
|
||
@override
|
||
String get playerToolEqLabel => 'Eigener EQ';
|
||
|
||
@override
|
||
String qualityOriginal(Object quality) {
|
||
return 'Originalqualität: $quality';
|
||
}
|
||
|
||
@override
|
||
String get qualityUnknown => 'Qualität nicht angegeben';
|
||
|
||
@override
|
||
String get recordAction => 'Aufnehmen';
|
||
|
||
@override
|
||
String get recordDurationTitle => 'Aufnahmedauer';
|
||
|
||
@override
|
||
String get recordRadioSubtitle => 'Wähle, wie lange aufgenommen werden soll.';
|
||
|
||
@override
|
||
String get recordRadioTitle => 'Radio aufnehmen';
|
||
|
||
@override
|
||
String get recordingActiveTitle => 'Radio wird aufgenommen';
|
||
|
||
@override
|
||
String get recordingDirectTitle => 'Direktaufnahme';
|
||
|
||
@override
|
||
String get recordingsOpenFolderPlainError =>
|
||
'Aufnahmeordner konnte nicht geöffnet werden';
|
||
|
||
@override
|
||
String get recordingsOpenLatest => 'Letzte Aufnahme öffnen';
|
||
|
||
@override
|
||
String get recordingsOpenLatestError =>
|
||
'Letzte Aufnahme konnte nicht geöffnet werden';
|
||
|
||
@override
|
||
String get startLabel => 'Beginn';
|
||
|
||
@override
|
||
String get startPlaybackTooltip => 'Wiedergabe starten';
|
||
|
||
@override
|
||
String get stopAction => 'Stoppen';
|
||
|
||
@override
|
||
String get stopPlaybackTooltip => 'Wiedergabe stoppen';
|
||
|
||
@override
|
||
String get weekdayShortMonday => 'Mo';
|
||
|
||
@override
|
||
String get weekdayShortTuesday => 'Di';
|
||
|
||
@override
|
||
String get weekdayShortWednesday => 'Mi';
|
||
|
||
@override
|
||
String get weekdayShortThursday => 'Do';
|
||
|
||
@override
|
||
String get weekdayShortFriday => 'Fr';
|
||
|
||
@override
|
||
String get weekdayShortSaturday => 'Sa';
|
||
|
||
@override
|
||
String get weekdayShortSunday => 'So';
|
||
|
||
@override
|
||
String stationCount(int count) {
|
||
String _temp0 = intl.Intl.pluralLogic(
|
||
count,
|
||
locale: localeName,
|
||
other: '$count Sender',
|
||
one: '1 Sender',
|
||
);
|
||
return '$_temp0';
|
||
}
|
||
|
||
@override
|
||
String get alarmIconLabel => 'Musikwecker';
|
||
|
||
@override
|
||
String get vacationIconLabel => 'Urlaubsmodus';
|
||
|
||
@override
|
||
String get alarmAdvancedSectionTitle => 'Erweitert';
|
||
|
||
@override
|
||
String get alarmInlineHourLabel => 'Stunde';
|
||
|
||
@override
|
||
String get alarmInlineMinuteLabel => 'Minute';
|
||
|
||
@override
|
||
String get alarmVolumeRisingStatus => 'Lautstärke wird erhöht';
|
||
|
||
@override
|
||
String get streamUrlHint => 'https://stream.example.com:8000/radio';
|
||
|
||
@override
|
||
String get advancedEqSectionTitle => 'Erweiterte EQ-Optionen';
|
||
|
||
@override
|
||
String get advancedEqEnableToggle => 'Geräteindividuellen EQ aktivieren';
|
||
|
||
@override
|
||
String get advancedEqEnableToggleSubtitle =>
|
||
'Wendet automatisch ein anderes EQ-Preset an, wenn du den Audioausgang wechselst.';
|
||
|
||
@override
|
||
String get advancedEqKnownDevicesTitle => 'Bekannte Audiogeräte';
|
||
|
||
@override
|
||
String get advancedEqKnownDevicesEmpty =>
|
||
'Noch keine Audiogeräte gespeichert. Verbinde ein Gerät, um loszulegen.';
|
||
|
||
@override
|
||
String advancedEqDevicePresetLabel(Object presetName) {
|
||
return 'Preset: $presetName';
|
||
}
|
||
|
||
@override
|
||
String preNoticeCountdown(int minutes) {
|
||
return 'Startet in $minutes Min.';
|
||
}
|
||
|
||
@override
|
||
String snoozeCountdown(int minutes) {
|
||
return 'Klingelt in $minutes Min.';
|
||
}
|
||
|
||
@override
|
||
String get snoozeAgainAction => 'Erneut schlummern';
|
||
|
||
@override
|
||
String get alarmRingingNotificationTitle => 'PluriWave-Wecker';
|
||
|
||
@override
|
||
String get alarmFireChannelName => 'Klingelnde Wecker';
|
||
|
||
@override
|
||
String get alarmFireChannelDescription =>
|
||
'Dringender Ton und Bildschirm, wenn ein Musikwecker klingeln soll';
|
||
|
||
@override
|
||
String get alarmPreNoticeChannelName => 'Wecker-Vorankündigungen';
|
||
|
||
@override
|
||
String get alarmPreNoticeChannelDescription =>
|
||
'Lautlose Benachrichtigungen vor dem Wecker';
|
||
|
||
@override
|
||
String get openFolderChooserTitle => 'Ordner öffnen';
|
||
|
||
@override
|
||
String get openRecordingChooserTitle => 'Aufnahme öffnen';
|
||
|
||
@override
|
||
String get eqDeviceEditTitle => 'Gerät bearbeiten';
|
||
|
||
@override
|
||
String get eqDeviceNameLabel => 'Gerätename';
|
||
|
||
@override
|
||
String get eqDeviceNameHint => 'z. B. Wohnzimmer-Lautsprecher';
|
||
|
||
@override
|
||
String get eqDeviceNameConfirm => 'Speichern';
|
||
|
||
@override
|
||
String get eqDeviceConnected => 'Verbunden';
|
||
|
||
@override
|
||
String get eqDeviceActiveOutput =>
|
||
'Der Ton wird über dieses Gerät ausgegeben';
|
||
|
||
@override
|
||
String get eqDeviceRemove => 'Gerät entfernen';
|
||
|
||
@override
|
||
String eqDeviceRemoved(Object device) {
|
||
return '$device entfernt';
|
||
}
|
||
|
||
@override
|
||
String get localMusicSectionTitle => 'Lokale Musik (Android Auto)';
|
||
|
||
@override
|
||
String get localMusicSectionDescription =>
|
||
'Wähle einen Ordner auf diesem Gerät aus, um dessen Audiodateien im Auto zu durchsuchen und abzuspielen.';
|
||
|
||
@override
|
||
String get localMusicFolderNotConfigured => 'Kein Ordner ausgewählt';
|
||
|
||
@override
|
||
String get localMusicFolderTitle => 'Ordner für lokale Musik';
|
||
|
||
@override
|
||
String get localMusicChoosePath => 'Ordner auswählen';
|
||
|
||
@override
|
||
String get localMusicChangePath => 'Ordner ändern';
|
||
|
||
@override
|
||
String get localMusicFolderUpdated => 'Ordner für lokale Musik aktualisiert';
|
||
|
||
@override
|
||
String localMusicFolderSaveError(Object error) {
|
||
return 'Ordner konnte nicht gespeichert werden: $error';
|
||
}
|
||
|
||
@override
|
||
String get localMusicFolderGenericName => 'Ausgewählter Ordner';
|
||
|
||
@override
|
||
String get welcomeHeadline => 'Deine Welt, live';
|
||
|
||
@override
|
||
String get welcomeBody =>
|
||
'53.412 Sender aus 238 Ländern. Speichere deine Favoriten, nimm sie mit ins Auto und wache mit ihnen auf.';
|
||
|
||
@override
|
||
String get welcomeBullet1Title => 'Equalizer pro Sender';
|
||
|
||
@override
|
||
String get welcomeBullet1Subtitle => 'Plus ein Preset pro Ausgabegerät';
|
||
|
||
@override
|
||
String get welcomeBullet2Title => 'Android Auto';
|
||
|
||
@override
|
||
String get welcomeBullet2Subtitle =>
|
||
'Deine Favoriten und lokale Musik im Auto';
|
||
|
||
@override
|
||
String get welcomeBullet3Title => 'Musikalarme';
|
||
|
||
@override
|
||
String get welcomeBullet3Subtitle =>
|
||
'Mit sanftem Lautstärkeanstieg und Urlaubsmodus';
|
||
|
||
@override
|
||
String get welcomeCtaLabel => 'Jetzt hören';
|
||
|
||
@override
|
||
String get eqCustomActionEnableLabel => 'Equalizer aktivieren';
|
||
|
||
@override
|
||
String get eqCustomActionDisableLabel => 'Equalizer deaktivieren';
|
||
|
||
@override
|
||
String eqCustomActionPresetLabel(String preset) {
|
||
return 'Voreinstellung: $preset';
|
||
}
|
||
|
||
@override
|
||
String get alarmCardVacationPausedBadge => 'Wegen Urlaub pausiert';
|
||
|
||
@override
|
||
String get alarmCardSchedulingFailedMessage =>
|
||
'Dieser Alarm konnte nicht im System registriert werden, daher klingelt er möglicherweise nicht.';
|
||
|
||
@override
|
||
String get alarmCardPreNoticeFailedMessage =>
|
||
'Dieser Alarm ist geplant, aber seine Vorwarnung konnte nicht eingerichtet werden.';
|
||
|
||
@override
|
||
String get alarmDiagnosticsExactAlarmsTitle => 'Genaue Alarmplanung';
|
||
|
||
@override
|
||
String get alarmDiagnosticsExactAlarmsHint =>
|
||
'Lässt den Alarm genau zur eingestellten Minute klingeln, auch wenn das Telefon im Ruhezustand ist.';
|
||
|
||
@override
|
||
String get alarmDiagnosticsNotificationsTitle => 'Benachrichtigungen';
|
||
|
||
@override
|
||
String get alarmDiagnosticsNotificationsHint =>
|
||
'Nötig, um den Alarm und den Vorab-Hinweis anzuzeigen.';
|
||
|
||
@override
|
||
String get alarmDiagnosticsFullScreenTitle => 'Alarmanzeige im Vollbildmodus';
|
||
|
||
@override
|
||
String get alarmDiagnosticsFullScreenHint =>
|
||
'Lässt den Klingelbildschirm automatisch erscheinen, auch wenn das Telefon gesperrt ist.';
|
||
|
||
@override
|
||
String get alarmDiagnosticsBatteryTitle => 'Akku-Optimierung';
|
||
|
||
@override
|
||
String get alarmDiagnosticsBatteryHint =>
|
||
'Verhindert, dass das System PluriWave im Hintergrund beendet, damit der Alarm trotzdem klingeln kann.';
|
||
|
||
@override
|
||
String get alarmDiagnosticsNativeCountTitle =>
|
||
'Bei Android registrierte Alarme';
|
||
|
||
@override
|
||
String alarmDiagnosticsNativeCountValue(int count) {
|
||
return 'Aktuell registriert: $count';
|
||
}
|
||
|
||
@override
|
||
String get alarmDiagnosticsNativeCountAttentionHint =>
|
||
'Du hast einen Alarm aktiviert, aber es ist noch keiner beim System registriert. Öffne PluriWave erneut oder behebe zuerst die Punkte oben.';
|
||
|
||
@override
|
||
String get alarmDiagnosticsManufacturerLabel => 'Hersteller';
|
||
|
||
@override
|
||
String get alarmDiagnosticsSdkLabel => 'Android-Version (SDK)';
|
||
|
||
@override
|
||
String get alarmDiagnosticsNeedsAttentionStatus => 'Erfordert Aufmerksamkeit';
|
||
|
||
@override
|
||
String get alarmDiagnosticsAutostartTitle =>
|
||
'Noch ein manueller Schritt auf diesem Telefon';
|
||
|
||
@override
|
||
String alarmDiagnosticsAutostartBody(String manufacturer) {
|
||
return '$manufacturer-Telefone schließen oft Apps im Hintergrund, um Akku zu sparen. Es gibt keine Einstellung, die PluriWave selbst aktivieren kann — du musst den Autostart (manchmal auch \"Auto-Start\" oder \"Hintergrundaktivität\" genannt) für PluriWave selbst einschalten. Schau in den Einstellungen unter Apps oder Akku, oder in der Sicherheits-App des Telefons nach.';
|
||
}
|
||
|
||
@override
|
||
String get alarmDiagnosticsFixAction => 'Beheben';
|
||
|
||
@override
|
||
String get alarmDiagnosticsIntentUnavailable =>
|
||
'Diese Einstellungsseite konnte auf diesem Telefon nicht geöffnet werden. Suche sie manuell in den Einstellungen.';
|
||
|
||
@override
|
||
String get alarmDiagnosticsUnavailableHint =>
|
||
'Wir konnten deine Alarmeinstellungen noch nicht prüfen.';
|
||
|
||
@override
|
||
String get autoEqDisableOption => 'Deaktivieren';
|
||
|
||
@override
|
||
String get funcionPremium => 'Premium-Funktion';
|
||
|
||
@override
|
||
String get limiteAlarmasAlcanzado =>
|
||
'Du hast das kostenlose Limit von 5 Weckern erreicht.';
|
||
|
||
@override
|
||
String get desbloquearPremium => 'Premium freischalten';
|
||
|
||
@override
|
||
String get restaurarCompras => 'Käufe wiederherstellen';
|
||
|
||
@override
|
||
String get compraError =>
|
||
'Der Kauf konnte nicht abgeschlossen werden. Bitte versuche es erneut.';
|
||
|
||
@override
|
||
String get restauracionSinCompras =>
|
||
'Wir haben auf diesem Konto keinen früheren Kauf gefunden.';
|
||
|
||
@override
|
||
String get premiumActivo => 'Premium aktiv';
|
||
}
|