Files
pluriwave/lib/l10n/gen/app_localizations_fr.dart
T
FreeTLab aa0b242374 feat(iap): add freemium unlock via one-time in-app purchase
Adds a permanent, non-consumable premium unlock (EstadoEntitlement +
PuertoCompras/ServicioComprasPlayBilling) that removes ads and unlocks
alarm vacations, alarms past a 5-alarm free cap, recording start, and
full Android Auto browsing. The phone equalizer stays free for everyone.

- Entitlement is prefs-backed (compra_premium_v1), fail-open, and
  resolvable headlessly via esPremiumPersistido() for the Android Auto
  audio handler, which registers before runApp.
- Android Auto reduced mode keeps the real root folder labels for free
  users; browsing into any of them (and playFromMediaId/playFromSearch/
  skipToNext/skipToPrevious) is blocked at the getChildren/servicio_audio
  choke points, with a locked "Función Premium" item as the backstop.
  Current-station play/pause/stop stays untouched. A free -> premium
  transition actively invalidates the head unit's cached browse tree.
- Ads (top banner + capped interstitial before adding a station or an
  alarm) are gated behind entitlement via ServicioAnuncios, using
  official Google test ad unit IDs pending AdMob provisioning.
- Alarm cap UX shows an explanatory message with a secondary unlock
  action rather than a bare paywall jump; existing data is grandfathered.
- 4 new localization keys translated across all 13 supported locales.

Co-located tests use strict TDD (RED test before implementation) for
every new pure-logic unit; full existing suite passes unchanged.
2026-08-10 20:37:07 +02:00

