diff --git a/README.md b/README.md index 5764052..bbe7a31 100644 --- a/README.md +++ b/README.md @@ -54,6 +54,8 @@ Credit to [Localizely](https://localizely.com/) for kind support to open source ### ![Spanish] +### ![Portuguese] + ## License Tsacdop is licensed under the [GPL v3.0](https://github.com/stonega/tsacdop/blob/master/LICENSE) license. @@ -168,10 +170,11 @@ For help getting started with Flutter, view our [github release - recent]: https://github.com/stonega/tsacdop/releases [github downloads]: https://img.shields.io/github/downloads/stonega/tsacdop/total?color=%230000d&label=downloads [localizely]: https://img.shields.io/badge/dynamic/json?color=%2326c6da&label=localizely&query=%24.languages.length&url=https%3A%2F%2Fapi.localizely.com%2Fv1%2Fprojects%2Fbde4e9bd-4cb2-449b-9de2-18f231ddb47d%2Fstatus -[English]: https://img.shields.io/badge/dynamic/json?style=for-the-badge&color=%2323CCC6&label=English&query=%24.languages%5B0%5D.reviewedProgress&url=https%3A%2F%2Fapi.localizely.com%2Fv1%2Fprojects%2Fbde4e9bd-4cb2-449b-9de2-18f231ddb47d%2Fstatus&suffix=% -[Chinese Simplified]: https://img.shields.io/badge/dynamic/json?style=for-the-badge&color=%2323CCC6&label=Chinese%20Simplified&query=%24.languages%5B1%5D.reviewedProgress&url=https%3A%2F%2Fapi.localizely.com%2Fv1%2Fprojects%2Fbde4e9bd-4cb2-449b-9de2-18f231ddb47d%2Fstatus&suffix=% -[French]: https://img.shields.io/badge/dynamic/json?style=for-the-badge&color=%2323CCC6&label=French(ppp)&query=%24.languages%5B3%5D.reviewedProgress&url=https%3A%2F%2Fapi.localizely.com%2Fv1%2Fprojects%2Fbde4e9bd-4cb2-449b-9de2-18f231ddb47d%2Fstatus&suffix=% -[Spanish]: https://img.shields.io/badge/dynamic/json?style=for-the-badge&color=%2323CCC6&label=Spanish(Joel)&query=%24.languages%5B5%5D.reviewedProgress&url=https%3A%2F%2Fapi.localizely.com%2Fv1%2Fprojects%2Fbde4e9bd-4cb2-449b-9de2-18f231ddb47d%2Fstatus&suffix=% +[English]: https://img.shields.io/badge/dynamic/json?style=for-the-badge&color=%2323CCC6&label=English&query=%24.languages%5B3%5D.reviewedProgress&url=https%3A%2F%2Fapi.localizely.com%2Fv1%2Fprojects%2Fbde4e9bd-4cb2-449b-9de2-18f231ddb47d%2Fstatus&suffix=% +[Chinese Simplified]: https://img.shields.io/badge/dynamic/json?style=for-the-badge&color=%2323CCC6&label=Chinese%20Simplified&query=%24.languages%5B2%5D.reviewedProgress&url=https%3A%2F%2Fapi.localizely.com%2Fv1%2Fprojects%2Fbde4e9bd-4cb2-449b-9de2-18f231ddb47d%2Fstatus&suffix=% +[French]: https://img.shields.io/badge/dynamic/json?style=for-the-badge&color=%2323CCC6&label=French(ppp)&query=%24.languages%5B5%5D.reviewedProgress&url=https%3A%2F%2Fapi.localizely.com%2Fv1%2Fprojects%2Fbde4e9bd-4cb2-449b-9de2-18f231ddb47d%2Fstatus&suffix=% +[Spanish]: https://img.shields.io/badge/dynamic/json?style=for-the-badge&color=%2323CCC6&label=Spanish(Joel)&query=%24.languages%5B8%5D.reviewedProgress&url=https%3A%2F%2Fapi.localizely.com%2Fv1%2Fprojects%2Fbde4e9bd-4cb2-449b-9de2-18f231ddb47d%2Fstatus&suffix=% +[Portuguese]: https://img.shields.io/badge/dynamic/json?style=for-the-badge&color=%2323CCC6&label=portuguese(Bruno)&query=%24.languages%5B10%5D.reviewedProgress&url=https%3A%2F%2Fapi.localizely.com%2Fv1%2Fprojects%2Fbde4e9bd-4cb2-449b-9de2-18f231ddb47d%2Fstatus&suffix=% [localizely - website]: https://localizely.com/ [google play - icon]: https://img.shields.io/badge/google-playStore-%2323CCC6 [google play]: https://play.google.com/store/apps/details?id=com.stonegate.tsacdop diff --git a/assets/pt.png b/assets/pt.png new file mode 100644 index 0000000..22a9911 Binary files /dev/null and b/assets/pt.png differ diff --git a/lib/generated/intl/messages_all.dart b/lib/generated/intl/messages_all.dart index fe731da..e58a17f 100644 --- a/lib/generated/intl/messages_all.dart +++ b/lib/generated/intl/messages_all.dart @@ -18,6 +18,7 @@ import 'package:intl/src/intl_helpers.dart'; import 'messages_en.dart' as messages_en; import 'messages_es.dart' as messages_es; import 'messages_fr.dart' as messages_fr; +import 'messages_pt.dart' as messages_pt; import 'messages_zh-Hans.dart' as messages_zh_hans; typedef Future LibraryLoader(); @@ -25,6 +26,7 @@ Map _deferredLibraries = { 'en': () => new Future.value(null), 'es': () => new Future.value(null), 'fr': () => new Future.value(null), + 'pt': () => new Future.value(null), 'zh_Hans': () => new Future.value(null), }; @@ -36,6 +38,8 @@ MessageLookupByLibrary _findExact(String localeName) { return messages_es.messages; case 'fr': return messages_fr.messages; + case 'pt': + return messages_pt.messages; case 'zh_Hans': return messages_zh_hans.messages; default: diff --git a/lib/generated/intl/messages_en.dart b/lib/generated/intl/messages_en.dart index 2f5623e..dc21f0b 100644 --- a/lib/generated/intl/messages_en.dart +++ b/lib/generated/intl/messages_en.dart @@ -39,43 +39,47 @@ class MessageLookup extends MessageLookupByLibrary { static m9(count) => "${Intl.plural(count, zero: '0 hour', one: '${count} hour', other: '${count} hours')}"; - static m10(count) => "${Intl.plural(count, zero: 'Just now', one: '${count} minute ago', other: '${count} minutes ago')}"; + static m10(service) => "Integrate with ${service}"; - static m11(count) => "${Intl.plural(count, zero: '0 min', one: '${count} min', other: '${count} mins')}"; + static m11(userName) => "Logged in as ${userName}"; - static m12(title) => "Fetch data ${title}"; + static m12(count) => "${Intl.plural(count, zero: 'Just now', one: '${count} minute ago', other: '${count} minutes ago')}"; - static m13(title) => "Subscribing failed, network error ${title}"; + static m13(count) => "${Intl.plural(count, zero: '0 min', one: '${count} min', other: '${count} mins')}"; - static m14(title) => "Subscribe ${title}"; + static m14(title) => "Fetch data ${title}"; - static m15(title) => "Subscribing failed, podcast already exists ${title}"; + static m15(title) => "Subscribing failed, network error ${title}"; - static m16(title) => "Subscribed successfully ${title}"; + static m16(title) => "Subscribe ${title}"; - static m17(title) => "Update ${title}"; + static m17(title) => "Subscribing failed, podcast already exists ${title}"; - static m18(title) => "Update error ${title}"; + static m18(title) => "Subscribed successfully ${title}"; - static m19(count) => "${Intl.plural(count, zero: '', one: 'Podcast', other: 'Podcasts')}"; + static m19(title) => "Update ${title}"; - static m20(date) => "Published at ${date}"; + static m20(title) => "Update error ${title}"; - static m21(date) => "Removed at ${date}"; + static m21(count) => "${Intl.plural(count, zero: '', one: 'Podcast', other: 'Podcasts')}"; - static m22(count) => "${Intl.plural(count, zero: '0 sec', one: '${count} sec', other: '${count} sec')}"; + static m22(date) => "Published at ${date}"; - static m23(count) => "${Intl.plural(count, zero: 'Just now', one: '${count} second ago', other: '${count} seconds ago')}"; + static m23(date) => "Removed at ${date}"; - static m24(time) => "Last time ${time}"; + static m24(count) => "${Intl.plural(count, zero: '0 sec', one: '${count} sec', other: '${count} sec')}"; - static m25(time) => "${time} Left"; + static m25(count) => "${Intl.plural(count, zero: 'Just now', one: '${count} second ago', other: '${count} seconds ago')}"; - static m26(time) => "To ${time}"; + static m26(time) => "Last time ${time}"; - static m27(count) => "${Intl.plural(count, zero: 'No update', one: 'Updated ${count} episode', other: 'Updated ${count} episodes')}"; + static m27(time) => "${time} Left"; - static m28(version) => "Version: ${version}"; + static m28(time) => "To ${time}"; + + static m29(count) => "${Intl.plural(count, zero: 'No update', one: 'Updated ${count} episode', other: 'Updated ${count} episodes')}"; + + static m30(version) => "Version: ${version}"; final messages = _notInlinedMessages(_notInlinedMessages); static _notInlinedMessages(_) => { @@ -140,6 +144,7 @@ class MessageLookup extends MessageLookupByLibrary { "fonts" : MessageLookupByLibrary.simpleMessage("Fonts"), "from" : m5, "goodNight" : MessageLookupByLibrary.simpleMessage("Good Night"), + "gpodderLoginDes" : MessageLookupByLibrary.simpleMessage("Congratulations! You have linked gpodder.net account successfully. Tsacdop will automatically sync subscriptions on your device with your gpodder.net account."), "groupExisted" : MessageLookupByLibrary.simpleMessage("Group already exists"), "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."), @@ -157,9 +162,12 @@ class MessageLookup extends MessageLookupByLibrary { "hoursAgo" : m8, "hoursCount" : m9, "import" : MessageLookupByLibrary.simpleMessage("Import"), + "intergateWith" : m10, "introFourthPage" : MessageLookupByLibrary.simpleMessage("You can long press on episode card for quick actions."), "introSecondPage" : MessageLookupByLibrary.simpleMessage("Subscribe podcast via search or import OPML file."), "introThirdPage" : MessageLookupByLibrary.simpleMessage("You can create new group for podcasts."), + "invalidName" : MessageLookupByLibrary.simpleMessage("Invalid username"), + "lastUpdate" : MessageLookupByLibrary.simpleMessage("Last update"), "later" : MessageLookupByLibrary.simpleMessage("Later"), "lightMode" : MessageLookupByLibrary.simpleMessage("Light mode"), "like" : MessageLookupByLibrary.simpleMessage("Like"), @@ -168,6 +176,10 @@ class MessageLookup extends MessageLookupByLibrary { "listen" : MessageLookupByLibrary.simpleMessage("Listen"), "listened" : MessageLookupByLibrary.simpleMessage("Listened"), "loadMore" : MessageLookupByLibrary.simpleMessage("Load more"), + "loggedInAs" : m11, + "login" : MessageLookupByLibrary.simpleMessage("Login"), + "loginFailed" : MessageLookupByLibrary.simpleMessage("Login failed"), + "logout" : MessageLookupByLibrary.simpleMessage("Logout"), "mark" : MessageLookupByLibrary.simpleMessage("Mark"), "markConfirm" : MessageLookupByLibrary.simpleMessage("Confirm marking"), "markConfirmContent" : MessageLookupByLibrary.simpleMessage("Confirm to mark all episodes as listened?"), @@ -178,8 +190,8 @@ class MessageLookup extends MessageLookupByLibrary { "menuMarkAllListened" : MessageLookupByLibrary.simpleMessage("Mark All As Listened"), "menuViewRSS" : MessageLookupByLibrary.simpleMessage("Visit RSS Feed"), "menuVisitSite" : MessageLookupByLibrary.simpleMessage("Visit Site"), - "minsAgo" : m10, - "minsCount" : m11, + "minsAgo" : m12, + "minsCount" : m13, "network" : MessageLookupByLibrary.simpleMessage("Network"), "newGroup" : MessageLookupByLibrary.simpleMessage("Create new group"), "newestFirst" : MessageLookupByLibrary.simpleMessage("Newest first"), @@ -189,15 +201,17 @@ class MessageLookup extends MessageLookupByLibrary { "noEpisodeRecent" : MessageLookupByLibrary.simpleMessage("No episodes received yet"), "noPodcastGroup" : MessageLookupByLibrary.simpleMessage("No podcasts in this group"), "noShownote" : MessageLookupByLibrary.simpleMessage("No show notes available for this episode."), - "notificaitonFatch" : m12, - "notificationNetworkError" : m13, + "notificaitonFatch" : m14, + "notificationNetworkError" : m15, "notificationSetting" : MessageLookupByLibrary.simpleMessage("Notification panel"), - "notificationSubscribe" : m14, - "notificationSubscribeExisted" : m15, - "notificationSuccess" : m16, - "notificationUpdate" : m17, - "notificationUpdateError" : m18, + "notificationSubscribe" : m16, + "notificationSubscribeExisted" : m17, + "notificationSuccess" : m18, + "notificationUpdate" : m19, + "notificationUpdateError" : m20, "oldestFirst" : MessageLookupByLibrary.simpleMessage("Oldest first"), + "passwdRequired" : MessageLookupByLibrary.simpleMessage("Password required"), + "password" : MessageLookupByLibrary.simpleMessage("Password"), "pause" : MessageLookupByLibrary.simpleMessage("Pause"), "play" : MessageLookupByLibrary.simpleMessage("Play"), "playback" : MessageLookupByLibrary.simpleMessage("Playback control"), @@ -207,7 +221,7 @@ class MessageLookup extends MessageLookupByLibrary { "playerHeightTall" : MessageLookupByLibrary.simpleMessage("High"), "playing" : MessageLookupByLibrary.simpleMessage("Playing"), "plugins" : MessageLookupByLibrary.simpleMessage("Plugins"), - "podcast" : m19, + "podcast" : m21, "podcastSubscribed" : MessageLookupByLibrary.simpleMessage("Podcast subscribed"), "popupMenuDownloadDes" : MessageLookupByLibrary.simpleMessage("Download episode"), "popupMenuLaterDes" : MessageLookupByLibrary.simpleMessage("Add episode to playlist"), @@ -215,7 +229,7 @@ class MessageLookup extends MessageLookupByLibrary { "popupMenuMarkDes" : MessageLookupByLibrary.simpleMessage("Mark episode as listened to"), "popupMenuPlayDes" : MessageLookupByLibrary.simpleMessage("Play the episode"), "privacyPolicy" : MessageLookupByLibrary.simpleMessage("Privacy Policy"), - "published" : m20, + "published" : m22, "publishedDaily" : MessageLookupByLibrary.simpleMessage("Published daily"), "publishedMonthly" : MessageLookupByLibrary.simpleMessage("Published monthly"), "publishedWeekly" : MessageLookupByLibrary.simpleMessage("Published weekly"), @@ -225,15 +239,15 @@ class MessageLookup extends MessageLookupByLibrary { "remove" : MessageLookupByLibrary.simpleMessage("Remove"), "removeConfirm" : MessageLookupByLibrary.simpleMessage("Removal confirmation"), "removePodcastDes" : MessageLookupByLibrary.simpleMessage("Are you sure you want to unsubscribe?"), - "removedAt" : m21, + "removedAt" : m23, "save" : MessageLookupByLibrary.simpleMessage("Save"), "schedule" : MessageLookupByLibrary.simpleMessage("Schedule"), "search" : MessageLookupByLibrary.simpleMessage("Search"), "searchEpisode" : MessageLookupByLibrary.simpleMessage("Search episode"), "searchInvalidRss" : MessageLookupByLibrary.simpleMessage("Invalid RSS link"), "searchPodcast" : MessageLookupByLibrary.simpleMessage("Search for podcasts"), - "secCount" : m22, - "secondsAgo" : m23, + "secCount" : m24, + "secondsAgo" : m25, "settingStorage" : MessageLookupByLibrary.simpleMessage("Storage"), "settings" : MessageLookupByLibrary.simpleMessage("Settings"), "settingsAccentColor" : MessageLookupByLibrary.simpleMessage("Accent color"), @@ -313,13 +327,15 @@ class MessageLookup extends MessageLookupByLibrary { "skipSilence" : MessageLookupByLibrary.simpleMessage("Skip silence"), "skipToNext" : MessageLookupByLibrary.simpleMessage("Skip to next"), "sleepTimer" : MessageLookupByLibrary.simpleMessage("Sleep timer"), + "status" : MessageLookupByLibrary.simpleMessage("Status"), "stop" : MessageLookupByLibrary.simpleMessage("Stop"), "subscribe" : MessageLookupByLibrary.simpleMessage("Subscribe"), "subscribeExportDes" : MessageLookupByLibrary.simpleMessage("Export OPML file of all podcasts"), + "syncNow" : MessageLookupByLibrary.simpleMessage("Sync now"), "systemDefault" : MessageLookupByLibrary.simpleMessage("System default"), - "timeLastPlayed" : m24, - "timeLeft" : m25, - "to" : m26, + "timeLastPlayed" : m26, + "timeLeft" : m27, + "to" : m28, "toastAddPlaylist" : MessageLookupByLibrary.simpleMessage("Added to playlist"), "toastDiscovery" : MessageLookupByLibrary.simpleMessage("Discovery feature reenabled, please reopen the app"), "toastFileError" : MessageLookupByLibrary.simpleMessage("File error, subscribing failed"), @@ -340,8 +356,10 @@ class MessageLookup extends MessageLookupByLibrary { "unlike" : MessageLookupByLibrary.simpleMessage("Unlike"), "unliked" : MessageLookupByLibrary.simpleMessage("Episode removed from favorites"), "updateDate" : MessageLookupByLibrary.simpleMessage("Update date"), - "updateEpisodesCount" : m27, + "updateEpisodesCount" : m29, "updateFailed" : MessageLookupByLibrary.simpleMessage("Update failed, network error"), - "version" : m28 + "username" : MessageLookupByLibrary.simpleMessage("Username"), + "usernameRequired" : MessageLookupByLibrary.simpleMessage("Username required"), + "version" : m30 }; } diff --git a/lib/generated/intl/messages_es.dart b/lib/generated/intl/messages_es.dart index e081106..5dd7840 100644 --- a/lib/generated/intl/messages_es.dart +++ b/lib/generated/intl/messages_es.dart @@ -39,43 +39,47 @@ class MessageLookup extends MessageLookupByLibrary { static m9(count) => "${Intl.plural(count, zero: 'Cero horas', one: '${count} hora', other: '${count} horas')}"; - static m10(count) => "${Intl.plural(count, zero: 'Justo Ahora', one: 'Hace ${count} minuto ', other: 'Hace ${count} minutos')}"; + static m10(service) => "Integrate with ${service}"; - static m11(count) => "${Intl.plural(count, zero: '0 minutos', one: '${count} minuto', other: '${count} minutos')}"; + static m11(userName) => "Logged in as ${userName}"; - static m12(title) => "Obtener datos ${title}"; + static m12(count) => "${Intl.plural(count, zero: 'Justo Ahora', one: 'Hace ${count} minuto ', other: 'Hace ${count} minutos')}"; - static m13(title) => "Suscripción fallida, error de red ${title}"; + static m13(count) => "${Intl.plural(count, zero: '0 minutos', one: '${count} minuto', other: '${count} minutos')}"; - static m14(title) => "Suscribir ${title}"; + static m14(title) => "Obtener datos ${title}"; - static m15(title) => "Suscripción fallida, podcast ya existe ${title}"; + static m15(title) => "Suscripción fallida, error de red ${title}"; - static m16(title) => "Suscripción exitosa"; + static m16(title) => "Suscribir ${title}"; - static m17(title) => "Actualizar ${title}"; + static m17(title) => "Suscripción fallida, podcast ya existe ${title}"; - static m18(title) => "Error de actualización ${title}"; + static m18(title) => "Suscripción exitosa"; - static m19(count) => "${Intl.plural(count, zero: '', one: 'Podcast', other: 'Podcasts')}"; + static m19(title) => "Actualizar ${title}"; - static m20(date) => "Publicado el ${date}"; + static m20(title) => "Error de actualización ${title}"; - static m21(date) => "Removido el (fecha)"; + static m21(count) => "${Intl.plural(count, zero: '', one: 'Podcast', other: 'Podcasts')}"; - static m22(count) => "${Intl.plural(count, zero: '0 segundos', one: '${count} segundo', other: '${count} segundos')}"; + static m22(date) => "Publicado el ${date}"; - static m23(count) => "${Intl.plural(count, zero: 'Justo ahora', one: 'Hace ${count} segundo ', other: 'Hace ${count} segundos')}"; + static m23(date) => "Removido el (fecha)"; - static m24(time) => "Tiempo previo ${time}"; + static m24(count) => "${Intl.plural(count, zero: '0 segundos', one: '${count} segundo', other: '${count} segundos')}"; - static m25(time) => "${time} Restante"; + static m25(count) => "${Intl.plural(count, zero: 'Justo ahora', one: 'Hace ${count} segundo ', other: 'Hace ${count} segundos')}"; - static m26(time) => "A ${time}"; + static m26(time) => "Tiempo previo ${time}"; - static m27(count) => "${Intl.plural(count, zero: 'No hay actualizaciones', one: 'Se actualizo ${count} episodio', other: 'Se actualizaron ${count} episodios')}"; + static m27(time) => "${time} Restante"; - static m28(version) => "Versión: ${version}"; + static m28(time) => "A ${time}"; + + static m29(count) => "${Intl.plural(count, zero: 'No hay actualizaciones', one: 'Se actualizo ${count} episodio', other: 'Se actualizaron ${count} episodios')}"; + + static m30(version) => "Versión: ${version}"; final messages = _notInlinedMessages(_notInlinedMessages); static _notInlinedMessages(_) => { @@ -140,6 +144,7 @@ class MessageLookup extends MessageLookupByLibrary { "fonts" : MessageLookupByLibrary.simpleMessage("Tipografías"), "from" : m5, "goodNight" : MessageLookupByLibrary.simpleMessage("Buenas noches"), + "gpodderLoginDes" : MessageLookupByLibrary.simpleMessage("Congratulations! You have linked gpodder.net account successfully. Tsacdop will automatically sync subscriptions on your device with your gpodder.net account."), "groupExisted" : MessageLookupByLibrary.simpleMessage("El grupo ya existe"), "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"), @@ -157,9 +162,12 @@ class MessageLookup extends MessageLookupByLibrary { "hoursAgo" : m8, "hoursCount" : m9, "import" : MessageLookupByLibrary.simpleMessage("Importar"), + "intergateWith" : m10, "introFourthPage" : MessageLookupByLibrary.simpleMessage("Puedes mantener presionado un episodio para realizar acciones rápidas"), "introSecondPage" : MessageLookupByLibrary.simpleMessage("Suscribete a podcasts buscándolos, o importando un archivo OPML"), "introThirdPage" : MessageLookupByLibrary.simpleMessage("Puedes crear un nuevo grupo de podcasts"), + "invalidName" : MessageLookupByLibrary.simpleMessage("Invalid username"), + "lastUpdate" : MessageLookupByLibrary.simpleMessage("Last update"), "later" : MessageLookupByLibrary.simpleMessage("Despues"), "lightMode" : MessageLookupByLibrary.simpleMessage("Modo claro"), "like" : MessageLookupByLibrary.simpleMessage("Me gusta"), @@ -168,6 +176,10 @@ class MessageLookup extends MessageLookupByLibrary { "listen" : MessageLookupByLibrary.simpleMessage("Escuchar"), "listened" : MessageLookupByLibrary.simpleMessage("Escuchado"), "loadMore" : MessageLookupByLibrary.simpleMessage("Cargar mas"), + "loggedInAs" : m11, + "login" : MessageLookupByLibrary.simpleMessage("Loign"), + "loginFailed" : MessageLookupByLibrary.simpleMessage("Login failed"), + "logout" : MessageLookupByLibrary.simpleMessage("Logout"), "mark" : MessageLookupByLibrary.simpleMessage("Completado"), "markConfirm" : MessageLookupByLibrary.simpleMessage("Confirmar marcado"), "markConfirmContent" : MessageLookupByLibrary.simpleMessage("¿Marcar todos los episodios como escuchados?"), @@ -178,8 +190,8 @@ class MessageLookup extends MessageLookupByLibrary { "menuMarkAllListened" : MessageLookupByLibrary.simpleMessage("Marcar todo como escuchado"), "menuViewRSS" : MessageLookupByLibrary.simpleMessage("Visitar feed RSS"), "menuVisitSite" : MessageLookupByLibrary.simpleMessage("Visitar sitio web"), - "minsAgo" : m10, - "minsCount" : m11, + "minsAgo" : m12, + "minsCount" : m13, "network" : MessageLookupByLibrary.simpleMessage("Red"), "newGroup" : MessageLookupByLibrary.simpleMessage("Crear grupo nuevo"), "newestFirst" : MessageLookupByLibrary.simpleMessage("Mas recientes primero"), @@ -189,15 +201,17 @@ class MessageLookup extends MessageLookupByLibrary { "noEpisodeRecent" : MessageLookupByLibrary.simpleMessage("Aun no hay episodios recibidos"), "noPodcastGroup" : MessageLookupByLibrary.simpleMessage("No hay podcasts en este grupo"), "noShownote" : MessageLookupByLibrary.simpleMessage("Aun no hay notas disponibles para este episodio"), - "notificaitonFatch" : m12, - "notificationNetworkError" : m13, + "notificaitonFatch" : m14, + "notificationNetworkError" : m15, "notificationSetting" : MessageLookupByLibrary.simpleMessage("Notification panel"), - "notificationSubscribe" : m14, - "notificationSubscribeExisted" : m15, - "notificationSuccess" : m16, - "notificationUpdate" : m17, - "notificationUpdateError" : m18, + "notificationSubscribe" : m16, + "notificationSubscribeExisted" : m17, + "notificationSuccess" : m18, + "notificationUpdate" : m19, + "notificationUpdateError" : m20, "oldestFirst" : MessageLookupByLibrary.simpleMessage("Mas antiguos primero"), + "passwdRequired" : MessageLookupByLibrary.simpleMessage("Password required"), + "password" : MessageLookupByLibrary.simpleMessage("Password"), "pause" : MessageLookupByLibrary.simpleMessage("Pause"), "play" : MessageLookupByLibrary.simpleMessage("Reproducir"), "playback" : MessageLookupByLibrary.simpleMessage("Control de reproducción"), @@ -207,7 +221,7 @@ class MessageLookup extends MessageLookupByLibrary { "playerHeightTall" : MessageLookupByLibrary.simpleMessage("Alto"), "playing" : MessageLookupByLibrary.simpleMessage("Reproduciendo"), "plugins" : MessageLookupByLibrary.simpleMessage("Plugins"), - "podcast" : m19, + "podcast" : m21, "podcastSubscribed" : MessageLookupByLibrary.simpleMessage("Podcast añadido"), "popupMenuDownloadDes" : MessageLookupByLibrary.simpleMessage("Descargar episodio"), "popupMenuLaterDes" : MessageLookupByLibrary.simpleMessage("Añadir episodio a lista de reproducción"), @@ -215,7 +229,7 @@ class MessageLookup extends MessageLookupByLibrary { "popupMenuMarkDes" : MessageLookupByLibrary.simpleMessage("Marcar episodio como escuchado"), "popupMenuPlayDes" : MessageLookupByLibrary.simpleMessage("Reproducir episodio\n"), "privacyPolicy" : MessageLookupByLibrary.simpleMessage("Política de privacidad"), - "published" : m20, + "published" : m22, "publishedDaily" : MessageLookupByLibrary.simpleMessage("Publicado diariamente"), "publishedMonthly" : MessageLookupByLibrary.simpleMessage("Publicado mensualmente"), "publishedWeekly" : MessageLookupByLibrary.simpleMessage("Publicado semanalmente"), @@ -225,15 +239,15 @@ class MessageLookup extends MessageLookupByLibrary { "remove" : MessageLookupByLibrary.simpleMessage("Remover"), "removeConfirm" : MessageLookupByLibrary.simpleMessage("Confirma la remoción "), "removePodcastDes" : MessageLookupByLibrary.simpleMessage("¿Estas seguro de que deseas desuscribirte?"), - "removedAt" : m21, + "removedAt" : m23, "save" : MessageLookupByLibrary.simpleMessage("Guardar"), "schedule" : MessageLookupByLibrary.simpleMessage("Horario"), "search" : MessageLookupByLibrary.simpleMessage("Buscar"), "searchEpisode" : MessageLookupByLibrary.simpleMessage("Buscar episodio"), "searchInvalidRss" : MessageLookupByLibrary.simpleMessage("Enlace RSS invalido "), "searchPodcast" : MessageLookupByLibrary.simpleMessage("Buscar podcast"), - "secCount" : m22, - "secondsAgo" : m23, + "secCount" : m24, + "secondsAgo" : m25, "settingStorage" : MessageLookupByLibrary.simpleMessage("Almacenamiento"), "settings" : MessageLookupByLibrary.simpleMessage("Ajustes"), "settingsAccentColor" : MessageLookupByLibrary.simpleMessage("Color de acento "), @@ -313,13 +327,15 @@ class MessageLookup extends MessageLookupByLibrary { "skipSilence" : MessageLookupByLibrary.simpleMessage("Saltar silencios"), "skipToNext" : MessageLookupByLibrary.simpleMessage("Skip to next"), "sleepTimer" : MessageLookupByLibrary.simpleMessage("Temporizador de sueño"), + "status" : MessageLookupByLibrary.simpleMessage("Status"), "stop" : MessageLookupByLibrary.simpleMessage("Stop"), "subscribe" : MessageLookupByLibrary.simpleMessage("Suscribir"), "subscribeExportDes" : MessageLookupByLibrary.simpleMessage("Exportar OPML de todos los podcasts"), + "syncNow" : MessageLookupByLibrary.simpleMessage("Sync now"), "systemDefault" : MessageLookupByLibrary.simpleMessage("Acorde al sistema"), - "timeLastPlayed" : m24, - "timeLeft" : m25, - "to" : m26, + "timeLastPlayed" : m26, + "timeLeft" : m27, + "to" : m28, "toastAddPlaylist" : MessageLookupByLibrary.simpleMessage("Añadido a la lista de reproducción "), "toastDiscovery" : MessageLookupByLibrary.simpleMessage("El tutorial se ha reiniciado, reinicia la app porfavor"), "toastFileError" : MessageLookupByLibrary.simpleMessage("Error de archivo, suscripción fallida"), @@ -340,8 +356,10 @@ class MessageLookup extends MessageLookupByLibrary { "unlike" : MessageLookupByLibrary.simpleMessage("No me gusta"), "unliked" : MessageLookupByLibrary.simpleMessage("Episodio removido de favoritos"), "updateDate" : MessageLookupByLibrary.simpleMessage("Fecha de actualización "), - "updateEpisodesCount" : m27, + "updateEpisodesCount" : m29, "updateFailed" : MessageLookupByLibrary.simpleMessage("Actualización fallida, error de red"), - "version" : m28 + "username" : MessageLookupByLibrary.simpleMessage("Username"), + "usernameRequired" : MessageLookupByLibrary.simpleMessage("Username required"), + "version" : m30 }; } diff --git a/lib/generated/intl/messages_fr.dart b/lib/generated/intl/messages_fr.dart index 270fefc..4c63b90 100644 --- a/lib/generated/intl/messages_fr.dart +++ b/lib/generated/intl/messages_fr.dart @@ -39,43 +39,47 @@ class MessageLookup extends MessageLookupByLibrary { static m9(count) => "${Intl.plural(count, zero: '0 heure', one: '${count} heure', other: '${count} heures')}"; - static m10(count) => "${Intl.plural(count, zero: 'A l\'instant', one: 'Il y a ${count} minute', other: 'Il y a ${count} minutes')}"; + static m10(service) => "Integrate with ${service}"; - static m11(count) => "${Intl.plural(count, zero: '0 min', one: '${count} min', other: '${count} mins')}"; + static m11(userName) => "Logged in as ${userName}"; - static m12(title) => "Accès aux données ${title} "; + static m12(count) => "${Intl.plural(count, zero: 'A l\'instant', one: 'Il y a ${count} minute', other: 'Il y a ${count} minutes')}"; - static m13(title) => "Échec de l’abonnement, erreur réseau ${title} "; + static m13(count) => "${Intl.plural(count, zero: '0 min', one: '${count} min', other: '${count} mins')}"; - static m14(title) => "Abonnement en cours"; + static m14(title) => "Accès aux données ${title} "; - static m15(title) => "Échec de l’abonnement, le podcast existe déjà ${title}"; + static m15(title) => "Échec de l’abonnement, erreur réseau ${title} "; - static m16(title) => "Abonnement réussi."; + static m16(title) => "Abonnement en cours"; - static m17(title) => "Mise à jour ${title}"; + static m17(title) => "Échec de l’abonnement, le podcast existe déjà ${title}"; - static m18(title) => "Échec de la mise à jour ${title}"; + static m18(title) => "Abonnement réussi."; - static m19(count) => "${Intl.plural(count, zero: '', one: 'Podcast', other: 'Podcasts')}"; + static m19(title) => "Mise à jour ${title}"; - static m20(date) => "Publié le ${date}"; + static m20(title) => "Échec de la mise à jour ${title}"; - static m21(date) => "Supprimé le ${date}"; + static m21(count) => "${Intl.plural(count, zero: '', one: 'Podcast', other: 'Podcasts')}"; - static m22(count) => "${Intl.plural(count, zero: '0 sec', one: '${count} sec', other: '${count} sec')}"; + static m22(date) => "Publié le ${date}"; - static m23(count) => "${Intl.plural(count, zero: 'A l\'instant', one: 'Il y a ${count} seconde', other: 'Il y a ${count} secondes')}"; + static m23(date) => "Supprimé le ${date}"; - static m24(time) => "Dernière écoute à ${time}"; + static m24(count) => "${Intl.plural(count, zero: '0 sec', one: '${count} sec', other: '${count} sec')}"; - static m25(time) => "${time} Restant"; + static m25(count) => "${Intl.plural(count, zero: 'A l\'instant', one: 'Il y a ${count} seconde', other: 'Il y a ${count} secondes')}"; - static m26(time) => "à ${time}"; + static m26(time) => "Dernière écoute à ${time}"; - static m27(count) => "${Intl.plural(count, zero: 'Aucune mise à jour.', one: 'Mise à jour d\'${count} épisode.', other: 'Mise à jour de ${count} épisodes.')}"; + static m27(time) => "${time} Restant"; - static m28(version) => "Version : ${version}"; + static m28(time) => "à ${time}"; + + static m29(count) => "${Intl.plural(count, zero: 'Aucune mise à jour.', one: 'Mise à jour d\'${count} épisode.', other: 'Mise à jour de ${count} épisodes.')}"; + + static m30(version) => "Version : ${version}"; final messages = _notInlinedMessages(_notInlinedMessages); static _notInlinedMessages(_) => { @@ -140,6 +144,7 @@ class MessageLookup extends MessageLookupByLibrary { "fonts" : MessageLookupByLibrary.simpleMessage("Polices"), "from" : m5, "goodNight" : MessageLookupByLibrary.simpleMessage("Bonne nuit"), + "gpodderLoginDes" : MessageLookupByLibrary.simpleMessage("Congratulations! You have linked gpodder.net account successfully. Tsacdop will automatically sync subscriptions on your device with your gpodder.net account."), "groupExisted" : MessageLookupByLibrary.simpleMessage("Ce groupe existe déjà"), "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."), @@ -157,9 +162,12 @@ class MessageLookup extends MessageLookupByLibrary { "hoursAgo" : m8, "hoursCount" : m9, "import" : MessageLookupByLibrary.simpleMessage("Importer"), + "intergateWith" : m10, "introFourthPage" : MessageLookupByLibrary.simpleMessage("Un appui long sur un épisode lance les actions rapides."), "introSecondPage" : MessageLookupByLibrary.simpleMessage("S\'abonner aux podcasts via la section recherche ou un fichier OPML."), "introThirdPage" : MessageLookupByLibrary.simpleMessage("Vous pouvez créer des groupes de podcasts."), + "invalidName" : MessageLookupByLibrary.simpleMessage("Invalid username"), + "lastUpdate" : MessageLookupByLibrary.simpleMessage("Last update"), "later" : MessageLookupByLibrary.simpleMessage("Plus tard"), "lightMode" : MessageLookupByLibrary.simpleMessage("Mode clair"), "like" : MessageLookupByLibrary.simpleMessage("Like"), @@ -168,6 +176,10 @@ class MessageLookup extends MessageLookupByLibrary { "listen" : MessageLookupByLibrary.simpleMessage("Écoutés"), "listened" : MessageLookupByLibrary.simpleMessage("Écouté "), "loadMore" : MessageLookupByLibrary.simpleMessage("Voir plus"), + "loggedInAs" : m11, + "login" : MessageLookupByLibrary.simpleMessage("Login"), + "loginFailed" : MessageLookupByLibrary.simpleMessage("Login failed"), + "logout" : MessageLookupByLibrary.simpleMessage("Logout"), "mark" : MessageLookupByLibrary.simpleMessage("✓"), "markConfirm" : MessageLookupByLibrary.simpleMessage("Marquage effectué"), "markConfirmContent" : MessageLookupByLibrary.simpleMessage("Marquer tous les épisodes comme lus ?"), @@ -178,8 +190,8 @@ class MessageLookup extends MessageLookupByLibrary { "menuMarkAllListened" : MessageLookupByLibrary.simpleMessage("Marquer comme tous lu"), "menuViewRSS" : MessageLookupByLibrary.simpleMessage("Accéder au flux RSS"), "menuVisitSite" : MessageLookupByLibrary.simpleMessage("Accéder au site"), - "minsAgo" : m10, - "minsCount" : m11, + "minsAgo" : m12, + "minsCount" : m13, "network" : MessageLookupByLibrary.simpleMessage("Réseau"), "newGroup" : MessageLookupByLibrary.simpleMessage("Créer un nouveau groupe"), "newestFirst" : MessageLookupByLibrary.simpleMessage("Le plus récent en premier"), @@ -189,15 +201,17 @@ class MessageLookup extends MessageLookupByLibrary { "noEpisodeRecent" : MessageLookupByLibrary.simpleMessage("Aucun épisode récent."), "noPodcastGroup" : MessageLookupByLibrary.simpleMessage("Ce groupe ne contient aucun podcast"), "noShownote" : MessageLookupByLibrary.simpleMessage("Notes de l\'épisode manquantes."), - "notificaitonFatch" : m12, - "notificationNetworkError" : m13, + "notificaitonFatch" : m14, + "notificationNetworkError" : m15, "notificationSetting" : MessageLookupByLibrary.simpleMessage("Notification panel"), - "notificationSubscribe" : m14, - "notificationSubscribeExisted" : m15, - "notificationSuccess" : m16, - "notificationUpdate" : m17, - "notificationUpdateError" : m18, + "notificationSubscribe" : m16, + "notificationSubscribeExisted" : m17, + "notificationSuccess" : m18, + "notificationUpdate" : m19, + "notificationUpdateError" : m20, "oldestFirst" : MessageLookupByLibrary.simpleMessage("Le plus ancien en premier"), + "passwdRequired" : MessageLookupByLibrary.simpleMessage("Password required"), + "password" : MessageLookupByLibrary.simpleMessage("Password"), "pause" : MessageLookupByLibrary.simpleMessage("Pause"), "play" : MessageLookupByLibrary.simpleMessage("Lecture"), "playback" : MessageLookupByLibrary.simpleMessage("Commandes du lecteur"), @@ -207,7 +221,7 @@ class MessageLookup extends MessageLookupByLibrary { "playerHeightTall" : MessageLookupByLibrary.simpleMessage("Grand"), "playing" : MessageLookupByLibrary.simpleMessage("En cours"), "plugins" : MessageLookupByLibrary.simpleMessage("Plugins"), - "podcast" : m19, + "podcast" : m21, "podcastSubscribed" : MessageLookupByLibrary.simpleMessage("Abonné au podcast"), "popupMenuDownloadDes" : MessageLookupByLibrary.simpleMessage("Télécharger l\'épisode"), "popupMenuLaterDes" : MessageLookupByLibrary.simpleMessage("Ajouter à la playlist"), @@ -215,7 +229,7 @@ class MessageLookup extends MessageLookupByLibrary { "popupMenuMarkDes" : MessageLookupByLibrary.simpleMessage("Marquer l\'épisode comme lu"), "popupMenuPlayDes" : MessageLookupByLibrary.simpleMessage("Lancer l\'épisode"), "privacyPolicy" : MessageLookupByLibrary.simpleMessage("Gestion des données"), - "published" : m20, + "published" : m22, "publishedDaily" : MessageLookupByLibrary.simpleMessage("Quotidien"), "publishedMonthly" : MessageLookupByLibrary.simpleMessage("Mensuel"), "publishedWeekly" : MessageLookupByLibrary.simpleMessage("Hebdomadaire"), @@ -225,15 +239,15 @@ class MessageLookup extends MessageLookupByLibrary { "remove" : MessageLookupByLibrary.simpleMessage("Supprimer"), "removeConfirm" : MessageLookupByLibrary.simpleMessage("Confirmer la suppression"), "removePodcastDes" : MessageLookupByLibrary.simpleMessage("Êtes-vous sûr de vouloir vous désabonner ?"), - "removedAt" : m21, + "removedAt" : m23, "save" : MessageLookupByLibrary.simpleMessage("Sauvegarder"), "schedule" : MessageLookupByLibrary.simpleMessage("Programmation"), "search" : MessageLookupByLibrary.simpleMessage("Rechercher"), "searchEpisode" : MessageLookupByLibrary.simpleMessage("Rechercher un épisode"), "searchInvalidRss" : MessageLookupByLibrary.simpleMessage("Lien RSS invalide"), "searchPodcast" : MessageLookupByLibrary.simpleMessage("Chercher un podcast"), - "secCount" : m22, - "secondsAgo" : m23, + "secCount" : m24, + "secondsAgo" : m25, "settingStorage" : MessageLookupByLibrary.simpleMessage("Espace de stockage"), "settings" : MessageLookupByLibrary.simpleMessage("Paramètres"), "settingsAccentColor" : MessageLookupByLibrary.simpleMessage("Couleur principale"), @@ -313,13 +327,15 @@ class MessageLookup extends MessageLookupByLibrary { "skipSilence" : MessageLookupByLibrary.simpleMessage("Skip silence"), "skipToNext" : MessageLookupByLibrary.simpleMessage("Skip to next"), "sleepTimer" : MessageLookupByLibrary.simpleMessage("Minuterie"), + "status" : MessageLookupByLibrary.simpleMessage("Status"), "stop" : MessageLookupByLibrary.simpleMessage("Stop"), "subscribe" : MessageLookupByLibrary.simpleMessage("S\'abonner"), "subscribeExportDes" : MessageLookupByLibrary.simpleMessage("Exporter le fichier OPML de tous les podcasts."), + "syncNow" : MessageLookupByLibrary.simpleMessage("Sync now"), "systemDefault" : MessageLookupByLibrary.simpleMessage("Système par défaut"), - "timeLastPlayed" : m24, - "timeLeft" : m25, - "to" : m26, + "timeLastPlayed" : m26, + "timeLeft" : m27, + "to" : m28, "toastAddPlaylist" : MessageLookupByLibrary.simpleMessage("Ajouter l\'épisode à la playlist."), "toastDiscovery" : MessageLookupByLibrary.simpleMessage("Tutoriel réinitialisé, veuillez redémarrer l\'application."), "toastFileError" : MessageLookupByLibrary.simpleMessage("Erreur du fichier, échec de l\'abonnement."), @@ -340,8 +356,10 @@ class MessageLookup extends MessageLookupByLibrary { "unlike" : MessageLookupByLibrary.simpleMessage("Unlike"), "unliked" : MessageLookupByLibrary.simpleMessage("L\'épisode a été supprimé des favoris."), "updateDate" : MessageLookupByLibrary.simpleMessage("Date de mise à jour"), - "updateEpisodesCount" : m27, + "updateEpisodesCount" : m29, "updateFailed" : MessageLookupByLibrary.simpleMessage("Échec de la mise à jour, erreur réseau"), - "version" : m28 + "username" : MessageLookupByLibrary.simpleMessage("Username"), + "usernameRequired" : MessageLookupByLibrary.simpleMessage("Username required"), + "version" : m30 }; } diff --git a/lib/generated/l10n.dart b/lib/generated/l10n.dart index fb27f08..0f445ed 100644 --- a/lib/generated/l10n.dart +++ b/lib/generated/l10n.dart @@ -658,6 +658,16 @@ class S { ); } + /// `Congratulations! You have linked gpodder.net account successfully. Tsacdop will automatically sync subscriptions on your device with your gpodder.net account.` + String get gpodderLoginDes { + return Intl.message( + 'Congratulations! You have linked gpodder.net account successfully. Tsacdop will automatically sync subscriptions on your device with your gpodder.net account.', + name: 'gpodderLoginDes', + desc: '', + args: [], + ); + } + /// `Group already exists` String get groupExisted { return Intl.message( @@ -837,6 +847,16 @@ class S { ); } + /// `Integrate with {service}` + String intergateWith(Object service) { + return Intl.message( + 'Integrate with $service', + name: 'intergateWith', + desc: 'Integrate with', + args: [service], + ); + } + /// `You can long press on episode card for quick actions.` String get introFourthPage { return Intl.message( @@ -867,6 +887,26 @@ class S { ); } + /// `Invalid username` + String get invalidName { + return Intl.message( + 'Invalid username', + name: 'invalidName', + desc: '', + args: [], + ); + } + + /// `Last update` + String get lastUpdate { + return Intl.message( + 'Last update', + name: 'lastUpdate', + desc: 'gpodder.net update', + args: [], + ); + } + /// `Later` String get later { return Intl.message( @@ -947,6 +987,46 @@ class S { ); } + /// `Logged in as {userName}` + String loggedInAs(Object userName) { + return Intl.message( + 'Logged in as $userName', + name: 'loggedInAs', + desc: 'gpodder.net', + args: [userName], + ); + } + + /// `Login` + String get login { + return Intl.message( + 'Login', + name: 'login', + desc: 'gpodder.net login', + args: [], + ); + } + + /// `Login failed` + String get loginFailed { + return Intl.message( + 'Login failed', + name: 'loginFailed', + desc: '', + args: [], + ); + } + + /// `Logout` + String get logout { + return Intl.message( + 'Logout', + name: 'logout', + desc: 'gpodder.net logout', + args: [], + ); + } + /// `Mark` String get mark { return Intl.message( @@ -1253,6 +1333,26 @@ class S { ); } + /// `Password required` + String get passwdRequired { + return Intl.message( + 'Password required', + name: 'passwdRequired', + desc: '', + args: [], + ); + } + + /// `Password` + String get password { + return Intl.message( + 'Password', + name: 'password', + desc: '', + args: [], + ); + } + /// `Pause` String get pause { return Intl.message( @@ -2412,6 +2512,16 @@ class S { ); } + /// `Status` + String get status { + return Intl.message( + 'Status', + name: 'status', + desc: 'gpodder.net status', + args: [], + ); + } + /// `Stop` String get stop { return Intl.message( @@ -2442,6 +2552,16 @@ class S { ); } + /// `Sync now` + String get syncNow { + return Intl.message( + 'Sync now', + name: 'syncNow', + desc: '', + args: [], + ); + } + /// `System default` String get systemDefault { return Intl.message( @@ -2705,6 +2825,26 @@ class S { ); } + /// `Username` + String get username { + return Intl.message( + 'Username', + name: 'username', + desc: '', + args: [], + ); + } + + /// `Username required` + String get usernameRequired { + return Intl.message( + 'Username required', + name: 'usernameRequired', + desc: '', + args: [], + ); + } + /// `Version: {version}` String version(Object version) { return Intl.message( @@ -2724,6 +2864,7 @@ class AppLocalizationDelegate extends LocalizationsDelegate { Locale.fromSubtags(languageCode: 'en'), Locale.fromSubtags(languageCode: 'es'), Locale.fromSubtags(languageCode: 'fr'), + Locale.fromSubtags(languageCode: 'pt'), Locale.fromSubtags(languageCode: 'zh', scriptCode: 'Hans'), ]; } diff --git a/lib/home/about.dart b/lib/home/about.dart index e70d8f3..ac4e88e 100644 --- a/lib/home/about.dart +++ b/lib/home/about.dart @@ -101,9 +101,9 @@ class AboutApp extends StatelessWidget { ), child: Scaffold( backgroundColor: Theme.of(context).primaryColor, - appBar: AppBar(title: Center() - // Text(s.homeToprightMenuAbout), - ), + appBar: AppBar( + title: Text(s.homeToprightMenuAbout), + ), body: SafeArea( child: SingleChildScrollView( scrollDirection: Axis.vertical, @@ -268,7 +268,9 @@ class AboutApp extends StatelessWidget { _translatorInfo(context, name: 'Atrate'), _translatorInfo(context, name: 'ppp', flag: 'fr'), _translatorInfo(context, - name: 'Joel Israel', flag: 'mx') + name: 'Joel Israel', flag: 'mx'), + _translatorInfo(context, + name: 'Bruno Pinheiro', flag: 'pt'), ], ), ), diff --git a/lib/settings/languages.dart b/lib/settings/languages.dart index a770752..dd550d6 100644 --- a/lib/settings/languages.dart +++ b/lib/settings/languages.dart @@ -106,6 +106,16 @@ class _LanguagesSettingState extends State { onChanged: _setLocale), ), Divider(height: 1), + ListTile( + title: Text('português'), + onTap: () => _setLocale(Locale('pt')), + contentPadding: const EdgeInsets.only(left: 20, right: 20), + trailing: Radio( + value: Locale('pt'), + groupValue: Locale(Intl.getCurrentLocale()), + onChanged: _setLocale), + ), + Divider(height: 1), ListTile( onTap: () => 'mailto:?subject=Tsacdop localization project'