Change notification layout.
After Width: | Height: | Size: 265 B |
After Width: | Height: | Size: 294 B |
After Width: | Height: | Size: 397 B |
After Width: | Height: | Size: 415 B |
After Width: | Height: | Size: 197 B |
After Width: | Height: | Size: 206 B |
After Width: | Height: | Size: 294 B |
After Width: | Height: | Size: 316 B |
After Width: | Height: | Size: 294 B |
After Width: | Height: | Size: 316 B |
After Width: | Height: | Size: 415 B |
After Width: | Height: | Size: 521 B |
After Width: | Height: | Size: 397 B |
After Width: | Height: | Size: 415 B |
After Width: | Height: | Size: 659 B |
After Width: | Height: | Size: 673 B |
After Width: | Height: | Size: 415 B |
After Width: | Height: | Size: 521 B |
After Width: | Height: | Size: 673 B |
After Width: | Height: | Size: 880 B |
|
@ -110,6 +110,8 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||||
"editGroupName" : MessageLookupByLibrary.simpleMessage("Edit group name"),
|
"editGroupName" : MessageLookupByLibrary.simpleMessage("Edit group name"),
|
||||||
"endOfEpisode" : MessageLookupByLibrary.simpleMessage("End of Episode"),
|
"endOfEpisode" : MessageLookupByLibrary.simpleMessage("End of Episode"),
|
||||||
"episode" : m4,
|
"episode" : m4,
|
||||||
|
"fastForward" : MessageLookupByLibrary.simpleMessage("Fast forward"),
|
||||||
|
"fastRewind" : MessageLookupByLibrary.simpleMessage("Fast rewind"),
|
||||||
"featureDiscoveryEditGroup" : MessageLookupByLibrary.simpleMessage("Tap to edit group"),
|
"featureDiscoveryEditGroup" : MessageLookupByLibrary.simpleMessage("Tap to edit group"),
|
||||||
"featureDiscoveryEditGroupDes" : MessageLookupByLibrary.simpleMessage("You can change group name or delete it here, but the home group can not be edited or deleted"),
|
"featureDiscoveryEditGroupDes" : MessageLookupByLibrary.simpleMessage("You can change group name or delete it here, but the home group can not be edited or deleted"),
|
||||||
"featureDiscoveryEpisode" : MessageLookupByLibrary.simpleMessage("Episode view"),
|
"featureDiscoveryEpisode" : MessageLookupByLibrary.simpleMessage("Episode view"),
|
||||||
|
@ -140,6 +142,7 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||||
"groupFilter" : MessageLookupByLibrary.simpleMessage("Group filter"),
|
"groupFilter" : MessageLookupByLibrary.simpleMessage("Group filter"),
|
||||||
"groupRemoveConfirm" : MessageLookupByLibrary.simpleMessage("Are you sure you want to delete this group? Podcasts will be moved to the Home group."),
|
"groupRemoveConfirm" : MessageLookupByLibrary.simpleMessage("Are you sure you want to delete this group? Podcasts will be moved to the Home group."),
|
||||||
"groups" : m6,
|
"groups" : m6,
|
||||||
|
"hideListenedSetting" : MessageLookupByLibrary.simpleMessage("Hide listened"),
|
||||||
"homeGroupsSeeAll" : MessageLookupByLibrary.simpleMessage("See All"),
|
"homeGroupsSeeAll" : MessageLookupByLibrary.simpleMessage("See All"),
|
||||||
"homeMenuPlaylist" : MessageLookupByLibrary.simpleMessage("Playlist"),
|
"homeMenuPlaylist" : MessageLookupByLibrary.simpleMessage("Playlist"),
|
||||||
"homeSubMenuSortBy" : MessageLookupByLibrary.simpleMessage("Sort by"),
|
"homeSubMenuSortBy" : MessageLookupByLibrary.simpleMessage("Sort by"),
|
||||||
|
@ -186,12 +189,14 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||||
"noShownote" : MessageLookupByLibrary.simpleMessage("No show notes available for this episode."),
|
"noShownote" : MessageLookupByLibrary.simpleMessage("No show notes available for this episode."),
|
||||||
"notificaitonFatch" : m12,
|
"notificaitonFatch" : m12,
|
||||||
"notificationNetworkError" : m13,
|
"notificationNetworkError" : m13,
|
||||||
|
"notificationSetting" : MessageLookupByLibrary.simpleMessage("Notification panel"),
|
||||||
"notificationSubscribe" : m14,
|
"notificationSubscribe" : m14,
|
||||||
"notificationSubscribeExisted" : m15,
|
"notificationSubscribeExisted" : m15,
|
||||||
"notificationSuccess" : m16,
|
"notificationSuccess" : m16,
|
||||||
"notificationUpdate" : m17,
|
"notificationUpdate" : m17,
|
||||||
"notificationUpdateError" : m18,
|
"notificationUpdateError" : m18,
|
||||||
"oldestFirst" : MessageLookupByLibrary.simpleMessage("Oldest first"),
|
"oldestFirst" : MessageLookupByLibrary.simpleMessage("Oldest first"),
|
||||||
|
"pause" : MessageLookupByLibrary.simpleMessage("Pause"),
|
||||||
"play" : MessageLookupByLibrary.simpleMessage("Play"),
|
"play" : MessageLookupByLibrary.simpleMessage("Play"),
|
||||||
"playback" : MessageLookupByLibrary.simpleMessage("Playback control"),
|
"playback" : MessageLookupByLibrary.simpleMessage("Playback control"),
|
||||||
"player" : MessageLookupByLibrary.simpleMessage("Player"),
|
"player" : MessageLookupByLibrary.simpleMessage("Player"),
|
||||||
|
@ -300,7 +305,9 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||||
"size" : MessageLookupByLibrary.simpleMessage("Size"),
|
"size" : MessageLookupByLibrary.simpleMessage("Size"),
|
||||||
"skipSecondsAtStart" : MessageLookupByLibrary.simpleMessage("Skip seconds at start"),
|
"skipSecondsAtStart" : MessageLookupByLibrary.simpleMessage("Skip seconds at start"),
|
||||||
"skipSilence" : MessageLookupByLibrary.simpleMessage("Skip silence"),
|
"skipSilence" : MessageLookupByLibrary.simpleMessage("Skip silence"),
|
||||||
|
"skipToNext" : MessageLookupByLibrary.simpleMessage("Skip to next"),
|
||||||
"sleepTimer" : MessageLookupByLibrary.simpleMessage("Sleep timer"),
|
"sleepTimer" : MessageLookupByLibrary.simpleMessage("Sleep timer"),
|
||||||
|
"stop" : MessageLookupByLibrary.simpleMessage("Stop"),
|
||||||
"subscribe" : MessageLookupByLibrary.simpleMessage("Subscribe"),
|
"subscribe" : MessageLookupByLibrary.simpleMessage("Subscribe"),
|
||||||
"subscribeExportDes" : MessageLookupByLibrary.simpleMessage("Export OMPL file of all podcasts"),
|
"subscribeExportDes" : MessageLookupByLibrary.simpleMessage("Export OMPL file of all podcasts"),
|
||||||
"systemDefault" : MessageLookupByLibrary.simpleMessage("System default"),
|
"systemDefault" : MessageLookupByLibrary.simpleMessage("System default"),
|
||||||
|
|
|
@ -110,6 +110,8 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||||
"editGroupName" : MessageLookupByLibrary.simpleMessage("Editar nombre del grupo"),
|
"editGroupName" : MessageLookupByLibrary.simpleMessage("Editar nombre del grupo"),
|
||||||
"endOfEpisode" : MessageLookupByLibrary.simpleMessage("Fin del episodio"),
|
"endOfEpisode" : MessageLookupByLibrary.simpleMessage("Fin del episodio"),
|
||||||
"episode" : m4,
|
"episode" : m4,
|
||||||
|
"fastForward" : MessageLookupByLibrary.simpleMessage("Fast forward"),
|
||||||
|
"fastRewind" : MessageLookupByLibrary.simpleMessage("Fast rewind"),
|
||||||
"featureDiscoveryEditGroup" : MessageLookupByLibrary.simpleMessage("Toca para editar grupo"),
|
"featureDiscoveryEditGroup" : MessageLookupByLibrary.simpleMessage("Toca para editar grupo"),
|
||||||
"featureDiscoveryEditGroupDes" : MessageLookupByLibrary.simpleMessage("Puedes cambiar el nombre del grupo o eliminar el grupo aquí, el grupo Home no puede ser editado ni borrado"),
|
"featureDiscoveryEditGroupDes" : MessageLookupByLibrary.simpleMessage("Puedes cambiar el nombre del grupo o eliminar el grupo aquí, el grupo Home no puede ser editado ni borrado"),
|
||||||
"featureDiscoveryEpisode" : MessageLookupByLibrary.simpleMessage("Vista de episodios"),
|
"featureDiscoveryEpisode" : MessageLookupByLibrary.simpleMessage("Vista de episodios"),
|
||||||
|
@ -140,6 +142,7 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||||
"groupFilter" : MessageLookupByLibrary.simpleMessage("Filtro de grupo"),
|
"groupFilter" : MessageLookupByLibrary.simpleMessage("Filtro de grupo"),
|
||||||
"groupRemoveConfirm" : MessageLookupByLibrary.simpleMessage("¿Estas seguro de que quieres remover este grupo? Los podcasts serán movidos al grupo Home"),
|
"groupRemoveConfirm" : MessageLookupByLibrary.simpleMessage("¿Estas seguro de que quieres remover este grupo? Los podcasts serán movidos al grupo Home"),
|
||||||
"groups" : m6,
|
"groups" : m6,
|
||||||
|
"hideListenedSetting" : MessageLookupByLibrary.simpleMessage("Hide listened"),
|
||||||
"homeGroupsSeeAll" : MessageLookupByLibrary.simpleMessage("Ver todo"),
|
"homeGroupsSeeAll" : MessageLookupByLibrary.simpleMessage("Ver todo"),
|
||||||
"homeMenuPlaylist" : MessageLookupByLibrary.simpleMessage("Lista de reproducción"),
|
"homeMenuPlaylist" : MessageLookupByLibrary.simpleMessage("Lista de reproducción"),
|
||||||
"homeSubMenuSortBy" : MessageLookupByLibrary.simpleMessage("Ordenar por"),
|
"homeSubMenuSortBy" : MessageLookupByLibrary.simpleMessage("Ordenar por"),
|
||||||
|
@ -186,12 +189,14 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||||
"noShownote" : MessageLookupByLibrary.simpleMessage("Aun no hay notas disponibles para este episodio"),
|
"noShownote" : MessageLookupByLibrary.simpleMessage("Aun no hay notas disponibles para este episodio"),
|
||||||
"notificaitonFatch" : m12,
|
"notificaitonFatch" : m12,
|
||||||
"notificationNetworkError" : m13,
|
"notificationNetworkError" : m13,
|
||||||
|
"notificationSetting" : MessageLookupByLibrary.simpleMessage("Notification panel"),
|
||||||
"notificationSubscribe" : m14,
|
"notificationSubscribe" : m14,
|
||||||
"notificationSubscribeExisted" : m15,
|
"notificationSubscribeExisted" : m15,
|
||||||
"notificationSuccess" : m16,
|
"notificationSuccess" : m16,
|
||||||
"notificationUpdate" : m17,
|
"notificationUpdate" : m17,
|
||||||
"notificationUpdateError" : m18,
|
"notificationUpdateError" : m18,
|
||||||
"oldestFirst" : MessageLookupByLibrary.simpleMessage("Mas antiguos primero"),
|
"oldestFirst" : MessageLookupByLibrary.simpleMessage("Mas antiguos primero"),
|
||||||
|
"pause" : MessageLookupByLibrary.simpleMessage("Pause"),
|
||||||
"play" : MessageLookupByLibrary.simpleMessage("Reproducir"),
|
"play" : MessageLookupByLibrary.simpleMessage("Reproducir"),
|
||||||
"playback" : MessageLookupByLibrary.simpleMessage("Control de reproducción"),
|
"playback" : MessageLookupByLibrary.simpleMessage("Control de reproducción"),
|
||||||
"player" : MessageLookupByLibrary.simpleMessage("Reproductor"),
|
"player" : MessageLookupByLibrary.simpleMessage("Reproductor"),
|
||||||
|
@ -300,7 +305,9 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||||
"size" : MessageLookupByLibrary.simpleMessage("Tamaño"),
|
"size" : MessageLookupByLibrary.simpleMessage("Tamaño"),
|
||||||
"skipSecondsAtStart" : MessageLookupByLibrary.simpleMessage("Saltar segundos al inicio"),
|
"skipSecondsAtStart" : MessageLookupByLibrary.simpleMessage("Saltar segundos al inicio"),
|
||||||
"skipSilence" : MessageLookupByLibrary.simpleMessage("Saltar silencios"),
|
"skipSilence" : MessageLookupByLibrary.simpleMessage("Saltar silencios"),
|
||||||
|
"skipToNext" : MessageLookupByLibrary.simpleMessage("Skip to next"),
|
||||||
"sleepTimer" : MessageLookupByLibrary.simpleMessage("Temporizador de sueño"),
|
"sleepTimer" : MessageLookupByLibrary.simpleMessage("Temporizador de sueño"),
|
||||||
|
"stop" : MessageLookupByLibrary.simpleMessage("Stop"),
|
||||||
"subscribe" : MessageLookupByLibrary.simpleMessage("Suscribir"),
|
"subscribe" : MessageLookupByLibrary.simpleMessage("Suscribir"),
|
||||||
"subscribeExportDes" : MessageLookupByLibrary.simpleMessage("Exportar OPML de todos los podcasts"),
|
"subscribeExportDes" : MessageLookupByLibrary.simpleMessage("Exportar OPML de todos los podcasts"),
|
||||||
"systemDefault" : MessageLookupByLibrary.simpleMessage("Acorde al sistema"),
|
"systemDefault" : MessageLookupByLibrary.simpleMessage("Acorde al sistema"),
|
||||||
|
|
|
@ -47,7 +47,7 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||||
|
|
||||||
static m13(title) => "Échec de l’abonnement, erreur réseau ${title} ";
|
static m13(title) => "Échec de l’abonnement, erreur réseau ${title} ";
|
||||||
|
|
||||||
static m14(title) => "S\'abonner";
|
static m14(title) => "Abonnement en cours";
|
||||||
|
|
||||||
static m15(title) => "Échec de l’abonnement, le podcast existe déjà ${title}";
|
static m15(title) => "Échec de l’abonnement, le podcast existe déjà ${title}";
|
||||||
|
|
||||||
|
@ -85,9 +85,9 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||||
"addNewEpisodeTooltip" : MessageLookupByLibrary.simpleMessage("Ajouter de nouveaux épisodes à la playlist."),
|
"addNewEpisodeTooltip" : MessageLookupByLibrary.simpleMessage("Ajouter de nouveaux épisodes à la playlist."),
|
||||||
"addSomeGroups" : MessageLookupByLibrary.simpleMessage("Ajouter des groupes"),
|
"addSomeGroups" : MessageLookupByLibrary.simpleMessage("Ajouter des groupes"),
|
||||||
"all" : MessageLookupByLibrary.simpleMessage("Tout"),
|
"all" : MessageLookupByLibrary.simpleMessage("Tout"),
|
||||||
"autoDownload" : MessageLookupByLibrary.simpleMessage("Téléchargements auto"),
|
"autoDownload" : MessageLookupByLibrary.simpleMessage("Automatisation"),
|
||||||
"back" : MessageLookupByLibrary.simpleMessage("Retour"),
|
"back" : MessageLookupByLibrary.simpleMessage("Retour"),
|
||||||
"boostVolume" : MessageLookupByLibrary.simpleMessage("Boost volume"),
|
"boostVolume" : MessageLookupByLibrary.simpleMessage("Booster le volume"),
|
||||||
"buffering" : MessageLookupByLibrary.simpleMessage("Buffering"),
|
"buffering" : MessageLookupByLibrary.simpleMessage("Buffering"),
|
||||||
"cancel" : MessageLookupByLibrary.simpleMessage("ANNULER"),
|
"cancel" : MessageLookupByLibrary.simpleMessage("ANNULER"),
|
||||||
"cellularConfirm" : MessageLookupByLibrary.simpleMessage("Avertissement utilisation des données mobiles"),
|
"cellularConfirm" : MessageLookupByLibrary.simpleMessage("Avertissement utilisation des données mobiles"),
|
||||||
|
@ -103,31 +103,33 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||||
"daysCount" : m3,
|
"daysCount" : m3,
|
||||||
"delete" : MessageLookupByLibrary.simpleMessage("Effacer"),
|
"delete" : MessageLookupByLibrary.simpleMessage("Effacer"),
|
||||||
"developer" : MessageLookupByLibrary.simpleMessage("Développeur"),
|
"developer" : MessageLookupByLibrary.simpleMessage("Développeur"),
|
||||||
"dismiss" : MessageLookupByLibrary.simpleMessage("Rejeter"),
|
"dismiss" : MessageLookupByLibrary.simpleMessage("Passer"),
|
||||||
"done" : MessageLookupByLibrary.simpleMessage("Fait"),
|
"done" : MessageLookupByLibrary.simpleMessage("Fait"),
|
||||||
"download" : MessageLookupByLibrary.simpleMessage("Téléchargés"),
|
"download" : MessageLookupByLibrary.simpleMessage("Téléchargés"),
|
||||||
"downloaded" : MessageLookupByLibrary.simpleMessage("Téléchargés"),
|
"downloaded" : MessageLookupByLibrary.simpleMessage("Téléchargés"),
|
||||||
"editGroupName" : MessageLookupByLibrary.simpleMessage("Modifier le nom du groupe"),
|
"editGroupName" : MessageLookupByLibrary.simpleMessage("Modifier le nom du groupe"),
|
||||||
"endOfEpisode" : MessageLookupByLibrary.simpleMessage("Fin de l\'épisode"),
|
"endOfEpisode" : MessageLookupByLibrary.simpleMessage("Fin de l\'épisode"),
|
||||||
"episode" : m4,
|
"episode" : m4,
|
||||||
"featureDiscoveryEditGroup" : MessageLookupByLibrary.simpleMessage("Appuyez pour éditer le groupe"),
|
"fastForward" : MessageLookupByLibrary.simpleMessage("Fast forward"),
|
||||||
"featureDiscoveryEditGroupDes" : MessageLookupByLibrary.simpleMessage("Vous pouvez supprimer ou modifier le nom du groupe, le groupe Home ne peut être modifié ni supprimé."),
|
"fastRewind" : MessageLookupByLibrary.simpleMessage("Fast rewind"),
|
||||||
|
"featureDiscoveryEditGroup" : MessageLookupByLibrary.simpleMessage("Gestion des groupes"),
|
||||||
|
"featureDiscoveryEditGroupDes" : MessageLookupByLibrary.simpleMessage("Ici vous pouvez supprimer ou modifier le nom des groupes, seul le groupe Home ne peut être édité."),
|
||||||
"featureDiscoveryEpisode" : MessageLookupByLibrary.simpleMessage("Vue épisode"),
|
"featureDiscoveryEpisode" : MessageLookupByLibrary.simpleMessage("Vue épisode"),
|
||||||
"featureDiscoveryEpisodeDes" : MessageLookupByLibrary.simpleMessage("Vous pouvez effectuer un appui long pour jouer un épisode ou l\'ajouter à la playlist."),
|
"featureDiscoveryEpisodeDes" : MessageLookupByLibrary.simpleMessage("Vous pouvez effectuer un appui long pour jouer un épisode ou l\'ajouter à la playlist."),
|
||||||
"featureDiscoveryEpisodeTitle" : MessageLookupByLibrary.simpleMessage("Effectuez un appui long pour jouer un épisode immédiatement"),
|
"featureDiscoveryEpisodeTitle" : MessageLookupByLibrary.simpleMessage("Effectuez un appui long pour lancer un épisode"),
|
||||||
"featureDiscoveryGroup" : MessageLookupByLibrary.simpleMessage("Appuyez pour ajouter un groupe."),
|
"featureDiscoveryGroup" : MessageLookupByLibrary.simpleMessage("Appuyez ici pour créer un groupe"),
|
||||||
"featureDiscoveryGroupDes" : MessageLookupByLibrary.simpleMessage("Pour les nouveaux podcasts le groupe par défaut est Home. Vous pouvez créer de nouveaux groupes et y déplacer vos podcasts. Un podcast peut être associé à plusieurs groupes."),
|
"featureDiscoveryGroupDes" : MessageLookupByLibrary.simpleMessage("Pour les nouveaux podcasts le groupe par défaut est Home. Vous pouvez créer de nouveaux groupes et y déplacer vos podcasts. Un podcast peut être associé à plusieurs groupes."),
|
||||||
"featureDiscoveryGroupPodcast" : MessageLookupByLibrary.simpleMessage("Un appui long pour classer les podcasts"),
|
"featureDiscoveryGroupPodcast" : MessageLookupByLibrary.simpleMessage("Classement des podcasts"),
|
||||||
"featureDiscoveryGroupPodcastDes" : MessageLookupByLibrary.simpleMessage("Appuyez pour accéder à plus d\'options, un appui long permet de classer les podcasts du groupe."),
|
"featureDiscoveryGroupPodcastDes" : MessageLookupByLibrary.simpleMessage("Appuyez ici pour accéder à plus d\'options, un appui long permet de classer les podcasts d\'un groupe."),
|
||||||
"featureDiscoveryOMPL" : MessageLookupByLibrary.simpleMessage("Appuyez pour importer un fichier OPML"),
|
"featureDiscoveryOMPL" : MessageLookupByLibrary.simpleMessage("Appuyez ici pour importer un fichier OPML"),
|
||||||
"featureDiscoveryOMPLDes" : MessageLookupByLibrary.simpleMessage("Vous pouvez importer un fichier OPML, accéder aux paramètres ou actualiser tous les podcasts."),
|
"featureDiscoveryOMPLDes" : MessageLookupByLibrary.simpleMessage("Vous pouvez importer un fichier OPML, accéder aux paramètres ou actualiser tous les podcasts."),
|
||||||
"featureDiscoveryPlaylist" : MessageLookupByLibrary.simpleMessage("Appuyez pour ouvrir la playlist"),
|
"featureDiscoveryPlaylist" : MessageLookupByLibrary.simpleMessage("Appuyez ici pour ouvrir la playlist"),
|
||||||
"featureDiscoveryPlaylistDes" : MessageLookupByLibrary.simpleMessage("Vous pouvez ajouter des épisodes dans la playlist. Ils seront automatiquement retirés l\'écoute finie."),
|
"featureDiscoveryPlaylistDes" : MessageLookupByLibrary.simpleMessage("Ajoutez des épisodes dans la playlist. Ils seront automatiquement retirés une fois écoutés."),
|
||||||
"featureDiscoveryPodcast" : MessageLookupByLibrary.simpleMessage("Vue podcasts"),
|
"featureDiscoveryPodcast" : MessageLookupByLibrary.simpleMessage("Vue podcasts"),
|
||||||
"featureDiscoveryPodcastDes" : MessageLookupByLibrary.simpleMessage("Vous pouvez appuyer sur Tout Voir pour ajouter des groupes ou gérer les podcasts."),
|
"featureDiscoveryPodcastDes" : MessageLookupByLibrary.simpleMessage("Appuyez sur Tout Voir pour ajouter des groupes et gérer les podcasts."),
|
||||||
"featureDiscoveryPodcastTitle" : MessageLookupByLibrary.simpleMessage("Effectuez un défilement vertical pour changer de groupe."),
|
"featureDiscoveryPodcastTitle" : MessageLookupByLibrary.simpleMessage("Effectuez un défilement vertical pour changer de groupe."),
|
||||||
"featureDiscoverySearch" : MessageLookupByLibrary.simpleMessage("Appuyez pour chercher un podcast"),
|
"featureDiscoverySearch" : MessageLookupByLibrary.simpleMessage("Appuyez ici pour rechercher un podcast"),
|
||||||
"featureDiscoverySearchDes" : MessageLookupByLibrary.simpleMessage("Vous pouvez effectuer une recherche par titre, mots clés ou lien RSS pour vous abonner à un nouveau podcast."),
|
"featureDiscoverySearchDes" : MessageLookupByLibrary.simpleMessage("Pour trouver vos podcasts vous pouvez effectuer une recherche par titres, mots clés ou liens RSS."),
|
||||||
"feedbackEmail" : MessageLookupByLibrary.simpleMessage("Contact"),
|
"feedbackEmail" : MessageLookupByLibrary.simpleMessage("Contact"),
|
||||||
"feedbackGithub" : MessageLookupByLibrary.simpleMessage("GitHub"),
|
"feedbackGithub" : MessageLookupByLibrary.simpleMessage("GitHub"),
|
||||||
"feedbackPlay" : MessageLookupByLibrary.simpleMessage("PlayStore"),
|
"feedbackPlay" : MessageLookupByLibrary.simpleMessage("PlayStore"),
|
||||||
|
@ -140,21 +142,22 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||||
"groupFilter" : MessageLookupByLibrary.simpleMessage("Filtrer par groupe"),
|
"groupFilter" : MessageLookupByLibrary.simpleMessage("Filtrer par groupe"),
|
||||||
"groupRemoveConfirm" : MessageLookupByLibrary.simpleMessage("Êtes-vous sûr de vouloir supprimer ce groupe ? Les podcasts seront déplacés vers le groupe Home."),
|
"groupRemoveConfirm" : MessageLookupByLibrary.simpleMessage("Êtes-vous sûr de vouloir supprimer ce groupe ? Les podcasts seront déplacés vers le groupe Home."),
|
||||||
"groups" : m6,
|
"groups" : m6,
|
||||||
|
"hideListenedSetting" : MessageLookupByLibrary.simpleMessage("Hide listened"),
|
||||||
"homeGroupsSeeAll" : MessageLookupByLibrary.simpleMessage("Tout Voir"),
|
"homeGroupsSeeAll" : MessageLookupByLibrary.simpleMessage("Tout Voir"),
|
||||||
"homeMenuPlaylist" : MessageLookupByLibrary.simpleMessage("Playlist"),
|
"homeMenuPlaylist" : MessageLookupByLibrary.simpleMessage("Playlist"),
|
||||||
"homeSubMenuSortBy" : MessageLookupByLibrary.simpleMessage("Classé par"),
|
"homeSubMenuSortBy" : MessageLookupByLibrary.simpleMessage("Classé par"),
|
||||||
"homeTabMenuFavotite" : MessageLookupByLibrary.simpleMessage("Favoris"),
|
"homeTabMenuFavotite" : MessageLookupByLibrary.simpleMessage("Favoris"),
|
||||||
"homeTabMenuRecent" : MessageLookupByLibrary.simpleMessage("Récents"),
|
"homeTabMenuRecent" : MessageLookupByLibrary.simpleMessage("Récents"),
|
||||||
"homeToprightMenuAbout" : MessageLookupByLibrary.simpleMessage("À propos"),
|
"homeToprightMenuAbout" : MessageLookupByLibrary.simpleMessage("À propos"),
|
||||||
"homeToprightMenuImportOMPL" : MessageLookupByLibrary.simpleMessage("Importer le fichier OPML"),
|
"homeToprightMenuImportOMPL" : MessageLookupByLibrary.simpleMessage("Importer un fichier OPML"),
|
||||||
"homeToprightMenuRefreshAll" : MessageLookupByLibrary.simpleMessage("Tout actualiser"),
|
"homeToprightMenuRefreshAll" : MessageLookupByLibrary.simpleMessage("Tout actualiser"),
|
||||||
"hostedOn" : m7,
|
"hostedOn" : m7,
|
||||||
"hoursAgo" : m8,
|
"hoursAgo" : m8,
|
||||||
"hoursCount" : m9,
|
"hoursCount" : m9,
|
||||||
"import" : MessageLookupByLibrary.simpleMessage("Importer"),
|
"import" : MessageLookupByLibrary.simpleMessage("Importer"),
|
||||||
"introFourthPage" : MessageLookupByLibrary.simpleMessage("Vous pouvez effectuer un appui long sur un épisode pour accéder aux actions rapides."),
|
"introFourthPage" : MessageLookupByLibrary.simpleMessage("Un appui long sur un épisode lance les actions rapides."),
|
||||||
"introSecondPage" : MessageLookupByLibrary.simpleMessage("Souscrivez aux podcasts via la section recherche ou importez un fichier OPML."),
|
"introSecondPage" : MessageLookupByLibrary.simpleMessage("S\'abonner aux podcasts via la section recherche ou un fichier OPML."),
|
||||||
"introThirdPage" : MessageLookupByLibrary.simpleMessage("Vous pouvez créer un nouveau groupe de podcasts."),
|
"introThirdPage" : MessageLookupByLibrary.simpleMessage("Vous pouvez créer des groupes de podcasts."),
|
||||||
"later" : MessageLookupByLibrary.simpleMessage("Plus tard"),
|
"later" : MessageLookupByLibrary.simpleMessage("Plus tard"),
|
||||||
"lightMode" : MessageLookupByLibrary.simpleMessage("Mode clair"),
|
"lightMode" : MessageLookupByLibrary.simpleMessage("Mode clair"),
|
||||||
"like" : MessageLookupByLibrary.simpleMessage("Like"),
|
"like" : MessageLookupByLibrary.simpleMessage("Like"),
|
||||||
|
@ -166,7 +169,7 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||||
"mark" : MessageLookupByLibrary.simpleMessage("✓"),
|
"mark" : MessageLookupByLibrary.simpleMessage("✓"),
|
||||||
"markConfirm" : MessageLookupByLibrary.simpleMessage("Marquage effectué"),
|
"markConfirm" : MessageLookupByLibrary.simpleMessage("Marquage effectué"),
|
||||||
"markConfirmContent" : MessageLookupByLibrary.simpleMessage("Marquer tous les épisodes comme lus ?"),
|
"markConfirmContent" : MessageLookupByLibrary.simpleMessage("Marquer tous les épisodes comme lus ?"),
|
||||||
"markListened" : MessageLookupByLibrary.simpleMessage("Marquer comme lu"),
|
"markListened" : MessageLookupByLibrary.simpleMessage("Marquage"),
|
||||||
"markNotListened" : MessageLookupByLibrary.simpleMessage("Mark not listened"),
|
"markNotListened" : MessageLookupByLibrary.simpleMessage("Mark not listened"),
|
||||||
"menu" : MessageLookupByLibrary.simpleMessage("Menu"),
|
"menu" : MessageLookupByLibrary.simpleMessage("Menu"),
|
||||||
"menuAllPodcasts" : MessageLookupByLibrary.simpleMessage("Tous les podcasts"),
|
"menuAllPodcasts" : MessageLookupByLibrary.simpleMessage("Tous les podcasts"),
|
||||||
|
@ -181,32 +184,34 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||||
"next" : MessageLookupByLibrary.simpleMessage("Suivant"),
|
"next" : MessageLookupByLibrary.simpleMessage("Suivant"),
|
||||||
"noEpisodeDownload" : MessageLookupByLibrary.simpleMessage("Aucun épisode téléchargé."),
|
"noEpisodeDownload" : MessageLookupByLibrary.simpleMessage("Aucun épisode téléchargé."),
|
||||||
"noEpisodeFavorite" : MessageLookupByLibrary.simpleMessage("Aucun épisode ajouté."),
|
"noEpisodeFavorite" : MessageLookupByLibrary.simpleMessage("Aucun épisode ajouté."),
|
||||||
"noEpisodeRecent" : MessageLookupByLibrary.simpleMessage("Aucun épisode récupéré."),
|
"noEpisodeRecent" : MessageLookupByLibrary.simpleMessage("Aucun épisode récent."),
|
||||||
"noPodcastGroup" : MessageLookupByLibrary.simpleMessage("Ce groupe ne contient aucun podcast"),
|
"noPodcastGroup" : MessageLookupByLibrary.simpleMessage("Ce groupe ne contient aucun podcast"),
|
||||||
"noShownote" : MessageLookupByLibrary.simpleMessage("Notes de l\'épisode manquantes."),
|
"noShownote" : MessageLookupByLibrary.simpleMessage("Notes de l\'épisode manquantes."),
|
||||||
"notificaitonFatch" : m12,
|
"notificaitonFatch" : m12,
|
||||||
"notificationNetworkError" : m13,
|
"notificationNetworkError" : m13,
|
||||||
|
"notificationSetting" : MessageLookupByLibrary.simpleMessage("Notification panel"),
|
||||||
"notificationSubscribe" : m14,
|
"notificationSubscribe" : m14,
|
||||||
"notificationSubscribeExisted" : m15,
|
"notificationSubscribeExisted" : m15,
|
||||||
"notificationSuccess" : m16,
|
"notificationSuccess" : m16,
|
||||||
"notificationUpdate" : m17,
|
"notificationUpdate" : m17,
|
||||||
"notificationUpdateError" : m18,
|
"notificationUpdateError" : m18,
|
||||||
"oldestFirst" : MessageLookupByLibrary.simpleMessage("Le plus ancien en premier"),
|
"oldestFirst" : MessageLookupByLibrary.simpleMessage("Le plus ancien en premier"),
|
||||||
|
"pause" : MessageLookupByLibrary.simpleMessage("Pause"),
|
||||||
"play" : MessageLookupByLibrary.simpleMessage("Lecture"),
|
"play" : MessageLookupByLibrary.simpleMessage("Lecture"),
|
||||||
"playback" : MessageLookupByLibrary.simpleMessage("Commandes du lecteur"),
|
"playback" : MessageLookupByLibrary.simpleMessage("Commandes du lecteur"),
|
||||||
"player" : MessageLookupByLibrary.simpleMessage("Player"),
|
"player" : MessageLookupByLibrary.simpleMessage("Player"),
|
||||||
"playerHeightMed" : MessageLookupByLibrary.simpleMessage("Medium"),
|
"playerHeightMed" : MessageLookupByLibrary.simpleMessage("Moyen"),
|
||||||
"playerHeightShort" : MessageLookupByLibrary.simpleMessage("Low"),
|
"playerHeightShort" : MessageLookupByLibrary.simpleMessage("Petit"),
|
||||||
"playerHeightTall" : MessageLookupByLibrary.simpleMessage("High"),
|
"playerHeightTall" : MessageLookupByLibrary.simpleMessage("Grand"),
|
||||||
"playing" : MessageLookupByLibrary.simpleMessage("En cours"),
|
"playing" : MessageLookupByLibrary.simpleMessage("En cours"),
|
||||||
"plugins" : MessageLookupByLibrary.simpleMessage("Plugins"),
|
"plugins" : MessageLookupByLibrary.simpleMessage("Plugins"),
|
||||||
"podcast" : m19,
|
"podcast" : m19,
|
||||||
"podcastSubscribed" : MessageLookupByLibrary.simpleMessage("Abonnements"),
|
"podcastSubscribed" : MessageLookupByLibrary.simpleMessage("Abonné au podcast"),
|
||||||
"popupMenuDownloadDes" : MessageLookupByLibrary.simpleMessage("Télécharger l\'épisode"),
|
"popupMenuDownloadDes" : MessageLookupByLibrary.simpleMessage("Télécharger l\'épisode"),
|
||||||
"popupMenuLaterDes" : MessageLookupByLibrary.simpleMessage("Ajouter l\'épisode à la playlist"),
|
"popupMenuLaterDes" : MessageLookupByLibrary.simpleMessage("Ajouter à la playlist"),
|
||||||
"popupMenuLikeDes" : MessageLookupByLibrary.simpleMessage("Ajouter l\'épisode aux favoris"),
|
"popupMenuLikeDes" : MessageLookupByLibrary.simpleMessage("Ajouter l\'épisode aux favoris"),
|
||||||
"popupMenuMarkDes" : MessageLookupByLibrary.simpleMessage("Marquer l\'épisode comme lu"),
|
"popupMenuMarkDes" : MessageLookupByLibrary.simpleMessage("Marquer l\'épisode comme lu"),
|
||||||
"popupMenuPlayDes" : MessageLookupByLibrary.simpleMessage("Jouer l\'épisode"),
|
"popupMenuPlayDes" : MessageLookupByLibrary.simpleMessage("Lancer l\'épisode"),
|
||||||
"privacyPolicy" : MessageLookupByLibrary.simpleMessage("Gestion des données"),
|
"privacyPolicy" : MessageLookupByLibrary.simpleMessage("Gestion des données"),
|
||||||
"published" : m20,
|
"published" : m20,
|
||||||
"publishedDaily" : MessageLookupByLibrary.simpleMessage("Quotidien"),
|
"publishedDaily" : MessageLookupByLibrary.simpleMessage("Quotidien"),
|
||||||
|
@ -231,7 +236,7 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||||
"settings" : MessageLookupByLibrary.simpleMessage("Paramètres"),
|
"settings" : MessageLookupByLibrary.simpleMessage("Paramètres"),
|
||||||
"settingsAccentColor" : MessageLookupByLibrary.simpleMessage("Couleur principale"),
|
"settingsAccentColor" : MessageLookupByLibrary.simpleMessage("Couleur principale"),
|
||||||
"settingsAccentColorDes" : MessageLookupByLibrary.simpleMessage("Sélection de la couleur du thème"),
|
"settingsAccentColorDes" : MessageLookupByLibrary.simpleMessage("Sélection de la couleur du thème"),
|
||||||
"settingsAppIntro" : MessageLookupByLibrary.simpleMessage("App intro"),
|
"settingsAppIntro" : MessageLookupByLibrary.simpleMessage("Revoir l\'introduction"),
|
||||||
"settingsAppearance" : MessageLookupByLibrary.simpleMessage("Apparence"),
|
"settingsAppearance" : MessageLookupByLibrary.simpleMessage("Apparence"),
|
||||||
"settingsAppearanceDes" : MessageLookupByLibrary.simpleMessage("Couleurs et thèmes"),
|
"settingsAppearanceDes" : MessageLookupByLibrary.simpleMessage("Couleurs et thèmes"),
|
||||||
"settingsAudioCache" : MessageLookupByLibrary.simpleMessage("Cache audio"),
|
"settingsAudioCache" : MessageLookupByLibrary.simpleMessage("Cache audio"),
|
||||||
|
@ -241,25 +246,25 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||||
"settingsAutoPlayDes" : MessageLookupByLibrary.simpleMessage("Lancer automatiquement l\'épisode suivant"),
|
"settingsAutoPlayDes" : MessageLookupByLibrary.simpleMessage("Lancer automatiquement l\'épisode suivant"),
|
||||||
"settingsBackup" : MessageLookupByLibrary.simpleMessage("Backup"),
|
"settingsBackup" : MessageLookupByLibrary.simpleMessage("Backup"),
|
||||||
"settingsBackupDes" : MessageLookupByLibrary.simpleMessage("Sauvegarde des données de l\'application"),
|
"settingsBackupDes" : MessageLookupByLibrary.simpleMessage("Sauvegarde des données de l\'application"),
|
||||||
"settingsBoostVolume" : MessageLookupByLibrary.simpleMessage("Volume boost level"),
|
"settingsBoostVolume" : MessageLookupByLibrary.simpleMessage("Booster le volume"),
|
||||||
"settingsBoostVolumeDes" : MessageLookupByLibrary.simpleMessage("Change volume boost level"),
|
"settingsBoostVolumeDes" : MessageLookupByLibrary.simpleMessage("Définir la puissance du volume"),
|
||||||
"settingsDefaultGrid" : MessageLookupByLibrary.simpleMessage("Vue par défaut"),
|
"settingsDefaultGrid" : MessageLookupByLibrary.simpleMessage("Vue par défaut"),
|
||||||
"settingsDefaultGridDownload" : MessageLookupByLibrary.simpleMessage("Onglet Téléchargés"),
|
"settingsDefaultGridDownload" : MessageLookupByLibrary.simpleMessage("Onglet Téléchargés"),
|
||||||
"settingsDefaultGridFavorite" : MessageLookupByLibrary.simpleMessage("Onglet Favoris"),
|
"settingsDefaultGridFavorite" : MessageLookupByLibrary.simpleMessage("Onglet Favoris"),
|
||||||
"settingsDefaultGridPodcast" : MessageLookupByLibrary.simpleMessage("Page du podcast"),
|
"settingsDefaultGridPodcast" : MessageLookupByLibrary.simpleMessage("Onglet podcasts"),
|
||||||
"settingsDefaultGridRecent" : MessageLookupByLibrary.simpleMessage("Onglet Récents"),
|
"settingsDefaultGridRecent" : MessageLookupByLibrary.simpleMessage("Onglet Récents"),
|
||||||
"settingsDiscovery" : MessageLookupByLibrary.simpleMessage("Revoir le tutoriel"),
|
"settingsDiscovery" : MessageLookupByLibrary.simpleMessage("Revoir le tutoriel"),
|
||||||
"settingsEnableSyncing" : MessageLookupByLibrary.simpleMessage("Activer la synchronisation"),
|
"settingsEnableSyncing" : MessageLookupByLibrary.simpleMessage("Activer la synchronisation"),
|
||||||
"settingsEnableSyncingDes" : MessageLookupByLibrary.simpleMessage("Actualiser tous les podcasts en arrière-plan pour toujours afficher les derniers épisodes"),
|
"settingsEnableSyncingDes" : MessageLookupByLibrary.simpleMessage("Actualiser tous les podcasts en arrière-plan pour toujours afficher les derniers épisodes"),
|
||||||
"settingsExportDes" : MessageLookupByLibrary.simpleMessage("Exporter et importer les paramètres de l\'application."),
|
"settingsExportDes" : MessageLookupByLibrary.simpleMessage("Exporter et importer les paramètres de l\'application."),
|
||||||
"settingsFastForwardSec" : MessageLookupByLibrary.simpleMessage("Avance rapide"),
|
"settingsFastForwardSec" : MessageLookupByLibrary.simpleMessage("Avance rapide"),
|
||||||
"settingsFastForwardSecDes" : MessageLookupByLibrary.simpleMessage("Saut avant en secondes"),
|
"settingsFastForwardSecDes" : MessageLookupByLibrary.simpleMessage("Saut avant"),
|
||||||
"settingsFeedback" : MessageLookupByLibrary.simpleMessage("Feedback"),
|
"settingsFeedback" : MessageLookupByLibrary.simpleMessage("Feedback"),
|
||||||
"settingsFeedbackDes" : MessageLookupByLibrary.simpleMessage("Report de bug et demande d\'ajout de fonction"),
|
"settingsFeedbackDes" : MessageLookupByLibrary.simpleMessage("Report de bug et demande d\'ajout de fonction"),
|
||||||
"settingsHistory" : MessageLookupByLibrary.simpleMessage("Historique"),
|
"settingsHistory" : MessageLookupByLibrary.simpleMessage("Historique"),
|
||||||
"settingsHistoryDes" : MessageLookupByLibrary.simpleMessage("Gestion des données"),
|
"settingsHistoryDes" : MessageLookupByLibrary.simpleMessage("Gestion des données"),
|
||||||
"settingsInfo" : MessageLookupByLibrary.simpleMessage("Infos"),
|
"settingsInfo" : MessageLookupByLibrary.simpleMessage("Informations"),
|
||||||
"settingsInterface" : MessageLookupByLibrary.simpleMessage("Interface"),
|
"settingsInterface" : MessageLookupByLibrary.simpleMessage("Interface utilisateur"),
|
||||||
"settingsLanguages" : MessageLookupByLibrary.simpleMessage("Langues"),
|
"settingsLanguages" : MessageLookupByLibrary.simpleMessage("Langues"),
|
||||||
"settingsLanguagesDes" : MessageLookupByLibrary.simpleMessage("Sélection de la langue"),
|
"settingsLanguagesDes" : MessageLookupByLibrary.simpleMessage("Sélection de la langue"),
|
||||||
"settingsLayout" : MessageLookupByLibrary.simpleMessage("Style"),
|
"settingsLayout" : MessageLookupByLibrary.simpleMessage("Style"),
|
||||||
|
@ -267,47 +272,49 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||||
"settingsLibraries" : MessageLookupByLibrary.simpleMessage("Librairies"),
|
"settingsLibraries" : MessageLookupByLibrary.simpleMessage("Librairies"),
|
||||||
"settingsLibrariesDes" : MessageLookupByLibrary.simpleMessage("Librairies opensource utilisées"),
|
"settingsLibrariesDes" : MessageLookupByLibrary.simpleMessage("Librairies opensource utilisées"),
|
||||||
"settingsManageDownload" : MessageLookupByLibrary.simpleMessage("Gérer les téléchargements"),
|
"settingsManageDownload" : MessageLookupByLibrary.simpleMessage("Gérer les téléchargements"),
|
||||||
"settingsManageDownloadDes" : MessageLookupByLibrary.simpleMessage("Gérer les fichiers audio téléchargés"),
|
"settingsManageDownloadDes" : MessageLookupByLibrary.simpleMessage("Gestion des fichiers audio téléchargés"),
|
||||||
"settingsMenuAutoPlay" : MessageLookupByLibrary.simpleMessage("Lecture automatique"),
|
"settingsMenuAutoPlay" : MessageLookupByLibrary.simpleMessage("Lecture automatique"),
|
||||||
"settingsNetworkCellular" : MessageLookupByLibrary.simpleMessage("Utilisation du réseau mobile"),
|
"settingsNetworkCellular" : MessageLookupByLibrary.simpleMessage("Utilisation du réseau mobile"),
|
||||||
"settingsNetworkCellularAuto" : MessageLookupByLibrary.simpleMessage("Téléchargement automatique sur réseau mobile"),
|
"settingsNetworkCellularAuto" : MessageLookupByLibrary.simpleMessage("Téléchargement automatique sur réseau mobile"),
|
||||||
"settingsNetworkCellularAutoDes" : MessageLookupByLibrary.simpleMessage("Vous pouvez automatiser le téléchargement des podcasts sur la page de gestion des groupes."),
|
"settingsNetworkCellularAutoDes" : MessageLookupByLibrary.simpleMessage("L\'automatisation du téléchargement peut aussi être configurée sur page de gestion des groupes"),
|
||||||
"settingsNetworkCellularDes" : MessageLookupByLibrary.simpleMessage("Si connecté à un réseau mobile, demander une confirmation avant de télécharger."),
|
"settingsNetworkCellularDes" : MessageLookupByLibrary.simpleMessage("Demander une confirmation avant de lancer un téléchargement"),
|
||||||
"settingsPlayDes" : MessageLookupByLibrary.simpleMessage("Playlist et lecteur"),
|
"settingsPlayDes" : MessageLookupByLibrary.simpleMessage("Playlist et lecteur"),
|
||||||
"settingsPlayerHeight" : MessageLookupByLibrary.simpleMessage("Player height"),
|
"settingsPlayerHeight" : MessageLookupByLibrary.simpleMessage("Taille du player"),
|
||||||
"settingsPlayerHeightDes" : MessageLookupByLibrary.simpleMessage("Change player widget height as you like"),
|
"settingsPlayerHeightDes" : MessageLookupByLibrary.simpleMessage("Changer la hauteur du widget"),
|
||||||
"settingsPopupMenu" : MessageLookupByLibrary.simpleMessage("Menu popup des épisodes"),
|
"settingsPopupMenu" : MessageLookupByLibrary.simpleMessage("Menu popup des épisodes"),
|
||||||
"settingsPopupMenuDes" : MessageLookupByLibrary.simpleMessage("Configuration du menu popup"),
|
"settingsPopupMenuDes" : MessageLookupByLibrary.simpleMessage("Configuration du menu popup"),
|
||||||
"settingsPrefrence" : MessageLookupByLibrary.simpleMessage("Préférences"),
|
"settingsPrefrence" : MessageLookupByLibrary.simpleMessage("Préférences"),
|
||||||
"settingsRealDark" : MessageLookupByLibrary.simpleMessage("Noir profond"),
|
"settingsRealDark" : MessageLookupByLibrary.simpleMessage("Noir profond"),
|
||||||
"settingsRealDarkDes" : MessageLookupByLibrary.simpleMessage("Activer pour un mode sombre accentué"),
|
"settingsRealDarkDes" : MessageLookupByLibrary.simpleMessage("Mode sombre accentué"),
|
||||||
"settingsRewindSec" : MessageLookupByLibrary.simpleMessage("Retour rapide"),
|
"settingsRewindSec" : MessageLookupByLibrary.simpleMessage("Retour rapide"),
|
||||||
"settingsRewindSecDes" : MessageLookupByLibrary.simpleMessage("Saut arrière en secondes"),
|
"settingsRewindSecDes" : MessageLookupByLibrary.simpleMessage("Saut arrière"),
|
||||||
"settingsSTAuto" : MessageLookupByLibrary.simpleMessage("Activation automatique de la minuterie"),
|
"settingsSTAuto" : MessageLookupByLibrary.simpleMessage("Activation automatique de la minuterie"),
|
||||||
"settingsSTAutoDes" : MessageLookupByLibrary.simpleMessage("Démarrer la minuterie à l\'horaire programmé"),
|
"settingsSTAutoDes" : MessageLookupByLibrary.simpleMessage("Démarrer la minuterie à l\'horaire programmé"),
|
||||||
"settingsSTDefaultTime" : MessageLookupByLibrary.simpleMessage("Temps par défaut"),
|
"settingsSTDefaultTime" : MessageLookupByLibrary.simpleMessage("Durée par défaut"),
|
||||||
"settingsSTDefautTimeDes" : MessageLookupByLibrary.simpleMessage("Configuration de la minuterie"),
|
"settingsSTDefautTimeDes" : MessageLookupByLibrary.simpleMessage("Configuration de la minuterie"),
|
||||||
"settingsSTMode" : MessageLookupByLibrary.simpleMessage("Mode minuterie automatique"),
|
"settingsSTMode" : MessageLookupByLibrary.simpleMessage("Mode minuterie automatique"),
|
||||||
"settingsStorageDes" : MessageLookupByLibrary.simpleMessage("Gestion du cache et de l\'espace de stockage"),
|
"settingsStorageDes" : MessageLookupByLibrary.simpleMessage("Gestion du cache et de l\'espace de stockage"),
|
||||||
"settingsSyncing" : MessageLookupByLibrary.simpleMessage("Synchronisation"),
|
"settingsSyncing" : MessageLookupByLibrary.simpleMessage("Synchronisation"),
|
||||||
"settingsSyncingDes" : MessageLookupByLibrary.simpleMessage("Actualisation des podcasts en arrière-plan"),
|
"settingsSyncingDes" : MessageLookupByLibrary.simpleMessage("Actualisation des podcasts en arrière-plan"),
|
||||||
"settingsTapToOpenPopupMenu" : MessageLookupByLibrary.simpleMessage("Appuyer pour ouvrir le menu"),
|
"settingsTapToOpenPopupMenu" : MessageLookupByLibrary.simpleMessage("Ouverture du menu"),
|
||||||
"settingsTapToOpenPopupMenuDes" : MessageLookupByLibrary.simpleMessage("Vous devez effectuer un appui long pour ouvrir la page de l\'épisode"),
|
"settingsTapToOpenPopupMenuDes" : MessageLookupByLibrary.simpleMessage("Effectuer un appui long pour ouvrir la page de l\'épisode"),
|
||||||
"settingsTheme" : MessageLookupByLibrary.simpleMessage("Thème"),
|
"settingsTheme" : MessageLookupByLibrary.simpleMessage("Thème"),
|
||||||
"settingsUpdateInterval" : MessageLookupByLibrary.simpleMessage("Intervalle des mises à jour"),
|
"settingsUpdateInterval" : MessageLookupByLibrary.simpleMessage("Intervalle de mise à jour"),
|
||||||
"settingsUpdateIntervalDes" : MessageLookupByLibrary.simpleMessage("24 heures par défaut"),
|
"settingsUpdateIntervalDes" : MessageLookupByLibrary.simpleMessage("L\'intervalle par défaut est de 24 heures"),
|
||||||
"share" : MessageLookupByLibrary.simpleMessage("Partager"),
|
"share" : MessageLookupByLibrary.simpleMessage("Partager"),
|
||||||
"size" : MessageLookupByLibrary.simpleMessage("Taille"),
|
"size" : MessageLookupByLibrary.simpleMessage("Taille"),
|
||||||
"skipSecondsAtStart" : MessageLookupByLibrary.simpleMessage("Passer les premières secondes du début"),
|
"skipSecondsAtStart" : MessageLookupByLibrary.simpleMessage("Passer les premières secondes du début"),
|
||||||
"skipSilence" : MessageLookupByLibrary.simpleMessage("Skip silence"),
|
"skipSilence" : MessageLookupByLibrary.simpleMessage("Skip silence"),
|
||||||
|
"skipToNext" : MessageLookupByLibrary.simpleMessage("Skip to next"),
|
||||||
"sleepTimer" : MessageLookupByLibrary.simpleMessage("Minuterie"),
|
"sleepTimer" : MessageLookupByLibrary.simpleMessage("Minuterie"),
|
||||||
"subscribe" : MessageLookupByLibrary.simpleMessage("Abonnements"),
|
"stop" : MessageLookupByLibrary.simpleMessage("Stop"),
|
||||||
|
"subscribe" : MessageLookupByLibrary.simpleMessage("S\'abonner"),
|
||||||
"subscribeExportDes" : MessageLookupByLibrary.simpleMessage("Exporter le fichier OPML de tous les podcasts."),
|
"subscribeExportDes" : MessageLookupByLibrary.simpleMessage("Exporter le fichier OPML de tous les podcasts."),
|
||||||
"systemDefault" : MessageLookupByLibrary.simpleMessage("Système par défaut"),
|
"systemDefault" : MessageLookupByLibrary.simpleMessage("Système par défaut"),
|
||||||
"timeLastPlayed" : m24,
|
"timeLastPlayed" : m24,
|
||||||
"timeLeft" : m25,
|
"timeLeft" : m25,
|
||||||
"to" : m26,
|
"to" : m26,
|
||||||
"toastAddPlaylist" : MessageLookupByLibrary.simpleMessage("Ajouté à la playlist."),
|
"toastAddPlaylist" : MessageLookupByLibrary.simpleMessage("Ajouter l\'épisode à la playlist."),
|
||||||
"toastDiscovery" : MessageLookupByLibrary.simpleMessage("Tutoriel réinitialisé, veuillez redémarrer l\'application."),
|
"toastDiscovery" : MessageLookupByLibrary.simpleMessage("Tutoriel réinitialisé, veuillez redémarrer l\'application."),
|
||||||
"toastFileError" : MessageLookupByLibrary.simpleMessage("Erreur du fichier, échec de l\'abonnement."),
|
"toastFileError" : MessageLookupByLibrary.simpleMessage("Erreur du fichier, échec de l\'abonnement."),
|
||||||
"toastFileNotValid" : MessageLookupByLibrary.simpleMessage("Fichier invalide."),
|
"toastFileNotValid" : MessageLookupByLibrary.simpleMessage("Fichier invalide."),
|
||||||
|
|
|
@ -110,6 +110,8 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||||
"editGroupName" : MessageLookupByLibrary.simpleMessage("修改组名"),
|
"editGroupName" : MessageLookupByLibrary.simpleMessage("修改组名"),
|
||||||
"endOfEpisode" : MessageLookupByLibrary.simpleMessage("节目结束"),
|
"endOfEpisode" : MessageLookupByLibrary.simpleMessage("节目结束"),
|
||||||
"episode" : m4,
|
"episode" : m4,
|
||||||
|
"fastForward" : MessageLookupByLibrary.simpleMessage("快进"),
|
||||||
|
"fastRewind" : MessageLookupByLibrary.simpleMessage("快退"),
|
||||||
"featureDiscoveryEditGroup" : MessageLookupByLibrary.simpleMessage("点击修改分组"),
|
"featureDiscoveryEditGroup" : MessageLookupByLibrary.simpleMessage("点击修改分组"),
|
||||||
"featureDiscoveryEditGroupDes" : MessageLookupByLibrary.simpleMessage("您可以修改分组名或者删除分组,注意 Home 分组无法修改,也不能被删除。"),
|
"featureDiscoveryEditGroupDes" : MessageLookupByLibrary.simpleMessage("您可以修改分组名或者删除分组,注意 Home 分组无法修改,也不能被删除。"),
|
||||||
"featureDiscoveryEpisode" : MessageLookupByLibrary.simpleMessage("节目界面"),
|
"featureDiscoveryEpisode" : MessageLookupByLibrary.simpleMessage("节目界面"),
|
||||||
|
@ -140,6 +142,7 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||||
"groupFilter" : MessageLookupByLibrary.simpleMessage("分组"),
|
"groupFilter" : MessageLookupByLibrary.simpleMessage("分组"),
|
||||||
"groupRemoveConfirm" : MessageLookupByLibrary.simpleMessage("您确认要移除该分组吗?播客将被移动到 Home 分组。"),
|
"groupRemoveConfirm" : MessageLookupByLibrary.simpleMessage("您确认要移除该分组吗?播客将被移动到 Home 分组。"),
|
||||||
"groups" : m6,
|
"groups" : m6,
|
||||||
|
"hideListenedSetting" : MessageLookupByLibrary.simpleMessage("隐藏已收听"),
|
||||||
"homeGroupsSeeAll" : MessageLookupByLibrary.simpleMessage("查看全部"),
|
"homeGroupsSeeAll" : MessageLookupByLibrary.simpleMessage("查看全部"),
|
||||||
"homeMenuPlaylist" : MessageLookupByLibrary.simpleMessage("播放列表"),
|
"homeMenuPlaylist" : MessageLookupByLibrary.simpleMessage("播放列表"),
|
||||||
"homeSubMenuSortBy" : MessageLookupByLibrary.simpleMessage("排序"),
|
"homeSubMenuSortBy" : MessageLookupByLibrary.simpleMessage("排序"),
|
||||||
|
@ -186,12 +189,14 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||||
"noShownote" : MessageLookupByLibrary.simpleMessage("节目简介暂未收到。"),
|
"noShownote" : MessageLookupByLibrary.simpleMessage("节目简介暂未收到。"),
|
||||||
"notificaitonFatch" : m12,
|
"notificaitonFatch" : m12,
|
||||||
"notificationNetworkError" : m13,
|
"notificationNetworkError" : m13,
|
||||||
|
"notificationSetting" : MessageLookupByLibrary.simpleMessage("通知栏"),
|
||||||
"notificationSubscribe" : m14,
|
"notificationSubscribe" : m14,
|
||||||
"notificationSubscribeExisted" : m15,
|
"notificationSubscribeExisted" : m15,
|
||||||
"notificationSuccess" : m16,
|
"notificationSuccess" : m16,
|
||||||
"notificationUpdate" : m17,
|
"notificationUpdate" : m17,
|
||||||
"notificationUpdateError" : m18,
|
"notificationUpdateError" : m18,
|
||||||
"oldestFirst" : MessageLookupByLibrary.simpleMessage("由旧到新"),
|
"oldestFirst" : MessageLookupByLibrary.simpleMessage("由旧到新"),
|
||||||
|
"pause" : MessageLookupByLibrary.simpleMessage("暂停"),
|
||||||
"play" : MessageLookupByLibrary.simpleMessage("播放"),
|
"play" : MessageLookupByLibrary.simpleMessage("播放"),
|
||||||
"playback" : MessageLookupByLibrary.simpleMessage("播放控制"),
|
"playback" : MessageLookupByLibrary.simpleMessage("播放控制"),
|
||||||
"player" : MessageLookupByLibrary.simpleMessage("播放器"),
|
"player" : MessageLookupByLibrary.simpleMessage("播放器"),
|
||||||
|
@ -300,7 +305,9 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||||
"size" : MessageLookupByLibrary.simpleMessage("大小"),
|
"size" : MessageLookupByLibrary.simpleMessage("大小"),
|
||||||
"skipSecondsAtStart" : MessageLookupByLibrary.simpleMessage("开头跳过秒数"),
|
"skipSecondsAtStart" : MessageLookupByLibrary.simpleMessage("开头跳过秒数"),
|
||||||
"skipSilence" : MessageLookupByLibrary.simpleMessage("跳过无声"),
|
"skipSilence" : MessageLookupByLibrary.simpleMessage("跳过无声"),
|
||||||
|
"skipToNext" : MessageLookupByLibrary.simpleMessage("下一首"),
|
||||||
"sleepTimer" : MessageLookupByLibrary.simpleMessage("睡眠模式"),
|
"sleepTimer" : MessageLookupByLibrary.simpleMessage("睡眠模式"),
|
||||||
|
"stop" : MessageLookupByLibrary.simpleMessage("停止"),
|
||||||
"subscribe" : MessageLookupByLibrary.simpleMessage("订阅"),
|
"subscribe" : MessageLookupByLibrary.simpleMessage("订阅"),
|
||||||
"subscribeExportDes" : MessageLookupByLibrary.simpleMessage("导出 OMPL 文件"),
|
"subscribeExportDes" : MessageLookupByLibrary.simpleMessage("导出 OMPL 文件"),
|
||||||
"systemDefault" : MessageLookupByLibrary.simpleMessage("系统默认"),
|
"systemDefault" : MessageLookupByLibrary.simpleMessage("系统默认"),
|
||||||
|
|
|
@ -358,6 +358,26 @@ class S {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// `Fast forward`
|
||||||
|
String get fastForward {
|
||||||
|
return Intl.message(
|
||||||
|
'Fast forward',
|
||||||
|
name: 'fastForward',
|
||||||
|
desc: '',
|
||||||
|
args: [],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// `Fast rewind`
|
||||||
|
String get fastRewind {
|
||||||
|
return Intl.message(
|
||||||
|
'Fast rewind',
|
||||||
|
name: 'fastRewind',
|
||||||
|
desc: '',
|
||||||
|
args: [],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
/// `Tap to edit group`
|
/// `Tap to edit group`
|
||||||
String get featureDiscoveryEditGroup {
|
String get featureDiscoveryEditGroup {
|
||||||
return Intl.message(
|
return Intl.message(
|
||||||
|
@ -661,6 +681,16 @@ class S {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// `Hide listened`
|
||||||
|
String get hideListenedSetting {
|
||||||
|
return Intl.message(
|
||||||
|
'Hide listened',
|
||||||
|
name: 'hideListenedSetting',
|
||||||
|
desc: '',
|
||||||
|
args: [],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
/// `See All`
|
/// `See All`
|
||||||
String get homeGroupsSeeAll {
|
String get homeGroupsSeeAll {
|
||||||
return Intl.message(
|
return Intl.message(
|
||||||
|
@ -1133,6 +1163,16 @@ class S {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// `Notification panel`
|
||||||
|
String get notificationSetting {
|
||||||
|
return Intl.message(
|
||||||
|
'Notification panel',
|
||||||
|
name: 'notificationSetting',
|
||||||
|
desc: '',
|
||||||
|
args: [],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
/// `Subscribe {title}`
|
/// `Subscribe {title}`
|
||||||
String notificationSubscribe(Object title) {
|
String notificationSubscribe(Object title) {
|
||||||
return Intl.message(
|
return Intl.message(
|
||||||
|
@ -1193,6 +1233,16 @@ class S {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// `Pause`
|
||||||
|
String get pause {
|
||||||
|
return Intl.message(
|
||||||
|
'Pause',
|
||||||
|
name: 'pause',
|
||||||
|
desc: '',
|
||||||
|
args: [],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
/// `Play`
|
/// `Play`
|
||||||
String get play {
|
String get play {
|
||||||
return Intl.message(
|
return Intl.message(
|
||||||
|
@ -2282,6 +2332,16 @@ class S {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// `Skip to next`
|
||||||
|
String get skipToNext {
|
||||||
|
return Intl.message(
|
||||||
|
'Skip to next',
|
||||||
|
name: 'skipToNext',
|
||||||
|
desc: '',
|
||||||
|
args: [],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
/// `Sleep timer`
|
/// `Sleep timer`
|
||||||
String get sleepTimer {
|
String get sleepTimer {
|
||||||
return Intl.message(
|
return Intl.message(
|
||||||
|
@ -2292,6 +2352,16 @@ class S {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// `Stop`
|
||||||
|
String get stop {
|
||||||
|
return Intl.message(
|
||||||
|
'Stop',
|
||||||
|
name: 'stop',
|
||||||
|
desc: '',
|
||||||
|
args: [],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
/// `Subscribe`
|
/// `Subscribe`
|
||||||
String get subscribe {
|
String get subscribe {
|
||||||
return Intl.message(
|
return Intl.message(
|
||||||
|
|
|
@ -74,6 +74,10 @@
|
||||||
"@endOfEpisode": {},
|
"@endOfEpisode": {},
|
||||||
"episode": "{count, plural, zero{} one{Episode} other{Episodes}}",
|
"episode": "{count, plural, zero{} one{Episode} other{Episodes}}",
|
||||||
"@episode": {},
|
"@episode": {},
|
||||||
|
"fastForward": "Fast forward",
|
||||||
|
"@fastForward": {},
|
||||||
|
"fastRewind": "Fast rewind",
|
||||||
|
"@fastRewind": {},
|
||||||
"featureDiscoveryEditGroup": "Tap to edit group",
|
"featureDiscoveryEditGroup": "Tap to edit group",
|
||||||
"@featureDiscoveryEditGroup": {},
|
"@featureDiscoveryEditGroup": {},
|
||||||
"featureDiscoveryEditGroupDes": "You can change group name or delete it here, but the home group can not be edited or deleted",
|
"featureDiscoveryEditGroupDes": "You can change group name or delete it here, but the home group can not be edited or deleted",
|
||||||
|
@ -142,6 +146,8 @@
|
||||||
"@groupRemoveConfirm": {},
|
"@groupRemoveConfirm": {},
|
||||||
"groups": "{count, plural, zero{Group} one{Group} other{Groups}}",
|
"groups": "{count, plural, zero{Group} one{Group} other{Groups}}",
|
||||||
"@groups": {},
|
"@groups": {},
|
||||||
|
"hideListenedSetting": "Hide listened",
|
||||||
|
"@hideListenedSetting": {},
|
||||||
"homeGroupsSeeAll": "See All",
|
"homeGroupsSeeAll": "See All",
|
||||||
"@homeGroupsSeeAll": {},
|
"@homeGroupsSeeAll": {},
|
||||||
"homeMenuPlaylist": "Playlist",
|
"homeMenuPlaylist": "Playlist",
|
||||||
|
@ -248,6 +254,8 @@
|
||||||
"title": {}
|
"title": {}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"notificationSetting": "Notification panel",
|
||||||
|
"@notificationSetting": {},
|
||||||
"notificationSubscribe": "Subscribe {title}",
|
"notificationSubscribe": "Subscribe {title}",
|
||||||
"@notificationSubscribe": {
|
"@notificationSubscribe": {
|
||||||
"placeholders": {
|
"placeholders": {
|
||||||
|
@ -280,6 +288,8 @@
|
||||||
},
|
},
|
||||||
"oldestFirst": "Oldest first",
|
"oldestFirst": "Oldest first",
|
||||||
"@oldestFirst": {},
|
"@oldestFirst": {},
|
||||||
|
"pause": "Pause",
|
||||||
|
"@pause": {},
|
||||||
"play": "Play",
|
"play": "Play",
|
||||||
"@play": {},
|
"@play": {},
|
||||||
"playback": "Playback control",
|
"playback": "Playback control",
|
||||||
|
@ -517,8 +527,12 @@
|
||||||
"@skipSilence": {
|
"@skipSilence": {
|
||||||
"description": "Feature skip silence"
|
"description": "Feature skip silence"
|
||||||
},
|
},
|
||||||
|
"skipToNext": "Skip to next",
|
||||||
|
"@skipToNext": {},
|
||||||
"sleepTimer": "Sleep timer",
|
"sleepTimer": "Sleep timer",
|
||||||
"@sleepTimer": {},
|
"@sleepTimer": {},
|
||||||
|
"stop": "Stop",
|
||||||
|
"@stop": {},
|
||||||
"subscribe": "Subscribe",
|
"subscribe": "Subscribe",
|
||||||
"@subscribe": {},
|
"@subscribe": {},
|
||||||
"subscribeExportDes": "Export OMPL file of all podcasts",
|
"subscribeExportDes": "Export OMPL file of all podcasts",
|
||||||
|
|
|
@ -74,6 +74,10 @@
|
||||||
"@endOfEpisode": {},
|
"@endOfEpisode": {},
|
||||||
"episode": "{count, plural, zero{} one{Episodio} other{Episodios}}",
|
"episode": "{count, plural, zero{} one{Episodio} other{Episodios}}",
|
||||||
"@episode": {},
|
"@episode": {},
|
||||||
|
"fastForward": "Fast forward",
|
||||||
|
"@fastForward": {},
|
||||||
|
"fastRewind": "Fast rewind",
|
||||||
|
"@fastRewind": {},
|
||||||
"featureDiscoveryEditGroup": "Toca para editar grupo",
|
"featureDiscoveryEditGroup": "Toca para editar grupo",
|
||||||
"@featureDiscoveryEditGroup": {},
|
"@featureDiscoveryEditGroup": {},
|
||||||
"featureDiscoveryEditGroupDes": "Puedes cambiar el nombre del grupo o eliminar el grupo aquí, el grupo Home no puede ser editado ni borrado",
|
"featureDiscoveryEditGroupDes": "Puedes cambiar el nombre del grupo o eliminar el grupo aquí, el grupo Home no puede ser editado ni borrado",
|
||||||
|
@ -142,6 +146,8 @@
|
||||||
"@groupRemoveConfirm": {},
|
"@groupRemoveConfirm": {},
|
||||||
"groups": "{count, plural, zero{Grupo} one{Grupo} other{Grupos}}",
|
"groups": "{count, plural, zero{Grupo} one{Grupo} other{Grupos}}",
|
||||||
"@groups": {},
|
"@groups": {},
|
||||||
|
"hideListenedSetting": "Hide listened",
|
||||||
|
"@hideListenedSetting": {},
|
||||||
"homeGroupsSeeAll": "Ver todo",
|
"homeGroupsSeeAll": "Ver todo",
|
||||||
"@homeGroupsSeeAll": {},
|
"@homeGroupsSeeAll": {},
|
||||||
"homeMenuPlaylist": "Lista de reproducción",
|
"homeMenuPlaylist": "Lista de reproducción",
|
||||||
|
@ -248,6 +254,8 @@
|
||||||
"title": {}
|
"title": {}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"notificationSetting": "Notification panel",
|
||||||
|
"@notificationSetting": {},
|
||||||
"notificationSubscribe": "Suscribir {title}",
|
"notificationSubscribe": "Suscribir {title}",
|
||||||
"@notificationSubscribe": {
|
"@notificationSubscribe": {
|
||||||
"placeholders": {
|
"placeholders": {
|
||||||
|
@ -280,6 +288,8 @@
|
||||||
},
|
},
|
||||||
"oldestFirst": "Mas antiguos primero",
|
"oldestFirst": "Mas antiguos primero",
|
||||||
"@oldestFirst": {},
|
"@oldestFirst": {},
|
||||||
|
"pause": "Pause",
|
||||||
|
"@pause": {},
|
||||||
"play": "Reproducir",
|
"play": "Reproducir",
|
||||||
"@play": {},
|
"@play": {},
|
||||||
"playback": "Control de reproducción",
|
"playback": "Control de reproducción",
|
||||||
|
@ -517,8 +527,12 @@
|
||||||
"@skipSilence": {
|
"@skipSilence": {
|
||||||
"description": "Feature skip silence"
|
"description": "Feature skip silence"
|
||||||
},
|
},
|
||||||
|
"skipToNext": "Skip to next",
|
||||||
|
"@skipToNext": {},
|
||||||
"sleepTimer": "Temporizador de sueño",
|
"sleepTimer": "Temporizador de sueño",
|
||||||
"@sleepTimer": {},
|
"@sleepTimer": {},
|
||||||
|
"stop": "Stop",
|
||||||
|
"@stop": {},
|
||||||
"subscribe": "Suscribir",
|
"subscribe": "Suscribir",
|
||||||
"@subscribe": {},
|
"@subscribe": {},
|
||||||
"subscribeExportDes": "Exportar OPML de todos los podcasts",
|
"subscribeExportDes": "Exportar OPML de todos los podcasts",
|
||||||
|
|
|
@ -20,11 +20,11 @@
|
||||||
},
|
},
|
||||||
"all": "Tout",
|
"all": "Tout",
|
||||||
"@all": {},
|
"@all": {},
|
||||||
"autoDownload": "Téléchargements auto",
|
"autoDownload": "Automatisation",
|
||||||
"@autoDownload": {},
|
"@autoDownload": {},
|
||||||
"back": "Retour",
|
"back": "Retour",
|
||||||
"@back": {},
|
"@back": {},
|
||||||
"boostVolume": "Boost volume",
|
"boostVolume": "Booster le volume",
|
||||||
"@boostVolume": {
|
"@boostVolume": {
|
||||||
"description": "Boost volume in player widget."
|
"description": "Boost volume in player widget."
|
||||||
},
|
},
|
||||||
|
@ -60,7 +60,7 @@
|
||||||
"@developer": {
|
"@developer": {
|
||||||
"description": "Can also translate to About me"
|
"description": "Can also translate to About me"
|
||||||
},
|
},
|
||||||
"dismiss": "Rejeter",
|
"dismiss": "Passer",
|
||||||
"@dismiss": {},
|
"@dismiss": {},
|
||||||
"done": "Fait",
|
"done": "Fait",
|
||||||
"@done": {},
|
"@done": {},
|
||||||
|
@ -74,41 +74,45 @@
|
||||||
"@endOfEpisode": {},
|
"@endOfEpisode": {},
|
||||||
"episode": "{count, plural, zero{} one{Épisode} other{Épisodes }}",
|
"episode": "{count, plural, zero{} one{Épisode} other{Épisodes }}",
|
||||||
"@episode": {},
|
"@episode": {},
|
||||||
"featureDiscoveryEditGroup": "Appuyez pour éditer le groupe",
|
"fastForward": "Fast forward",
|
||||||
|
"@fastForward": {},
|
||||||
|
"fastRewind": "Fast rewind",
|
||||||
|
"@fastRewind": {},
|
||||||
|
"featureDiscoveryEditGroup": "Gestion des groupes",
|
||||||
"@featureDiscoveryEditGroup": {},
|
"@featureDiscoveryEditGroup": {},
|
||||||
"featureDiscoveryEditGroupDes": "Vous pouvez supprimer ou modifier le nom du groupe, le groupe Home ne peut être modifié ni supprimé.",
|
"featureDiscoveryEditGroupDes": "Ici vous pouvez supprimer ou modifier le nom des groupes, seul le groupe Home ne peut être édité.",
|
||||||
"@featureDiscoveryEditGroupDes": {},
|
"@featureDiscoveryEditGroupDes": {},
|
||||||
"featureDiscoveryEpisode": "Vue épisode",
|
"featureDiscoveryEpisode": "Vue épisode",
|
||||||
"@featureDiscoveryEpisode": {},
|
"@featureDiscoveryEpisode": {},
|
||||||
"featureDiscoveryEpisodeDes": "Vous pouvez effectuer un appui long pour jouer un épisode ou l'ajouter à la playlist.",
|
"featureDiscoveryEpisodeDes": "Vous pouvez effectuer un appui long pour jouer un épisode ou l'ajouter à la playlist.",
|
||||||
"@featureDiscoveryEpisodeDes": {},
|
"@featureDiscoveryEpisodeDes": {},
|
||||||
"featureDiscoveryEpisodeTitle": "Effectuez un appui long pour jouer un épisode immédiatement",
|
"featureDiscoveryEpisodeTitle": "Effectuez un appui long pour lancer un épisode",
|
||||||
"@featureDiscoveryEpisodeTitle": {},
|
"@featureDiscoveryEpisodeTitle": {},
|
||||||
"featureDiscoveryGroup": "Appuyez pour ajouter un groupe.",
|
"featureDiscoveryGroup": "Appuyez ici pour créer un groupe",
|
||||||
"@featureDiscoveryGroup": {},
|
"@featureDiscoveryGroup": {},
|
||||||
"featureDiscoveryGroupDes": "Pour les nouveaux podcasts le groupe par défaut est Home. Vous pouvez créer de nouveaux groupes et y déplacer vos podcasts. Un podcast peut être associé à plusieurs groupes.",
|
"featureDiscoveryGroupDes": "Pour les nouveaux podcasts le groupe par défaut est Home. Vous pouvez créer de nouveaux groupes et y déplacer vos podcasts. Un podcast peut être associé à plusieurs groupes.",
|
||||||
"@featureDiscoveryGroupDes": {},
|
"@featureDiscoveryGroupDes": {},
|
||||||
"featureDiscoveryGroupPodcast": "Un appui long pour classer les podcasts",
|
"featureDiscoveryGroupPodcast": "Classement des podcasts",
|
||||||
"@featureDiscoveryGroupPodcast": {},
|
"@featureDiscoveryGroupPodcast": {},
|
||||||
"featureDiscoveryGroupPodcastDes": "Appuyez pour accéder à plus d'options, un appui long permet de classer les podcasts du groupe.",
|
"featureDiscoveryGroupPodcastDes": "Appuyez ici pour accéder à plus d'options, un appui long permet de classer les podcasts d'un groupe.",
|
||||||
"@featureDiscoveryGroupPodcastDes": {},
|
"@featureDiscoveryGroupPodcastDes": {},
|
||||||
"featureDiscoveryOMPL": "Appuyez pour importer un fichier OPML",
|
"featureDiscoveryOMPL": "Appuyez ici pour importer un fichier OPML",
|
||||||
"@featureDiscoveryOMPL": {},
|
"@featureDiscoveryOMPL": {},
|
||||||
"featureDiscoveryOMPLDes": "Vous pouvez importer un fichier OPML, accéder aux paramètres ou actualiser tous les podcasts.",
|
"featureDiscoveryOMPLDes": "Vous pouvez importer un fichier OPML, accéder aux paramètres ou actualiser tous les podcasts.",
|
||||||
"@featureDiscoveryOMPLDes": {},
|
"@featureDiscoveryOMPLDes": {},
|
||||||
"featureDiscoveryPlaylist": "Appuyez pour ouvrir la playlist",
|
"featureDiscoveryPlaylist": "Appuyez ici pour ouvrir la playlist",
|
||||||
"@featureDiscoveryPlaylist": {},
|
"@featureDiscoveryPlaylist": {},
|
||||||
"featureDiscoveryPlaylistDes": "Vous pouvez ajouter des épisodes dans la playlist. Ils seront automatiquement retirés l'écoute finie.",
|
"featureDiscoveryPlaylistDes": "Ajoutez des épisodes dans la playlist. Ils seront automatiquement retirés une fois écoutés.",
|
||||||
"@featureDiscoveryPlaylistDes": {},
|
"@featureDiscoveryPlaylistDes": {},
|
||||||
"featureDiscoveryPodcast": "Vue podcasts",
|
"featureDiscoveryPodcast": "Vue podcasts",
|
||||||
"@featureDiscoveryPodcast": {},
|
"@featureDiscoveryPodcast": {},
|
||||||
"featureDiscoveryPodcastDes": "Vous pouvez appuyer sur Tout Voir pour ajouter des groupes ou gérer les podcasts.",
|
"featureDiscoveryPodcastDes": "Appuyez sur Tout Voir pour ajouter des groupes et gérer les podcasts.",
|
||||||
"@featureDiscoveryPodcastDes": {},
|
"@featureDiscoveryPodcastDes": {},
|
||||||
"featureDiscoveryPodcastTitle": "Effectuez un défilement vertical pour changer de groupe.",
|
"featureDiscoveryPodcastTitle": "Effectuez un défilement vertical pour changer de groupe.",
|
||||||
"@featureDiscoveryPodcastTitle": {},
|
"@featureDiscoveryPodcastTitle": {},
|
||||||
"featureDiscoverySearch": "Appuyez pour chercher un podcast",
|
"featureDiscoverySearch": "Appuyez ici pour rechercher un podcast",
|
||||||
"@featureDiscoverySearch": {},
|
"@featureDiscoverySearch": {},
|
||||||
"featureDiscoverySearchDes": "Vous pouvez effectuer une recherche par titre, mots clés ou lien RSS pour vous abonner à un nouveau podcast.",
|
"featureDiscoverySearchDes": "Pour trouver vos podcasts vous pouvez effectuer une recherche par titres, mots clés ou liens RSS.",
|
||||||
"@featureDiscoverySearchDes": {},
|
"@featureDiscoverySearchDes": {},
|
||||||
"feedbackEmail": "Contact",
|
"feedbackEmail": "Contact",
|
||||||
"@feedbackEmail": {},
|
"@feedbackEmail": {},
|
||||||
|
@ -142,6 +146,8 @@
|
||||||
"@groupRemoveConfirm": {},
|
"@groupRemoveConfirm": {},
|
||||||
"groups": "{count, plural, zero{Groupe} one{Groupe} other{Groupes}}",
|
"groups": "{count, plural, zero{Groupe} one{Groupe} other{Groupes}}",
|
||||||
"@groups": {},
|
"@groups": {},
|
||||||
|
"hideListenedSetting": "Hide listened",
|
||||||
|
"@hideListenedSetting": {},
|
||||||
"homeGroupsSeeAll": "Tout Voir",
|
"homeGroupsSeeAll": "Tout Voir",
|
||||||
"@homeGroupsSeeAll": {},
|
"@homeGroupsSeeAll": {},
|
||||||
"homeMenuPlaylist": "Playlist",
|
"homeMenuPlaylist": "Playlist",
|
||||||
|
@ -154,7 +160,7 @@
|
||||||
"@homeTabMenuRecent": {},
|
"@homeTabMenuRecent": {},
|
||||||
"homeToprightMenuAbout": "À propos",
|
"homeToprightMenuAbout": "À propos",
|
||||||
"@homeToprightMenuAbout": {},
|
"@homeToprightMenuAbout": {},
|
||||||
"homeToprightMenuImportOMPL": "Importer le fichier OPML",
|
"homeToprightMenuImportOMPL": "Importer un fichier OPML",
|
||||||
"@homeToprightMenuImportOMPL": {},
|
"@homeToprightMenuImportOMPL": {},
|
||||||
"homeToprightMenuRefreshAll": "Tout actualiser",
|
"homeToprightMenuRefreshAll": "Tout actualiser",
|
||||||
"@homeToprightMenuRefreshAll": {},
|
"@homeToprightMenuRefreshAll": {},
|
||||||
|
@ -170,11 +176,11 @@
|
||||||
"@hoursCount": {},
|
"@hoursCount": {},
|
||||||
"import": "Importer",
|
"import": "Importer",
|
||||||
"@import": {},
|
"@import": {},
|
||||||
"introFourthPage": "Vous pouvez effectuer un appui long sur un épisode pour accéder aux actions rapides.",
|
"introFourthPage": "Un appui long sur un épisode lance les actions rapides.",
|
||||||
"@introFourthPage": {},
|
"@introFourthPage": {},
|
||||||
"introSecondPage": "Souscrivez aux podcasts via la section recherche ou importez un fichier OPML.",
|
"introSecondPage": "S'abonner aux podcasts via la section recherche ou un fichier OPML.",
|
||||||
"@introSecondPage": {},
|
"@introSecondPage": {},
|
||||||
"introThirdPage": "Vous pouvez créer un nouveau groupe de podcasts.",
|
"introThirdPage": "Vous pouvez créer des groupes de podcasts.",
|
||||||
"@introThirdPage": {},
|
"@introThirdPage": {},
|
||||||
"later": "Plus tard",
|
"later": "Plus tard",
|
||||||
"@later": {},
|
"@later": {},
|
||||||
|
@ -202,7 +208,7 @@
|
||||||
"@markConfirm": {},
|
"@markConfirm": {},
|
||||||
"markConfirmContent": "Marquer tous les épisodes comme lus ?",
|
"markConfirmContent": "Marquer tous les épisodes comme lus ?",
|
||||||
"@markConfirmContent": {},
|
"@markConfirmContent": {},
|
||||||
"markListened": "Marquer comme lu",
|
"markListened": "Marquage",
|
||||||
"@markListened": {},
|
"@markListened": {},
|
||||||
"markNotListened": "Mark not listened",
|
"markNotListened": "Mark not listened",
|
||||||
"@markNotListened": {},
|
"@markNotListened": {},
|
||||||
|
@ -232,7 +238,7 @@
|
||||||
"@noEpisodeDownload": {},
|
"@noEpisodeDownload": {},
|
||||||
"noEpisodeFavorite": "Aucun épisode ajouté.",
|
"noEpisodeFavorite": "Aucun épisode ajouté.",
|
||||||
"@noEpisodeFavorite": {},
|
"@noEpisodeFavorite": {},
|
||||||
"noEpisodeRecent": "Aucun épisode récupéré.",
|
"noEpisodeRecent": "Aucun épisode récent.",
|
||||||
"@noEpisodeRecent": {},
|
"@noEpisodeRecent": {},
|
||||||
"noPodcastGroup": "Ce groupe ne contient aucun podcast",
|
"noPodcastGroup": "Ce groupe ne contient aucun podcast",
|
||||||
"@noPodcastGroup": {},
|
"@noPodcastGroup": {},
|
||||||
|
@ -248,7 +254,9 @@
|
||||||
"title": {}
|
"title": {}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"notificationSubscribe": "S'abonner",
|
"notificationSetting": "Notification panel",
|
||||||
|
"@notificationSetting": {},
|
||||||
|
"notificationSubscribe": "Abonnement en cours",
|
||||||
"@notificationSubscribe": {
|
"@notificationSubscribe": {
|
||||||
"placeholders": {
|
"placeholders": {
|
||||||
"title": {}
|
"title": {}
|
||||||
|
@ -280,17 +288,19 @@
|
||||||
},
|
},
|
||||||
"oldestFirst": "Le plus ancien en premier",
|
"oldestFirst": "Le plus ancien en premier",
|
||||||
"@oldestFirst": {},
|
"@oldestFirst": {},
|
||||||
|
"pause": "Pause",
|
||||||
|
"@pause": {},
|
||||||
"play": "Lecture",
|
"play": "Lecture",
|
||||||
"@play": {},
|
"@play": {},
|
||||||
"playback": "Commandes du lecteur",
|
"playback": "Commandes du lecteur",
|
||||||
"@playback": {},
|
"@playback": {},
|
||||||
"player": "Player",
|
"player": "Player",
|
||||||
"@player": {},
|
"@player": {},
|
||||||
"playerHeightMed": "Medium",
|
"playerHeightMed": "Moyen",
|
||||||
"@playerHeightMed": {},
|
"@playerHeightMed": {},
|
||||||
"playerHeightShort": "Low",
|
"playerHeightShort": "Petit",
|
||||||
"@playerHeightShort": {},
|
"@playerHeightShort": {},
|
||||||
"playerHeightTall": "High",
|
"playerHeightTall": "Grand",
|
||||||
"@playerHeightTall": {},
|
"@playerHeightTall": {},
|
||||||
"playing": "En cours",
|
"playing": "En cours",
|
||||||
"@playing": {},
|
"@playing": {},
|
||||||
|
@ -298,17 +308,17 @@
|
||||||
"@plugins": {},
|
"@plugins": {},
|
||||||
"podcast": "{count, plural, zero{} one{Podcast} other{Podcasts}}",
|
"podcast": "{count, plural, zero{} one{Podcast} other{Podcasts}}",
|
||||||
"@podcast": {},
|
"@podcast": {},
|
||||||
"podcastSubscribed": "Abonnements",
|
"podcastSubscribed": "Abonné au podcast",
|
||||||
"@podcastSubscribed": {},
|
"@podcastSubscribed": {},
|
||||||
"popupMenuDownloadDes": "Télécharger l'épisode",
|
"popupMenuDownloadDes": "Télécharger l'épisode",
|
||||||
"@popupMenuDownloadDes": {},
|
"@popupMenuDownloadDes": {},
|
||||||
"popupMenuLaterDes": "Ajouter l'épisode à la playlist",
|
"popupMenuLaterDes": "Ajouter à la playlist",
|
||||||
"@popupMenuLaterDes": {},
|
"@popupMenuLaterDes": {},
|
||||||
"popupMenuLikeDes": "Ajouter l'épisode aux favoris",
|
"popupMenuLikeDes": "Ajouter l'épisode aux favoris",
|
||||||
"@popupMenuLikeDes": {},
|
"@popupMenuLikeDes": {},
|
||||||
"popupMenuMarkDes": "Marquer l'épisode comme lu",
|
"popupMenuMarkDes": "Marquer l'épisode comme lu",
|
||||||
"@popupMenuMarkDes": {},
|
"@popupMenuMarkDes": {},
|
||||||
"popupMenuPlayDes": "Jouer l'épisode",
|
"popupMenuPlayDes": "Lancer l'épisode",
|
||||||
"@popupMenuPlayDes": {},
|
"@popupMenuPlayDes": {},
|
||||||
"privacyPolicy": "Gestion des données",
|
"privacyPolicy": "Gestion des données",
|
||||||
"@privacyPolicy": {},
|
"@privacyPolicy": {},
|
||||||
|
@ -377,7 +387,7 @@
|
||||||
"@settingsAppearance": {},
|
"@settingsAppearance": {},
|
||||||
"settingsAppearanceDes": "Couleurs et thèmes",
|
"settingsAppearanceDes": "Couleurs et thèmes",
|
||||||
"@settingsAppearanceDes": {},
|
"@settingsAppearanceDes": {},
|
||||||
"settingsAppIntro": "App intro",
|
"settingsAppIntro": "Revoir l'introduction",
|
||||||
"@settingsAppIntro": {},
|
"@settingsAppIntro": {},
|
||||||
"settingsAudioCache": "Cache audio",
|
"settingsAudioCache": "Cache audio",
|
||||||
"@settingsAudioCache": {},
|
"@settingsAudioCache": {},
|
||||||
|
@ -393,9 +403,9 @@
|
||||||
"@settingsBackup": {},
|
"@settingsBackup": {},
|
||||||
"settingsBackupDes": "Sauvegarde des données de l'application",
|
"settingsBackupDes": "Sauvegarde des données de l'application",
|
||||||
"@settingsBackupDes": {},
|
"@settingsBackupDes": {},
|
||||||
"settingsBoostVolume": "Volume boost level",
|
"settingsBoostVolume": "Booster le volume",
|
||||||
"@settingsBoostVolume": {},
|
"@settingsBoostVolume": {},
|
||||||
"settingsBoostVolumeDes": "Change volume boost level",
|
"settingsBoostVolumeDes": "Définir la puissance du volume",
|
||||||
"@settingsBoostVolumeDes": {},
|
"@settingsBoostVolumeDes": {},
|
||||||
"settingsDefaultGrid": "Vue par défaut",
|
"settingsDefaultGrid": "Vue par défaut",
|
||||||
"@settingsDefaultGrid": {},
|
"@settingsDefaultGrid": {},
|
||||||
|
@ -403,7 +413,7 @@
|
||||||
"@settingsDefaultGridDownload": {},
|
"@settingsDefaultGridDownload": {},
|
||||||
"settingsDefaultGridFavorite": "Onglet Favoris",
|
"settingsDefaultGridFavorite": "Onglet Favoris",
|
||||||
"@settingsDefaultGridFavorite": {},
|
"@settingsDefaultGridFavorite": {},
|
||||||
"settingsDefaultGridPodcast": "Page du podcast",
|
"settingsDefaultGridPodcast": "Onglet podcasts",
|
||||||
"@settingsDefaultGridPodcast": {},
|
"@settingsDefaultGridPodcast": {},
|
||||||
"settingsDefaultGridRecent": "Onglet Récents",
|
"settingsDefaultGridRecent": "Onglet Récents",
|
||||||
"@settingsDefaultGridRecent": {},
|
"@settingsDefaultGridRecent": {},
|
||||||
|
@ -419,7 +429,7 @@
|
||||||
"@settingsExportDes": {},
|
"@settingsExportDes": {},
|
||||||
"settingsFastForwardSec": "Avance rapide",
|
"settingsFastForwardSec": "Avance rapide",
|
||||||
"@settingsFastForwardSec": {},
|
"@settingsFastForwardSec": {},
|
||||||
"settingsFastForwardSecDes": "Saut avant en secondes",
|
"settingsFastForwardSecDes": "Saut avant",
|
||||||
"@settingsFastForwardSecDes": {},
|
"@settingsFastForwardSecDes": {},
|
||||||
"settingsFeedback": "Feedback",
|
"settingsFeedback": "Feedback",
|
||||||
"@settingsFeedback": {},
|
"@settingsFeedback": {},
|
||||||
|
@ -429,9 +439,9 @@
|
||||||
"@settingsHistory": {},
|
"@settingsHistory": {},
|
||||||
"settingsHistoryDes": "Gestion des données",
|
"settingsHistoryDes": "Gestion des données",
|
||||||
"@settingsHistoryDes": {},
|
"@settingsHistoryDes": {},
|
||||||
"settingsInfo": "Infos",
|
"settingsInfo": "Informations",
|
||||||
"@settingsInfo": {},
|
"@settingsInfo": {},
|
||||||
"settingsInterface": "Interface",
|
"settingsInterface": "Interface utilisateur",
|
||||||
"@settingsInterface": {},
|
"@settingsInterface": {},
|
||||||
"settingsLanguages": "Langues",
|
"settingsLanguages": "Langues",
|
||||||
"@settingsLanguages": {},
|
"@settingsLanguages": {},
|
||||||
|
@ -447,7 +457,7 @@
|
||||||
"@settingsLibrariesDes": {},
|
"@settingsLibrariesDes": {},
|
||||||
"settingsManageDownload": "Gérer les téléchargements",
|
"settingsManageDownload": "Gérer les téléchargements",
|
||||||
"@settingsManageDownload": {},
|
"@settingsManageDownload": {},
|
||||||
"settingsManageDownloadDes": "Gérer les fichiers audio téléchargés",
|
"settingsManageDownloadDes": "Gestion des fichiers audio téléchargés",
|
||||||
"@settingsManageDownloadDes": {},
|
"@settingsManageDownloadDes": {},
|
||||||
"settingsMenuAutoPlay": "Lecture automatique",
|
"settingsMenuAutoPlay": "Lecture automatique",
|
||||||
"@settingsMenuAutoPlay": {},
|
"@settingsMenuAutoPlay": {},
|
||||||
|
@ -455,15 +465,15 @@
|
||||||
"@settingsNetworkCellular": {},
|
"@settingsNetworkCellular": {},
|
||||||
"settingsNetworkCellularAuto": "Téléchargement automatique sur réseau mobile",
|
"settingsNetworkCellularAuto": "Téléchargement automatique sur réseau mobile",
|
||||||
"@settingsNetworkCellularAuto": {},
|
"@settingsNetworkCellularAuto": {},
|
||||||
"settingsNetworkCellularAutoDes": "Vous pouvez automatiser le téléchargement des podcasts sur la page de gestion des groupes.",
|
"settingsNetworkCellularAutoDes": "L'automatisation du téléchargement peut aussi être configurée sur page de gestion des groupes",
|
||||||
"@settingsNetworkCellularAutoDes": {},
|
"@settingsNetworkCellularAutoDes": {},
|
||||||
"settingsNetworkCellularDes": "Si connecté à un réseau mobile, demander une confirmation avant de télécharger.",
|
"settingsNetworkCellularDes": "Demander une confirmation avant de lancer un téléchargement",
|
||||||
"@settingsNetworkCellularDes": {},
|
"@settingsNetworkCellularDes": {},
|
||||||
"settingsPlayDes": "Playlist et lecteur",
|
"settingsPlayDes": "Playlist et lecteur",
|
||||||
"@settingsPlayDes": {},
|
"@settingsPlayDes": {},
|
||||||
"settingsPlayerHeight": "Player height",
|
"settingsPlayerHeight": "Taille du player",
|
||||||
"@settingsPlayerHeight": {},
|
"@settingsPlayerHeight": {},
|
||||||
"settingsPlayerHeightDes": "Change player widget height as you like",
|
"settingsPlayerHeightDes": "Changer la hauteur du widget",
|
||||||
"@settingsPlayerHeightDes": {},
|
"@settingsPlayerHeightDes": {},
|
||||||
"settingsPopupMenu": "Menu popup des épisodes",
|
"settingsPopupMenu": "Menu popup des épisodes",
|
||||||
"@settingsPopupMenu": {},
|
"@settingsPopupMenu": {},
|
||||||
|
@ -473,17 +483,17 @@
|
||||||
"@settingsPrefrence": {},
|
"@settingsPrefrence": {},
|
||||||
"settingsRealDark": "Noir profond",
|
"settingsRealDark": "Noir profond",
|
||||||
"@settingsRealDark": {},
|
"@settingsRealDark": {},
|
||||||
"settingsRealDarkDes": "Activer pour un mode sombre accentué",
|
"settingsRealDarkDes": "Mode sombre accentué",
|
||||||
"@settingsRealDarkDes": {},
|
"@settingsRealDarkDes": {},
|
||||||
"settingsRewindSec": "Retour rapide",
|
"settingsRewindSec": "Retour rapide",
|
||||||
"@settingsRewindSec": {},
|
"@settingsRewindSec": {},
|
||||||
"settingsRewindSecDes": "Saut arrière en secondes",
|
"settingsRewindSecDes": "Saut arrière",
|
||||||
"@settingsRewindSecDes": {},
|
"@settingsRewindSecDes": {},
|
||||||
"settingsSTAuto": "Activation automatique de la minuterie",
|
"settingsSTAuto": "Activation automatique de la minuterie",
|
||||||
"@settingsSTAuto": {},
|
"@settingsSTAuto": {},
|
||||||
"settingsSTAutoDes": "Démarrer la minuterie à l'horaire programmé",
|
"settingsSTAutoDes": "Démarrer la minuterie à l'horaire programmé",
|
||||||
"@settingsSTAutoDes": {},
|
"@settingsSTAutoDes": {},
|
||||||
"settingsSTDefaultTime": "Temps par défaut",
|
"settingsSTDefaultTime": "Durée par défaut",
|
||||||
"@settingsSTDefaultTime": {},
|
"@settingsSTDefaultTime": {},
|
||||||
"settingsSTDefautTimeDes": "Configuration de la minuterie",
|
"settingsSTDefautTimeDes": "Configuration de la minuterie",
|
||||||
"@settingsSTDefautTimeDes": {},
|
"@settingsSTDefautTimeDes": {},
|
||||||
|
@ -495,17 +505,17 @@
|
||||||
"@settingsSyncing": {},
|
"@settingsSyncing": {},
|
||||||
"settingsSyncingDes": "Actualisation des podcasts en arrière-plan",
|
"settingsSyncingDes": "Actualisation des podcasts en arrière-plan",
|
||||||
"@settingsSyncingDes": {},
|
"@settingsSyncingDes": {},
|
||||||
"settingsTapToOpenPopupMenu": "Appuyer pour ouvrir le menu",
|
"settingsTapToOpenPopupMenu": "Ouverture du menu",
|
||||||
"@settingsTapToOpenPopupMenu": {},
|
"@settingsTapToOpenPopupMenu": {},
|
||||||
"settingsTapToOpenPopupMenuDes": "Vous devez effectuer un appui long pour ouvrir la page de l'épisode",
|
"settingsTapToOpenPopupMenuDes": "Effectuer un appui long pour ouvrir la page de l'épisode",
|
||||||
"@settingsTapToOpenPopupMenuDes": {},
|
"@settingsTapToOpenPopupMenuDes": {},
|
||||||
"settingsTheme": "Thème",
|
"settingsTheme": "Thème",
|
||||||
"@settingsTheme": {},
|
"@settingsTheme": {},
|
||||||
"settingStorage": "Espace de stockage",
|
"settingStorage": "Espace de stockage",
|
||||||
"@settingStorage": {},
|
"@settingStorage": {},
|
||||||
"settingsUpdateInterval": "Intervalle des mises à jour",
|
"settingsUpdateInterval": "Intervalle de mise à jour",
|
||||||
"@settingsUpdateInterval": {},
|
"@settingsUpdateInterval": {},
|
||||||
"settingsUpdateIntervalDes": "24 heures par défaut",
|
"settingsUpdateIntervalDes": "L'intervalle par défaut est de 24 heures",
|
||||||
"@settingsUpdateIntervalDes": {},
|
"@settingsUpdateIntervalDes": {},
|
||||||
"share": "Partager",
|
"share": "Partager",
|
||||||
"@share": {},
|
"@share": {},
|
||||||
|
@ -517,9 +527,13 @@
|
||||||
"@skipSilence": {
|
"@skipSilence": {
|
||||||
"description": "Feature skip silence"
|
"description": "Feature skip silence"
|
||||||
},
|
},
|
||||||
|
"skipToNext": "Skip to next",
|
||||||
|
"@skipToNext": {},
|
||||||
"sleepTimer": "Minuterie",
|
"sleepTimer": "Minuterie",
|
||||||
"@sleepTimer": {},
|
"@sleepTimer": {},
|
||||||
"subscribe": "Abonnements",
|
"stop": "Stop",
|
||||||
|
"@stop": {},
|
||||||
|
"subscribe": "S'abonner",
|
||||||
"@subscribe": {},
|
"@subscribe": {},
|
||||||
"subscribeExportDes": "Exporter le fichier OPML de tous les podcasts.",
|
"subscribeExportDes": "Exporter le fichier OPML de tous les podcasts.",
|
||||||
"@subscribeExportDes": {},
|
"@subscribeExportDes": {},
|
||||||
|
@ -544,7 +558,7 @@
|
||||||
"time": {}
|
"time": {}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"toastAddPlaylist": "Ajouté à la playlist.",
|
"toastAddPlaylist": "Ajouter l'épisode à la playlist.",
|
||||||
"@toastAddPlaylist": {},
|
"@toastAddPlaylist": {},
|
||||||
"toastDiscovery": "Tutoriel réinitialisé, veuillez redémarrer l'application.",
|
"toastDiscovery": "Tutoriel réinitialisé, veuillez redémarrer l'application.",
|
||||||
"@toastDiscovery": {
|
"@toastDiscovery": {
|
||||||
|
|
|
@ -74,6 +74,10 @@
|
||||||
"@endOfEpisode": {},
|
"@endOfEpisode": {},
|
||||||
"episode": "{count, plural, zero{} other{节目}}",
|
"episode": "{count, plural, zero{} other{节目}}",
|
||||||
"@episode": {},
|
"@episode": {},
|
||||||
|
"fastForward": "快进",
|
||||||
|
"@fastForward": {},
|
||||||
|
"fastRewind": "快退",
|
||||||
|
"@fastRewind": {},
|
||||||
"featureDiscoveryEditGroup": "点击修改分组",
|
"featureDiscoveryEditGroup": "点击修改分组",
|
||||||
"@featureDiscoveryEditGroup": {},
|
"@featureDiscoveryEditGroup": {},
|
||||||
"featureDiscoveryEditGroupDes": "您可以修改分组名或者删除分组,注意 Home 分组无法修改,也不能被删除。",
|
"featureDiscoveryEditGroupDes": "您可以修改分组名或者删除分组,注意 Home 分组无法修改,也不能被删除。",
|
||||||
|
@ -142,6 +146,8 @@
|
||||||
"@groupRemoveConfirm": {},
|
"@groupRemoveConfirm": {},
|
||||||
"groups": "{count, plural, zero{分组} other{分组}}",
|
"groups": "{count, plural, zero{分组} other{分组}}",
|
||||||
"@groups": {},
|
"@groups": {},
|
||||||
|
"hideListenedSetting": "隐藏已收听",
|
||||||
|
"@hideListenedSetting": {},
|
||||||
"homeGroupsSeeAll": "查看全部",
|
"homeGroupsSeeAll": "查看全部",
|
||||||
"@homeGroupsSeeAll": {},
|
"@homeGroupsSeeAll": {},
|
||||||
"homeMenuPlaylist": "播放列表",
|
"homeMenuPlaylist": "播放列表",
|
||||||
|
@ -248,6 +254,8 @@
|
||||||
"title": {}
|
"title": {}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"notificationSetting": "通知栏",
|
||||||
|
"@notificationSetting": {},
|
||||||
"notificationSubscribe": "订阅 {title}",
|
"notificationSubscribe": "订阅 {title}",
|
||||||
"@notificationSubscribe": {
|
"@notificationSubscribe": {
|
||||||
"placeholders": {
|
"placeholders": {
|
||||||
|
@ -280,6 +288,8 @@
|
||||||
},
|
},
|
||||||
"oldestFirst": "由旧到新",
|
"oldestFirst": "由旧到新",
|
||||||
"@oldestFirst": {},
|
"@oldestFirst": {},
|
||||||
|
"pause": "暂停",
|
||||||
|
"@pause": {},
|
||||||
"play": "播放",
|
"play": "播放",
|
||||||
"@play": {},
|
"@play": {},
|
||||||
"playback": "播放控制",
|
"playback": "播放控制",
|
||||||
|
@ -517,8 +527,12 @@
|
||||||
"@skipSilence": {
|
"@skipSilence": {
|
||||||
"description": "Feature skip silence"
|
"description": "Feature skip silence"
|
||||||
},
|
},
|
||||||
|
"skipToNext": "下一首",
|
||||||
|
"@skipToNext": {},
|
||||||
"sleepTimer": "睡眠模式",
|
"sleepTimer": "睡眠模式",
|
||||||
"@sleepTimer": {},
|
"@sleepTimer": {},
|
||||||
|
"stop": "停止",
|
||||||
|
"@stop": {},
|
||||||
"subscribe": "订阅",
|
"subscribe": "订阅",
|
||||||
"@subscribe": {},
|
"@subscribe": {},
|
||||||
"subscribeExportDes": "导出 OMPL 文件",
|
"subscribeExportDes": "导出 OMPL 文件",
|
||||||
|
|
|
@ -42,6 +42,7 @@ const String localeKey = 'localeKey';
|
||||||
const String boostVolumeKey = 'boostVolumeKey';
|
const String boostVolumeKey = 'boostVolumeKey';
|
||||||
const String volumeGainKey = 'volumeGainKey';
|
const String volumeGainKey = 'volumeGainKey';
|
||||||
const String hideListenedKey = 'hideListenedKey';
|
const String hideListenedKey = 'hideListenedKey';
|
||||||
|
const String notificationLayoutKey = 'notificationLayoutKey';
|
||||||
|
|
||||||
class KeyValueStorage {
|
class KeyValueStorage {
|
||||||
final String key;
|
final String key;
|
||||||
|
|
|
@ -7,6 +7,7 @@ import 'package:provider/provider.dart';
|
||||||
import 'package:tuple/tuple.dart';
|
import 'package:tuple/tuple.dart';
|
||||||
|
|
||||||
import '../home/audioplayer.dart';
|
import '../home/audioplayer.dart';
|
||||||
|
import '../local_storage/key_value_storage.dart';
|
||||||
import '../state/audio_state.dart';
|
import '../state/audio_state.dart';
|
||||||
import '../state/setting_state.dart';
|
import '../state/setting_state.dart';
|
||||||
import '../util/custom_dropdown.dart';
|
import '../util/custom_dropdown.dart';
|
||||||
|
@ -201,7 +202,7 @@ class PlaySetting extends StatelessWidget {
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
title: Text(s.play),
|
title: Text(s.play),
|
||||||
elevation: 0,
|
elevation: 0,
|
||||||
backgroundColor: Theme.of(context).primaryColor,
|
backgroundColor: context.primaryColor,
|
||||||
),
|
),
|
||||||
body: SingleChildScrollView(
|
body: SingleChildScrollView(
|
||||||
scrollDirection: Axis.vertical,
|
scrollDirection: Axis.vertical,
|
||||||
|
@ -209,218 +210,200 @@ class PlaySetting extends StatelessWidget {
|
||||||
mainAxisAlignment: MainAxisAlignment.start,
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
mainAxisSize: MainAxisSize.min,
|
mainAxisSize: MainAxisSize.min,
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
Column(
|
Container(
|
||||||
mainAxisAlignment: MainAxisAlignment.start,
|
height: 60.0,
|
||||||
mainAxisSize: MainAxisSize.min,
|
padding: EdgeInsets.symmetric(horizontal: 40),
|
||||||
|
alignment: Alignment.center,
|
||||||
|
child: Text(s.notificationSetting,
|
||||||
|
style: context.textTheme.bodyText1
|
||||||
|
.copyWith(color: context.accentColor)),
|
||||||
|
),
|
||||||
|
_NotificationLayout(),
|
||||||
|
Divider(
|
||||||
|
height: 1,
|
||||||
|
),
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.all(10.0),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
height: 30.0,
|
||||||
|
padding: EdgeInsets.symmetric(horizontal: 70),
|
||||||
|
alignment: Alignment.centerLeft,
|
||||||
|
child: Text(s.homeMenuPlaylist,
|
||||||
|
style: Theme.of(context)
|
||||||
|
.textTheme
|
||||||
|
.bodyText1
|
||||||
|
.copyWith(color: Theme.of(context).accentColor)),
|
||||||
|
),
|
||||||
|
Selector<SettingState, bool>(
|
||||||
|
selector: (_, settings) => settings.autoPlay,
|
||||||
|
builder: (_, data, __) => ListTile(
|
||||||
|
onTap: () => settings.setAutoPlay = !data,
|
||||||
|
contentPadding:
|
||||||
|
EdgeInsets.only(left: 70.0, right: 20, bottom: 10),
|
||||||
|
title: Text(s.settingsMenuAutoPlay),
|
||||||
|
subtitle: Text(s.settingsAutoPlayDes),
|
||||||
|
trailing: Transform.scale(
|
||||||
|
scale: 0.9,
|
||||||
|
child: Switch(
|
||||||
|
value: data,
|
||||||
|
onChanged: (boo) => settings.setAutoPlay = boo),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Divider(height: 1),
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.all(10.0),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
height: 30.0,
|
||||||
|
padding: EdgeInsets.symmetric(horizontal: 70),
|
||||||
|
alignment: Alignment.centerLeft,
|
||||||
|
child: Text(s.playback,
|
||||||
|
style: Theme.of(context)
|
||||||
|
.textTheme
|
||||||
|
.bodyText1
|
||||||
|
.copyWith(color: Theme.of(context).accentColor)),
|
||||||
|
),
|
||||||
|
ListTile(
|
||||||
|
contentPadding:
|
||||||
|
EdgeInsets.only(left: 70.0, right: 20, bottom: 10, top: 10),
|
||||||
|
title: Text(s.settingsFastForwardSec),
|
||||||
|
subtitle: Text(s.settingsFastForwardSecDes),
|
||||||
|
trailing: Selector<SettingState, int>(
|
||||||
|
selector: (_, settings) => settings.fastForwardSeconds,
|
||||||
|
builder: (_, data, __) => MyDropdownButton(
|
||||||
|
hint: Text(s.secCount(data)),
|
||||||
|
underline: Center(),
|
||||||
|
elevation: 1,
|
||||||
|
displayItemCount: 5,
|
||||||
|
isDense: true,
|
||||||
|
value: data,
|
||||||
|
onChanged: (value) =>
|
||||||
|
settings.setFastForwardSeconds = value,
|
||||||
|
items: secondsToSelect.map<DropdownMenuItem<int>>((e) {
|
||||||
|
return DropdownMenuItem<int>(
|
||||||
|
value: e, child: Text(s.secCount(e)));
|
||||||
|
}).toList()),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
ListTile(
|
||||||
|
contentPadding:
|
||||||
|
EdgeInsets.only(left: 70.0, right: 20, bottom: 10, top: 10),
|
||||||
|
title: Text(s.settingsRewindSec),
|
||||||
|
subtitle: Text(s.settingsRewindSecDes),
|
||||||
|
trailing: Selector<SettingState, int>(
|
||||||
|
selector: (_, settings) => settings.rewindSeconds,
|
||||||
|
builder: (_, data, __) => MyDropdownButton(
|
||||||
|
hint: Text(s.secCount(data)),
|
||||||
|
underline: Center(),
|
||||||
|
elevation: 1,
|
||||||
|
displayItemCount: 5,
|
||||||
|
isDense: true,
|
||||||
|
value: data,
|
||||||
|
onChanged: (value) => settings.setRewindSeconds = value,
|
||||||
|
items: secondsToSelect.map<DropdownMenuItem<int>>((e) {
|
||||||
|
return DropdownMenuItem<int>(
|
||||||
|
value: e, child: Text(s.secCount(e)));
|
||||||
|
}).toList()),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
ListTile(
|
||||||
|
contentPadding:
|
||||||
|
EdgeInsets.only(left: 70.0, right: 20, bottom: 10, top: 10),
|
||||||
|
title: Text(s.settingsBoostVolume),
|
||||||
|
subtitle: Text(s.settingsBoostVolumeDes),
|
||||||
|
trailing: Selector<AudioPlayerNotifier, int>(
|
||||||
|
selector: (_, audio) => audio.volumeGain,
|
||||||
|
builder: (_, volumeGain, __) => MyDropdownButton(
|
||||||
|
hint: Text(_volumeEffect(context, volumeGain)),
|
||||||
|
underline: Center(),
|
||||||
|
elevation: 1,
|
||||||
|
displayItemCount: 5,
|
||||||
|
isDense: true,
|
||||||
|
value: volumeGain,
|
||||||
|
onChanged: (value) => audio.setVolumeGain = value,
|
||||||
|
items: [2000, 3000, 4000].map<DropdownMenuItem<int>>((e) {
|
||||||
|
return DropdownMenuItem<int>(
|
||||||
|
value: e, child: Text(_volumeEffect(context, e)));
|
||||||
|
}).toList()),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Divider(height: 1),
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.all(10.0),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
height: 30.0,
|
||||||
|
padding: EdgeInsets.symmetric(horizontal: 70),
|
||||||
|
alignment: Alignment.centerLeft,
|
||||||
|
child: Text(s.sleepTimer,
|
||||||
|
style: context.textTheme.bodyText1
|
||||||
|
.copyWith(color: Theme.of(context).accentColor)),
|
||||||
|
),
|
||||||
|
ListView(
|
||||||
|
physics: const BouncingScrollPhysics(),
|
||||||
|
shrinkWrap: true,
|
||||||
|
scrollDirection: Axis.vertical,
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
Padding(
|
ListTile(
|
||||||
padding: const EdgeInsets.all(10.0),
|
contentPadding: EdgeInsets.only(left: 70.0, right: 20),
|
||||||
|
title: Text(s.settingsSTDefaultTime),
|
||||||
|
subtitle: Text(s.settingsSTDefautTimeDes),
|
||||||
|
trailing: Selector<SettingState, int>(
|
||||||
|
selector: (_, settings) => settings.defaultSleepTimer,
|
||||||
|
builder: (_, data, __) => MyDropdownButton(
|
||||||
|
hint: Text(s.minsCount(data)),
|
||||||
|
underline: Center(),
|
||||||
|
elevation: 1,
|
||||||
|
displayItemCount: 5,
|
||||||
|
isDense: true,
|
||||||
|
value: data,
|
||||||
|
onChanged: (value) =>
|
||||||
|
settings.setDefaultSleepTimer = value,
|
||||||
|
items: kMinsToSelect.map<DropdownMenuItem<int>>((e) {
|
||||||
|
return DropdownMenuItem<int>(
|
||||||
|
value: e, child: Text(s.minsCount(e)));
|
||||||
|
}).toList()),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
Container(
|
Selector<SettingState, bool>(
|
||||||
height: 30.0,
|
selector: (_, settings) => settings.autoSleepTimer,
|
||||||
padding: EdgeInsets.symmetric(horizontal: 70),
|
builder: (_, data, __) => ListTile(
|
||||||
alignment: Alignment.centerLeft,
|
onTap: () => settings.setAutoSleepTimer = !data,
|
||||||
child: Text(s.homeMenuPlaylist,
|
contentPadding: const EdgeInsets.only(
|
||||||
style: Theme.of(context)
|
left: 70.0, right: 20.0, bottom: 10.0, top: 10.0),
|
||||||
.textTheme
|
title: Text(s.settingsSTAuto),
|
||||||
.bodyText1
|
subtitle: Text(s.settingsSTAutoDes),
|
||||||
.copyWith(color: Theme.of(context).accentColor)),
|
trailing: Transform.scale(
|
||||||
),
|
scale: 0.9,
|
||||||
ListView(
|
child: Switch(
|
||||||
physics: const BouncingScrollPhysics(),
|
value: data,
|
||||||
shrinkWrap: true,
|
onChanged: (boo) =>
|
||||||
scrollDirection: Axis.vertical,
|
settings.setAutoSleepTimer = boo),
|
||||||
children: <Widget>[
|
|
||||||
Selector<SettingState, bool>(
|
|
||||||
selector: (_, settings) => settings.autoPlay,
|
|
||||||
builder: (_, data, __) => ListTile(
|
|
||||||
onTap: () => settings.setAutoPlay = !data,
|
|
||||||
contentPadding: EdgeInsets.only(
|
|
||||||
left: 70.0, right: 20, bottom: 10),
|
|
||||||
title: Text(s.settingsMenuAutoPlay),
|
|
||||||
subtitle: Text(s.settingsAutoPlayDes),
|
|
||||||
trailing: Transform.scale(
|
|
||||||
scale: 0.9,
|
|
||||||
child: Switch(
|
|
||||||
value: data,
|
|
||||||
onChanged: (boo) => settings.setAutoPlay = boo),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
Divider(height: 1),
|
),
|
||||||
],
|
|
||||||
),
|
),
|
||||||
Padding(
|
ListTile(
|
||||||
padding: const EdgeInsets.all(10.0),
|
contentPadding: const EdgeInsets.only(
|
||||||
),
|
left: 70.0, right: 20.0, bottom: 10.0, top: 10.0),
|
||||||
Container(
|
title: Text(s.settingsSTMode),
|
||||||
height: 30.0,
|
subtitle:
|
||||||
padding: EdgeInsets.symmetric(horizontal: 70),
|
context.width > 360 ? null : _modeWidget(context),
|
||||||
alignment: Alignment.centerLeft,
|
trailing:
|
||||||
child: Text(s.playback,
|
context.width > 360 ? _modeWidget(context) : null),
|
||||||
style: Theme.of(context)
|
ListTile(
|
||||||
.textTheme
|
contentPadding: EdgeInsets.only(left: 70.0, right: 20),
|
||||||
.bodyText1
|
title: Text(s.schedule),
|
||||||
.copyWith(color: Theme.of(context).accentColor)),
|
subtitle:
|
||||||
),
|
context.width > 360 ? null : _scheduleWidget(context),
|
||||||
ListView(
|
trailing: context.width > 360
|
||||||
physics: const BouncingScrollPhysics(),
|
? _scheduleWidget(context)
|
||||||
shrinkWrap: true,
|
: null),
|
||||||
scrollDirection: Axis.vertical,
|
Divider(height: 1)
|
||||||
children: <Widget>[
|
|
||||||
ListTile(
|
|
||||||
contentPadding: EdgeInsets.only(
|
|
||||||
left: 70.0, right: 20, bottom: 10, top: 10),
|
|
||||||
title: Text(s.settingsFastForwardSec),
|
|
||||||
subtitle: Text(s.settingsFastForwardSecDes),
|
|
||||||
trailing: Selector<SettingState, int>(
|
|
||||||
selector: (_, settings) =>
|
|
||||||
settings.fastForwardSeconds,
|
|
||||||
builder: (_, data, __) => MyDropdownButton(
|
|
||||||
hint: Text(s.secCount(data)),
|
|
||||||
underline: Center(),
|
|
||||||
elevation: 1,
|
|
||||||
displayItemCount: 5,
|
|
||||||
isDense: true,
|
|
||||||
value: data,
|
|
||||||
onChanged: (value) =>
|
|
||||||
settings.setFastForwardSeconds = value,
|
|
||||||
items: secondsToSelect
|
|
||||||
.map<DropdownMenuItem<int>>((e) {
|
|
||||||
return DropdownMenuItem<int>(
|
|
||||||
value: e, child: Text(s.secCount(e)));
|
|
||||||
}).toList()),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
ListTile(
|
|
||||||
contentPadding: EdgeInsets.only(
|
|
||||||
left: 70.0, right: 20, bottom: 10, top: 10),
|
|
||||||
title: Text(s.settingsRewindSec),
|
|
||||||
subtitle: Text(s.settingsRewindSecDes),
|
|
||||||
trailing: Selector<SettingState, int>(
|
|
||||||
selector: (_, settings) => settings.rewindSeconds,
|
|
||||||
builder: (_, data, __) => MyDropdownButton(
|
|
||||||
hint: Text(s.secCount(data)),
|
|
||||||
underline: Center(),
|
|
||||||
elevation: 1,
|
|
||||||
displayItemCount: 5,
|
|
||||||
isDense: true,
|
|
||||||
value: data,
|
|
||||||
onChanged: (value) =>
|
|
||||||
settings.setRewindSeconds = value,
|
|
||||||
items: secondsToSelect
|
|
||||||
.map<DropdownMenuItem<int>>((e) {
|
|
||||||
return DropdownMenuItem<int>(
|
|
||||||
value: e, child: Text(s.secCount(e)));
|
|
||||||
}).toList()),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
ListTile(
|
|
||||||
contentPadding: EdgeInsets.only(
|
|
||||||
left: 70.0, right: 20, bottom: 10, top: 10),
|
|
||||||
title: Text(s.settingsBoostVolume),
|
|
||||||
subtitle: Text(s.settingsBoostVolumeDes),
|
|
||||||
trailing: Selector<AudioPlayerNotifier, int>(
|
|
||||||
selector: (_, audio) => audio.volumeGain,
|
|
||||||
builder: (_, volumeGain, __) => MyDropdownButton(
|
|
||||||
hint: Text(_volumeEffect(context, volumeGain)),
|
|
||||||
underline: Center(),
|
|
||||||
elevation: 1,
|
|
||||||
displayItemCount: 5,
|
|
||||||
isDense: true,
|
|
||||||
value: volumeGain,
|
|
||||||
onChanged: (value) =>
|
|
||||||
audio.setVolumeGain = value,
|
|
||||||
items: [2000, 3000, 4000]
|
|
||||||
.map<DropdownMenuItem<int>>((e) {
|
|
||||||
return DropdownMenuItem<int>(
|
|
||||||
value: e,
|
|
||||||
child: Text(_volumeEffect(context, e)));
|
|
||||||
}).toList()),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Divider(),
|
|
||||||
]),
|
|
||||||
Padding(
|
|
||||||
padding: const EdgeInsets.all(10.0),
|
|
||||||
),
|
|
||||||
Container(
|
|
||||||
height: 30.0,
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: 70),
|
|
||||||
alignment: Alignment.centerLeft,
|
|
||||||
child: Text(s.sleepTimer,
|
|
||||||
style: context.textTheme.bodyText1
|
|
||||||
.copyWith(color: Theme.of(context).accentColor)),
|
|
||||||
),
|
|
||||||
ListView(
|
|
||||||
physics: const BouncingScrollPhysics(),
|
|
||||||
shrinkWrap: true,
|
|
||||||
scrollDirection: Axis.vertical,
|
|
||||||
children: <Widget>[
|
|
||||||
ListTile(
|
|
||||||
contentPadding: EdgeInsets.only(left: 70.0, right: 20),
|
|
||||||
title: Text(s.settingsSTDefaultTime),
|
|
||||||
subtitle: Text(s.settingsSTDefautTimeDes),
|
|
||||||
trailing: Selector<SettingState, int>(
|
|
||||||
selector: (_, settings) => settings.defaultSleepTimer,
|
|
||||||
builder: (_, data, __) => MyDropdownButton(
|
|
||||||
hint: Text(s.minsCount(data)),
|
|
||||||
underline: Center(),
|
|
||||||
elevation: 1,
|
|
||||||
displayItemCount: 5,
|
|
||||||
isDense: true,
|
|
||||||
value: data,
|
|
||||||
onChanged: (value) =>
|
|
||||||
settings.setDefaultSleepTimer = value,
|
|
||||||
items:
|
|
||||||
kMinsToSelect.map<DropdownMenuItem<int>>((e) {
|
|
||||||
return DropdownMenuItem<int>(
|
|
||||||
value: e, child: Text(s.minsCount(e)));
|
|
||||||
}).toList()),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Selector<SettingState, bool>(
|
|
||||||
selector: (_, settings) => settings.autoSleepTimer,
|
|
||||||
builder: (_, data, __) => ListTile(
|
|
||||||
onTap: () => settings.setAutoSleepTimer = !data,
|
|
||||||
contentPadding: const EdgeInsets.only(
|
|
||||||
left: 70.0, right: 20.0, bottom: 10.0, top: 10.0),
|
|
||||||
title: Text(s.settingsSTAuto),
|
|
||||||
subtitle: Text(s.settingsSTAutoDes),
|
|
||||||
trailing: Transform.scale(
|
|
||||||
scale: 0.9,
|
|
||||||
child: Switch(
|
|
||||||
value: data,
|
|
||||||
onChanged: (boo) =>
|
|
||||||
settings.setAutoSleepTimer = boo),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
ListTile(
|
|
||||||
contentPadding: const EdgeInsets.only(
|
|
||||||
left: 70.0, right: 20.0, bottom: 10.0, top: 10.0),
|
|
||||||
title: Text(s.settingsSTMode),
|
|
||||||
subtitle:
|
|
||||||
context.width > 360 ? null : _modeWidget(context),
|
|
||||||
trailing: context.width > 360
|
|
||||||
? _modeWidget(context)
|
|
||||||
: null),
|
|
||||||
ListTile(
|
|
||||||
contentPadding:
|
|
||||||
EdgeInsets.only(left: 70.0, right: 20),
|
|
||||||
title: Text(s.schedule),
|
|
||||||
subtitle: context.width > 360
|
|
||||||
? null
|
|
||||||
: _scheduleWidget(context),
|
|
||||||
trailing: context.width > 360
|
|
||||||
? _scheduleWidget(context)
|
|
||||||
: null),
|
|
||||||
Divider(height: 1)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
SizedBox(height: 20)
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
SizedBox(height: 20)
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -428,3 +411,121 @@ class PlaySetting extends StatelessWidget {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class _NotificationLayout extends StatefulWidget {
|
||||||
|
_NotificationLayout({Key key}) : super(key: key);
|
||||||
|
|
||||||
|
@override
|
||||||
|
__NotificationLayoutState createState() => __NotificationLayoutState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class __NotificationLayoutState extends State<_NotificationLayout> {
|
||||||
|
Future<int> _getNotificationLayout() async {
|
||||||
|
final storage = KeyValueStorage(notificationLayoutKey);
|
||||||
|
var index = await storage.getInt(defaultValue: 0);
|
||||||
|
return index;
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> _setNotificationLayout(int index) async {
|
||||||
|
final storage = KeyValueStorage(notificationLayoutKey);
|
||||||
|
await storage.saveInt(index);
|
||||||
|
if (mounted) setState(() {});
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget _notificationIcon(Widget icon, String des) {
|
||||||
|
return LimitedBox(
|
||||||
|
maxWidth: 60,
|
||||||
|
child: Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
children: [
|
||||||
|
icon,
|
||||||
|
SizedBox(height: 8),
|
||||||
|
Text(des,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 12, color: context.textColor.withOpacity(0.5)),
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
maxLines: 2,
|
||||||
|
overflow: TextOverflow.clip),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget _notificationOptions(int index, {int selected}) {
|
||||||
|
final s = context.s;
|
||||||
|
return InkWell(
|
||||||
|
borderRadius: BorderRadius.circular(10.0),
|
||||||
|
onTap: () => _setNotificationLayout(index),
|
||||||
|
child: Container(
|
||||||
|
padding: EdgeInsets.symmetric(vertical: 10),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
border: Border.all(
|
||||||
|
color: index == selected
|
||||||
|
? context.accentColor.withAlpha(70)
|
||||||
|
: context.primaryColorDark,
|
||||||
|
),
|
||||||
|
borderRadius: BorderRadius.circular(10),
|
||||||
|
color: index == selected
|
||||||
|
? context.accentColor.withAlpha(70)
|
||||||
|
: Colors.transparent,
|
||||||
|
),
|
||||||
|
child: index == 0
|
||||||
|
? Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
_notificationIcon(
|
||||||
|
Icon(Icons.pause_circle_filled), '${s.play}| ${s.pause}'),
|
||||||
|
_notificationIcon(Icon(Icons.fast_forward), s.fastForward),
|
||||||
|
_notificationIcon(Icon(Icons.skip_next), s.skipToNext),
|
||||||
|
_notificationIcon(Icon(Icons.close), s.stop),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
: index == 1
|
||||||
|
? Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
_notificationIcon(Icon(Icons.pause_circle_filled),
|
||||||
|
'${s.play}| ${s.pause}'),
|
||||||
|
_notificationIcon(
|
||||||
|
Icon(Icons.fast_rewind), s.fastRewind),
|
||||||
|
_notificationIcon(Icon(Icons.skip_next), s.skipToNext),
|
||||||
|
_notificationIcon(Icon(Icons.close), s.stop),
|
||||||
|
])
|
||||||
|
: Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
_notificationIcon(Icon(Icons.fast_rewind), s.fastRewind),
|
||||||
|
_notificationIcon(Icon(Icons.pause_circle_filled),
|
||||||
|
'${s.play}| ${s.pause}'),
|
||||||
|
_notificationIcon(
|
||||||
|
Icon(Icons.fast_forward), s.fastForward),
|
||||||
|
_notificationIcon(Icon(Icons.close), s.stop),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Padding(
|
||||||
|
padding: EdgeInsets.fromLTRB(40, 0, 40, 30),
|
||||||
|
child: FutureBuilder<int>(
|
||||||
|
future: _getNotificationLayout(),
|
||||||
|
initialData: 0,
|
||||||
|
builder: (context, snapshot) => Column(
|
||||||
|
children: [
|
||||||
|
_notificationOptions(0, selected: snapshot.data),
|
||||||
|
SizedBox(height: 20),
|
||||||
|
_notificationOptions(1, selected: snapshot.data),
|
||||||
|
SizedBox(height: 20),
|
||||||
|
_notificationOptions(2, selected: snapshot.data),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@ import 'dart:async';
|
||||||
import 'dart:math' as math;
|
import 'dart:math' as math;
|
||||||
|
|
||||||
import 'package:audio_service/audio_service.dart';
|
import 'package:audio_service/audio_service.dart';
|
||||||
|
import 'package:audio_session/audio_session.dart';
|
||||||
import 'package:dio/dio.dart';
|
import 'package:dio/dio.dart';
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:just_audio/just_audio.dart';
|
import 'package:just_audio/just_audio.dart';
|
||||||
|
@ -43,6 +44,12 @@ MediaControl forward = MediaControl(
|
||||||
action: MediaAction.fastForward,
|
action: MediaAction.fastForward,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
MediaControl rewind = MediaControl(
|
||||||
|
androidIcon: 'drawable/baseline_fast_rewind_white_24',
|
||||||
|
label: 'rewind',
|
||||||
|
action: MediaAction.rewind,
|
||||||
|
);
|
||||||
|
|
||||||
void _audioPlayerTaskEntrypoint() async {
|
void _audioPlayerTaskEntrypoint() async {
|
||||||
AudioServiceBackground.run(() => AudioPlayerTask());
|
AudioServiceBackground.run(() => AudioPlayerTask());
|
||||||
}
|
}
|
||||||
|
@ -718,10 +725,11 @@ class AudioPlayerNotifier extends ChangeNotifier {
|
||||||
}
|
}
|
||||||
|
|
||||||
class AudioPlayerTask extends BackgroundAudioTask {
|
class AudioPlayerTask extends BackgroundAudioTask {
|
||||||
KeyValueStorage cacheStorage = KeyValueStorage(cacheMaxKey);
|
final cacheStorage = KeyValueStorage(cacheMaxKey);
|
||||||
|
final layoutStorage = KeyValueStorage(notificationLayoutKey);
|
||||||
final List<MediaItem> _queue = [];
|
final List<MediaItem> _queue = [];
|
||||||
final AudioPlayer _audioPlayer = AudioPlayer();
|
final AudioPlayer _audioPlayer = AudioPlayer();
|
||||||
|
AudioSession _session;
|
||||||
AudioProcessingState _skipState;
|
AudioProcessingState _skipState;
|
||||||
bool _playing;
|
bool _playing;
|
||||||
bool _interrupted = false;
|
bool _interrupted = false;
|
||||||
|
@ -737,6 +745,9 @@ class AudioPlayerTask extends BackgroundAudioTask {
|
||||||
@override
|
@override
|
||||||
Future<void> onStart(Map<String, dynamic> params) async {
|
Future<void> onStart(Map<String, dynamic> params) async {
|
||||||
_stopAtEnd = false;
|
_stopAtEnd = false;
|
||||||
|
_session = await AudioSession.instance;
|
||||||
|
await _session.configure(AudioSessionConfiguration.speech());
|
||||||
|
_handleInterruption(_session);
|
||||||
_playerStateSubscription = _audioPlayer.playbackStateStream
|
_playerStateSubscription = _audioPlayer.playbackStateStream
|
||||||
.where((state) => state == AudioPlaybackState.completed)
|
.where((state) => state == AudioPlaybackState.completed)
|
||||||
.listen((state) {
|
.listen((state) {
|
||||||
|
@ -786,6 +797,52 @@ class AudioPlayerTask extends BackgroundAudioTask {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void _handleInterruption(AudioSession session) async {
|
||||||
|
session.interruptionEventStream.listen((event) {
|
||||||
|
if (event.begin) {
|
||||||
|
switch (event.type) {
|
||||||
|
case AudioInterruptionType.pause:
|
||||||
|
if (_playing) {
|
||||||
|
onPause();
|
||||||
|
_interrupted = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case AudioInterruptionType.duck:
|
||||||
|
if (_playing) {
|
||||||
|
onPause();
|
||||||
|
_interrupted = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case AudioInterruptionType.unknown:
|
||||||
|
if (_playing) {
|
||||||
|
onPause();
|
||||||
|
_interrupted = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
switch (event.type) {
|
||||||
|
case AudioInterruptionType.pause:
|
||||||
|
if (!_playing && _interrupted) {
|
||||||
|
onPlay();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case AudioInterruptionType.duck:
|
||||||
|
if (!_playing && _interrupted) {
|
||||||
|
onPlay();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case AudioInterruptionType.unknown:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
_interrupted = false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
session.becomingNoisyEventStream.listen((_) {
|
||||||
|
if (_playing) onPause();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
void playPause() {
|
void playPause() {
|
||||||
if (AudioServiceBackground.state.playing) {
|
if (AudioServiceBackground.state.playing) {
|
||||||
onPause();
|
onPause();
|
||||||
|
@ -828,7 +885,7 @@ class AudioPlayerTask extends BackgroundAudioTask {
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onPlay() async {
|
Future<void> onPlay() async {
|
||||||
if (_skipState == null) {
|
if (_skipState == null) {
|
||||||
if (_playing == null) {
|
if (_playing == null) {
|
||||||
_playing = true;
|
_playing = true;
|
||||||
|
@ -847,6 +904,7 @@ class AudioPlayerTask extends BackgroundAudioTask {
|
||||||
_playFromStart();
|
_playFromStart();
|
||||||
} else {
|
} else {
|
||||||
_playing = true;
|
_playing = true;
|
||||||
|
_session.setActive(true);
|
||||||
if (_audioPlayer.playbackEvent.state != AudioPlaybackState.connecting ||
|
if (_audioPlayer.playbackEvent.state != AudioPlaybackState.connecting ||
|
||||||
_audioPlayer.playbackEvent.state != AudioPlaybackState.none) {
|
_audioPlayer.playbackEvent.state != AudioPlaybackState.none) {
|
||||||
_audioPlayer.play();
|
_audioPlayer.play();
|
||||||
|
@ -855,8 +913,9 @@ class AudioPlayerTask extends BackgroundAudioTask {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_playFromStart() async {
|
Future<void> _playFromStart() async {
|
||||||
_playing = true;
|
_playing = true;
|
||||||
|
_session.setActive(true);
|
||||||
if (_audioPlayer.playbackEvent.state != AudioPlaybackState.connecting ||
|
if (_audioPlayer.playbackEvent.state != AudioPlaybackState.connecting ||
|
||||||
_audioPlayer.playbackEvent.state != AudioPlaybackState.none) {
|
_audioPlayer.playbackEvent.state != AudioPlaybackState.none) {
|
||||||
try {
|
try {
|
||||||
|
@ -871,7 +930,7 @@ class AudioPlayerTask extends BackgroundAudioTask {
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onPause() {
|
Future<void> onPause() async {
|
||||||
if (_skipState == null) {
|
if (_skipState == null) {
|
||||||
if (_playing == null) {
|
if (_playing == null) {
|
||||||
} else if (_playing) {
|
} else if (_playing) {
|
||||||
|
@ -882,20 +941,22 @@ class AudioPlayerTask extends BackgroundAudioTask {
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onSeekTo(Duration position) {
|
Future<void> onSeekTo(Duration position) async {
|
||||||
if (_audioPlayer.playbackEvent.state != AudioPlaybackState.connecting ||
|
if (_audioPlayer.playbackEvent.state != AudioPlaybackState.connecting ||
|
||||||
_audioPlayer.playbackEvent.state != AudioPlaybackState.none) {
|
_audioPlayer.playbackEvent.state != AudioPlaybackState.none) {
|
||||||
_audioPlayer.seek(position);
|
await _audioPlayer.seek(position);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onClick(MediaButton button) {
|
Future<void> onClick(MediaButton button) async {
|
||||||
if (button == MediaButton.media) {
|
if (button == MediaButton.media) {
|
||||||
playPause();
|
await playPause();
|
||||||
} else if (button == MediaButton.next) {
|
} else if (button == MediaButton.next) {
|
||||||
_seekRelative(fastForwardInterval);
|
await _seekRelative(fastForwardInterval);
|
||||||
} else if (button == MediaButton.previous) _seekRelative(-rewindInterval);
|
} else if (button == MediaButton.previous) {
|
||||||
|
await _seekRelative(-rewindInterval);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> _seekRelative(Duration offset) async {
|
Future<void> _seekRelative(Duration offset) async {
|
||||||
|
@ -918,19 +979,19 @@ class AudioPlayerTask extends BackgroundAudioTask {
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onAddQueueItem(MediaItem mediaItem) async {
|
Future<void> onAddQueueItem(MediaItem mediaItem) async {
|
||||||
_queue.add(mediaItem);
|
_queue.add(mediaItem);
|
||||||
await AudioServiceBackground.setQueue(_queue);
|
await AudioServiceBackground.setQueue(_queue);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onRemoveQueueItem(MediaItem mediaItem) async {
|
Future<void> onRemoveQueueItem(MediaItem mediaItem) async {
|
||||||
_queue.removeWhere((item) => item.id == mediaItem.id);
|
_queue.removeWhere((item) => item.id == mediaItem.id);
|
||||||
await AudioServiceBackground.setQueue(_queue);
|
await AudioServiceBackground.setQueue(_queue);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onAddQueueItemAt(MediaItem mediaItem, int index) async {
|
Future<void> onAddQueueItemAt(MediaItem mediaItem, int index) async {
|
||||||
if (index == 0) {
|
if (index == 0) {
|
||||||
await _audioPlayer.stop();
|
await _audioPlayer.stop();
|
||||||
_queue.removeAt(0);
|
_queue.removeAt(0);
|
||||||
|
@ -951,57 +1012,57 @@ class AudioPlayerTask extends BackgroundAudioTask {
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onFastForward() async {
|
Future<void> onFastForward() async {
|
||||||
await _seekRelative(fastForwardInterval);
|
await _seekRelative(fastForwardInterval);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onRewind() async {
|
Future<void> onRewind() async {
|
||||||
await _seekRelative(-rewindInterval);
|
await _seekRelative(-rewindInterval);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
// @override
|
||||||
void onAudioFocusLost(AudioInterruption interruption) {
|
// Future<void> onAudioFocusLost(AudioInterruption interruption) {
|
||||||
if (_playing) _interrupted = true;
|
// if (_playing) _interrupted = true;
|
||||||
switch (interruption) {
|
// switch (interruption) {
|
||||||
case AudioInterruption.pause:
|
// case AudioInterruption.pause:
|
||||||
case AudioInterruption.temporaryPause:
|
// case AudioInterruption.temporaryPause:
|
||||||
case AudioInterruption.unknownPause:
|
// case AudioInterruption.unknownPause:
|
||||||
onPause();
|
// onPause();
|
||||||
break;
|
// break;
|
||||||
case AudioInterruption.temporaryDuck:
|
// case AudioInterruption.temporaryDuck:
|
||||||
_audioPlayer.setVolume(0.5);
|
// _audioPlayer.setVolume(0.5);
|
||||||
break;
|
// break;
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@override
|
// @override
|
||||||
void onAudioBecomingNoisy() {
|
// Future<void> onAudioBecomingNoisy() async{
|
||||||
if (_skipState == null) {
|
// if (_skipState == null) {
|
||||||
if (_playing == null) {
|
// if (_playing == null) {
|
||||||
} else if (_audioPlayer.playbackEvent.state ==
|
// } else if (_audioPlayer.playbackEvent.state ==
|
||||||
AudioPlaybackState.playing) {
|
// AudioPlaybackState.playing) {
|
||||||
_playing = false;
|
// _playing = false;
|
||||||
_audioPlayer.pause();
|
// _audioPlayer.pause();
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@override
|
// @override
|
||||||
void onAudioFocusGained(AudioInterruption interruption) {
|
// void onAudioFocusGained(AudioInterruption interruption) {
|
||||||
switch (interruption) {
|
// switch (interruption) {
|
||||||
case AudioInterruption.temporaryPause:
|
// case AudioInterruption.temporaryPause:
|
||||||
if (!_playing && _interrupted) onPlay();
|
// if (!_playing && _interrupted) onPlay();
|
||||||
break;
|
// break;
|
||||||
case AudioInterruption.temporaryDuck:
|
// case AudioInterruption.temporaryDuck:
|
||||||
_audioPlayer.setVolume(1.0);
|
// _audioPlayer.setVolume(1.0);
|
||||||
break;
|
// break;
|
||||||
default:
|
// default:
|
||||||
break;
|
// break;
|
||||||
}
|
// }
|
||||||
_interrupted = false;
|
// _interrupted = false;
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@override
|
@override
|
||||||
Future onCustomAction(funtion, argument) async {
|
Future onCustomAction(funtion, argument) async {
|
||||||
switch (funtion) {
|
switch (funtion) {
|
||||||
|
@ -1041,9 +1102,14 @@ class AudioPlayerTask extends BackgroundAudioTask {
|
||||||
if (position == null) {
|
if (position == null) {
|
||||||
position = _audioPlayer.playbackEvent.position;
|
position = _audioPlayer.playbackEvent.position;
|
||||||
}
|
}
|
||||||
|
final index = await layoutStorage.getInt(defaultValue: 0);
|
||||||
await AudioServiceBackground.setState(
|
await AudioServiceBackground.setState(
|
||||||
controls: getControls(),
|
controls: getControls(index),
|
||||||
systemActions: [MediaAction.seekTo],
|
systemActions: [
|
||||||
|
MediaAction.seekTo,
|
||||||
|
MediaAction.seekForward,
|
||||||
|
MediaAction.seekBackward,
|
||||||
|
],
|
||||||
processingState:
|
processingState:
|
||||||
processingState ?? AudioServiceBackground.state.processingState,
|
processingState ?? AudioServiceBackground.state.processingState,
|
||||||
playing: _playing ?? false,
|
playing: _playing ?? false,
|
||||||
|
@ -1053,11 +1119,36 @@ class AudioPlayerTask extends BackgroundAudioTask {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
List<MediaControl> getControls() {
|
List<MediaControl> getControls(int index) {
|
||||||
if (_playing) {
|
switch (index) {
|
||||||
return [pauseControl, forward, skipToNextControl, stopControl];
|
case 0:
|
||||||
} else {
|
if (_playing) {
|
||||||
return [playControl, forward, skipToNextControl, stopControl];
|
return [pauseControl, forward, skipToNextControl, stopControl];
|
||||||
|
} else {
|
||||||
|
return [playControl, forward, skipToNextControl, stopControl];
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
if (_playing) {
|
||||||
|
return [pauseControl, rewind, skipToNextControl, stopControl];
|
||||||
|
} else {
|
||||||
|
return [playControl, rewind, skipToNextControl, stopControl];
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
if (_playing) {
|
||||||
|
return [rewind, pauseControl, forward, stopControl];
|
||||||
|
} else {
|
||||||
|
return [rewind, playControl, forward, stopControl];
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if (_playing) {
|
||||||
|
return [pauseControl, forward, skipToNextControl, stopControl];
|
||||||
|
} else {
|
||||||
|
return [playControl, forward, skipToNextControl, stopControl];
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -456,35 +456,37 @@ class SettingState extends ChangeNotifier {
|
||||||
localeList.isEmpty ? '' : '${'${localeList.first}-'}${localeList[1]}';
|
localeList.isEmpty ? '' : '${'${localeList.first}-'}${localeList[1]}';
|
||||||
var hideListened =
|
var hideListened =
|
||||||
await KeyValueStorage(hideListenedKey).getBool(defaultValue: false);
|
await KeyValueStorage(hideListenedKey).getBool(defaultValue: false);
|
||||||
|
var notificationLayout =
|
||||||
|
await KeyValueStorage(notificationLayoutKey).getInt(defaultValue: 0);
|
||||||
|
|
||||||
return SettingsBackup(
|
return SettingsBackup(
|
||||||
theme: theme,
|
theme: theme,
|
||||||
accentColor: accentColor,
|
accentColor: accentColor,
|
||||||
realDark: realDark,
|
realDark: realDark,
|
||||||
autoPlay: autoPlay,
|
autoPlay: autoPlay,
|
||||||
autoUpdate: autoUpdate,
|
autoUpdate: autoUpdate,
|
||||||
updateInterval: updateInterval,
|
updateInterval: updateInterval,
|
||||||
downloadUsingData: downloadUsingData,
|
downloadUsingData: downloadUsingData,
|
||||||
cacheMax: cacheMax,
|
cacheMax: cacheMax,
|
||||||
podcastLayout: podcastLayout,
|
podcastLayout: podcastLayout,
|
||||||
recentLayout: recentLayout,
|
recentLayout: recentLayout,
|
||||||
favLayout: favLayout,
|
favLayout: favLayout,
|
||||||
downloadLayout: downloadLayout,
|
downloadLayout: downloadLayout,
|
||||||
autoDownloadNetwork: autoDownloadNetwork,
|
autoDownloadNetwork: autoDownloadNetwork,
|
||||||
episodePopupMenu: episodePopupMenu.map((e) => e.toString()).toList(),
|
episodePopupMenu: episodePopupMenu.map((e) => e.toString()).toList(),
|
||||||
autoDelete: autoDelete,
|
autoDelete: autoDelete,
|
||||||
autoSleepTimer: autoSleepTimer,
|
autoSleepTimer: autoSleepTimer,
|
||||||
autoSleepTimerStart: autoSleepTimerStart,
|
autoSleepTimerStart: autoSleepTimerStart,
|
||||||
autoSleepTimerEnd: autoSleepTimerEnd,
|
autoSleepTimerEnd: autoSleepTimerEnd,
|
||||||
autoSleepTimerMode: autoSleepTimerMode,
|
autoSleepTimerMode: autoSleepTimerMode,
|
||||||
defaultSleepTime: defaultSleepTime,
|
defaultSleepTime: defaultSleepTime,
|
||||||
tapToOpenPopupMenu: tapToOpenPopupMenu,
|
tapToOpenPopupMenu: tapToOpenPopupMenu,
|
||||||
fastForwardSeconds: fastForwardSeconds,
|
fastForwardSeconds: fastForwardSeconds,
|
||||||
rewindSeconds: rewindSeconds,
|
rewindSeconds: rewindSeconds,
|
||||||
playerHeight: playerHeight,
|
playerHeight: playerHeight,
|
||||||
locale: backupLocale,
|
locale: backupLocale,
|
||||||
hideListened: hideListened,
|
hideListened: hideListened,
|
||||||
);
|
notificationLayout: notificationLayout);
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> restore(SettingsBackup backup) async {
|
Future<void> restore(SettingsBackup backup) async {
|
||||||
|
@ -516,6 +518,8 @@ class SettingState extends ChangeNotifier {
|
||||||
await KeyValueStorage(tapToOpenPopupMenuKey)
|
await KeyValueStorage(tapToOpenPopupMenuKey)
|
||||||
.saveBool(backup.tapToOpenPopupMenu);
|
.saveBool(backup.tapToOpenPopupMenu);
|
||||||
await KeyValueStorage(hideListenedKey).saveBool(backup.hideListened);
|
await KeyValueStorage(hideListenedKey).saveBool(backup.hideListened);
|
||||||
|
await KeyValueStorage(notificationLayoutKey)
|
||||||
|
.saveInt(backup.notificationLayout);
|
||||||
if (backup.locale == '') {
|
if (backup.locale == '') {
|
||||||
await localeStorage.saveStringList([]);
|
await localeStorage.saveStringList([]);
|
||||||
await S.load(Locale(Intl.systemLocale));
|
await S.load(Locale(Intl.systemLocale));
|
||||||
|
|
|
@ -25,6 +25,7 @@ class SettingsBackup {
|
||||||
final int playerHeight;
|
final int playerHeight;
|
||||||
final String locale;
|
final String locale;
|
||||||
final bool hideListened;
|
final bool hideListened;
|
||||||
|
final int notificationLayout;
|
||||||
SettingsBackup(
|
SettingsBackup(
|
||||||
{this.theme,
|
{this.theme,
|
||||||
this.accentColor,
|
this.accentColor,
|
||||||
|
@ -51,7 +52,8 @@ class SettingsBackup {
|
||||||
this.rewindSeconds,
|
this.rewindSeconds,
|
||||||
this.playerHeight,
|
this.playerHeight,
|
||||||
this.locale,
|
this.locale,
|
||||||
this.hideListened});
|
this.hideListened,
|
||||||
|
this.notificationLayout});
|
||||||
|
|
||||||
Map<String, Object> toJson() {
|
Map<String, Object> toJson() {
|
||||||
return {
|
return {
|
||||||
|
@ -79,7 +81,8 @@ class SettingsBackup {
|
||||||
'rewindSeconds': rewindSeconds,
|
'rewindSeconds': rewindSeconds,
|
||||||
'playerHeight': playerHeight,
|
'playerHeight': playerHeight,
|
||||||
'locale': locale,
|
'locale': locale,
|
||||||
'hideListened': hideListened
|
'hideListened': hideListened,
|
||||||
|
'notificationLayout': notificationLayout
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -110,6 +113,7 @@ class SettingsBackup {
|
||||||
rewindSeconds: json['rewindSeconds'] as int,
|
rewindSeconds: json['rewindSeconds'] as int,
|
||||||
playerHeight: json['playerHeight'] as int,
|
playerHeight: json['playerHeight'] as int,
|
||||||
locale: json['locale'] as String,
|
locale: json['locale'] as String,
|
||||||
hideListened: json['hideListened'] as bool);
|
hideListened: json['hideListened'] as bool,
|
||||||
|
notificationLayout: json['notificationLayout'] as int);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,8 @@ dependencies:
|
||||||
flutter_localizations:
|
flutter_localizations:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
auto_animated: ^2.1.0
|
auto_animated: ^2.1.0
|
||||||
audio_service: ^0.11.2
|
audio_service: ^0.14.0
|
||||||
|
audio_session: ^0.0.3
|
||||||
cached_network_image: ^2.2.0+1
|
cached_network_image: ^2.2.0+1
|
||||||
color_thief_flutter: ^1.0.2
|
color_thief_flutter: ^1.0.2
|
||||||
cupertino_icons: ^0.1.3
|
cupertino_icons: ^0.1.3
|
||||||
|
|