1887 lines
47 KiB
Dart
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// ignore: unused_import
import 'package:intl/intl.dart' as intl;
import 'app_localizations.dart';
// ignore_for_file: type=lint
/// The translations for French (`fr`).
class AppLocalizationsFr extends AppLocalizations {
AppLocalizationsFr([String locale = 'fr']) : super(locale);
@override
String get appTitle => 'PluriWave';
@override
String get navHome => 'Écouter';
@override
String get navSearch => 'Recherche';
@override
String get navFavorites => 'Favoris';
@override
String get navAlarms => 'Alarmes';
@override
String get navSettings => 'Paramètres';
@override
String get actionOk => 'OK';
@override
String get sleepTimer => 'Minuteur de sommeil';
@override
String get sleepTimerDescription =>
'Arrêt progressif de la radio avec compte à rebours précis.';
@override
String get cancelTimer => 'Annuler le minuteur';
@override
String get optionOther => 'Autre';
@override
String get customDurationTitle => 'Durée personnalisée';
@override
String get durationGreaterThanZero =>
'Choisissez une durée supérieure à zéro.';
@override
String get hoursLabel => 'Heures';
@override
String get minutesLabel => 'Minutes';
@override
String get secondsLabel => 'Secondes';
@override
String durationHoursMinutesSeconds(
Object hours,
Object minutes,
Object seconds,
) {
return '$hours h $minutes min $seconds s';
}
@override
String durationMinutesSeconds(Object minutes, Object seconds) {
return '$minutes min $seconds s';
}
@override
String durationMinutesOnly(Object minutes) {
return '$minutes min';
}
@override
String durationSecondsOnly(Object seconds) {
return '$seconds s';
}
@override
String get saveQuickAccess => 'Enregistrer comme raccourci';
@override
String get startTimer => 'Démarrer le minuteur';
@override
String skipCurrentAlarmExecution(Object alarmName) {
return 'Cette exécution de $alarmName a été ignorée.';
}
@override
String get settingsTitle => 'Paramètres';
@override
String get settingsSubtitle =>
'Réglage précis du son, sauvegardes et stations personnalisées.';
@override
String get settingsGroupAudioTitle => 'AUDIO';
@override
String get settingsGroupStationsTitle => 'STATIONS';
@override
String get settingsGroupRecordingsTitle => 'ENREGISTREMENTS ET MUSIQUE';
@override
String get settingsGroupApplicationTitle => 'APPLICATION';
@override
String get infoSectionTitle => 'Infos';
@override
String get languageSectionTitle => 'Langue';
@override
String get languageSectionDescription =>
'Choisissez le mode daffichage de la langue de lapp.';
@override
String get languageSystemDefault => 'Système';
@override
String get languageSpanish => 'Espagnol';
@override
String get languageEnglish => 'Anglais';
@override
String languageUpdated(Object languageName) {
return 'Langue mise à jour : $languageName';
}
@override
String get languageUpdatedSystem => 'Langue mise à jour : Système';
@override
String get timerSectionTitle => 'Minuteur de sommeil';
@override
String get timerSectionAdd => 'Ajouter';
@override
String get timerSectionDescription =>
'Personnalisez les raccourcis affichés lors de larrêt automatique de la radio.';
@override
String get timerSectionRestoreRecommended =>
'Restaurer les durées recommandées';
@override
String get newQuickAccessTitle => 'Nouveau raccourci';
@override
String get saveQuickAccessButton => 'Enregistrer le raccourci';
@override
String get settingsSafeStatus => 'Sûr';
@override
String get recordingsSectionTitle => 'Enregistrements';
@override
String get recordingsFolderDialogTitle =>
'Sélectionnez le dossier denregistrement';
@override
String get recordingsPathUpdated => 'Chemin denregistrement mis à jour';
@override
String recordingsPathSaveError(Object error) {
return 'Impossible denregistrer le chemin : $error';
}
@override
String get recordingsDefaultFolderRestored =>
'Le dossier interne par défaut sera utilisé';
@override
String get recordingsFolderTitle => 'Dossier denregistrement';
@override
String get recordingsPathCalculating => 'Calcul du chemin...';
@override
String get recordingsChangePath => 'Changer le chemin';
@override
String get recordingsUseDefaultPath => 'Utiliser le chemin par défaut';
@override
String get recordingsOriginalStreamHint =>
'La radio est enregistrée depuis le flux original, sans recompression.';
@override
String get equalizerActive => 'Actif';
@override
String get equalizerDisabled => 'Désactivé';
@override
String get equalizerEnable => 'Activer l’égaliseur';
@override
String get equalizerRealtimeSubtitle =>
'Les changements sappliquent en temps réel à la station actuelle.';
@override
String get equalizerPendingSubtitle =>
'Les changements sont enregistrés et sappliqueront quand Android activera leffet.';
@override
String get equalizerPerStationTitle => 'Utiliser un EQ propre pour ce favori';
@override
String equalizerPerStationActive(Object stationName) {
return 'Actif pour $stationName';
}
@override
String equalizerPerStationMain(Object stationName) {
return 'EQ principal utilisé pour $stationName';
}
@override
String get equalizerBaseExplainer =>
'Voici l\'égaliseur de base : il s\'applique à toutes les stations sans réglage propre. L\'EQ propre à une station est défini depuis son propre écran de lecture et prime sur celui-ci.';
@override
String get equalizerActiveOutputLabel => 'Sortie active';
@override
String get equalizerActiveOutputDefault => 'Le haut-parleur de cet appareil';
@override
String get equalizerStationsWithOwnEqTitle => 'Stations avec un EQ propre';
@override
String get equalizerStationsWithOwnEqSubtitle =>
'Ignorent cet égaliseur de base';
@override
String get equalizerStationsWithOwnEqEmpty =>
'Aucune station n\'a encore d\'EQ propre.';
@override
String get equalizerSaveAsPresetAction => 'Enregistrer comme Preset';
@override
String get equalizerResetToFlatAction => 'Réinitialiser à plat';
@override
String get equalizerSavePresetDialogTitle => 'Enregistrer comme Preset';
@override
String get equalizerSavePresetNameLabel => 'Nom du Preset';
@override
String get equalizerSavePresetEmptyNameError =>
'Saisissez un nom pour le Preset.';
@override
String get equalizerSavePresetConfirm => 'Enregistrer';
@override
String get preferredStationTitle => 'Station préférée';
@override
String get preferredStationDescription =>
'Présélectionnée lors de la création dalarmes et disponible en lecture rapide.';
@override
String get preferredStationNoStationsTitle =>
'Aucune station disponible pour le moment';
@override
String get preferredStationNoStationsSubtitle =>
'Enregistrez des favoris ou chargez des stations pour en choisir une préférée.';
@override
String get preferredStationAutomaticFallback => 'Repli automatique';
@override
String get preferredStationDefaultFavorite => 'Favori par défaut';
@override
String preferredStationCurrent(Object stationName) {
return 'Préférée actuelle : $stationName';
}
@override
String preferredStationAutoUsing(Object stationName) {
return 'Aucun favori : utilisation automatique de $stationName';
}
@override
String get preferredStationPlay => 'Lire la préférée';
@override
String get customStationsTitle => 'Stations personnalisées';
@override
String get customStationsAdd => 'Ajouter';
@override
String get customStationsEmpty => 'Aucune station personnalisée.';
@override
String get playAction => 'Lire';
@override
String get deleteAction => 'Supprimer';
@override
String get addStationTitle => 'Ajouter une station';
@override
String get stationNameLabel => 'Nom *';
@override
String get unnamedStation => 'Station sans nom';
@override
String get requiredField => 'Champ obligatoire';
@override
String get streamUrlLabel => 'URL du flux *';
@override
String get invalidUrl => 'URL non valide';
@override
String get countryOptionalLabel => 'Pays (facultatif)';
@override
String get saveStation => 'Enregistrer la station';
@override
String get backupSectionTitle => 'Sauvegarde';
@override
String get backupExportTitle => 'Exporter la configuration';
@override
String get backupExportSubtitle =>
'Favoris, stations personnalisées et préréglages dEQ';
@override
String get backupImportTitle => 'Importer la configuration';
@override
String get backupImportSubtitle =>
'Restaurer depuis un fichier de sauvegarde';
@override
String get backupShareSubject => 'PluriWave — sauvegarde';
@override
String backupShareText(Object date) {
return 'Configuration de PluriWave exportée le $date';
}
@override
String backupExportError(Object error) {
return 'Erreur dexportation : $error';
}
@override
String get backupImportConfirmMessage =>
'Cela ajoutera les favoris, stations et préréglages du fichier. Continuer ?';
@override
String get backupImportSuccess => 'Configuration importée avec succès';
@override
String backupImportError(Object error) {
return 'Erreur dimportation : $error';
}
@override
String get appVersionLoading => 'Chargement de la version...';
@override
String appVersionSubtitle(Object version) {
return '$version - Radio mondiale';
}
@override
String get savedFavoritesTitle => 'Favoris enregistrés';
@override
String get stationFilterTitle => 'Filtre de stations';
@override
String get stationFilterSubtitle =>
'Seulement les stations vérifiées comme actives';
@override
String get backgroundAudioTitle => 'Audio en arrière-plan';
@override
String get backgroundAudioSubtitle => 'Continue lorsque l’écran s’éteint';
@override
String get dash => '—';
@override
String get cancelAction => 'Annuler';
@override
String get equalizerTitle => 'Égaliseur';
@override
String get recordingsOpenFolder => 'Ouvrir le dossier';
@override
String recordingsOpenFolderError(Object error) {
return 'Impossible douvrir le dossier : $error';
}
@override
String get recordingsMaxSizeTitle => 'Taille maximale denregistrement';
@override
String recordingsMaxSizeSubtitle(int size) {
return 'Limite actuelle : $size Mo';
}
@override
String get recordingsMaxSizeDialogTitle =>
'Taille maximale par enregistrement';
@override
String get recordingsMaxSizeMbLabel => 'Mégaoctets maximum';
@override
String recordingsMaxSizeSaved(int size) {
return 'Limite denregistrement mise à jour à $size Mo';
}
@override
String get recordingsLibraryTitle => 'Mes enregistrements';
@override
String recordingsLibraryStorageCaption(int usedMb, int totalMb) {
return '$usedMb Mo sur $totalMb Mo utilisés';
}
@override
String get recordingsLibraryStorageFolderCaption =>
'Music/PluriWave · supprime les plus anciens à la limite';
@override
String get recordingsLibraryEmptyTitle =>
'Aucun enregistrement pour l\'instant';
@override
String get recordingsLibraryEmptySubtitle =>
'Les enregistrements que vous sauvegardez apparaîtront ici.';
@override
String get recordingActionRename => 'Renommer';
@override
String get recordingActionShare => 'Partager';
@override
String get recordingActionDelete => 'Supprimer';
@override
String get recordingRenameDialogTitle => 'Renommer l\'enregistrement';
@override
String get recordingRenameLabel => 'Nom';
@override
String get recordingRenameEmptyError => 'Saisissez un nom';
@override
String get recordingDeleteConfirmTitle => 'Supprimer l\'enregistrement ?';
@override
String get recordingDeleteConfirmMessage => 'Cette action est irréversible.';
@override
String get recordingsLibrarySettingsTooltip => 'Paramètres d\'enregistrement';
@override
String get stationOrderTitle => 'Ordre des stations';
@override
String get stationOrderByName => 'Par nom';
@override
String get stationOrderByQuality => 'Par qualité';
@override
String get stationOrderByPopularity => 'Par popularité';
@override
String get stationOrderScopeDescription =>
'Sapplique aux favoris, recherches, stations proches et listes rapides.';
@override
String get favoriteGroupsTitle => 'Listes de favoris';
@override
String get favoriteGroupsDescription =>
'Créez de courtes listes pour organiser vos stations enregistrées.';
@override
String get favoriteGroupsAdd => 'Ajouter une liste';
@override
String get favoriteGroupsEdit => 'Modifier la liste';
@override
String get favoriteGroupsDelete => 'Supprimer la liste';
@override
String get favoriteGroupsNameLabel => 'Nom de la liste';
@override
String get favoriteGroupsNameTooLong => 'Maximum 28 caractères.';
@override
String get favoriteGroupsUnassigned => 'Non assigné';
@override
String get favoriteGroupsProtectedHint =>
'Liste par défaut : elle ne peut être ni modifiée ni supprimée.';
@override
String get favoriteGroupsCreated => 'Liste créée';
@override
String get favoriteGroupsUpdated => 'Liste mise à jour';
@override
String get favoriteGroupsDeleted =>
'Liste supprimée ; ses stations retournent à Non assigné.';
@override
String get favoriteGroupsAssign => 'Déplacer vers une liste';
@override
String favoriteGroupsAssignSubtitle(Object groupName) {
return 'Liste actuelle : $groupName';
}
@override
String favoriteGroupsAssigned(Object stationName, Object groupName) {
return '$stationName déplacée vers $groupName';
}
@override
String get favoritesTitle => 'Favoris';
@override
String get favoritesEmptyTitle => 'Aucun favori pour le moment';
@override
String get favoritesEmptySubtitle =>
'Touchez le cœur sur nimporte quelle station pour lenregistrer dans votre collection.';
@override
String get favoritesHeaderSubtitle =>
'Organisez votre collection par listes et gardez les radios importantes à portée de main.';
@override
String get favoritesCollection => 'Collection';
@override
String favoritesSavedCount(int count) {
return '$count enregistrés';
}
@override
String get favoritesRemoveTooltip => 'Retirer des favoris';
@override
String favoritesRemovedMessage(Object stationName) {
return '$stationName retirée des favoris';
}
@override
String get favoritesFilterAllLabel => 'Toutes';
@override
String favoriteGroupsChipLabel(Object groupName, int count) {
return '$groupName · $count';
}
@override
String get favoriteGroupsManage => 'Gérer les listes';
@override
String get customStationsAddCta => 'Ajouter une station personnalisée';
@override
String get alarmPostponedCurrentExecution =>
'Alarme reportée pour cette exécution.';
@override
String get searchScreenTitle => 'Rechercher un signal';
@override
String get searchScreenSubtitle =>
'Trouvez des stations par nom, pays ou langue grâce à des filtres rapides et à un contraste élevé.';
@override
String get searchFiltersLabel => 'Filtres';
@override
String get searchHint => 'Radio Horizon, jazz, infos...';
@override
String get searchCountryFilterLabel => 'Pays';
@override
String get searchLanguageFilterLabel => 'Langue';
@override
String get searchMinQualityFilterLabel => 'Qualité minimale';
@override
String get searchLoadingStationsLabel => 'RECHERCHE DE STATIONS…';
@override
String get searchEmptyTitle => 'Recherchez une station';
@override
String get searchNoResultsTitle => 'Aucun résultat';
@override
String searchNoResultsForQueryTitle(Object query) {
return 'Aucun résultat pour « $query »';
}
@override
String get searchEmptySubtitle =>
'Utilisez la barre du haut ou les pastilles pour découvrir des stations du monde entier.';
@override
String get searchNoResultsSubtitle =>
'Essayez de retirer des filtres ou de saisir un autre nom pour trouver une station active.';
@override
String searchResultsCount(num count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: '$count résultats',
one: '1 résultat',
);
return '$_temp0';
}
@override
String searchClearFiltersAction(num count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: 'Retirer les $count filtres',
one: 'Retirer le filtre',
);
return '$_temp0';
}
@override
String get countriesScreenTitle => 'Pays';
@override
String get countriesSearchHint => 'Pays ou code...';
@override
String get countriesYourLanguagesTitle => 'Vos langues';
@override
String get countriesAllTitle => 'Tous les pays';
@override
String get radioCountriesError => 'Impossible de charger les pays.';
@override
String get countrySpain => 'Espagne';
@override
String get countryUsa => 'États-Unis';
@override
String get countryMexico => 'Mexique';
@override
String get countryArgentina => 'Argentine';
@override
String get countryUk => 'Royaume-Uni';
@override
String get countryFrance => 'France';
@override
String get countryGermany => 'Allemagne';
@override
String get countryItaly => 'Italie';
@override
String get countryBrazil => 'Brésil';
@override
String get countryJapan => 'Japon';
@override
String get languageNameSpanish => 'espagnol';
@override
String get languageNameEnglish => 'anglais';
@override
String get languageNameFrench => 'français';
@override
String get languageNameGerman => 'allemand';
@override
String get languageNamePortuguese => 'portugais';
@override
String get languageNameItalian => 'italien';
@override
String get languageNameJapanese => 'japonais';
@override
String get languageNameArabic => 'arabe';
@override
String get languageNameRussian => 'russe';
@override
String get homeScreenSubtitle =>
'Radio mondiale en direct avec des signaux clairs, des favoris intelligents et une expérience visuelle de jeu télévisé.';
@override
String get exploreStations => 'Explorer les stations';
@override
String stationsCount(int count) {
return '$count radios';
}
@override
String get qualityHd => 'Qualité HD';
@override
String get yourStationsTitle => 'Vos stations';
@override
String get seeAllAction => 'Tout voir';
@override
String get openFullPlayerTooltip => 'Ouvrir le lecteur complet';
@override
String get nowListeningLabel => 'En cours d\'écoute';
@override
String get nothingPlayingTitle => 'Rien n\'est en cours de lecture';
@override
String get nothingPlayingSubtitle =>
'Choisissez une station dans Vos stations ou recherchez-en une pour commencer.';
@override
String get nearYou => 'Près de vous';
@override
String nearYouInCountry(Object country) {
return 'Près de vous · $country';
}
@override
String get detectAction => 'Détecter';
@override
String get liveRadar => 'Radar en direct';
@override
String get genresTitle => 'Genres';
@override
String get exploreByTitle => 'Explorer par';
@override
String get exploreTrendingTitle => 'Tendances';
@override
String get exploreTrendingSubtitle => 'Aujourd\'hui';
@override
String get exploreNewTitle => 'Nouveautés';
@override
String get exploreNewSubtitle => 'Cette semaine';
@override
String get popularNowTitle => 'Populaire maintenant';
@override
String get offlineBannerTitle => 'Aucune connexion';
@override
String get retryAction => 'Réessayer';
@override
String get noStationsAvailable => 'Aucune station disponible';
@override
String get noStationsAvailableSubtitle =>
'Essayez dactualiser ou de choisir un autre genre pour capter à nouveau un signal.';
@override
String get genrePop => 'Pop';
@override
String get genreRock => 'Rock';
@override
String get genreJazz => 'Jazz';
@override
String get genreClassical => 'Classique';
@override
String get genreElectronic => 'Électronique';
@override
String get genreNews => 'Infos';
@override
String get genreTalk => 'Débat';
@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 => 'Latino';
@override
String get alarmScreenTitle => 'Réveil musical';
@override
String get alarmScreenSubtitle =>
'Alarmes avec radio, son sécurisé, vacances intelligentes et prochaine exécution toujours visible.';
@override
String get createAlarmAction => 'Créer une alarme';
@override
String alarmsCount(int count) {
return '$count alarmes';
}
@override
String get activeAlarmsWithoutNextTitle =>
'Alarmes actives sans prochaine exécution';
@override
String get noActiveAlarms => 'Aucune alarme active';
@override
String get nextAlarmTitle => 'Prochaine alarme';
@override
String activeAlarmsWithoutNextSubtitle(int count) {
return 'Il y a $count alarme(s) active(s), mais elles nont actuellement aucune date future valide. Vérifiez la date, les jours et les vacances.';
}
@override
String get createAlarmHint =>
'Créez une alarme et PluriWave calculera automatiquement la prochaine exécution.';
@override
String get alarmVacationPlay => 'Sonne pendant les vacances';
@override
String get alarmVacationPause => 'En pause pendant les vacances';
@override
String alarmFadeInLabel(int seconds) {
return 'Fondu dentrée $seconds s';
}
@override
String alarmNextExecution(Object date) {
return 'Prochaine exécution : $date';
}
@override
String get alarmNoNextExecution => 'Aucune prochaine exécution active.';
@override
String alarmSkippedExecution(Object date) {
return 'Une exécution a été ignorée : $date.';
}
@override
String get editAction => 'Modifier';
@override
String get skipNextAction => 'Ignorer la suivante';
@override
String get deleteTooltip => 'Supprimer';
@override
String get alarmHeroSkipAction => 'Ignorer';
@override
String get alarmDeleteConfirmTitle => 'Supprimer l\'alarme ?';
@override
String get alarmDeleteConfirmMessage => 'Cette action est irréversible.';
@override
String get alarmSkippedNoNextSnackbar =>
'Alarme ignorée. Il ne reste aucune prochaine exécution.';
@override
String alarmSkippedReturnsSnackbar(Object date) {
return 'Alarme ignorée. Elle reviendra le $date.';
}
@override
String alarmVacationPausedNoNext(Object vacationName) {
return 'En pause pour vacances ($vacationName) et sans prochaine exécution.';
}
@override
String alarmVacationPausedReturns(Object vacationName, Object date) {
return 'En pause pour vacances ($vacationName) et revient le $date.';
}
@override
String alarmVacationReturns(Object date) {
return 'Avec les vacances actives, elle sonnera à nouveau le $date.';
}
@override
String get defaultAlarmName => 'Réveil musical';
@override
String get newAlarmTitle => 'Nouvelle alarme';
@override
String get editAlarmTitle => 'Modifier lalarme';
@override
String get nameField => 'Nom';
@override
String get timeField => 'Heure';
@override
String get dateField => 'Date';
@override
String get onceOption => 'Une fois';
@override
String get dailyOption => 'Quotidienne';
@override
String get weekdaysOption => 'Jours';
@override
String get soundAndVolumeSection => 'Son et volume';
@override
String get alarmFadeInTitle => 'Fondu dentrée de lalarme';
@override
String get alarmFadeInOff => '0 s (sans transition)';
@override
String alarmFadeInSummary(int seconds) {
return '$seconds s (de 5 % au volume choisi)';
}
@override
String get internalSafeSoundLabel => 'Son sécurisé interne';
@override
String get soundWarmSunrise => 'Lever de soleil chaleureux';
@override
String get soundSoftBell => 'Cloche douce';
@override
String get soundDigitalPulse => 'Impulsion numérique';
@override
String get favoriteStationLabel => 'Station favorite';
@override
String get noStationUseInternalSound =>
'Aucune station : utiliser le son interne';
@override
String get alarmFallbackStationLabel => 'Station de secours';
@override
String get alarmStationPickerSearchHint => 'Rechercher une station par nom';
@override
String get alarmSnoozeDurationTitle => 'Durée de répétition';
@override
String get snoozeAction => 'Répéter';
@override
String alarmSnoozeOptionLabel(int minutes) {
return '$minutes min';
}
@override
String get alarmSnoozeUsualLabel => 'habituel';
@override
String get saveFavoritesAlarmHint =>
'Enregistrez des stations dans les Favoris pour les utiliser comme alarme musicale.';
@override
String get useCurrentStationAction => 'Utiliser la station actuelle';
@override
String get playDuringVacations => 'Sonner pendant les vacances';
@override
String get playDuringVacationsHint =>
'Si vous désactivez cette option, la prochaine exécution passera au premier jour valide.';
@override
String get saveAlarmAction => 'Enregistrer lalarme';
@override
String get chooseOneWeekdayError =>
'Choisissez au moins un jour de la semaine.';
@override
String get androidReliabilityReview => 'Vérifier la fiabilité Android';
@override
String get statusOk => 'OK';
@override
String get statusPending => 'en attente';
@override
String androidReliabilityStatus(
Object exact,
Object notifications,
Object screen,
) {
return 'Fiabilité : exactes $exact · notifications $notifications · écran $screen';
}
@override
String get vacationRangesTitle => 'Périodes de vacances';
@override
String get addAction => 'Ajouter';
@override
String get vacationRangesHint =>
'Si une alarme est en « pause pendant les vacances », ces périodes sont automatiquement ignorées.';
@override
String get noVacationRangesLoaded => 'Aucune période chargée.';
@override
String get deleteRangeTooltip => 'Supprimer la période';
@override
String vacationRangesCount(int count) {
return '$count périodes';
}
@override
String vacationSummaryActiveCountdown(int days) {
return 'En cours · encore $days jours';
}
@override
String vacationSummaryUpcomingCountdown(int days) {
return 'Prochaine période dans $days jours';
}
@override
String vacationImpactPausedLabel(Object times) {
return 'En pause : $times';
}
@override
String vacationImpactContinuesLabel(Object times) {
return 'Continue de sonner : $times';
}
@override
String get vacationUpcomingSectionTitle => 'PROGRAMMÉES';
@override
String get vacationPastSectionTitle => 'Périodes passées';
@override
String get addVacationRangeCta => 'Ajouter une période';
@override
String get vacationExplainerBanner =>
'Pendant ces periodes, les alarmes marquees \"pause pendant les vacances\" ne sonnent pas. Celles marquees \"toujours sonner\" ne sont pas concernees.';
@override
String get vacationNoActiveRangeHint =>
'Aucune période de vacances active pour le moment.';
@override
String get vacationsDefaultName => 'Vacances';
@override
String get newVacationRangeTitle => 'Nouvelle période de vacances';
@override
String get editVacationRangeTitle => 'Modifier la période de vacances';
@override
String get vacationDeleteConfirmTitle => 'Supprimer la période de vacances ?';
@override
String get vacationDeleteConfirmMessage => 'Cette action est irréversible.';
@override
String get startField => 'Début';
@override
String get endField => 'Fin';
@override
String get saveRangeAction => 'Enregistrer la période';
@override
String get noAlarmsYetTitle => 'Il ny a pas encore dalarmes.';
@override
String get noAlarmsYetSubtitle =>
'Créez-en une pour concevoir votre réveil musical.';
@override
String get ringingInternalAudioActive => 'Son sécurisé interne en cours.';
@override
String get ringingPreparingInternalAudio =>
'Préparation du son sécurisé interne.';
@override
String get stopAlarmAction => 'Arrêter lalarme';
@override
String get alarmStopFailedMessage =>
'Nous navons pas pu confirmer larrêt de lalarme. Réessayez.';
@override
String get alarmForceStopAction => 'Forcer larrêt';
@override
String get alarmMissedNotificationTitle => 'Alarme manquée';
@override
String alarmMissedNotificationText(Object name) {
return '$name a été mise en sourdine automatiquement après 10 minutes.';
}
@override
String get pauseAction => 'Pause';
@override
String miniPlayerOpenLabel(Object stationName) {
return 'Ouvrir le lecteur de $stationName';
}
@override
String get playerIconLabel => 'Lecteur';
@override
String get playbackStatusConnecting => 'Connexion...';
@override
String get playbackStatusLive => 'En direct';
@override
String get playbackStatusPaused => 'En pause';
@override
String get playbackStatusReconnecting => 'Reconnexion...';
@override
String get playbackStatusConnectionError => 'Erreur de connexion';
@override
String get playbackStatusStopped => 'Arrêté';
@override
String stationSemanticLabel(Object stationName) {
return 'Station $stationName';
}
@override
String get favoritesAddTooltip => 'Ajouter aux favoris';
@override
String favoritesAddedMessage(Object stationName) {
return '$stationName ajoutée aux favoris';
}
@override
String get stationIconLabel => 'Icône de station';
@override
String get liveNow => 'En direct';
@override
String equalizerBandLabel(Object band) {
return 'Bande $band';
}
@override
String equalizerBandValue(Object value) {
return '$value décibels';
}
@override
String get equalizerPresetFlat => 'Plat';
@override
String get equalizerPresetRock => 'Rock';
@override
String get equalizerPresetPop => 'Pop';
@override
String get equalizerPresetBassBoost => 'Renforcement des basses';
@override
String get equalizerPresetJazz => 'Jazz';
@override
String get equalizerPresetVoice => 'Voix';
@override
String get equalizerPresetCustom => 'Personnalisé';
@override
String get onboardingTitle => 'Bienvenue dans PluriWave';
@override
String get onboardingNewsTitle => 'Nouveautés';
@override
String get onboardingStartAction => 'Commencer';
@override
String get onboardingCloseTooltip => 'Fermer';
@override
String radioRecordingError(Object error) {
return 'Erreur lors de l\'enregistrement de la radio : $error';
}
@override
String get radioApiConnectionError => 'Aucune connexion à l\'API radio';
@override
String get radioSearchError =>
'Erreur de recherche. Vérifiez votre connexion.';
@override
String get radioLoadMoreStationsError =>
'Impossible de charger plus de stations.';
@override
String get radioNearbyStationsError =>
'Nous n\'avons pas pu détecter de stations proches. Utilisez les filtres par pays.';
@override
String radioCannotPlayStation(Object stationName) {
return 'Impossible de lire \"$stationName\"';
}
@override
String get recordingSelectStationFirst =>
'Sélectionnez d\'abord une station à enregistrer.';
@override
String recordingStartError(Object error) {
return 'Impossible de démarrer l\'enregistrement : $error';
}
@override
String get unsupportedConfigVersion =>
'Version de configuration non prise en charge';
@override
String get audioErrorGeneric => 'Erreur de lecture';
@override
String get audioErrorNoInternet => 'Aucune connexion Internet';
@override
String get audioErrorInvalidUrl => 'L\'URL de la radio n\'est pas valide';
@override
String get audioErrorNotFound =>
'La radio n\'est pas disponible (erreur 404)';
@override
String get audioErrorTimeout => 'Délai de connexion dépassé';
@override
String get audioErrorCannotConnect => 'Impossible de se connecter à la radio';
@override
String get audioErrorUnsupportedFormat => 'Format de flux non pris en charge';
@override
String get audioErrorDecode => 'Erreur lors du décodage du flux audio';
@override
String get audioErrorCleartext =>
'Cette radio utilise HTTP non chiffré, ce qui n\'est pas autorisé';
@override
String get audioErrorSsl => 'Certificat SSL invalide pour la radio';
@override
String get audioErrorCannotPlay => 'Impossible de lire cette radio';
@override
String get audioErrorUnexpectedPlayback => 'Erreur de lecture inattendue';
@override
String get androidExactAlarmScheduleError =>
'Android n\'a pas pu programmer une alarme exacte. Vérifiez l\'autorisation des alarmes exactes.';
@override
String get recordingPathEmptyError =>
'Le chemin d\'enregistrement ne peut pas être vide';
@override
String get recordingMaxSizeInvalidError =>
'La taille maximale doit être supérieure à zéro';
@override
String get recordingAlreadyActiveError =>
'Un enregistrement est déjà en cours';
@override
String get alarmRingingFallbackActive =>
'Lecture avec laudio interne sécurisé.';
@override
String get alarmRingingPreparingFallback =>
'Préparation de laudio interne sécurisé.';
@override
String get alarmRingingTryingStation =>
'Tentative de lecture de votre station avec la meilleure qualité disponible.';
@override
String get alarmScheduleDaily => 'Chaque matin';
@override
String alarmScheduleOnce(Object date) {
return 'Une fois · $date';
}
@override
String alarmScheduleWeekdays(Object days) {
return 'Jours : $days';
}
@override
String get alarmRepeatSectionLabel => 'RÉPÉTER';
@override
String get alarmVolumeLabel => 'Volume';
@override
String get androidReliabilityTitle => 'Vérifier la fiabilité Android';
@override
String get closeAction => 'Fermer';
@override
String get customOption => 'Personnalisée';
@override
String get endLabel => 'Fin';
@override
String get equalizerDisable => 'Désactiver l’égaliseur';
@override
String get helpTitle => 'Aide et tutoriel';
@override
String get helpSubtitle => '9 écrans · à revoir quand vous voulez';
@override
String get tutorialSkipAction => 'Passer';
@override
String get tutorialNextAction => 'Suivant';
@override
String get tutorialPage1Headline =>
'Enregistrez vos stations et regroupez-les';
@override
String get tutorialPage1Body =>
'Touchez le cœur pour enregistrer une station. Dans « Vos stations », vous pouvez créer des groupes comme « Chaque matin » ou « Voiture » et les réorganiser en les faisant glisser.';
@override
String get tutorialPage2Headline =>
'Un égaliseur général et un autre par station';
@override
String get tutorialPage2Body =>
'Dans Réglages, vous définissez l\'égaliseur général. Et depuis la lecture d\'une station précise, vous pouvez lui donner son propre réglage, qui prévaut sur le général.';
@override
String get tutorialPage3Headline => 'Enregistrez ce que vous écoutez';
@override
String get tutorialPage3Body =>
'Depuis la barre d\'outils du lecteur, « Enregistrer » sauvegarde le flux original. Retrouvez vos enregistrements dans Réglages Enregistrements.';
@override
String get tutorialPage4Headline => 'Des alarmes qui s\'adaptent à vous';
@override
String get tutorialPage4Body =>
'Réveillez-vous avec votre station préférée, reportez de 3, 5 ou 10 minutes, et ajoutez des périodes de vacances pour que certaines alarmes se sautent d\'elles-mêmes.';
@override
String get tutorialPage5Headline => 'Vos favoris, aussi en voiture';
@override
String get tutorialPage5Body =>
'Connectez votre téléphone avec Android Auto et retrouvez Favoris, Toutes les stations, Vos stations et votre Musique locale, avec de grands boutons pensés pour la conduite.';
@override
String get tutorialPage6Headline => 'Se reconnecte toute seule';
@override
String get tutorialPage6Body =>
'Si le signal se coupe, PluriWave retente automatiquement et continue d\'afficher vos favoris enregistrés même sans connexion.';
@override
String get tutorialPage7Headline => 'Choisissez combien de temps reporter';
@override
String get tutorialPage7Body =>
'Quand une alarme sonne, il n\'y a pas un seul « reporter » : vous choisissez 3, 5 ou 10 minutes selon ce dont vous avez besoin à ce moment-là.';
@override
String get tutorialPage8Headline =>
'Vous ne la trouvez pas ? Ajoutez-la vous-même';
@override
String get tutorialPage8Body =>
'Dans « Vos stations » → Ajouter une station personnalisée, collez l\'URL du flux d\'une station absente des résultats de recherche. Elle est enregistrée dans « Vos stations », aussi disponible en voiture.';
@override
String get tutorialPage9Headline => 'Voilà, vous connaissez l\'essentiel';
@override
String get tutorialPage9BannerBody =>
'Pour revoir ce tutoriel quand vous le souhaitez : Réglages → Informations → Aide et tutoriel.';
@override
String get indefiniteOption => 'Indéfinie';
@override
String get invalidNumber => 'Nombre invalide';
@override
String get nameLabel => 'Nom';
@override
String get notPlaying => 'Lecture arrêtée';
@override
String get oneTimeOption => 'Une fois';
@override
String get pausePlaybackTooltip => 'Mettre en pause';
@override
String get playerQualityChangeAction => 'Modifier';
@override
String get playerToolEqLabel => 'EQ propre';
@override
String qualityOriginal(Object quality) {
return 'Qualité dorigine : $quality';
}
@override
String get qualityUnknown => 'Qualité non indiquée';
@override
String get recordAction => 'Enregistrer';
@override
String get recordDurationTitle => 'Durée denregistrement';
@override
String get recordRadioSubtitle => 'Choisissez la durée denregistrement.';
@override
String get recordRadioTitle => 'Enregistrer la radio';
@override
String get recordingActiveTitle => 'Enregistrement de la radio';
@override
String get recordingDirectTitle => 'Enregistrement direct';
@override
String get recordingsOpenFolderPlainError =>
'Impossible douvrir le dossier des enregistrements';
@override
String get recordingsOpenLatest => 'Ouvrir le dernier enregistrement';
@override
String get recordingsOpenLatestError =>
'Impossible douvrir le dernier enregistrement';
@override
String get startLabel => 'Début';
@override
String get startPlaybackTooltip => 'Démarrer la lecture';
@override
String get stopAction => 'Arrêter';
@override
String get stopPlaybackTooltip => 'Arrêter la lecture';
@override
String get weekdayShortMonday => 'Lun';
@override
String get weekdayShortTuesday => 'Mar';
@override
String get weekdayShortWednesday => 'Mer';
@override
String get weekdayShortThursday => 'Jeu';
@override
String get weekdayShortFriday => 'Ven';
@override
String get weekdayShortSaturday => 'Sam';
@override
String get weekdayShortSunday => 'Dim';
@override
String stationCount(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: '$count stations',
one: '1 station',
);
return '$_temp0';
}
@override
String get alarmIconLabel => 'Alarme musicale';
@override
String get vacationIconLabel => 'Mode vacances';
@override
String get alarmAdvancedSectionTitle => 'Avancé';
@override
String get alarmInlineHourLabel => 'Heure';
@override
String get alarmInlineMinuteLabel => 'Minute';
@override
String get alarmVolumeRisingStatus => 'Augmentation du volume';
@override
String get streamUrlHint => 'https://stream.example.com:8000/radio';
@override
String get advancedEqSectionTitle => 'Options d\'égalisation avancées';
@override
String get advancedEqEnableToggle => 'Activer l\'EQ par appareil';
@override
String get advancedEqEnableToggleSubtitle =>
'Appliquez automatiquement un preset EQ différent lorsque votre sortie audio change.';
@override
String get advancedEqKnownDevicesTitle => 'Appareils audio connus';
@override
String get advancedEqKnownDevicesEmpty =>
'Aucun appareil audio enregistré pour l\'instant. Connectez un appareil pour commencer.';
@override
String advancedEqDevicePresetLabel(Object presetName) {
return 'Preset : $presetName';
}
@override
String preNoticeCountdown(int minutes) {
return 'Démarre dans $minutes min';
}
@override
String snoozeCountdown(int minutes) {
return 'Sonne dans $minutes min';
}
@override
String get snoozeAgainAction => 'Reporter encore';
@override
String get alarmRingingNotificationTitle => 'Alarme PluriWave';
@override
String get alarmFireChannelName => 'Alarmes en cours';
@override
String get alarmFireChannelDescription =>
'Son et écran urgents lorsqu\'une alarme musicale doit sonner';
@override
String get alarmPreNoticeChannelName => 'Rappels d\'alarme';
@override
String get alarmPreNoticeChannelDescription =>
'Notifications silencieuses avant l\'alarme';
@override
String get openFolderChooserTitle => 'Ouvrir le dossier';
@override
String get openRecordingChooserTitle => 'Ouvrir l\'enregistrement';
@override
String get eqDeviceEditTitle => 'Modifier l\'appareil';
@override
String get eqDeviceNameLabel => 'Nom de l\'appareil';
@override
String get eqDeviceNameHint => 'ex. : Enceinte salon';
@override
String get eqDeviceNameConfirm => 'Enregistrer';
@override
String get eqDeviceConnected => 'Connecté';
@override
String get eqDeviceActiveOutput => 'Le son sort par cet appareil';
@override
String get eqDeviceRemove => 'Supprimer lappareil';
@override
String eqDeviceRemoved(Object device) {
return '$device supprimé';
}
@override
String get localMusicSectionTitle => 'Musique locale (Android Auto)';
@override
String get localMusicSectionDescription =>
'Choisissez un dossier sur cet appareil pour parcourir et lire ses fichiers audio depuis la voiture.';
@override
String get localMusicFolderNotConfigured => 'Aucun dossier sélectionné';
@override
String get localMusicFolderTitle => 'Dossier de musique locale';
@override
String get localMusicChoosePath => 'Choisir un dossier';
@override
String get localMusicChangePath => 'Changer de dossier';
@override
String get localMusicFolderUpdated => 'Dossier de musique locale mis à jour';
@override
String localMusicFolderSaveError(Object error) {
return 'Impossible denregistrer le dossier : $error';
}
@override
String get localMusicFolderGenericName => 'Dossier sélectionné';
@override
String get welcomeHeadline => 'Votre monde, en direct';
@override
String get welcomeBody =>
'53412 stations de 238 pays. Enregistrez vos favorites, emmenez-les en voiture et réveillez-vous avec elles.';
@override
String get welcomeBullet1Title => 'Égaliseur par station';
@override
String get welcomeBullet1Subtitle =>
'Plus un Preset par périphérique de sortie';
@override
String get welcomeBullet2Title => 'Android Auto';
@override
String get welcomeBullet2Subtitle =>
'Vos favorites et votre musique locale en voiture';
@override
String get welcomeBullet3Title => 'Alarmes musicales';
@override
String get welcomeBullet3Subtitle =>
'Avec montée progressive du volume et mode vacances';
@override
String get welcomeCtaLabel => 'Commencer à écouter';
@override
String get eqCustomActionEnableLabel => 'Activer l\'égaliseur';
@override
String get eqCustomActionDisableLabel => 'Désactiver l\'égaliseur';
@override
String eqCustomActionPresetLabel(String preset) {
return 'Préréglage : $preset';
}
@override
String get alarmCardVacationPausedBadge => 'En pause pour les vacances';
@override
String get alarmCardSchedulingFailedMessage =>
'Cette alarme n\'a pas pu être enregistrée dans le système ; elle risque donc de ne pas sonner.';
@override
String get alarmCardPreNoticeFailedMessage =>
'Cette alarme est programmée, mais son rappel anticipé n\'a pas pu être activé.';
@override
String get alarmDiagnosticsExactAlarmsTitle =>
'Programmation d\'alarme précise';
@override
String get alarmDiagnosticsExactAlarmsHint =>
'Permet à l\'alarme de sonner à la minute exacte choisie, même si le téléphone est en veille.';
@override
String get alarmDiagnosticsNotificationsTitle => 'Notifications';
@override
String get alarmDiagnosticsNotificationsHint =>
'Nécessaires pour afficher l\'alarme et l\'avis anticipé.';
@override
String get alarmDiagnosticsFullScreenTitle =>
'Affichage plein écran de l\'alarme';
@override
String get alarmDiagnosticsFullScreenHint =>
'Permet à l\'écran de sonnerie de s\'afficher automatiquement, même si le téléphone est verrouillé.';
@override
String get alarmDiagnosticsBatteryTitle => 'Optimisation de la batterie';
@override
String get alarmDiagnosticsBatteryHint =>
'Empêche le système de fermer PluriWave en arrière-plan pour que l\'alarme puisse quand même sonner.';
@override
String get alarmDiagnosticsNativeCountTitle =>
'Alarmes enregistrées auprès d\'Android';
@override
String alarmDiagnosticsNativeCountValue(int count) {
return 'Actuellement enregistrées : $count';
}
@override
String get alarmDiagnosticsNativeCountAttentionHint =>
'Une alarme est activée, mais aucune n\'est encore enregistrée auprès du système. Rouvrez PluriWave, ou corrigez d\'abord les points ci-dessus.';
@override
String get alarmDiagnosticsManufacturerLabel => 'Fabricant';
@override
String get alarmDiagnosticsSdkLabel => 'Version d\'Android (SDK)';
@override
String get alarmDiagnosticsNeedsAttentionStatus =>
'Nécessite votre attention';
@override
String get alarmDiagnosticsAutostartTitle =>
'Encore une étape manuelle sur ce téléphone';
@override
String alarmDiagnosticsAutostartBody(String manufacturer) {
return 'Les téléphones $manufacturer ferment souvent les applications en arrière-plan pour économiser la batterie. Aucun réglage ne permet à PluriWave de s\'activer lui-même : vous devez activer vous-même le démarrage automatique (parfois appelé \"Autostart\" ou \"Activité en arrière-plan\") pour PluriWave. Cherchez dans les Paramètres, sous Applications ou Batterie, ou dans l\'application Sécurité du téléphone.';
}
@override
String get alarmDiagnosticsFixAction => 'Corriger';
@override
String get alarmDiagnosticsIntentUnavailable =>
'Impossible d\'ouvrir cet écran de paramètres sur ce téléphone. Essayez de le trouver manuellement dans les Paramètres.';
@override
String get alarmDiagnosticsUnavailableHint =>
'Nous n\'avons pas encore pu vérifier vos paramètres d\'alarme.';
@override
String get autoEqDisableOption => 'Désactiver';
@override
String get funcionPremium => 'Fonctionnalité Premium';
@override
String get limiteAlarmasAlcanzado =>
'Vous avez atteint la limite gratuite de 5 alarmes.';
@override
String get desbloquearPremium => 'Débloquer Premium';
@override
String get restaurarCompras => 'Restaurer les achats';
}