mirror of
https://github.com/stonega/tsacdop
synced 2025-02-09 08:08:46 +01:00
More localization work.
This commit is contained in:
parent
400e247134
commit
c683eba6c4
@ -23,33 +23,51 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||
|
||||
static m1(count) => "${Intl.plural(count, zero: '', one: '${count} episode added to playlist', other: '${count} episodes added to playlist')}";
|
||||
|
||||
static m2(host) => "Hosted on ${host}";
|
||||
static m2(count) => "${Intl.plural(count, zero: 'Today', one: '${count} day ago', other: '${count} days ago')}";
|
||||
|
||||
static m3(count) => "${Intl.plural(count, zero: '', one: '${count} hour', other: '${count} hours')}";
|
||||
static m3(count) => "${Intl.plural(count, zero: 'Never', one: '${count} day', other: '${count} days')}";
|
||||
|
||||
static m4(count) => "${Intl.plural(count, zero: '', one: '${count} min', other: '${count} mins')}";
|
||||
static m4(time) => "From ${time}";
|
||||
|
||||
static m5(title) => "Fetch data ${title}";
|
||||
static m5(count) => "${Intl.plural(count, zero: 'Group', one: 'Group', other: 'Groups')}";
|
||||
|
||||
static m6(title) => "Subscribe failed, network error ${title}";
|
||||
static m6(host) => "Hosted on ${host}";
|
||||
|
||||
static m7(title) => "Subscribe ${title}";
|
||||
static m7(count) => "${Intl.plural(count, zero: '', one: '${count} hour ago', other: '${count} hours ago')}";
|
||||
|
||||
static m8(title) => "Subscribe failed, podcast existed ${title}";
|
||||
static m8(count) => "${Intl.plural(count, zero: '', one: '${count} hour', other: '${count} hours')}";
|
||||
|
||||
static m9(title) => "Subscribe success ${title}";
|
||||
static m9(count) => "${Intl.plural(count, zero: '', one: '${count} minute ago', other: '${count} minutes ago')}";
|
||||
|
||||
static m10(title) => "Update ${title}";
|
||||
static m10(count) => "${Intl.plural(count, zero: '', one: '${count} min', other: '${count} mins')}";
|
||||
|
||||
static m11(title) => "Update error ${title}";
|
||||
static m11(title) => "Fetch data ${title}";
|
||||
|
||||
static m12(time) => "Last time ${time}";
|
||||
static m12(title) => "Subscribe failed, network error ${title}";
|
||||
|
||||
static m13(time) => "${time} Left";
|
||||
static m13(title) => "Subscribe ${title}";
|
||||
|
||||
static m14(count) => "${Intl.plural(count, zero: 'No Update', one: 'Updated ${count} Episode', other: 'Updated ${count} Episodes')}";
|
||||
static m14(title) => "Subscribe failed, podcast existed ${title}";
|
||||
|
||||
static m15(version) => "Version : ${version}";
|
||||
static m15(title) => "Subscribe success ${title}";
|
||||
|
||||
static m16(title) => "Update ${title}";
|
||||
|
||||
static m17(title) => "Update error ${title}";
|
||||
|
||||
static m18(date) => "Removed at ${date}";
|
||||
|
||||
static m19(count) => "${Intl.plural(count, zero: '', one: '${count} second ago', other: '${count} seconds ago')}";
|
||||
|
||||
static m20(time) => "Last time ${time}";
|
||||
|
||||
static m21(time) => "${time} Left";
|
||||
|
||||
static m22(time) => "To ${time}";
|
||||
|
||||
static m23(count) => "${Intl.plural(count, zero: 'No update', one: 'Updated ${count} episode', other: 'Updated ${count} episodes')}";
|
||||
|
||||
static m24(version) => "Version : ${version}";
|
||||
|
||||
final messages = _notInlinedMessages(_notInlinedMessages);
|
||||
static _notInlinedMessages(_) => <String, Function> {
|
||||
@ -59,6 +77,7 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||
"addNewEpisodeTooltip" : MessageLookupByLibrary.simpleMessage("Add new episodes to playlist"),
|
||||
"addSomeGroups" : MessageLookupByLibrary.simpleMessage("Add some groups"),
|
||||
"all" : MessageLookupByLibrary.simpleMessage("All"),
|
||||
"autoDownload" : MessageLookupByLibrary.simpleMessage("Auto download"),
|
||||
"back" : MessageLookupByLibrary.simpleMessage("Back"),
|
||||
"buffering" : MessageLookupByLibrary.simpleMessage("Buffering"),
|
||||
"cancel" : MessageLookupByLibrary.simpleMessage("CANCEL"),
|
||||
@ -69,16 +88,26 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||
"color" : MessageLookupByLibrary.simpleMessage("color"),
|
||||
"confirm" : MessageLookupByLibrary.simpleMessage("CONFIRM"),
|
||||
"darkMode" : MessageLookupByLibrary.simpleMessage("Dark mode"),
|
||||
"daysAgo" : m2,
|
||||
"daysCount" : m3,
|
||||
"delete" : MessageLookupByLibrary.simpleMessage("Delete"),
|
||||
"developer" : MessageLookupByLibrary.simpleMessage("Developer"),
|
||||
"dismiss" : MessageLookupByLibrary.simpleMessage("Dismiss"),
|
||||
"done" : MessageLookupByLibrary.simpleMessage("Done"),
|
||||
"download" : MessageLookupByLibrary.simpleMessage("Download"),
|
||||
"downloaded" : MessageLookupByLibrary.simpleMessage("Downloaded"),
|
||||
"editName" : MessageLookupByLibrary.simpleMessage("Edit name"),
|
||||
"editGroupName" : MessageLookupByLibrary.simpleMessage("Edit group name"),
|
||||
"endOfEpisode" : MessageLookupByLibrary.simpleMessage("End of Episode"),
|
||||
"episode" : MessageLookupByLibrary.simpleMessage("Episode"),
|
||||
"featureDiscoveryEditGroup" : MessageLookupByLibrary.simpleMessage("Tap to edit group"),
|
||||
"featureDiscoveryEditGroupDes" : MessageLookupByLibrary.simpleMessage("You can change group name or delete group here, but home group can not be edited or deleted"),
|
||||
"featureDiscoveryEpisode" : MessageLookupByLibrary.simpleMessage("Episode view"),
|
||||
"featureDiscoveryEpisodeDes" : MessageLookupByLibrary.simpleMessage("You can long tap to play episode or add episode to playlist."),
|
||||
"featureDiscoveryEpisodeTitle" : MessageLookupByLibrary.simpleMessage("Long tap to play episode instantly"),
|
||||
"featureDiscoveryGroup" : MessageLookupByLibrary.simpleMessage("Tap to add group"),
|
||||
"featureDiscoveryGroupDes" : MessageLookupByLibrary.simpleMessage("Default group is home for new podcast, you can create new group and move podcast to new group, podcast can be added to multi-groups."),
|
||||
"featureDiscoveryGroupPodcast" : MessageLookupByLibrary.simpleMessage("Long tap to reorder podcast"),
|
||||
"featureDiscoveryGroupPodcastDes" : MessageLookupByLibrary.simpleMessage("You can tap to see more options, or long tap to reorder podcast in group."),
|
||||
"featureDiscoveryOMPL" : MessageLookupByLibrary.simpleMessage("Tap to import OMPL"),
|
||||
"featureDiscoveryOMPLDes" : MessageLookupByLibrary.simpleMessage("You can import OMPL file, open setting or refresh all podcast at once here."),
|
||||
"featureDiscoveryPlaylist" : MessageLookupByLibrary.simpleMessage("Tap to open playlist"),
|
||||
@ -92,23 +121,28 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||
"feedbackGithub" : MessageLookupByLibrary.simpleMessage("Submit issue"),
|
||||
"feedbackPlay" : MessageLookupByLibrary.simpleMessage("Rate on Play"),
|
||||
"feedbackTelegram" : MessageLookupByLibrary.simpleMessage("Join group"),
|
||||
"from" : MessageLookupByLibrary.simpleMessage("From"),
|
||||
"fonts" : MessageLookupByLibrary.simpleMessage("Fonts"),
|
||||
"from" : m4,
|
||||
"goodNight" : MessageLookupByLibrary.simpleMessage("Good Night"),
|
||||
"groupExisted" : MessageLookupByLibrary.simpleMessage("Group existed"),
|
||||
"groupFilter" : MessageLookupByLibrary.simpleMessage("Group filter"),
|
||||
"groups" : MessageLookupByLibrary.simpleMessage("Groups"),
|
||||
"groupRemoveConfirm" : MessageLookupByLibrary.simpleMessage("Are you sure you want to delete this group? Podcasts will be moved to Home group."),
|
||||
"groups" : m5,
|
||||
"homeGroupsSeeAll" : MessageLookupByLibrary.simpleMessage("See All"),
|
||||
"homeMenuPlaylist" : MessageLookupByLibrary.simpleMessage("Playlist"),
|
||||
"homeSubMenuLikeData" : MessageLookupByLibrary.simpleMessage("Like Date"),
|
||||
"homeSubMenuSortBy" : MessageLookupByLibrary.simpleMessage("Sort by"),
|
||||
"homeSubMenuUpdateDate" : MessageLookupByLibrary.simpleMessage("Update Date"),
|
||||
"homeTabMenuFavotite" : MessageLookupByLibrary.simpleMessage("Favorite"),
|
||||
"homeTabMenuRecent" : MessageLookupByLibrary.simpleMessage("Recent"),
|
||||
"homeToprightMenuAbout" : MessageLookupByLibrary.simpleMessage("About"),
|
||||
"homeToprightMenuImportOMPL" : MessageLookupByLibrary.simpleMessage("Import OMPL"),
|
||||
"homeToprightMenuRefreshAll" : MessageLookupByLibrary.simpleMessage("Refresh all"),
|
||||
"homeToprightMenuSettings" : MessageLookupByLibrary.simpleMessage("Settings"),
|
||||
"hostedOn" : m2,
|
||||
"hoursCount" : m3,
|
||||
"hostedOn" : m6,
|
||||
"hoursAgo" : m7,
|
||||
"hoursCount" : m8,
|
||||
"introFourthPage" : MessageLookupByLibrary.simpleMessage("Long press on episode card for quick actions."),
|
||||
"introSecondPage" : MessageLookupByLibrary.simpleMessage("Subscribe podcast via search or import OMPL file."),
|
||||
"introThirdPage" : MessageLookupByLibrary.simpleMessage("You can create new group for podcasts, swipe on podcast list to change group."),
|
||||
"later" : MessageLookupByLibrary.simpleMessage("Later"),
|
||||
"lightMode" : MessageLookupByLibrary.simpleMessage("Light mode"),
|
||||
"like" : MessageLookupByLibrary.simpleMessage("Like"),
|
||||
@ -117,6 +151,7 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||
"listen" : MessageLookupByLibrary.simpleMessage("Listen"),
|
||||
"listened" : MessageLookupByLibrary.simpleMessage("Listened"),
|
||||
"loadMore" : MessageLookupByLibrary.simpleMessage("Load more"),
|
||||
"mark" : MessageLookupByLibrary.simpleMessage("Mark"),
|
||||
"markConfirm" : MessageLookupByLibrary.simpleMessage("Mark confirm"),
|
||||
"markConfirmContent" : MessageLookupByLibrary.simpleMessage("Confirm mark all episodes listened?"),
|
||||
"markListened" : MessageLookupByLibrary.simpleMessage("Mark listened"),
|
||||
@ -125,24 +160,28 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||
"menuMarkAllListened" : MessageLookupByLibrary.simpleMessage("Mark All Listened"),
|
||||
"menuViewRSS" : MessageLookupByLibrary.simpleMessage("Visit RSS Feed"),
|
||||
"menuVisitSite" : MessageLookupByLibrary.simpleMessage("Visit Site"),
|
||||
"minsCount" : m4,
|
||||
"minsAgo" : m9,
|
||||
"minsCount" : m10,
|
||||
"network" : MessageLookupByLibrary.simpleMessage("Network"),
|
||||
"newGroup" : MessageLookupByLibrary.simpleMessage("Create new group"),
|
||||
"newestFirst" : MessageLookupByLibrary.simpleMessage("Newest first"),
|
||||
"next" : MessageLookupByLibrary.simpleMessage("Next"),
|
||||
"noEpisodeDownload" : MessageLookupByLibrary.simpleMessage("No episode downloaded yet"),
|
||||
"noEpisodeFavorite" : MessageLookupByLibrary.simpleMessage("No episode collected yet"),
|
||||
"noEpisodeRecent" : MessageLookupByLibrary.simpleMessage("No episode received yet"),
|
||||
"noPodcastGroup" : MessageLookupByLibrary.simpleMessage("No podcast in this group"),
|
||||
"notificaitonFatch" : m5,
|
||||
"notificationNetworkError" : m6,
|
||||
"notificationSubscribe" : m7,
|
||||
"notificationSubscribeExisted" : m8,
|
||||
"notificationSuccess" : m9,
|
||||
"notificationUpdate" : m10,
|
||||
"notificationUpdateError" : m11,
|
||||
"notificaitonFatch" : m11,
|
||||
"notificationNetworkError" : m12,
|
||||
"notificationSubscribe" : m13,
|
||||
"notificationSubscribeExisted" : m14,
|
||||
"notificationSuccess" : m15,
|
||||
"notificationUpdate" : m16,
|
||||
"notificationUpdateError" : m17,
|
||||
"oldestFirst" : MessageLookupByLibrary.simpleMessage("Oldest first"),
|
||||
"play" : MessageLookupByLibrary.simpleMessage("Play"),
|
||||
"playing" : MessageLookupByLibrary.simpleMessage("Playing"),
|
||||
"plugins" : MessageLookupByLibrary.simpleMessage("Plugins"),
|
||||
"podcast" : MessageLookupByLibrary.simpleMessage("Podcast"),
|
||||
"podcastSubscribed" : MessageLookupByLibrary.simpleMessage("Podcast subscribed"),
|
||||
"popupMenuDownloadDes" : MessageLookupByLibrary.simpleMessage("Download episode"),
|
||||
"popupMenuLaterDes" : MessageLookupByLibrary.simpleMessage("Add episode to playlist"),
|
||||
@ -150,10 +189,15 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||
"popupMenuMarkDes" : MessageLookupByLibrary.simpleMessage("Mark episode as listened"),
|
||||
"popupMenuPlayDes" : MessageLookupByLibrary.simpleMessage("Play the episode"),
|
||||
"privacyPolicy" : MessageLookupByLibrary.simpleMessage("Privacy Policy"),
|
||||
"recoverSubscribe" : MessageLookupByLibrary.simpleMessage("Recover subscribe"),
|
||||
"remove" : MessageLookupByLibrary.simpleMessage("Remove"),
|
||||
"removeConfirm" : MessageLookupByLibrary.simpleMessage("Remove confirm"),
|
||||
"removePodcastDes" : MessageLookupByLibrary.simpleMessage("Are you sure you want to unsubscribe?"),
|
||||
"removedAt" : m18,
|
||||
"schedule" : MessageLookupByLibrary.simpleMessage("Schedule"),
|
||||
"searchInvalidRss" : MessageLookupByLibrary.simpleMessage("Invalid RSS link"),
|
||||
"searchPodcast" : MessageLookupByLibrary.simpleMessage("Search podcast"),
|
||||
"secondsAgo" : m19,
|
||||
"settingStorage" : MessageLookupByLibrary.simpleMessage("Storage"),
|
||||
"settingsAccentColor" : MessageLookupByLibrary.simpleMessage("Accent color"),
|
||||
"settingsAccentColorDes" : MessageLookupByLibrary.simpleMessage("Include the ovelay color"),
|
||||
@ -176,7 +220,7 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||
"settingsExport" : MessageLookupByLibrary.simpleMessage("Export"),
|
||||
"settingsExportDes" : MessageLookupByLibrary.simpleMessage("Export OMPL file of all podcasts"),
|
||||
"settingsFeedback" : MessageLookupByLibrary.simpleMessage("Feedback"),
|
||||
"settingsFeedbackDes" : MessageLookupByLibrary.simpleMessage("Bugs and feature request"),
|
||||
"settingsFeedbackDes" : MessageLookupByLibrary.simpleMessage("Bugs and features request"),
|
||||
"settingsHistory" : MessageLookupByLibrary.simpleMessage("History"),
|
||||
"settingsHistoryDes" : MessageLookupByLibrary.simpleMessage("Listen date"),
|
||||
"settingsInfo" : MessageLookupByLibrary.simpleMessage("Info"),
|
||||
@ -210,24 +254,33 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||
"settingsUpdateInterval" : MessageLookupByLibrary.simpleMessage("Update interval"),
|
||||
"settingsUpdateIntervalDes" : MessageLookupByLibrary.simpleMessage("Default 24 hours"),
|
||||
"size" : MessageLookupByLibrary.simpleMessage("Size"),
|
||||
"skipSecondsAtStart" : MessageLookupByLibrary.simpleMessage("Skip seconds at start"),
|
||||
"sleepTimer" : MessageLookupByLibrary.simpleMessage("Sleep timer"),
|
||||
"subscribe" : MessageLookupByLibrary.simpleMessage("Subscribe"),
|
||||
"systemDefault" : MessageLookupByLibrary.simpleMessage("System default"),
|
||||
"timeLastPlayed" : m12,
|
||||
"timeLeft" : m13,
|
||||
"to" : MessageLookupByLibrary.simpleMessage("To"),
|
||||
"timeLastPlayed" : m20,
|
||||
"timeLeft" : m21,
|
||||
"to" : m22,
|
||||
"toastAddPlaylist" : MessageLookupByLibrary.simpleMessage("Added to playlist"),
|
||||
"toastDescovery" : MessageLookupByLibrary.simpleMessage("Discovery feature reopened, pleast restart the app"),
|
||||
"toastFileError" : MessageLookupByLibrary.simpleMessage("File error, Subscribe failed"),
|
||||
"toastFileNotVilid" : MessageLookupByLibrary.simpleMessage("File not vilid"),
|
||||
"toastDiscovery" : MessageLookupByLibrary.simpleMessage("Discovery feature reopened, pleast restart the app"),
|
||||
"toastFileError" : MessageLookupByLibrary.simpleMessage("File error, subscribe failed"),
|
||||
"toastFileNotValid" : MessageLookupByLibrary.simpleMessage("File not valid"),
|
||||
"toastHomeGroupNotSupport" : MessageLookupByLibrary.simpleMessage("Home group is not supported"),
|
||||
"toastOneGroup" : MessageLookupByLibrary.simpleMessage("At least select one group"),
|
||||
"toastPodcastRecovering" : MessageLookupByLibrary.simpleMessage("Recovering, wait for a moment"),
|
||||
"toastReadFile" : MessageLookupByLibrary.simpleMessage("Read file successfully"),
|
||||
"toastRemovePlaylist" : MessageLookupByLibrary.simpleMessage("Removed from playlist"),
|
||||
"toastRecoverFailed" : MessageLookupByLibrary.simpleMessage("Podcast recover failed"),
|
||||
"toastRemovePlaylist" : MessageLookupByLibrary.simpleMessage("Episode removed from playlist"),
|
||||
"toastSettingSaved" : MessageLookupByLibrary.simpleMessage("Setting saved"),
|
||||
"toastTimeEqualEnd" : MessageLookupByLibrary.simpleMessage("Time is equal to end time"),
|
||||
"toastTimeEqualStart" : MessageLookupByLibrary.simpleMessage("Time is equal to start time"),
|
||||
"understood" : MessageLookupByLibrary.simpleMessage("Understood"),
|
||||
"undo" : MessageLookupByLibrary.simpleMessage("UNDO"),
|
||||
"unlike" : MessageLookupByLibrary.simpleMessage("Unlike"),
|
||||
"unliked" : MessageLookupByLibrary.simpleMessage("Removed from favorite"),
|
||||
"unliked" : MessageLookupByLibrary.simpleMessage("Episode removed from favorite"),
|
||||
"updateDate" : MessageLookupByLibrary.simpleMessage("Update date"),
|
||||
"updateEpisodesCount" : m14,
|
||||
"updateEpisodesCount" : m23,
|
||||
"updateFailed" : MessageLookupByLibrary.simpleMessage("Update failed, network error"),
|
||||
"version" : m15
|
||||
"version" : m24
|
||||
};
|
||||
}
|
||||
|
@ -23,33 +23,51 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||
|
||||
static m1(count) => "${Intl.plural(count, zero: '', other: '${count}集节目添加到播放列表')}";
|
||||
|
||||
static m2(host) => "平台 ${host}";
|
||||
static m2(count) => "${Intl.plural(count, zero: '今天', other: '${count}天前')}";
|
||||
|
||||
static m3(count) => "${Intl.plural(count, zero: '', other: '${count} 小时')}";
|
||||
static m3(count) => "${Intl.plural(count, zero: '从不', other: '${count}天')}";
|
||||
|
||||
static m4(count) => "${Intl.plural(count, zero: '', other: '${count}分钟')}";
|
||||
static m4(time) => "自${time}";
|
||||
|
||||
static m5(title) => "获取数据 ${title}";
|
||||
static m5(count) => "${Intl.plural(count, zero: '分组', other: '分组')}";
|
||||
|
||||
static m6(title) => "订阅失败,网络错误 ${title}";
|
||||
static m6(host) => "平台 ${host}";
|
||||
|
||||
static m7(title) => "订阅${title}";
|
||||
static m7(count) => "${Intl.plural(count, zero: '', other: '${count}小时前')}";
|
||||
|
||||
static m8(title) => "订阅失败,播客已存在 ${title}";
|
||||
static m8(count) => "${Intl.plural(count, zero: '', other: '${count} 小时')}";
|
||||
|
||||
static m9(title) => "订阅成功 ${title}";
|
||||
static m9(count) => "${Intl.plural(count, zero: '', other: '${count}分钟前')}";
|
||||
|
||||
static m10(title) => "更新 ${title}";
|
||||
static m10(count) => "${Intl.plural(count, zero: '', other: '${count}分钟')}";
|
||||
|
||||
static m11(title) => "更新失败 ${title}";
|
||||
static m11(title) => "获取数据 ${title}";
|
||||
|
||||
static m12(time) => "上次播放${time}";
|
||||
static m12(title) => "订阅失败,网络错误 ${title}";
|
||||
|
||||
static m13(time) => "剩余 ${time}";
|
||||
static m13(title) => "订阅${title}";
|
||||
|
||||
static m14(count) => "${Intl.plural(count, zero: '未有更新', other: '更新 ${count} 集节目')}";
|
||||
static m14(title) => "订阅失败,播客已存在 ${title}";
|
||||
|
||||
static m15(version) => "版本:${version}";
|
||||
static m15(title) => "订阅成功 ${title}";
|
||||
|
||||
static m16(title) => "更新 ${title}";
|
||||
|
||||
static m17(title) => "更新失败 ${title}";
|
||||
|
||||
static m18(date) => "${date}移除";
|
||||
|
||||
static m19(count) => "${Intl.plural(count, zero: '', other: '${count}秒前')}";
|
||||
|
||||
static m20(time) => "上次播放${time}";
|
||||
|
||||
static m21(time) => "剩余 ${time}";
|
||||
|
||||
static m22(time) => "到${time}";
|
||||
|
||||
static m23(count) => "${Intl.plural(count, zero: '未有更新', other: '更新 ${count} 集节目')}";
|
||||
|
||||
static m24(version) => "版本:${version}";
|
||||
|
||||
final messages = _notInlinedMessages(_notInlinedMessages);
|
||||
static _notInlinedMessages(_) => <String, Function> {
|
||||
@ -59,6 +77,7 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||
"addNewEpisodeTooltip" : MessageLookupByLibrary.simpleMessage("添加更新节目到播放列表"),
|
||||
"addSomeGroups" : MessageLookupByLibrary.simpleMessage("请添加分组"),
|
||||
"all" : MessageLookupByLibrary.simpleMessage("全部"),
|
||||
"autoDownload" : MessageLookupByLibrary.simpleMessage("自动下载"),
|
||||
"back" : MessageLookupByLibrary.simpleMessage("返回"),
|
||||
"buffering" : MessageLookupByLibrary.simpleMessage("缓冲"),
|
||||
"cancel" : MessageLookupByLibrary.simpleMessage("取消"),
|
||||
@ -69,16 +88,26 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||
"color" : MessageLookupByLibrary.simpleMessage("颜色"),
|
||||
"confirm" : MessageLookupByLibrary.simpleMessage("确认"),
|
||||
"darkMode" : MessageLookupByLibrary.simpleMessage("夜晚模式"),
|
||||
"daysAgo" : m2,
|
||||
"daysCount" : m3,
|
||||
"delete" : MessageLookupByLibrary.simpleMessage("删除"),
|
||||
"developer" : MessageLookupByLibrary.simpleMessage("关于我"),
|
||||
"dismiss" : MessageLookupByLibrary.simpleMessage("忽略"),
|
||||
"done" : MessageLookupByLibrary.simpleMessage("完成"),
|
||||
"download" : MessageLookupByLibrary.simpleMessage("下载"),
|
||||
"downloaded" : MessageLookupByLibrary.simpleMessage("已下载"),
|
||||
"editName" : MessageLookupByLibrary.simpleMessage("修改组名"),
|
||||
"editGroupName" : MessageLookupByLibrary.simpleMessage("修改组名"),
|
||||
"endOfEpisode" : MessageLookupByLibrary.simpleMessage("节目结束"),
|
||||
"episode" : MessageLookupByLibrary.simpleMessage("节目"),
|
||||
"featureDiscoveryEditGroup" : MessageLookupByLibrary.simpleMessage("点击修改分组"),
|
||||
"featureDiscoveryEditGroupDes" : MessageLookupByLibrary.simpleMessage("您可以修改分组名或者删除分组,注意 Home 分组无法修改,也不能被删除。"),
|
||||
"featureDiscoveryEpisode" : MessageLookupByLibrary.simpleMessage("节目界面"),
|
||||
"featureDiscoveryEpisodeDes" : MessageLookupByLibrary.simpleMessage("您可以长按播放节目或者添加节目到播放列表。"),
|
||||
"featureDiscoveryEpisodeTitle" : MessageLookupByLibrary.simpleMessage("您可以长按快速播放节目"),
|
||||
"featureDiscoveryGroup" : MessageLookupByLibrary.simpleMessage("点击添加分组"),
|
||||
"featureDiscoveryGroupDes" : MessageLookupByLibrary.simpleMessage("新订阅播客默认分组为 Home,您可以添加新的分组,移动播客到新的分组,每个播客可以被添加到多个分组。"),
|
||||
"featureDiscoveryGroupPodcast" : MessageLookupByLibrary.simpleMessage("长按可以移动播客位置"),
|
||||
"featureDiscoveryGroupPodcastDes" : MessageLookupByLibrary.simpleMessage("您可以点击对播客进行设置,或者长按重新排序。"),
|
||||
"featureDiscoveryOMPL" : MessageLookupByLibrary.simpleMessage("点击导入 OMPL"),
|
||||
"featureDiscoveryOMPLDes" : MessageLookupByLibrary.simpleMessage("在这里您可以导入OMPL文件,打开设置页面,或者刷新所有播客。"),
|
||||
"featureDiscoveryPlaylist" : MessageLookupByLibrary.simpleMessage("点击打开播放列表"),
|
||||
@ -92,23 +121,28 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||
"feedbackGithub" : MessageLookupByLibrary.simpleMessage("提交Issue"),
|
||||
"feedbackPlay" : MessageLookupByLibrary.simpleMessage("Play评价"),
|
||||
"feedbackTelegram" : MessageLookupByLibrary.simpleMessage("加入小组"),
|
||||
"from" : MessageLookupByLibrary.simpleMessage("自"),
|
||||
"fonts" : MessageLookupByLibrary.simpleMessage("字体"),
|
||||
"from" : m4,
|
||||
"goodNight" : MessageLookupByLibrary.simpleMessage("晚安"),
|
||||
"groupExisted" : MessageLookupByLibrary.simpleMessage("组名已使用"),
|
||||
"groupFilter" : MessageLookupByLibrary.simpleMessage("分组"),
|
||||
"groups" : MessageLookupByLibrary.simpleMessage("分组"),
|
||||
"groupRemoveConfirm" : MessageLookupByLibrary.simpleMessage("您确认要移除该分组吗?播客将被移动到 Home 分组。"),
|
||||
"groups" : m5,
|
||||
"homeGroupsSeeAll" : MessageLookupByLibrary.simpleMessage("查看全部"),
|
||||
"homeMenuPlaylist" : MessageLookupByLibrary.simpleMessage("播放列表"),
|
||||
"homeSubMenuLikeData" : MessageLookupByLibrary.simpleMessage("添加日期"),
|
||||
"homeSubMenuSortBy" : MessageLookupByLibrary.simpleMessage("排序"),
|
||||
"homeSubMenuUpdateDate" : MessageLookupByLibrary.simpleMessage("更新日期"),
|
||||
"homeTabMenuFavotite" : MessageLookupByLibrary.simpleMessage("收藏"),
|
||||
"homeTabMenuRecent" : MessageLookupByLibrary.simpleMessage("最近更新"),
|
||||
"homeToprightMenuAbout" : MessageLookupByLibrary.simpleMessage("关于"),
|
||||
"homeToprightMenuImportOMPL" : MessageLookupByLibrary.simpleMessage("导入OMPL"),
|
||||
"homeToprightMenuRefreshAll" : MessageLookupByLibrary.simpleMessage("全部刷新"),
|
||||
"homeToprightMenuSettings" : MessageLookupByLibrary.simpleMessage("设置"),
|
||||
"hostedOn" : m2,
|
||||
"hoursCount" : m3,
|
||||
"hostedOn" : m6,
|
||||
"hoursAgo" : m7,
|
||||
"hoursCount" : m8,
|
||||
"introFourthPage" : MessageLookupByLibrary.simpleMessage("长按节目打开快捷菜单。"),
|
||||
"introSecondPage" : MessageLookupByLibrary.simpleMessage("您可以通过搜索订阅播客,也可以直接导入OMPL文件。"),
|
||||
"introThirdPage" : MessageLookupByLibrary.simpleMessage("您可以创建分组,上下滑动切换分组。"),
|
||||
"later" : MessageLookupByLibrary.simpleMessage("稍后"),
|
||||
"lightMode" : MessageLookupByLibrary.simpleMessage("明亮模式"),
|
||||
"like" : MessageLookupByLibrary.simpleMessage("喜欢"),
|
||||
@ -117,6 +151,7 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||
"listen" : MessageLookupByLibrary.simpleMessage("收听"),
|
||||
"listened" : MessageLookupByLibrary.simpleMessage("已收听"),
|
||||
"loadMore" : MessageLookupByLibrary.simpleMessage("加载更多"),
|
||||
"mark" : MessageLookupByLibrary.simpleMessage("标记"),
|
||||
"markConfirm" : MessageLookupByLibrary.simpleMessage("确认标记"),
|
||||
"markConfirmContent" : MessageLookupByLibrary.simpleMessage("是否确认标记全部节目为已收听?"),
|
||||
"markListened" : MessageLookupByLibrary.simpleMessage("标记已收听"),
|
||||
@ -125,24 +160,28 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||
"menuMarkAllListened" : MessageLookupByLibrary.simpleMessage("标记所有已收听"),
|
||||
"menuViewRSS" : MessageLookupByLibrary.simpleMessage("查看 RSS"),
|
||||
"menuVisitSite" : MessageLookupByLibrary.simpleMessage("访问网站"),
|
||||
"minsCount" : m4,
|
||||
"minsAgo" : m9,
|
||||
"minsCount" : m10,
|
||||
"network" : MessageLookupByLibrary.simpleMessage("网络"),
|
||||
"newGroup" : MessageLookupByLibrary.simpleMessage("创建分组"),
|
||||
"newestFirst" : MessageLookupByLibrary.simpleMessage("由新到旧"),
|
||||
"next" : MessageLookupByLibrary.simpleMessage("下一步"),
|
||||
"noEpisodeDownload" : MessageLookupByLibrary.simpleMessage("暂无下载节目"),
|
||||
"noEpisodeFavorite" : MessageLookupByLibrary.simpleMessage("暂无收藏节目"),
|
||||
"noEpisodeRecent" : MessageLookupByLibrary.simpleMessage("暂无节目"),
|
||||
"noPodcastGroup" : MessageLookupByLibrary.simpleMessage("分组无播客"),
|
||||
"notificaitonFatch" : m5,
|
||||
"notificationNetworkError" : m6,
|
||||
"notificationSubscribe" : m7,
|
||||
"notificationSubscribeExisted" : m8,
|
||||
"notificationSuccess" : m9,
|
||||
"notificationUpdate" : m10,
|
||||
"notificationUpdateError" : m11,
|
||||
"notificaitonFatch" : m11,
|
||||
"notificationNetworkError" : m12,
|
||||
"notificationSubscribe" : m13,
|
||||
"notificationSubscribeExisted" : m14,
|
||||
"notificationSuccess" : m15,
|
||||
"notificationUpdate" : m16,
|
||||
"notificationUpdateError" : m17,
|
||||
"oldestFirst" : MessageLookupByLibrary.simpleMessage("由旧到新"),
|
||||
"play" : MessageLookupByLibrary.simpleMessage("播放"),
|
||||
"playing" : MessageLookupByLibrary.simpleMessage("正在播放"),
|
||||
"plugins" : MessageLookupByLibrary.simpleMessage("插件"),
|
||||
"podcast" : MessageLookupByLibrary.simpleMessage("播客"),
|
||||
"podcastSubscribed" : MessageLookupByLibrary.simpleMessage("播客已订阅"),
|
||||
"popupMenuDownloadDes" : MessageLookupByLibrary.simpleMessage("下载节目"),
|
||||
"popupMenuLaterDes" : MessageLookupByLibrary.simpleMessage("添加到播放列表"),
|
||||
@ -150,10 +189,15 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||
"popupMenuMarkDes" : MessageLookupByLibrary.simpleMessage("设置为已收听"),
|
||||
"popupMenuPlayDes" : MessageLookupByLibrary.simpleMessage("播放节目"),
|
||||
"privacyPolicy" : MessageLookupByLibrary.simpleMessage("隐私条款"),
|
||||
"recoverSubscribe" : MessageLookupByLibrary.simpleMessage("恢复订阅"),
|
||||
"remove" : MessageLookupByLibrary.simpleMessage("移除"),
|
||||
"removeConfirm" : MessageLookupByLibrary.simpleMessage("取消订阅"),
|
||||
"removePodcastDes" : MessageLookupByLibrary.simpleMessage("您确认要取消订阅吗?"),
|
||||
"removedAt" : m18,
|
||||
"schedule" : MessageLookupByLibrary.simpleMessage("定时"),
|
||||
"searchInvalidRss" : MessageLookupByLibrary.simpleMessage("RSS 链接错误"),
|
||||
"searchPodcast" : MessageLookupByLibrary.simpleMessage("搜索播客"),
|
||||
"secondsAgo" : m19,
|
||||
"settingStorage" : MessageLookupByLibrary.simpleMessage("储存空间"),
|
||||
"settingsAccentColor" : MessageLookupByLibrary.simpleMessage("次要颜色"),
|
||||
"settingsAccentColorDes" : MessageLookupByLibrary.simpleMessage("包括溢出颜色"),
|
||||
@ -184,7 +228,7 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||
"settingsLayout" : MessageLookupByLibrary.simpleMessage("布局"),
|
||||
"settingsLayoutDes" : MessageLookupByLibrary.simpleMessage("应用布局"),
|
||||
"settingsLibraries" : MessageLookupByLibrary.simpleMessage("开源"),
|
||||
"settingsLibrariesDes" : MessageLookupByLibrary.simpleMessage("使用开源项目"),
|
||||
"settingsLibrariesDes" : MessageLookupByLibrary.simpleMessage("开源项目使用"),
|
||||
"settingsManageDownload" : MessageLookupByLibrary.simpleMessage("下载管理"),
|
||||
"settingsManageDownloadDes" : MessageLookupByLibrary.simpleMessage("管理下载节目文件"),
|
||||
"settingsMenuAutoPlay" : MessageLookupByLibrary.simpleMessage("自动播放下一节目"),
|
||||
@ -196,7 +240,7 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||
"settingsPopupMenu" : MessageLookupByLibrary.simpleMessage("节目弹出菜单"),
|
||||
"settingsPopupMenuDes" : MessageLookupByLibrary.simpleMessage("修改节目弹出菜单"),
|
||||
"settingsPrefrence" : MessageLookupByLibrary.simpleMessage("首选项"),
|
||||
"settingsRealDark" : MessageLookupByLibrary.simpleMessage("真的黑"),
|
||||
"settingsRealDark" : MessageLookupByLibrary.simpleMessage("极黑"),
|
||||
"settingsRealDarkDes" : MessageLookupByLibrary.simpleMessage("如果夜不够黑,请开启"),
|
||||
"settingsSTAuto" : MessageLookupByLibrary.simpleMessage("自动睡眠模式"),
|
||||
"settingsSTAutoDes" : MessageLookupByLibrary.simpleMessage("定期开启睡眠模式"),
|
||||
@ -210,24 +254,33 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||
"settingsUpdateInterval" : MessageLookupByLibrary.simpleMessage("更新频率"),
|
||||
"settingsUpdateIntervalDes" : MessageLookupByLibrary.simpleMessage("默认 24 小时"),
|
||||
"size" : MessageLookupByLibrary.simpleMessage("大小"),
|
||||
"skipSecondsAtStart" : MessageLookupByLibrary.simpleMessage("开头跳过秒数"),
|
||||
"sleepTimer" : MessageLookupByLibrary.simpleMessage("睡眠模式"),
|
||||
"subscribe" : MessageLookupByLibrary.simpleMessage("订阅"),
|
||||
"systemDefault" : MessageLookupByLibrary.simpleMessage("系统默认"),
|
||||
"timeLastPlayed" : m12,
|
||||
"timeLeft" : m13,
|
||||
"to" : MessageLookupByLibrary.simpleMessage("到"),
|
||||
"timeLastPlayed" : m20,
|
||||
"timeLeft" : m21,
|
||||
"to" : m22,
|
||||
"toastAddPlaylist" : MessageLookupByLibrary.simpleMessage("添加到播放列表"),
|
||||
"toastDescovery" : MessageLookupByLibrary.simpleMessage("重启应用后可查看"),
|
||||
"toastDiscovery" : MessageLookupByLibrary.simpleMessage("重启应用后可查看"),
|
||||
"toastFileError" : MessageLookupByLibrary.simpleMessage("文件错误,导入失败"),
|
||||
"toastFileNotVilid" : MessageLookupByLibrary.simpleMessage("文件错误"),
|
||||
"toastFileNotValid" : MessageLookupByLibrary.simpleMessage("文件错误"),
|
||||
"toastHomeGroupNotSupport" : MessageLookupByLibrary.simpleMessage("Home 分组不支持此功能"),
|
||||
"toastOneGroup" : MessageLookupByLibrary.simpleMessage("请至少选择一个分组"),
|
||||
"toastPodcastRecovering" : MessageLookupByLibrary.simpleMessage("恢复中,请稍后"),
|
||||
"toastReadFile" : MessageLookupByLibrary.simpleMessage("读取文件成功"),
|
||||
"toastRecoverFailed" : MessageLookupByLibrary.simpleMessage("恢复订阅失败"),
|
||||
"toastRemovePlaylist" : MessageLookupByLibrary.simpleMessage("从播放列表移除"),
|
||||
"toastSettingSaved" : MessageLookupByLibrary.simpleMessage("设置已保存"),
|
||||
"toastTimeEqualEnd" : MessageLookupByLibrary.simpleMessage("与结束时间相同"),
|
||||
"toastTimeEqualStart" : MessageLookupByLibrary.simpleMessage("与起始时间相同"),
|
||||
"understood" : MessageLookupByLibrary.simpleMessage("了解"),
|
||||
"undo" : MessageLookupByLibrary.simpleMessage("撤销"),
|
||||
"unlike" : MessageLookupByLibrary.simpleMessage("取消喜欢"),
|
||||
"unliked" : MessageLookupByLibrary.simpleMessage("从收藏移除"),
|
||||
"updateDate" : MessageLookupByLibrary.simpleMessage("更新日期"),
|
||||
"updateEpisodesCount" : m14,
|
||||
"updateEpisodesCount" : m23,
|
||||
"updateFailed" : MessageLookupByLibrary.simpleMessage("更新失败"),
|
||||
"version" : m15
|
||||
"version" : m24
|
||||
};
|
||||
}
|
||||
|
@ -99,6 +99,16 @@ class S {
|
||||
);
|
||||
}
|
||||
|
||||
/// `Auto download`
|
||||
String get autoDownload {
|
||||
return Intl.message(
|
||||
'Auto download',
|
||||
name: 'autoDownload',
|
||||
desc: '',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
|
||||
/// `Back`
|
||||
String get back {
|
||||
return Intl.message(
|
||||
@ -199,6 +209,32 @@ class S {
|
||||
);
|
||||
}
|
||||
|
||||
/// `{count, plural, zero{Today} one{{count} day ago} other{{count} days ago}}`
|
||||
String daysAgo(num count) {
|
||||
return Intl.plural(
|
||||
count,
|
||||
zero: 'Today',
|
||||
one: '$count day ago',
|
||||
other: '$count days ago',
|
||||
name: 'daysAgo',
|
||||
desc: '',
|
||||
args: [count],
|
||||
);
|
||||
}
|
||||
|
||||
/// `{count, plural, zero{Never} one{{count} day} other{{count} days}}`
|
||||
String daysCount(num count) {
|
||||
return Intl.plural(
|
||||
count,
|
||||
zero: 'Never',
|
||||
one: '$count day',
|
||||
other: '$count days',
|
||||
name: 'daysCount',
|
||||
desc: '',
|
||||
args: [count],
|
||||
);
|
||||
}
|
||||
|
||||
/// `Delete`
|
||||
String get delete {
|
||||
return Intl.message(
|
||||
@ -214,7 +250,7 @@ class S {
|
||||
return Intl.message(
|
||||
'Developer',
|
||||
name: 'developer',
|
||||
desc: '',
|
||||
desc: 'Can also translate to About me',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
@ -229,6 +265,16 @@ class S {
|
||||
);
|
||||
}
|
||||
|
||||
/// `Done`
|
||||
String get done {
|
||||
return Intl.message(
|
||||
'Done',
|
||||
name: 'done',
|
||||
desc: '',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
|
||||
/// `Download`
|
||||
String get download {
|
||||
return Intl.message(
|
||||
@ -249,11 +295,11 @@ class S {
|
||||
);
|
||||
}
|
||||
|
||||
/// `Edit name`
|
||||
String get editName {
|
||||
/// `Edit group name`
|
||||
String get editGroupName {
|
||||
return Intl.message(
|
||||
'Edit name',
|
||||
name: 'editName',
|
||||
'Edit group name',
|
||||
name: 'editGroupName',
|
||||
desc: '',
|
||||
args: [],
|
||||
);
|
||||
@ -269,6 +315,36 @@ class S {
|
||||
);
|
||||
}
|
||||
|
||||
/// `Episode`
|
||||
String get episode {
|
||||
return Intl.message(
|
||||
'Episode',
|
||||
name: 'episode',
|
||||
desc: '',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
|
||||
/// `Tap to edit group`
|
||||
String get featureDiscoveryEditGroup {
|
||||
return Intl.message(
|
||||
'Tap to edit group',
|
||||
name: 'featureDiscoveryEditGroup',
|
||||
desc: '',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
|
||||
/// `You can change group name or delete group here, but home group can not be edited or deleted`
|
||||
String get featureDiscoveryEditGroupDes {
|
||||
return Intl.message(
|
||||
'You can change group name or delete group here, but home group can not be edited or deleted',
|
||||
name: 'featureDiscoveryEditGroupDes',
|
||||
desc: '',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
|
||||
/// `Episode view`
|
||||
String get featureDiscoveryEpisode {
|
||||
return Intl.message(
|
||||
@ -299,6 +375,46 @@ class S {
|
||||
);
|
||||
}
|
||||
|
||||
/// `Tap to add group`
|
||||
String get featureDiscoveryGroup {
|
||||
return Intl.message(
|
||||
'Tap to add group',
|
||||
name: 'featureDiscoveryGroup',
|
||||
desc: '',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
|
||||
/// `Default group is home for new podcast, you can create new group and move podcast to new group, podcast can be added to multi-groups.`
|
||||
String get featureDiscoveryGroupDes {
|
||||
return Intl.message(
|
||||
'Default group is home for new podcast, you can create new group and move podcast to new group, podcast can be added to multi-groups.',
|
||||
name: 'featureDiscoveryGroupDes',
|
||||
desc: '',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
|
||||
/// `Long tap to reorder podcast`
|
||||
String get featureDiscoveryGroupPodcast {
|
||||
return Intl.message(
|
||||
'Long tap to reorder podcast',
|
||||
name: 'featureDiscoveryGroupPodcast',
|
||||
desc: '',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
|
||||
/// `You can tap to see more options, or long tap to reorder podcast in group.`
|
||||
String get featureDiscoveryGroupPodcastDes {
|
||||
return Intl.message(
|
||||
'You can tap to see more options, or long tap to reorder podcast in group.',
|
||||
name: 'featureDiscoveryGroupPodcastDes',
|
||||
desc: '',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
|
||||
/// `Tap to import OMPL`
|
||||
String get featureDiscoveryOMPL {
|
||||
return Intl.message(
|
||||
@ -429,16 +545,26 @@ class S {
|
||||
);
|
||||
}
|
||||
|
||||
/// `From`
|
||||
String get from {
|
||||
/// `Fonts`
|
||||
String get fonts {
|
||||
return Intl.message(
|
||||
'From',
|
||||
name: 'from',
|
||||
'Fonts',
|
||||
name: 'fonts',
|
||||
desc: '',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
|
||||
/// `From {time}`
|
||||
String from(Object time) {
|
||||
return Intl.message(
|
||||
'From $time',
|
||||
name: 'from',
|
||||
desc: '',
|
||||
args: [time],
|
||||
);
|
||||
}
|
||||
|
||||
/// `Good Night`
|
||||
String get goodNight {
|
||||
return Intl.message(
|
||||
@ -449,6 +575,16 @@ class S {
|
||||
);
|
||||
}
|
||||
|
||||
/// `Group existed`
|
||||
String get groupExisted {
|
||||
return Intl.message(
|
||||
'Group existed',
|
||||
name: 'groupExisted',
|
||||
desc: '',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
|
||||
/// `Group filter`
|
||||
String get groupFilter {
|
||||
return Intl.message(
|
||||
@ -459,16 +595,29 @@ class S {
|
||||
);
|
||||
}
|
||||
|
||||
/// `Groups`
|
||||
String get groups {
|
||||
/// `Are you sure you want to delete this group? Podcasts will be moved to Home group.`
|
||||
String get groupRemoveConfirm {
|
||||
return Intl.message(
|
||||
'Groups',
|
||||
name: 'groups',
|
||||
'Are you sure you want to delete this group? Podcasts will be moved to Home group.',
|
||||
name: 'groupRemoveConfirm',
|
||||
desc: '',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
|
||||
/// `{count, plural, zero{Group} one{Group} other{Groups}}`
|
||||
String groups(num count) {
|
||||
return Intl.plural(
|
||||
count,
|
||||
zero: 'Group',
|
||||
one: 'Group',
|
||||
other: 'Groups',
|
||||
name: 'groups',
|
||||
desc: '',
|
||||
args: [count],
|
||||
);
|
||||
}
|
||||
|
||||
/// `See All`
|
||||
String get homeGroupsSeeAll {
|
||||
return Intl.message(
|
||||
@ -489,16 +638,6 @@ class S {
|
||||
);
|
||||
}
|
||||
|
||||
/// `Like Date`
|
||||
String get homeSubMenuLikeData {
|
||||
return Intl.message(
|
||||
'Like Date',
|
||||
name: 'homeSubMenuLikeData',
|
||||
desc: '',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
|
||||
/// `Sort by`
|
||||
String get homeSubMenuSortBy {
|
||||
return Intl.message(
|
||||
@ -509,16 +648,6 @@ class S {
|
||||
);
|
||||
}
|
||||
|
||||
/// `Update Date`
|
||||
String get homeSubMenuUpdateDate {
|
||||
return Intl.message(
|
||||
'Update Date',
|
||||
name: 'homeSubMenuUpdateDate',
|
||||
desc: '',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
|
||||
/// `Favorite`
|
||||
String get homeTabMenuFavotite {
|
||||
return Intl.message(
|
||||
@ -589,6 +718,19 @@ class S {
|
||||
);
|
||||
}
|
||||
|
||||
/// `{count, plural, zero{} one{{count} hour ago} other{{count} hours ago}}`
|
||||
String hoursAgo(num count) {
|
||||
return Intl.plural(
|
||||
count,
|
||||
zero: '',
|
||||
one: '$count hour ago',
|
||||
other: '$count hours ago',
|
||||
name: 'hoursAgo',
|
||||
desc: '',
|
||||
args: [count],
|
||||
);
|
||||
}
|
||||
|
||||
/// `{count, plural, zero{} one{{count} hour} other{{count} hours}}`
|
||||
String hoursCount(num count) {
|
||||
return Intl.plural(
|
||||
@ -602,6 +744,36 @@ class S {
|
||||
);
|
||||
}
|
||||
|
||||
/// `Long press on episode card for quick actions.`
|
||||
String get introFourthPage {
|
||||
return Intl.message(
|
||||
'Long press on episode card for quick actions.',
|
||||
name: 'introFourthPage',
|
||||
desc: '',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
|
||||
/// `Subscribe podcast via search or import OMPL file.`
|
||||
String get introSecondPage {
|
||||
return Intl.message(
|
||||
'Subscribe podcast via search or import OMPL file.',
|
||||
name: 'introSecondPage',
|
||||
desc: '',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
|
||||
/// `You can create new group for podcasts, swipe on podcast list to change group.`
|
||||
String get introThirdPage {
|
||||
return Intl.message(
|
||||
'You can create new group for podcasts, swipe on podcast list to change group.',
|
||||
name: 'introThirdPage',
|
||||
desc: '',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
|
||||
/// `Later`
|
||||
String get later {
|
||||
return Intl.message(
|
||||
@ -682,6 +854,16 @@ class S {
|
||||
);
|
||||
}
|
||||
|
||||
/// `Mark`
|
||||
String get mark {
|
||||
return Intl.message(
|
||||
'Mark',
|
||||
name: 'mark',
|
||||
desc: 'The short the best',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
|
||||
/// `Mark confirm`
|
||||
String get markConfirm {
|
||||
return Intl.message(
|
||||
@ -762,6 +944,19 @@ class S {
|
||||
);
|
||||
}
|
||||
|
||||
/// `{count, plural, zero{} one{{count} minute ago} other{{count} minutes ago}}`
|
||||
String minsAgo(num count) {
|
||||
return Intl.plural(
|
||||
count,
|
||||
zero: '',
|
||||
one: '$count minute ago',
|
||||
other: '$count minutes ago',
|
||||
name: 'minsAgo',
|
||||
desc: '',
|
||||
args: [count],
|
||||
);
|
||||
}
|
||||
|
||||
/// `{count, plural, zero{} one{{count} min} other{{count} mins}}`
|
||||
String minsCount(num count) {
|
||||
return Intl.plural(
|
||||
@ -805,6 +1000,16 @@ class S {
|
||||
);
|
||||
}
|
||||
|
||||
/// `Next`
|
||||
String get next {
|
||||
return Intl.message(
|
||||
'Next',
|
||||
name: 'next',
|
||||
desc: '',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
|
||||
/// `No episode downloaded yet`
|
||||
String get noEpisodeDownload {
|
||||
return Intl.message(
|
||||
@ -945,6 +1150,26 @@ class S {
|
||||
);
|
||||
}
|
||||
|
||||
/// `Plugins`
|
||||
String get plugins {
|
||||
return Intl.message(
|
||||
'Plugins',
|
||||
name: 'plugins',
|
||||
desc: '',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
|
||||
/// `Podcast`
|
||||
String get podcast {
|
||||
return Intl.message(
|
||||
'Podcast',
|
||||
name: 'podcast',
|
||||
desc: '',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
|
||||
/// `Podcast subscribed`
|
||||
String get podcastSubscribed {
|
||||
return Intl.message(
|
||||
@ -1015,6 +1240,16 @@ class S {
|
||||
);
|
||||
}
|
||||
|
||||
/// `Recover subscribe`
|
||||
String get recoverSubscribe {
|
||||
return Intl.message(
|
||||
'Recover subscribe',
|
||||
name: 'recoverSubscribe',
|
||||
desc: '',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
|
||||
/// `Remove`
|
||||
String get remove {
|
||||
return Intl.message(
|
||||
@ -1025,6 +1260,36 @@ class S {
|
||||
);
|
||||
}
|
||||
|
||||
/// `Remove confirm`
|
||||
String get removeConfirm {
|
||||
return Intl.message(
|
||||
'Remove confirm',
|
||||
name: 'removeConfirm',
|
||||
desc: 'unsubscribe podcast dialog',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
|
||||
/// `Removed at {date}`
|
||||
String removedAt(Object date) {
|
||||
return Intl.message(
|
||||
'Removed at $date',
|
||||
name: 'removedAt',
|
||||
desc: 'For example :Removed at 2020.10.10',
|
||||
args: [date],
|
||||
);
|
||||
}
|
||||
|
||||
/// `Are you sure you want to unsubscribe?`
|
||||
String get removePodcastDes {
|
||||
return Intl.message(
|
||||
'Are you sure you want to unsubscribe?',
|
||||
name: 'removePodcastDes',
|
||||
desc: '',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
|
||||
/// `Schedule`
|
||||
String get schedule {
|
||||
return Intl.message(
|
||||
@ -1055,6 +1320,19 @@ class S {
|
||||
);
|
||||
}
|
||||
|
||||
/// `{count, plural, zero{} one{{count} second ago} other{{count} seconds ago}}`
|
||||
String secondsAgo(num count) {
|
||||
return Intl.plural(
|
||||
count,
|
||||
zero: '',
|
||||
one: '$count second ago',
|
||||
other: '$count seconds ago',
|
||||
name: 'secondsAgo',
|
||||
desc: '',
|
||||
args: [count],
|
||||
);
|
||||
}
|
||||
|
||||
/// `Accent color`
|
||||
String get settingsAccentColor {
|
||||
return Intl.message(
|
||||
@ -1265,10 +1543,10 @@ class S {
|
||||
);
|
||||
}
|
||||
|
||||
/// `Bugs and feature request`
|
||||
/// `Bugs and features request`
|
||||
String get settingsFeedbackDes {
|
||||
return Intl.message(
|
||||
'Bugs and feature request',
|
||||
'Bugs and features request',
|
||||
name: 'settingsFeedbackDes',
|
||||
desc: '',
|
||||
args: [],
|
||||
@ -1615,6 +1893,16 @@ class S {
|
||||
);
|
||||
}
|
||||
|
||||
/// `Skip seconds at start`
|
||||
String get skipSecondsAtStart {
|
||||
return Intl.message(
|
||||
'Skip seconds at start',
|
||||
name: 'skipSecondsAtStart',
|
||||
desc: '',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
|
||||
/// `Sleep timer`
|
||||
String get sleepTimer {
|
||||
return Intl.message(
|
||||
@ -1665,13 +1953,13 @@ class S {
|
||||
);
|
||||
}
|
||||
|
||||
/// `To`
|
||||
String get to {
|
||||
/// `To {time}`
|
||||
String to(Object time) {
|
||||
return Intl.message(
|
||||
'To',
|
||||
'To $time',
|
||||
name: 'to',
|
||||
desc: '',
|
||||
args: [],
|
||||
args: [time],
|
||||
);
|
||||
}
|
||||
|
||||
@ -1686,35 +1974,65 @@ class S {
|
||||
}
|
||||
|
||||
/// `Discovery feature reopened, pleast restart the app`
|
||||
String get toastDescovery {
|
||||
String get toastDiscovery {
|
||||
return Intl.message(
|
||||
'Discovery feature reopened, pleast restart the app',
|
||||
name: 'toastDescovery',
|
||||
name: 'toastDiscovery',
|
||||
desc: '',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
|
||||
/// `File error, Subscribe failed`
|
||||
/// `File error, subscribe failed`
|
||||
String get toastFileError {
|
||||
return Intl.message(
|
||||
'File error, Subscribe failed',
|
||||
'File error, subscribe failed',
|
||||
name: 'toastFileError',
|
||||
desc: '',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
|
||||
/// `File not vilid`
|
||||
String get toastFileNotVilid {
|
||||
/// `File not valid`
|
||||
String get toastFileNotValid {
|
||||
return Intl.message(
|
||||
'File not vilid',
|
||||
name: 'toastFileNotVilid',
|
||||
'File not valid',
|
||||
name: 'toastFileNotValid',
|
||||
desc: '',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
|
||||
/// `Home group is not supported`
|
||||
String get toastHomeGroupNotSupport {
|
||||
return Intl.message(
|
||||
'Home group is not supported',
|
||||
name: 'toastHomeGroupNotSupport',
|
||||
desc: '',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
|
||||
/// `At least select one group`
|
||||
String get toastOneGroup {
|
||||
return Intl.message(
|
||||
'At least select one group',
|
||||
name: 'toastOneGroup',
|
||||
desc: '',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
|
||||
/// `Recovering, wait for a moment`
|
||||
String get toastPodcastRecovering {
|
||||
return Intl.message(
|
||||
'Recovering, wait for a moment',
|
||||
name: 'toastPodcastRecovering',
|
||||
desc: 'Resubscribe removed podcast',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
|
||||
/// `Read file successfully`
|
||||
String get toastReadFile {
|
||||
return Intl.message(
|
||||
@ -1725,16 +2043,56 @@ class S {
|
||||
);
|
||||
}
|
||||
|
||||
/// `Removed from playlist`
|
||||
/// `Podcast recover failed`
|
||||
String get toastRecoverFailed {
|
||||
return Intl.message(
|
||||
'Podcast recover failed',
|
||||
name: 'toastRecoverFailed',
|
||||
desc: 'Resubscribe removed podast',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
|
||||
/// `Episode removed from playlist`
|
||||
String get toastRemovePlaylist {
|
||||
return Intl.message(
|
||||
'Removed from playlist',
|
||||
'Episode removed from playlist',
|
||||
name: 'toastRemovePlaylist',
|
||||
desc: '',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
|
||||
/// `Setting saved`
|
||||
String get toastSettingSaved {
|
||||
return Intl.message(
|
||||
'Setting saved',
|
||||
name: 'toastSettingSaved',
|
||||
desc: '',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
|
||||
/// `Time is equal to end time`
|
||||
String get toastTimeEqualEnd {
|
||||
return Intl.message(
|
||||
'Time is equal to end time',
|
||||
name: 'toastTimeEqualEnd',
|
||||
desc: '',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
|
||||
/// `Time is equal to start time`
|
||||
String get toastTimeEqualStart {
|
||||
return Intl.message(
|
||||
'Time is equal to start time',
|
||||
name: 'toastTimeEqualStart',
|
||||
desc: '',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
|
||||
/// `Understood`
|
||||
String get understood {
|
||||
return Intl.message(
|
||||
@ -1745,6 +2103,16 @@ class S {
|
||||
);
|
||||
}
|
||||
|
||||
/// `UNDO`
|
||||
String get undo {
|
||||
return Intl.message(
|
||||
'UNDO',
|
||||
name: 'undo',
|
||||
desc: '',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
|
||||
/// `Unlike`
|
||||
String get unlike {
|
||||
return Intl.message(
|
||||
@ -1755,10 +2123,10 @@ class S {
|
||||
);
|
||||
}
|
||||
|
||||
/// `Removed from favorite`
|
||||
/// `Episode removed from favorite`
|
||||
String get unliked {
|
||||
return Intl.message(
|
||||
'Removed from favorite',
|
||||
'Episode removed from favorite',
|
||||
name: 'unliked',
|
||||
desc: '',
|
||||
args: [],
|
||||
@ -1775,13 +2143,13 @@ class S {
|
||||
);
|
||||
}
|
||||
|
||||
/// `{count, plural, zero{No Update} one{Updated {count} Episode} other{Updated {count} Episodes}}`
|
||||
/// `{count, plural, zero{No update} one{Updated {count} episode} other{Updated {count} episodes}}`
|
||||
String updateEpisodesCount(num count) {
|
||||
return Intl.plural(
|
||||
count,
|
||||
zero: 'No Update',
|
||||
one: 'Updated $count Episode',
|
||||
other: 'Updated $count Episodes',
|
||||
zero: 'No update',
|
||||
one: 'Updated $count episode',
|
||||
other: 'Updated $count episodes',
|
||||
name: 'updateEpisodesCount',
|
||||
desc: '',
|
||||
args: [count],
|
||||
|
@ -58,6 +58,7 @@ class _PlaylistPageState extends State<PlaylistPage> {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final s = context.s;
|
||||
var audio = Provider.of<AudioPlayerNotifier>(context, listen: false);
|
||||
return AnnotatedRegion<SystemUiOverlayStyle>(
|
||||
value: SystemUiOverlayStyle(
|
||||
@ -69,7 +70,7 @@ class _PlaylistPageState extends State<PlaylistPage> {
|
||||
child: Scaffold(
|
||||
backgroundColor: Theme.of(context).primaryColor,
|
||||
appBar: AppBar(
|
||||
title: _topHeight == 60 ? Text('Playlist') : Center(),
|
||||
title: _topHeight == 60 ? Text(s.homeMenuPlaylist) : Center(),
|
||||
elevation: 0,
|
||||
backgroundColor: Theme.of(context).primaryColor,
|
||||
),
|
||||
@ -98,7 +99,9 @@ class _PlaylistPageState extends State<PlaylistPage> {
|
||||
alignment: Alignment.centerLeft,
|
||||
child: RichText(
|
||||
text: TextSpan(
|
||||
text: _topHeight > 90 ? 'Playlist\n' : '',
|
||||
text: _topHeight > 90
|
||||
? s.homeMenuPlaylist + '\n'
|
||||
: '',
|
||||
style: TextStyle(
|
||||
color: Theme.of(context)
|
||||
.textTheme
|
||||
@ -311,6 +314,7 @@ class _DismissibleContainerState extends State<DismissibleContainer> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
var audio = Provider.of<AudioPlayerNotifier>(context, listen: false);
|
||||
final s = context.s;
|
||||
Color _c = (Theme.of(context).brightness == Brightness.light)
|
||||
? widget.episode.primaryColor.colorizedark()
|
||||
: widget.episode.primaryColor.colorizeLight();
|
||||
@ -363,17 +367,17 @@ class _DismissibleContainerState extends State<DismissibleContainer> {
|
||||
int index = await audio.delFromPlaylist(widget.episode);
|
||||
final episodeRemove = widget.episode;
|
||||
Fluttertoast.showToast(
|
||||
msg: 'Removed From Playlist',
|
||||
msg: s.toastRemovePlaylist,
|
||||
gravity: ToastGravity.BOTTOM,
|
||||
);
|
||||
Scaffold.of(context).showSnackBar(SnackBar(
|
||||
behavior: SnackBarBehavior.floating,
|
||||
backgroundColor: Colors.grey[800],
|
||||
content: Text('Episode removed',
|
||||
content: Text(s.toastRemovePlaylist,
|
||||
style: TextStyle(color: Colors.white)),
|
||||
action: SnackBarAction(
|
||||
textColor: context.accentColor,
|
||||
label: 'Undo',
|
||||
label: s.undo,
|
||||
onPressed: () {
|
||||
audio.addToPlaylistAt(episodeRemove, index);
|
||||
}),
|
||||
@ -421,8 +425,7 @@ class _DismissibleContainerState extends State<DismissibleContainer> {
|
||||
: Center(),
|
||||
widget.episode.duration != 0
|
||||
? _episodeTag(
|
||||
(widget.episode.duration ~/ 60).toString() +
|
||||
'min',
|
||||
s.minsCount(widget.episode.duration ~/ 60),
|
||||
Colors.cyan[300])
|
||||
: Center(),
|
||||
widget.episode.enclosureLength != null
|
||||
|
@ -38,8 +38,9 @@ class PopupMenu extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _PopupMenuState extends State<PopupMenu> {
|
||||
Future<String> _getRefreshDate() async {
|
||||
Future<String> _getRefreshDate(BuildContext context) async {
|
||||
int refreshDate;
|
||||
final s = context.s;
|
||||
KeyValueStorage refreshstorage = KeyValueStorage('refreshdate');
|
||||
int i = await refreshstorage.getInt();
|
||||
if (i == 0) {
|
||||
@ -50,17 +51,15 @@ class _PopupMenuState extends State<PopupMenu> {
|
||||
refreshDate = i;
|
||||
}
|
||||
DateTime date = DateTime.fromMillisecondsSinceEpoch(refreshDate);
|
||||
var diffrence = DateTime.now().difference(date);
|
||||
if (diffrence.inSeconds < 60) {
|
||||
return '${diffrence.inSeconds} seconds ago';
|
||||
} else if (diffrence.inMinutes < 10) {
|
||||
return '${diffrence.inMinutes} minutes ago';
|
||||
} else if (diffrence.inHours < 1) {
|
||||
return 'an hour ago';
|
||||
} else if (diffrence.inHours <= 24) {
|
||||
return '${diffrence.inHours} hours ago';
|
||||
} else if (diffrence.inDays < 7) {
|
||||
return '${diffrence.inDays} days ago';
|
||||
var difference = DateTime.now().difference(date);
|
||||
if (difference.inSeconds < 60) {
|
||||
return s.secondsAgo(difference.inSeconds);
|
||||
} else if (difference.inMinutes < 60) {
|
||||
return s.minsAgo(difference.inMinutes);
|
||||
} else if (difference.inHours < 24) {
|
||||
return s.hoursAgo(difference.inHours);
|
||||
} else if (difference.inDays < 7) {
|
||||
return s.daysAgo(difference.inDays);
|
||||
} else {
|
||||
return DateFormat.yMMMd()
|
||||
.format(DateTime.fromMillisecondsSinceEpoch(refreshDate));
|
||||
@ -84,7 +83,7 @@ class _PopupMenuState extends State<PopupMenu> {
|
||||
.toList();
|
||||
if (total.length == 0) {
|
||||
Fluttertoast.showToast(
|
||||
msg: 'File not valid',
|
||||
msg: s.toastFileNotValid,
|
||||
gravity: ToastGravity.BOTTOM,
|
||||
);
|
||||
} else {
|
||||
@ -104,7 +103,7 @@ class _PopupMenuState extends State<PopupMenu> {
|
||||
} catch (e) {
|
||||
print(e);
|
||||
Fluttertoast.showToast(
|
||||
msg: 'File error, Subscribe failed',
|
||||
msg: s.toastFileError,
|
||||
gravity: ToastGravity.TOP,
|
||||
);
|
||||
//await Future.delayed(Duration(seconds: 5));
|
||||
@ -121,7 +120,7 @@ class _PopupMenuState extends State<PopupMenu> {
|
||||
print('File Path' + filePath);
|
||||
//importOmpl.importState = ImportState.start;
|
||||
Fluttertoast.showToast(
|
||||
msg: 'Read file successfully',
|
||||
msg: s.toastReadFile,
|
||||
gravity: ToastGravity.TOP,
|
||||
);
|
||||
_saveOmpl(filePath);
|
||||
@ -134,7 +133,7 @@ class _PopupMenuState extends State<PopupMenu> {
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.all(Radius.circular(10))),
|
||||
elevation: 1,
|
||||
tooltip: 'Menu',
|
||||
tooltip: s.menu,
|
||||
itemBuilder: (context) => [
|
||||
PopupMenuItem(
|
||||
value: 1,
|
||||
@ -154,7 +153,7 @@ class _PopupMenuState extends State<PopupMenu> {
|
||||
s.homeToprightMenuRefreshAll,
|
||||
),
|
||||
FutureBuilder<String>(
|
||||
future: _getRefreshDate(),
|
||||
future: _getRefreshDate(context),
|
||||
builder: (_, snapshot) {
|
||||
if (snapshot.hasData)
|
||||
return Text(
|
||||
|
@ -4,6 +4,7 @@ import 'package:provider/provider.dart';
|
||||
import '../state/settingstate.dart';
|
||||
import '../home/home.dart';
|
||||
import '../util/pageroute.dart';
|
||||
import '../util/context_extension.dart';
|
||||
import 'fourthpage.dart';
|
||||
import 'secondpage.dart';
|
||||
import 'thirdpage.dart';
|
||||
@ -200,7 +201,7 @@ class _SlideIntroState extends State<SlideIntro> {
|
||||
height: 40,
|
||||
width: 80,
|
||||
child: Center(
|
||||
child: Text('Next',
|
||||
child: Text(context.s.next,
|
||||
style: TextStyle(
|
||||
color: Colors.black)))))
|
||||
: InkWell(
|
||||
@ -221,7 +222,7 @@ class _SlideIntroState extends State<SlideIntro> {
|
||||
height: 40,
|
||||
width: 80,
|
||||
child: Center(
|
||||
child: Text('Done',
|
||||
child: Text(context.s.done,
|
||||
style: TextStyle(
|
||||
color: Colors.black))))),
|
||||
),
|
||||
|
@ -23,13 +23,13 @@ class _FourthPageState extends State<FourthPage> {
|
||||
height: 200,
|
||||
alignment: Alignment.center,
|
||||
padding: EdgeInsets.all(40),
|
||||
child: Text('Long press on episode card for quick actions.', style: TextStyle(
|
||||
fontSize: 30,
|
||||
color: Colors.white
|
||||
),),
|
||||
child: Text(
|
||||
context.s.introFourthPage,
|
||||
style: TextStyle(fontSize: 30, color: Colors.white),
|
||||
),
|
||||
),
|
||||
Container(
|
||||
height: context.width*3/4,
|
||||
height: context.width * 3 / 4,
|
||||
// color: Colors.red,
|
||||
child: FlareActor(
|
||||
'assets/longtap.flr',
|
||||
|
@ -25,7 +25,7 @@ class _SecondPageState extends State<SecondPage> {
|
||||
padding:
|
||||
EdgeInsets.only(top: 20, bottom: 20, left: 40, right: 40),
|
||||
child: Text(
|
||||
'Subscribe podcast via search or import OMPL file.',
|
||||
context.s.introSecondPage,
|
||||
style: TextStyle(fontSize: 30, color: Colors.white),
|
||||
),
|
||||
),
|
||||
|
@ -24,7 +24,7 @@ class _ThirdPageState extends State<ThirdPage> {
|
||||
alignment: Alignment.center,
|
||||
padding: EdgeInsets.all(40),
|
||||
child: Text(
|
||||
'Swipe on podcast list to change group.',
|
||||
context.s.introThirdPage,
|
||||
style: TextStyle(fontSize: 30, color: Colors.white),
|
||||
),
|
||||
),
|
||||
|
@ -20,6 +20,8 @@
|
||||
},
|
||||
"all": "All",
|
||||
"@all": {},
|
||||
"autoDownload": "Auto download",
|
||||
"@autoDownload": {},
|
||||
"back": "Back",
|
||||
"@back": {},
|
||||
"buffering": "Buffering",
|
||||
@ -40,26 +42,48 @@
|
||||
"@confirm": {},
|
||||
"darkMode": "Dark mode",
|
||||
"@darkMode": {},
|
||||
"daysAgo": "{count, plural, zero{Today} one{{count} day ago} other{{count} days ago}}",
|
||||
"@daysAgo": {},
|
||||
"daysCount": "{count, plural, zero{Never} one{{count} day} other{{count} days}}",
|
||||
"@daysCount": {},
|
||||
"delete": "Delete",
|
||||
"@delete": {},
|
||||
"developer": "Developer",
|
||||
"@developer": {},
|
||||
"@developer": {
|
||||
"description": "Can also translate to About me"
|
||||
},
|
||||
"dismiss": "Dismiss",
|
||||
"@dismiss": {},
|
||||
"done": "Done",
|
||||
"@done": {},
|
||||
"download": "Download",
|
||||
"@download": {},
|
||||
"downloaded": "Downloaded",
|
||||
"@downloaded": {},
|
||||
"editName": "Edit name",
|
||||
"@editName": {},
|
||||
"editGroupName": "Edit group name",
|
||||
"@editGroupName": {},
|
||||
"endOfEpisode": "End of Episode",
|
||||
"@endOfEpisode": {},
|
||||
"episode": "Episode",
|
||||
"@episode": {},
|
||||
"featureDiscoveryEditGroup": "Tap to edit group",
|
||||
"@featureDiscoveryEditGroup": {},
|
||||
"featureDiscoveryEditGroupDes": "You can change group name or delete group here, but home group can not be edited or deleted",
|
||||
"@featureDiscoveryEditGroupDes": {},
|
||||
"featureDiscoveryEpisode": "Episode view",
|
||||
"@featureDiscoveryEpisode": {},
|
||||
"featureDiscoveryEpisodeDes": "You can long tap to play episode or add episode to playlist.",
|
||||
"@featureDiscoveryEpisodeDes": {},
|
||||
"featureDiscoveryEpisodeTitle": "Long tap to play episode instantly",
|
||||
"@featureDiscoveryEpisodeTitle": {},
|
||||
"featureDiscoveryGroup": "Tap to add group",
|
||||
"@featureDiscoveryGroup": {},
|
||||
"featureDiscoveryGroupDes": "Default group is home for new podcast, you can create new group and move podcast to new group, podcast can be added to multi-groups.",
|
||||
"@featureDiscoveryGroupDes": {},
|
||||
"featureDiscoveryGroupPodcast": "Long tap to reorder podcast",
|
||||
"@featureDiscoveryGroupPodcast": {},
|
||||
"featureDiscoveryGroupPodcastDes": "You can tap to see more options, or long tap to reorder podcast in group.",
|
||||
"@featureDiscoveryGroupPodcastDes": {},
|
||||
"featureDiscoveryOMPL": "Tap to import OMPL",
|
||||
"@featureDiscoveryOMPL": {},
|
||||
"featureDiscoveryOMPLDes": "You can import OMPL file, open setting or refresh all podcast at once here.",
|
||||
@ -86,24 +110,30 @@
|
||||
"@feedbackPlay": {},
|
||||
"feedbackTelegram": "Join group",
|
||||
"@feedbackTelegram": {},
|
||||
"from": "From",
|
||||
"@from": {},
|
||||
"fonts": "Fonts",
|
||||
"@fonts": {},
|
||||
"from": "From {time}",
|
||||
"@from": {
|
||||
"placeholders": {
|
||||
"time": {}
|
||||
}
|
||||
},
|
||||
"goodNight": "Good Night",
|
||||
"@goodNight": {},
|
||||
"groupExisted": "Group existed",
|
||||
"@groupExisted": {},
|
||||
"groupFilter": "Group filter",
|
||||
"@groupFilter": {},
|
||||
"groups": "Groups",
|
||||
"groupRemoveConfirm": "Are you sure you want to delete this group? Podcasts will be moved to Home group.",
|
||||
"@groupRemoveConfirm": {},
|
||||
"groups": "{count, plural, zero{Group} one{Group} other{Groups}}",
|
||||
"@groups": {},
|
||||
"homeGroupsSeeAll": "See All",
|
||||
"@homeGroupsSeeAll": {},
|
||||
"homeMenuPlaylist": "Playlist",
|
||||
"@homeMenuPlaylist": {},
|
||||
"homeSubMenuLikeData": "Like Date",
|
||||
"@homeSubMenuLikeData": {},
|
||||
"homeSubMenuSortBy": "Sort by",
|
||||
"@homeSubMenuSortBy": {},
|
||||
"homeSubMenuUpdateDate": "Update Date",
|
||||
"@homeSubMenuUpdateDate": {},
|
||||
"homeTabMenuFavotite": "Favorite",
|
||||
"@homeTabMenuFavotite": {},
|
||||
"homeTabMenuRecent": "Recent",
|
||||
@ -122,8 +152,16 @@
|
||||
"host": {}
|
||||
}
|
||||
},
|
||||
"hoursAgo": "{count, plural, zero{} one{{count} hour ago} other{{count} hours ago}}",
|
||||
"@hoursAgo": {},
|
||||
"hoursCount": "{count, plural, zero{} one{{count} hour} other{{count} hours}}",
|
||||
"@hoursCount": {},
|
||||
"introFourthPage": "Long press on episode card for quick actions.",
|
||||
"@introFourthPage": {},
|
||||
"introSecondPage": "Subscribe podcast via search or import OMPL file.",
|
||||
"@introSecondPage": {},
|
||||
"introThirdPage": "You can create new group for podcasts, swipe on podcast list to change group.",
|
||||
"@introThirdPage": {},
|
||||
"later": "Later",
|
||||
"@later": {},
|
||||
"lightMode": "Light mode",
|
||||
@ -140,6 +178,10 @@
|
||||
"@listened": {},
|
||||
"loadMore": "Load more",
|
||||
"@loadMore": {},
|
||||
"mark": "Mark",
|
||||
"@mark": {
|
||||
"description": "The short the best"
|
||||
},
|
||||
"markConfirm": "Mark confirm",
|
||||
"@markConfirm": {},
|
||||
"markConfirmContent": "Confirm mark all episodes listened?",
|
||||
@ -156,6 +198,8 @@
|
||||
"@menuViewRSS": {},
|
||||
"menuVisitSite": "Visit Site",
|
||||
"@menuVisitSite": {},
|
||||
"minsAgo": "{count, plural, zero{} one{{count} minute ago} other{{count} minutes ago}}",
|
||||
"@minsAgo": {},
|
||||
"minsCount": "{count, plural, zero{} one{{count} min} other{{count} mins}}",
|
||||
"@minsCount": {},
|
||||
"network": "Network",
|
||||
@ -164,6 +208,8 @@
|
||||
"@newestFirst": {},
|
||||
"newGroup": "Create new group",
|
||||
"@newGroup": {},
|
||||
"next": "Next",
|
||||
"@next": {},
|
||||
"noEpisodeDownload": "No episode downloaded yet",
|
||||
"@noEpisodeDownload": {},
|
||||
"noEpisodeFavorite": "No episode collected yet",
|
||||
@ -216,6 +262,10 @@
|
||||
"@play": {},
|
||||
"playing": "Playing",
|
||||
"@playing": {},
|
||||
"plugins": "Plugins",
|
||||
"@plugins": {},
|
||||
"podcast": "Podcast",
|
||||
"@podcast": {},
|
||||
"podcastSubscribed": "Podcast subscribed",
|
||||
"@podcastSubscribed": {},
|
||||
"popupMenuDownloadDes": "Download episode",
|
||||
@ -230,14 +280,31 @@
|
||||
"@popupMenuPlayDes": {},
|
||||
"privacyPolicy": "Privacy Policy",
|
||||
"@privacyPolicy": {},
|
||||
"recoverSubscribe": "Recover subscribe",
|
||||
"@recoverSubscribe": {},
|
||||
"remove": "Remove",
|
||||
"@remove": {},
|
||||
"removeConfirm": "Remove confirm",
|
||||
"@removeConfirm": {
|
||||
"description": "unsubscribe podcast dialog"
|
||||
},
|
||||
"removedAt": "Removed at {date}",
|
||||
"@removedAt": {
|
||||
"description": "For example :Removed at 2020.10.10",
|
||||
"placeholders": {
|
||||
"date": {}
|
||||
}
|
||||
},
|
||||
"removePodcastDes": "Are you sure you want to unsubscribe?",
|
||||
"@removePodcastDes": {},
|
||||
"schedule": "Schedule",
|
||||
"@schedule": {},
|
||||
"searchInvalidRss": "Invalid RSS link",
|
||||
"@searchInvalidRss": {},
|
||||
"searchPodcast": "Search podcast",
|
||||
"@searchPodcast": {},
|
||||
"secondsAgo": "{count, plural, zero{} one{{count} second ago} other{{count} seconds ago}}",
|
||||
"@secondsAgo": {},
|
||||
"settingsAccentColor": "Accent color",
|
||||
"@settingsAccentColor": {},
|
||||
"settingsAccentColorDes": "Include the ovelay color",
|
||||
@ -280,7 +347,7 @@
|
||||
"@settingsExportDes": {},
|
||||
"settingsFeedback": "Feedback",
|
||||
"@settingsFeedback": {},
|
||||
"settingsFeedbackDes": "Bugs and feature request",
|
||||
"settingsFeedbackDes": "Bugs and features request",
|
||||
"@settingsFeedbackDes": {},
|
||||
"settingsHistory": "History",
|
||||
"@settingsHistory": {},
|
||||
@ -350,6 +417,8 @@
|
||||
"@settingsUpdateIntervalDes": {},
|
||||
"size": "Size",
|
||||
"@size": {},
|
||||
"skipSecondsAtStart": "Skip seconds at start",
|
||||
"@skipSecondsAtStart": {},
|
||||
"sleepTimer": "Sleep timer",
|
||||
"@sleepTimer": {},
|
||||
"subscribe": "Subscribe",
|
||||
@ -368,29 +437,53 @@
|
||||
"time": {}
|
||||
}
|
||||
},
|
||||
"to": "To",
|
||||
"@to": {},
|
||||
"to": "To {time}",
|
||||
"@to": {
|
||||
"placeholders": {
|
||||
"time": {}
|
||||
}
|
||||
},
|
||||
"toastAddPlaylist": "Added to playlist",
|
||||
"@toastAddPlaylist": {},
|
||||
"toastDescovery": "Discovery feature reopened, pleast restart the app",
|
||||
"@toastDescovery": {},
|
||||
"toastFileError": "File error, Subscribe failed",
|
||||
"toastDiscovery": "Discovery feature reopened, pleast restart the app",
|
||||
"@toastDiscovery": {},
|
||||
"toastFileError": "File error, subscribe failed",
|
||||
"@toastFileError": {},
|
||||
"toastFileNotVilid": "File not vilid",
|
||||
"@toastFileNotVilid": {},
|
||||
"toastFileNotValid": "File not valid",
|
||||
"@toastFileNotValid": {},
|
||||
"toastHomeGroupNotSupport": "Home group is not supported",
|
||||
"@toastHomeGroupNotSupport": {},
|
||||
"toastOneGroup": "At least select one group",
|
||||
"@toastOneGroup": {},
|
||||
"toastPodcastRecovering": "Recovering, wait for a moment",
|
||||
"@toastPodcastRecovering": {
|
||||
"description": "Resubscribe removed podcast"
|
||||
},
|
||||
"toastReadFile": "Read file successfully",
|
||||
"@toastReadFile": {},
|
||||
"toastRemovePlaylist": "Removed from playlist",
|
||||
"toastRecoverFailed": "Podcast recover failed",
|
||||
"@toastRecoverFailed": {
|
||||
"description": "Resubscribe removed podast"
|
||||
},
|
||||
"toastRemovePlaylist": "Episode removed from playlist",
|
||||
"@toastRemovePlaylist": {},
|
||||
"toastSettingSaved": "Setting saved",
|
||||
"@toastSettingSaved": {},
|
||||
"toastTimeEqualEnd": "Time is equal to end time",
|
||||
"@toastTimeEqualEnd": {},
|
||||
"toastTimeEqualStart": "Time is equal to start time",
|
||||
"@toastTimeEqualStart": {},
|
||||
"understood": "Understood",
|
||||
"@understood": {},
|
||||
"undo": "UNDO",
|
||||
"@undo": {},
|
||||
"unlike": "Unlike",
|
||||
"@unlike": {},
|
||||
"unliked": "Removed from favorite",
|
||||
"unliked": "Episode removed from favorite",
|
||||
"@unliked": {},
|
||||
"updateDate": "Update date",
|
||||
"@updateDate": {},
|
||||
"updateEpisodesCount": "{count, plural, zero{No Update} one{Updated {count} Episode} other{Updated {count} Episodes}}",
|
||||
"updateEpisodesCount": "{count, plural, zero{No update} one{Updated {count} episode} other{Updated {count} episodes}}",
|
||||
"@updateEpisodesCount": {},
|
||||
"updateFailed": "Update failed, network error",
|
||||
"@updateFailed": {},
|
||||
|
@ -20,6 +20,8 @@
|
||||
},
|
||||
"all": "全部",
|
||||
"@all": {},
|
||||
"autoDownload": "自动下载",
|
||||
"@autoDownload": {},
|
||||
"back": "返回",
|
||||
"@back": {},
|
||||
"buffering": "缓冲",
|
||||
@ -40,26 +42,48 @@
|
||||
"@confirm": {},
|
||||
"darkMode": "夜晚模式",
|
||||
"@darkMode": {},
|
||||
"daysAgo": "{count, plural, zero{今天} other{{count}天前}}",
|
||||
"@daysAgo": {},
|
||||
"daysCount": "{count, plural, zero{从不} other{{count}天}}",
|
||||
"@daysCount": {},
|
||||
"delete": "删除",
|
||||
"@delete": {},
|
||||
"developer": "关于我",
|
||||
"@developer": {},
|
||||
"@developer": {
|
||||
"description": "Can also translate to About me"
|
||||
},
|
||||
"dismiss": "忽略",
|
||||
"@dismiss": {},
|
||||
"done": "完成",
|
||||
"@done": {},
|
||||
"download": "下载",
|
||||
"@download": {},
|
||||
"downloaded": "已下载",
|
||||
"@downloaded": {},
|
||||
"editName": "修改组名",
|
||||
"@editName": {},
|
||||
"editGroupName": "修改组名",
|
||||
"@editGroupName": {},
|
||||
"endOfEpisode": "节目结束",
|
||||
"@endOfEpisode": {},
|
||||
"episode": "节目",
|
||||
"@episode": {},
|
||||
"featureDiscoveryEditGroup": "点击修改分组",
|
||||
"@featureDiscoveryEditGroup": {},
|
||||
"featureDiscoveryEditGroupDes": "您可以修改分组名或者删除分组,注意 Home 分组无法修改,也不能被删除。",
|
||||
"@featureDiscoveryEditGroupDes": {},
|
||||
"featureDiscoveryEpisode": "节目界面",
|
||||
"@featureDiscoveryEpisode": {},
|
||||
"featureDiscoveryEpisodeDes": "您可以长按播放节目或者添加节目到播放列表。",
|
||||
"@featureDiscoveryEpisodeDes": {},
|
||||
"featureDiscoveryEpisodeTitle": "您可以长按快速播放节目",
|
||||
"@featureDiscoveryEpisodeTitle": {},
|
||||
"featureDiscoveryGroup": "点击添加分组",
|
||||
"@featureDiscoveryGroup": {},
|
||||
"featureDiscoveryGroupDes": "新订阅播客默认分组为 Home,您可以添加新的分组,移动播客到新的分组,每个播客可以被添加到多个分组。",
|
||||
"@featureDiscoveryGroupDes": {},
|
||||
"featureDiscoveryGroupPodcast": "长按可以移动播客位置",
|
||||
"@featureDiscoveryGroupPodcast": {},
|
||||
"featureDiscoveryGroupPodcastDes": "您可以点击对播客进行设置,或者长按重新排序。",
|
||||
"@featureDiscoveryGroupPodcastDes": {},
|
||||
"featureDiscoveryOMPL": "点击导入 OMPL",
|
||||
"@featureDiscoveryOMPL": {},
|
||||
"featureDiscoveryOMPLDes": "在这里您可以导入OMPL文件,打开设置页面,或者刷新所有播客。",
|
||||
@ -86,24 +110,30 @@
|
||||
"@feedbackPlay": {},
|
||||
"feedbackTelegram": "加入小组",
|
||||
"@feedbackTelegram": {},
|
||||
"from": "自",
|
||||
"@from": {},
|
||||
"fonts": "字体",
|
||||
"@fonts": {},
|
||||
"from": "自{time}",
|
||||
"@from": {
|
||||
"placeholders": {
|
||||
"time": {}
|
||||
}
|
||||
},
|
||||
"goodNight": "晚安",
|
||||
"@goodNight": {},
|
||||
"groupExisted": "组名已使用",
|
||||
"@groupExisted": {},
|
||||
"groupFilter": "分组",
|
||||
"@groupFilter": {},
|
||||
"groups": "分组",
|
||||
"groupRemoveConfirm": "您确认要移除该分组吗?播客将被移动到 Home 分组。",
|
||||
"@groupRemoveConfirm": {},
|
||||
"groups": "{count, plural, zero{分组} other{分组}}",
|
||||
"@groups": {},
|
||||
"homeGroupsSeeAll": "查看全部",
|
||||
"@homeGroupsSeeAll": {},
|
||||
"homeMenuPlaylist": "播放列表",
|
||||
"@homeMenuPlaylist": {},
|
||||
"homeSubMenuLikeData": "添加日期",
|
||||
"@homeSubMenuLikeData": {},
|
||||
"homeSubMenuSortBy": "排序",
|
||||
"@homeSubMenuSortBy": {},
|
||||
"homeSubMenuUpdateDate": "更新日期",
|
||||
"@homeSubMenuUpdateDate": {},
|
||||
"homeTabMenuFavotite": "收藏",
|
||||
"@homeTabMenuFavotite": {},
|
||||
"homeTabMenuRecent": "最近更新",
|
||||
@ -122,8 +152,16 @@
|
||||
"host": {}
|
||||
}
|
||||
},
|
||||
"hoursAgo": "{count, plural, zero{} other{{count}小时前}}",
|
||||
"@hoursAgo": {},
|
||||
"hoursCount": "{count, plural, zero{} other{{count} 小时}}",
|
||||
"@hoursCount": {},
|
||||
"introFourthPage": "长按节目打开快捷菜单。",
|
||||
"@introFourthPage": {},
|
||||
"introSecondPage": "您可以通过搜索订阅播客,也可以直接导入OMPL文件。",
|
||||
"@introSecondPage": {},
|
||||
"introThirdPage": "您可以创建分组,上下滑动切换分组。",
|
||||
"@introThirdPage": {},
|
||||
"later": "稍后",
|
||||
"@later": {},
|
||||
"lightMode": "明亮模式",
|
||||
@ -140,6 +178,10 @@
|
||||
"@listened": {},
|
||||
"loadMore": "加载更多",
|
||||
"@loadMore": {},
|
||||
"mark": "标记",
|
||||
"@mark": {
|
||||
"description": "The short the best"
|
||||
},
|
||||
"markConfirm": "确认标记",
|
||||
"@markConfirm": {},
|
||||
"markConfirmContent": "是否确认标记全部节目为已收听?",
|
||||
@ -156,6 +198,8 @@
|
||||
"@menuViewRSS": {},
|
||||
"menuVisitSite": "访问网站",
|
||||
"@menuVisitSite": {},
|
||||
"minsAgo": "{count, plural, zero{} other{{count}分钟前}}",
|
||||
"@minsAgo": {},
|
||||
"minsCount": "{count, plural, zero{} other{{count}分钟}}",
|
||||
"@minsCount": {},
|
||||
"network": "网络",
|
||||
@ -164,6 +208,8 @@
|
||||
"@newestFirst": {},
|
||||
"newGroup": "创建分组",
|
||||
"@newGroup": {},
|
||||
"next": "下一步",
|
||||
"@next": {},
|
||||
"noEpisodeDownload": "暂无下载节目",
|
||||
"@noEpisodeDownload": {},
|
||||
"noEpisodeFavorite": "暂无收藏节目",
|
||||
@ -216,6 +262,10 @@
|
||||
"@play": {},
|
||||
"playing": "正在播放",
|
||||
"@playing": {},
|
||||
"plugins": "插件",
|
||||
"@plugins": {},
|
||||
"podcast": "播客",
|
||||
"@podcast": {},
|
||||
"podcastSubscribed": "播客已订阅",
|
||||
"@podcastSubscribed": {},
|
||||
"popupMenuDownloadDes": "下载节目",
|
||||
@ -230,14 +280,31 @@
|
||||
"@popupMenuPlayDes": {},
|
||||
"privacyPolicy": "隐私条款",
|
||||
"@privacyPolicy": {},
|
||||
"recoverSubscribe": "恢复订阅",
|
||||
"@recoverSubscribe": {},
|
||||
"remove": "移除",
|
||||
"@remove": {},
|
||||
"removeConfirm": "取消订阅",
|
||||
"@removeConfirm": {
|
||||
"description": "unsubscribe podcast dialog"
|
||||
},
|
||||
"removedAt": "{date}移除",
|
||||
"@removedAt": {
|
||||
"description": "For example :Removed at 2020.10.10",
|
||||
"placeholders": {
|
||||
"date": {}
|
||||
}
|
||||
},
|
||||
"removePodcastDes": "您确认要取消订阅吗?",
|
||||
"@removePodcastDes": {},
|
||||
"schedule": "定时",
|
||||
"@schedule": {},
|
||||
"searchInvalidRss": "RSS 链接错误",
|
||||
"@searchInvalidRss": {},
|
||||
"searchPodcast": "搜索播客",
|
||||
"@searchPodcast": {},
|
||||
"secondsAgo": "{count, plural, zero{} other{{count}秒前}}",
|
||||
"@secondsAgo": {},
|
||||
"settingsAccentColor": "次要颜色",
|
||||
"@settingsAccentColor": {},
|
||||
"settingsAccentColorDes": "包括溢出颜色",
|
||||
@ -296,7 +363,7 @@
|
||||
"@settingsLayoutDes": {},
|
||||
"settingsLibraries": "开源",
|
||||
"@settingsLibraries": {},
|
||||
"settingsLibrariesDes": "使用开源项目",
|
||||
"settingsLibrariesDes": "开源项目使用",
|
||||
"@settingsLibrariesDes": {},
|
||||
"settingsManageDownload": "下载管理",
|
||||
"@settingsManageDownload": {},
|
||||
@ -320,7 +387,7 @@
|
||||
"@settingsPopupMenuDes": {},
|
||||
"settingsPrefrence": "首选项",
|
||||
"@settingsPrefrence": {},
|
||||
"settingsRealDark": "真的黑",
|
||||
"settingsRealDark": "极黑",
|
||||
"@settingsRealDark": {},
|
||||
"settingsRealDarkDes": "如果夜不够黑,请开启",
|
||||
"@settingsRealDarkDes": {},
|
||||
@ -350,6 +417,8 @@
|
||||
"@settingsUpdateIntervalDes": {},
|
||||
"size": "大小",
|
||||
"@size": {},
|
||||
"skipSecondsAtStart": "开头跳过秒数",
|
||||
"@skipSecondsAtStart": {},
|
||||
"sleepTimer": "睡眠模式",
|
||||
"@sleepTimer": {},
|
||||
"subscribe": "订阅",
|
||||
@ -368,22 +437,46 @@
|
||||
"time": {}
|
||||
}
|
||||
},
|
||||
"to": "到",
|
||||
"@to": {},
|
||||
"to": "到{time}",
|
||||
"@to": {
|
||||
"placeholders": {
|
||||
"time": {}
|
||||
}
|
||||
},
|
||||
"toastAddPlaylist": "添加到播放列表",
|
||||
"@toastAddPlaylist": {},
|
||||
"toastDescovery": "重启应用后可查看",
|
||||
"@toastDescovery": {},
|
||||
"toastDiscovery": "重启应用后可查看",
|
||||
"@toastDiscovery": {},
|
||||
"toastFileError": "文件错误,导入失败",
|
||||
"@toastFileError": {},
|
||||
"toastFileNotVilid": "文件错误",
|
||||
"@toastFileNotVilid": {},
|
||||
"toastFileNotValid": "文件错误",
|
||||
"@toastFileNotValid": {},
|
||||
"toastHomeGroupNotSupport": "Home 分组不支持此功能",
|
||||
"@toastHomeGroupNotSupport": {},
|
||||
"toastOneGroup": "请至少选择一个分组",
|
||||
"@toastOneGroup": {},
|
||||
"toastPodcastRecovering": "恢复中,请稍后",
|
||||
"@toastPodcastRecovering": {
|
||||
"description": "Resubscribe removed podcast"
|
||||
},
|
||||
"toastReadFile": "读取文件成功",
|
||||
"@toastReadFile": {},
|
||||
"toastRecoverFailed": "恢复订阅失败",
|
||||
"@toastRecoverFailed": {
|
||||
"description": "Resubscribe removed podast"
|
||||
},
|
||||
"toastRemovePlaylist": "从播放列表移除",
|
||||
"@toastRemovePlaylist": {},
|
||||
"toastSettingSaved": "设置已保存",
|
||||
"@toastSettingSaved": {},
|
||||
"toastTimeEqualEnd": "与结束时间相同",
|
||||
"@toastTimeEqualEnd": {},
|
||||
"toastTimeEqualStart": "与起始时间相同",
|
||||
"@toastTimeEqualStart": {},
|
||||
"understood": "了解",
|
||||
"@understood": {},
|
||||
"undo": "撤销",
|
||||
"@undo": {},
|
||||
"unlike": "取消喜欢",
|
||||
"@unlike": {},
|
||||
"unliked": "从收藏移除",
|
||||
|
@ -173,7 +173,7 @@ class _PodcastCardState extends State<PodcastCard>
|
||||
Color _c = (Theme.of(context).brightness == Brightness.light)
|
||||
? widget.podcastLocal.primaryColor.colorizedark()
|
||||
: widget.podcastLocal.primaryColor.colorizeLight();
|
||||
|
||||
final s = context.s;
|
||||
double _width = MediaQuery.of(context).size.width;
|
||||
var groupList = context.watch<GroupList>();
|
||||
_belongGroups = groupList.getPodcastGroup(widget.podcastLocal.id);
|
||||
@ -326,12 +326,12 @@ class _PodcastCardState extends State<PodcastCard>
|
||||
_selectedGroups,
|
||||
);
|
||||
Fluttertoast.showToast(
|
||||
msg: 'Setting Saved',
|
||||
msg: s.toastSettingSaved,
|
||||
gravity: ToastGravity.BOTTOM,
|
||||
);
|
||||
} else
|
||||
Fluttertoast.showToast(
|
||||
msg: 'At least select one group',
|
||||
msg: s.toastOneGroup,
|
||||
gravity: ToastGravity.BOTTOM,
|
||||
);
|
||||
},
|
||||
@ -353,7 +353,7 @@ class _PodcastCardState extends State<PodcastCard>
|
||||
_addGroup = true;
|
||||
});
|
||||
},
|
||||
tooltip: 'Group'),
|
||||
tooltip: s.groups(0)),
|
||||
FutureBuilder<bool>(
|
||||
future:
|
||||
_getAutoDownload(widget.podcastLocal.id),
|
||||
@ -382,7 +382,7 @@ class _PodcastCardState extends State<PodcastCard>
|
||||
? context.accentColor
|
||||
: null),
|
||||
),
|
||||
tooltip: 'Auto Download',
|
||||
tooltip: s.autoDownload,
|
||||
onTap: () async {
|
||||
await _setAutoDownload(
|
||||
widget.podcastLocal.id,
|
||||
@ -409,7 +409,7 @@ class _PodcastCardState extends State<PodcastCard>
|
||||
onTap: () {
|
||||
generalDialog(
|
||||
context,
|
||||
title: Text('Skip seconds at start',
|
||||
title: Text(s.skipSecondsAtStart,
|
||||
maxLines: 2),
|
||||
content: DurationPicker(
|
||||
duration: Duration(
|
||||
@ -424,7 +424,7 @@ class _PodcastCardState extends State<PodcastCard>
|
||||
_seconds = 0;
|
||||
},
|
||||
child: Text(
|
||||
'CANCEL',
|
||||
s.cancel,
|
||||
style: TextStyle(
|
||||
color: Colors.grey[600]),
|
||||
),
|
||||
@ -437,7 +437,7 @@ class _PodcastCardState extends State<PodcastCard>
|
||||
_seconds);
|
||||
},
|
||||
child: Text(
|
||||
'CONFIRM',
|
||||
s.confirm,
|
||||
style: TextStyle(
|
||||
color:
|
||||
context.accentColor),
|
||||
@ -453,19 +453,18 @@ class _PodcastCardState extends State<PodcastCard>
|
||||
color: Colors.red,
|
||||
size: _value == 0 ? 1 : 20 * _value,
|
||||
),
|
||||
tooltip: 'Remove',
|
||||
tooltip: s.remove,
|
||||
onTap: () {
|
||||
generalDialog(
|
||||
context,
|
||||
title: Text('Remove confirm'),
|
||||
content: Text(
|
||||
'Are you sure you want to unsubscribe?'),
|
||||
title: Text(s.removeConfirm),
|
||||
content: Text(s.removePodcastDes),
|
||||
actions: <Widget>[
|
||||
FlatButton(
|
||||
onPressed: () =>
|
||||
Navigator.of(context).pop(),
|
||||
child: Text(
|
||||
'CANCEL',
|
||||
s.cancel,
|
||||
style: TextStyle(
|
||||
color: Colors.grey[600]),
|
||||
),
|
||||
@ -477,7 +476,7 @@ class _PodcastCardState extends State<PodcastCard>
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
child: Text(
|
||||
'CONFIRM',
|
||||
s.confirm,
|
||||
style: TextStyle(color: Colors.red),
|
||||
),
|
||||
)
|
||||
@ -523,6 +522,7 @@ class _RenameGroupState extends State<RenameGroup> {
|
||||
Widget build(BuildContext context) {
|
||||
var groupList = Provider.of<GroupList>(context, listen: false);
|
||||
List list = groupList.groups.map((e) => e.name).toList();
|
||||
final s = context.s;
|
||||
return AnnotatedRegion<SystemUiOverlayStyle>(
|
||||
value: SystemUiOverlayStyle(
|
||||
statusBarIconBrightness: Brightness.light,
|
||||
@ -542,7 +542,7 @@ class _RenameGroupState extends State<RenameGroup> {
|
||||
FlatButton(
|
||||
onPressed: () => Navigator.of(context).pop(),
|
||||
child: Text(
|
||||
'CANCEL',
|
||||
s.cancel,
|
||||
style: TextStyle(color: Colors.grey[600]),
|
||||
),
|
||||
),
|
||||
@ -559,12 +559,12 @@ class _RenameGroupState extends State<RenameGroup> {
|
||||
Navigator.of(context).pop();
|
||||
}
|
||||
},
|
||||
child: Text('DONE',
|
||||
child: Text(s.confirm,
|
||||
style: TextStyle(color: Theme.of(context).accentColor)),
|
||||
)
|
||||
],
|
||||
title: SizedBox(
|
||||
width: context.width - 160, child: Text('Edit group name')),
|
||||
title:
|
||||
SizedBox(width: context.width - 160, child: Text(s.editGroupName)),
|
||||
content: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: <Widget>[
|
||||
@ -595,7 +595,7 @@ class _RenameGroupState extends State<RenameGroup> {
|
||||
alignment: Alignment.centerLeft,
|
||||
child: (_error == 1)
|
||||
? Text(
|
||||
'Group existed',
|
||||
s.groupExisted,
|
||||
style: TextStyle(color: Colors.red[400]),
|
||||
)
|
||||
: Center(),
|
||||
|
@ -88,6 +88,7 @@ class _PodcastManageState extends State<PodcastManage>
|
||||
}
|
||||
|
||||
Widget _saveButton(BuildContext context) {
|
||||
final s = context.s;
|
||||
return Consumer<GroupList>(
|
||||
builder: (_, groupList, __) {
|
||||
if (groupList.orderChanged.contains(groupList.groups[_index])) {
|
||||
@ -100,7 +101,7 @@ class _PodcastManageState extends State<PodcastManage>
|
||||
tapTarget: Icon(Icons.menu),
|
||||
title: Padding(
|
||||
padding: const EdgeInsets.only(top: 20.0),
|
||||
child: const Text('Tap to edit group'),
|
||||
child: Text(s.featureDiscoveryEditGroup),
|
||||
),
|
||||
overflowMode: OverflowMode.clipContent,
|
||||
backgroundColor: Colors.cyan[600],
|
||||
@ -108,12 +109,11 @@ class _PodcastManageState extends State<PodcastManage>
|
||||
description: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
const Text('You can change group name or delete group here,' +
|
||||
'but home group can not be edited or deleted.'),
|
||||
Text(s.featureDiscoveryEditGroupDes),
|
||||
FlatButton(
|
||||
color: Colors.cyan[500],
|
||||
padding: const EdgeInsets.all(0),
|
||||
child: Text('Understood',
|
||||
child: Text(s.understood,
|
||||
style: Theme.of(context)
|
||||
.textTheme
|
||||
.button
|
||||
@ -124,7 +124,7 @@ class _PodcastManageState extends State<PodcastManage>
|
||||
FlatButton(
|
||||
color: Colors.cyan[500],
|
||||
padding: const EdgeInsets.all(0),
|
||||
child: Text('Dismiss',
|
||||
child: Text(s.dismiss,
|
||||
style: Theme.of(context)
|
||||
.textTheme
|
||||
.button
|
||||
@ -176,7 +176,7 @@ class _PodcastManageState extends State<PodcastManage>
|
||||
groupList
|
||||
.drlFromOrderChanged(groupList.groups[_index].name);
|
||||
Fluttertoast.showToast(
|
||||
msg: 'Setting Saved',
|
||||
msg: context.s.toastSettingSaved,
|
||||
gravity: ToastGravity.BOTTOM,
|
||||
);
|
||||
_controller.reverse();
|
||||
@ -191,6 +191,7 @@ class _PodcastManageState extends State<PodcastManage>
|
||||
}
|
||||
|
||||
Widget build(BuildContext context) {
|
||||
final s = context.s;
|
||||
return AnnotatedRegion<SystemUiOverlayStyle>(
|
||||
value: SystemUiOverlayStyle(
|
||||
statusBarIconBrightness: Theme.of(context).accentColorBrightness,
|
||||
@ -202,25 +203,23 @@ class _PodcastManageState extends State<PodcastManage>
|
||||
child: Scaffold(
|
||||
appBar: AppBar(
|
||||
centerTitle: true,
|
||||
title: Text('Groups'),
|
||||
title: Text(context.s.groups(2)),
|
||||
actions: <Widget>[
|
||||
DescribedFeatureOverlay(
|
||||
featureId: addGroupFeature,
|
||||
tapTarget: Icon(Icons.add),
|
||||
title: const Text('Tap to add group'),
|
||||
title: Text(s.featureDiscoveryGroup),
|
||||
overflowMode: OverflowMode.clipContent,
|
||||
backgroundColor: Colors.cyan[600],
|
||||
onDismiss: () => Future.value(true),
|
||||
description: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.end,
|
||||
children: <Widget>[
|
||||
const Text(
|
||||
'Default group is home for new podcast, you can create new group and move ' +
|
||||
'podcast to new group, podcast can be added to muilti-groups.'),
|
||||
Text(s.featureDiscoveryGroupDes),
|
||||
FlatButton(
|
||||
color: Colors.cyan[500],
|
||||
padding: const EdgeInsets.all(0),
|
||||
child: Text('Understood',
|
||||
child: Text(context.s.understood,
|
||||
style: Theme.of(context)
|
||||
.textTheme
|
||||
.button
|
||||
@ -231,7 +230,7 @@ class _PodcastManageState extends State<PodcastManage>
|
||||
FlatButton(
|
||||
color: Colors.cyan[500],
|
||||
padding: const EdgeInsets.all(0),
|
||||
child: Text('Dismiss',
|
||||
child: Text(context.s.dismiss,
|
||||
style: Theme.of(context)
|
||||
.textTheme
|
||||
.button
|
||||
@ -293,8 +292,8 @@ class _PodcastManageState extends State<PodcastManage>
|
||||
pageBuilder: (context, index) =>
|
||||
DescribedFeatureOverlay(
|
||||
featureId: configurePodcast,
|
||||
tapTarget: Text('Podcast'),
|
||||
title: const Text('Long tap to reorder podcast'),
|
||||
tapTarget: Text(s.podcast),
|
||||
title: Text(s.featureDiscoveryGroupPodcast),
|
||||
overflowMode: OverflowMode.clipContent,
|
||||
onDismiss: () => Future.value(true),
|
||||
enablePulsingAnimation: false,
|
||||
@ -302,12 +301,11 @@ class _PodcastManageState extends State<PodcastManage>
|
||||
description: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.end,
|
||||
children: <Widget>[
|
||||
const Text('You can tap to see more options,' +
|
||||
' or long tap to reorder podcast in group.'),
|
||||
Text(s.featureDiscoveryGroupPodcastDes),
|
||||
FlatButton(
|
||||
color: Colors.cyan[500],
|
||||
padding: const EdgeInsets.all(0),
|
||||
child: Text('Understood',
|
||||
child: Text(context.s.understood,
|
||||
style: Theme.of(context)
|
||||
.textTheme
|
||||
.button
|
||||
@ -319,7 +317,7 @@ class _PodcastManageState extends State<PodcastManage>
|
||||
FlatButton(
|
||||
color: Colors.cyan[500],
|
||||
padding: const EdgeInsets.all(0),
|
||||
child: Text('Dismiss',
|
||||
child: Text(context.s.dismiss,
|
||||
style: Theme.of(context)
|
||||
.textTheme
|
||||
.button
|
||||
@ -377,8 +375,8 @@ class _PodcastManageState extends State<PodcastManage>
|
||||
setState(() => _showSetting = false);
|
||||
_index == 0
|
||||
? Fluttertoast.showToast(
|
||||
msg:
|
||||
'Home group is not supported',
|
||||
msg: s
|
||||
.toastHomeGroupNotSupport,
|
||||
gravity: ToastGravity.BOTTOM,
|
||||
)
|
||||
: showGeneralDialog(
|
||||
@ -420,7 +418,7 @@ class _PodcastManageState extends State<PodcastManage>
|
||||
padding: EdgeInsets.symmetric(
|
||||
horizontal: 5.0),
|
||||
),
|
||||
Text('Edit Name',
|
||||
Text(context.s.editGroupName,
|
||||
style: TextStyle(
|
||||
color: Colors.white)),
|
||||
],
|
||||
@ -439,23 +437,22 @@ class _PodcastManageState extends State<PodcastManage>
|
||||
setState(() => _showSetting = false);
|
||||
_index == 0
|
||||
? Fluttertoast.showToast(
|
||||
msg:
|
||||
'Home group is not supported',
|
||||
msg: s
|
||||
.toastHomeGroupNotSupport,
|
||||
gravity: ToastGravity.BOTTOM,
|
||||
)
|
||||
: generalDialog(
|
||||
context,
|
||||
title: Text('Delete confirm'),
|
||||
title: Text(s.removeConfirm),
|
||||
content: Text(
|
||||
'Are you sure you want to delete this group?' +
|
||||
'Podcasts will be moved to Home group.'),
|
||||
s.groupRemoveConfirm),
|
||||
actions: <Widget>[
|
||||
FlatButton(
|
||||
onPressed: () =>
|
||||
Navigator.of(context)
|
||||
.pop(),
|
||||
child: Text(
|
||||
'CANCEL',
|
||||
context.s.cancel,
|
||||
style: TextStyle(
|
||||
color: Colors
|
||||
.grey[600]),
|
||||
@ -482,7 +479,7 @@ class _PodcastManageState extends State<PodcastManage>
|
||||
.pop();
|
||||
},
|
||||
child: Text(
|
||||
'CONFIRM',
|
||||
context.s.confirm,
|
||||
style: TextStyle(
|
||||
color: Colors.red),
|
||||
),
|
||||
@ -509,7 +506,7 @@ class _PodcastManageState extends State<PodcastManage>
|
||||
padding: EdgeInsets.symmetric(
|
||||
horizontal: 5.0),
|
||||
),
|
||||
Text('Delete',
|
||||
Text(s.remove,
|
||||
style: TextStyle(
|
||||
color: Colors.red)),
|
||||
],
|
||||
@ -534,11 +531,12 @@ class _PodcastManageState extends State<PodcastManage>
|
||||
class OrderMenu extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final s = context.s;
|
||||
return PopupMenuButton(
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.all(Radius.circular(10))),
|
||||
elevation: 2,
|
||||
tooltip: 'Menu',
|
||||
tooltip: s.menu,
|
||||
itemBuilder: (context) => [
|
||||
PopupMenuItem(
|
||||
value: 1,
|
||||
@ -548,7 +546,7 @@ class OrderMenu extends StatelessWidget {
|
||||
Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 5.0),
|
||||
),
|
||||
Text('All Podcasts'),
|
||||
Text(s.menuAllPodcasts),
|
||||
],
|
||||
),
|
||||
),
|
||||
@ -587,6 +585,7 @@ class _AddGroupState extends State<AddGroup> {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final s = context.s;
|
||||
var groupList = Provider.of<GroupList>(context);
|
||||
List list = groupList.groups.map((e) => e.name).toList();
|
||||
return AnnotatedRegion<SystemUiOverlayStyle>(
|
||||
@ -608,7 +607,7 @@ class _AddGroupState extends State<AddGroup> {
|
||||
FlatButton(
|
||||
onPressed: () => Navigator.of(context).pop(),
|
||||
child: Text(
|
||||
'CANCEL',
|
||||
s.cancel,
|
||||
style: TextStyle(color: Colors.grey[600]),
|
||||
),
|
||||
),
|
||||
@ -621,19 +620,18 @@ class _AddGroupState extends State<AddGroup> {
|
||||
Navigator.of(context).pop();
|
||||
}
|
||||
},
|
||||
child: Text('DONE',
|
||||
child: Text(s.confirm,
|
||||
style: TextStyle(color: Theme.of(context).accentColor)),
|
||||
)
|
||||
],
|
||||
title: SizedBox(
|
||||
width: context.width - 160, child: Text('Create new group')),
|
||||
title: SizedBox(width: context.width - 160, child: Text(s.newGroup)),
|
||||
content: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: <Widget>[
|
||||
TextField(
|
||||
decoration: InputDecoration(
|
||||
contentPadding: EdgeInsets.symmetric(horizontal: 10),
|
||||
hintText: 'New Group',
|
||||
hintText: s.newGroup,
|
||||
hintStyle: TextStyle(fontSize: 18),
|
||||
filled: true,
|
||||
focusedBorder: UnderlineInputBorder(
|
||||
@ -657,7 +655,7 @@ class _AddGroupState extends State<AddGroup> {
|
||||
alignment: Alignment.centerLeft,
|
||||
child: (_error == 1)
|
||||
? Text(
|
||||
'Group existed',
|
||||
s.groupExisted,
|
||||
style: TextStyle(color: Colors.red[400]),
|
||||
)
|
||||
: Center(),
|
||||
|
@ -183,7 +183,7 @@ class _DownloadsManageState extends State<DownloadsManage> {
|
||||
borderRadius: BorderRadius.all(
|
||||
Radius.circular(10))),
|
||||
elevation: 1,
|
||||
tooltip: 'Sort By',
|
||||
tooltip: s.homeSubMenuSortBy,
|
||||
child: Container(
|
||||
height: 40,
|
||||
padding:
|
||||
@ -211,15 +211,15 @@ class _DownloadsManageState extends State<DownloadsManage> {
|
||||
itemBuilder: (context) => [
|
||||
PopupMenuItem(
|
||||
value: 0,
|
||||
child: Text('Newest first'),
|
||||
child: Text(s.newestFirst),
|
||||
),
|
||||
PopupMenuItem(
|
||||
value: 1,
|
||||
child: Text('Oldest first'),
|
||||
child: Text(s.oldestFirst),
|
||||
),
|
||||
PopupMenuItem(
|
||||
value: 2,
|
||||
child: Text('Size'),
|
||||
child: Text(s.size),
|
||||
),
|
||||
],
|
||||
onSelected: (value) {
|
||||
@ -246,7 +246,7 @@ class _DownloadsManageState extends State<DownloadsManage> {
|
||||
padding:
|
||||
EdgeInsets.symmetric(horizontal: 5),
|
||||
),
|
||||
Text('Listened Only'),
|
||||
Text(s.listened),
|
||||
Transform.scale(
|
||||
scale: 0.8,
|
||||
child: Checkbox(
|
||||
|
@ -67,7 +67,7 @@ class _PlayedHistoryState extends State<PlayedHistory>
|
||||
|
||||
Future recoverSub(BuildContext context, String url) async {
|
||||
Fluttertoast.showToast(
|
||||
msg: 'Recovering, wait for seconds',
|
||||
msg: context.s.toastPodcastRecovering,
|
||||
gravity: ToastGravity.BOTTOM,
|
||||
);
|
||||
var subscribeWorker = context.read<SubscribeWorker>();
|
||||
@ -90,7 +90,7 @@ class _PlayedHistoryState extends State<PlayedHistory>
|
||||
} on DioError catch (e) {
|
||||
print(e);
|
||||
Fluttertoast.showToast(
|
||||
msg: 'Podcast recover failed',
|
||||
msg: context.s.toastRecoverFailed,
|
||||
gravity: ToastGravity.BOTTOM,
|
||||
);
|
||||
}
|
||||
@ -273,7 +273,7 @@ class _PlayedHistoryState extends State<PlayedHistory>
|
||||
snapshot.data[index]
|
||||
.seekValue ==
|
||||
1
|
||||
? 'Mark'
|
||||
? s.mark
|
||||
: _stringForSeconds(
|
||||
snapshot.data[index]
|
||||
.seconds),
|
||||
@ -330,18 +330,15 @@ class _PlayedHistoryState extends State<PlayedHistory>
|
||||
],
|
||||
),
|
||||
subtitle: _status
|
||||
? Text(DateTime.now()
|
||||
.difference(snapshot
|
||||
.data[index].subDate)
|
||||
.inDays
|
||||
.toString() +
|
||||
' day ago')
|
||||
? Text(s.daysAgo(DateTime.now()
|
||||
.difference(
|
||||
snapshot.data[index].subDate)
|
||||
.inDays))
|
||||
: Text(
|
||||
'Removed at ' +
|
||||
DateFormat.yMd()
|
||||
.add_jm()
|
||||
.format(snapshot
|
||||
.data[index].delDate),
|
||||
s.removedAt(DateFormat.yMd()
|
||||
.add_jm()
|
||||
.format(snapshot
|
||||
.data[index].delDate)),
|
||||
style: TextStyle(color: Colors.red),
|
||||
),
|
||||
// Text(snapshot.data[index].delDate
|
||||
@ -355,7 +352,7 @@ class _PlayedHistoryState extends State<PlayedHistory>
|
||||
? Material(
|
||||
color: Colors.transparent,
|
||||
child: IconButton(
|
||||
tooltip: 'Recover subscribe',
|
||||
tooltip: s.recoverSubscribe,
|
||||
icon: Icon(LineIcons
|
||||
.trash_restore_alt_solid),
|
||||
onPressed: () => recoverSub(
|
||||
|
@ -1,6 +1,7 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:url_launcher/url_launcher.dart';
|
||||
import '../util/context_extension.dart';
|
||||
import 'licenses.dart';
|
||||
|
||||
class Libries extends StatelessWidget {
|
||||
@ -23,7 +24,7 @@ class Libries extends StatelessWidget {
|
||||
),
|
||||
child: Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text('Libraies'),
|
||||
title: Text(context.s.settingsLibraries),
|
||||
elevation: 0,
|
||||
backgroundColor: Theme.of(context).primaryColor,
|
||||
),
|
||||
@ -63,7 +64,7 @@ class Libries extends StatelessWidget {
|
||||
height: 30.0,
|
||||
padding: EdgeInsets.symmetric(horizontal: 70),
|
||||
alignment: Alignment.centerLeft,
|
||||
child: Text('Fonts',
|
||||
child: Text(context.s.fonts,
|
||||
style: Theme.of(context)
|
||||
.textTheme
|
||||
.bodyText1
|
||||
@ -85,7 +86,7 @@ class Libries extends StatelessWidget {
|
||||
height: 30.0,
|
||||
padding: EdgeInsets.symmetric(horizontal: 70),
|
||||
alignment: Alignment.centerLeft,
|
||||
child: Text('Plugins',
|
||||
child: Text(context.s.plugins,
|
||||
style: Theme.of(context)
|
||||
.textTheme
|
||||
.bodyText1
|
||||
|
@ -40,7 +40,7 @@ class PlaySetting extends StatelessWidget {
|
||||
? context.accentColor
|
||||
: context.primaryColorDark,
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: Text('End of Episode',
|
||||
child: Text(context.s.endOfEpisode,
|
||||
style: TextStyle(
|
||||
color: data.item1 == 0 ? Colors.white : null)),
|
||||
),
|
||||
@ -56,7 +56,7 @@ class PlaySetting extends StatelessWidget {
|
||||
? context.accentColor
|
||||
: context.primaryColorDark,
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: Text(data.item2.toString() + 'mins',
|
||||
child: Text(context.s.minsCount(data.item2),
|
||||
style: TextStyle(
|
||||
color: data.item1 == 1 ? Colors.white : null)),
|
||||
),
|
||||
@ -70,6 +70,7 @@ class PlaySetting extends StatelessWidget {
|
||||
|
||||
Widget _scheduleWidget(BuildContext context) {
|
||||
var settings = Provider.of<SettingState>(context, listen: false);
|
||||
final s = context.s;
|
||||
return Selector<SettingState, Tuple2<int, int>>(
|
||||
selector: (_, settings) =>
|
||||
Tuple2(settings.autoSleepTimerStart, settings.autoSleepTimerEnd),
|
||||
@ -105,7 +106,7 @@ class PlaySetting extends StatelessWidget {
|
||||
FlatButton(
|
||||
onPressed: () => Navigator.of(context).pop(),
|
||||
child: Text(
|
||||
'CANCEL',
|
||||
s.cancel,
|
||||
style: TextStyle(color: Colors.grey[600]),
|
||||
),
|
||||
),
|
||||
@ -116,13 +117,13 @@ class PlaySetting extends StatelessWidget {
|
||||
Navigator.of(context).pop();
|
||||
} else {
|
||||
Fluttertoast.showToast(
|
||||
msg: 'Time is equal to end time',
|
||||
msg: s.toastTimeEqualEnd,
|
||||
gravity: ToastGravity.BOTTOM,
|
||||
);
|
||||
}
|
||||
},
|
||||
child: Text(
|
||||
'CONFIRM',
|
||||
s.confirm,
|
||||
style: TextStyle(color: context.accentColor),
|
||||
),
|
||||
)
|
||||
@ -134,7 +135,7 @@ class PlaySetting extends StatelessWidget {
|
||||
child: Container(
|
||||
color: context.primaryColorDark,
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: Text('From ' + stringForMins(data.item1)),
|
||||
child: Text(s.from(stringForMins(data.item1))),
|
||||
),
|
||||
),
|
||||
),
|
||||
@ -164,7 +165,7 @@ class PlaySetting extends StatelessWidget {
|
||||
FlatButton(
|
||||
onPressed: () => Navigator.of(context).pop(),
|
||||
child: Text(
|
||||
'CANCEL',
|
||||
s.cancel,
|
||||
style: TextStyle(color: Colors.grey[600]),
|
||||
),
|
||||
),
|
||||
@ -175,13 +176,13 @@ class PlaySetting extends StatelessWidget {
|
||||
Navigator.of(context).pop();
|
||||
} else {
|
||||
Fluttertoast.showToast(
|
||||
msg: 'Time is equal to start time',
|
||||
msg: s.toastTimeEqualStart,
|
||||
gravity: ToastGravity.BOTTOM,
|
||||
);
|
||||
}
|
||||
},
|
||||
child: Text(
|
||||
'CONFIRM',
|
||||
s.confirm,
|
||||
style: TextStyle(color: context.accentColor),
|
||||
),
|
||||
)
|
||||
@ -193,7 +194,7 @@ class PlaySetting extends StatelessWidget {
|
||||
child: Container(
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
color: Colors.black54,
|
||||
child: Text('To ' + stringForMins(data.item2),
|
||||
child: Text(s.to(stringForMins(data.item2)),
|
||||
style: TextStyle(color: Colors.white)),
|
||||
),
|
||||
),
|
||||
@ -255,7 +256,7 @@ class PlaySetting extends StatelessWidget {
|
||||
onTap: () => settings.setAutoPlay = !data,
|
||||
contentPadding:
|
||||
EdgeInsets.only(left: 80.0, right: 20),
|
||||
title: Text('Auto play next'),
|
||||
title: Text(s.settingsMenuAutoPlay),
|
||||
subtitle: Text(s.settingsAutoPlayDes),
|
||||
trailing: Transform.scale(
|
||||
scale: 0.9,
|
||||
@ -291,7 +292,7 @@ class PlaySetting extends StatelessWidget {
|
||||
trailing: Selector<SettingState, int>(
|
||||
selector: (_, settings) => settings.defaultSleepTimer,
|
||||
builder: (_, data, __) => DropdownButton(
|
||||
hint: Text(data.toString() + 'mins'),
|
||||
hint: Text(s.minsCount(data)),
|
||||
underline: Center(),
|
||||
elevation: 1,
|
||||
isDense: true,
|
||||
@ -301,8 +302,7 @@ class PlaySetting extends StatelessWidget {
|
||||
items:
|
||||
minsToSelect.map<DropdownMenuItem<int>>((e) {
|
||||
return DropdownMenuItem<int>(
|
||||
value: e,
|
||||
child: Text(e.toString() + ' mins'));
|
||||
value: e, child: Text(s.minsCount(e)));
|
||||
}).toList()),
|
||||
),
|
||||
),
|
||||
|
@ -76,6 +76,7 @@ class _PopupMenuSettingState extends State<PopupMenuSetting> {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final s = context.s;
|
||||
return AnnotatedRegion<SystemUiOverlayStyle>(
|
||||
value: SystemUiOverlayStyle(
|
||||
statusBarIconBrightness: Theme.of(context).accentColorBrightness,
|
||||
@ -109,7 +110,7 @@ class _PopupMenuSettingState extends State<PopupMenuSetting> {
|
||||
height: 30.0,
|
||||
padding: EdgeInsets.symmetric(horizontal: 80),
|
||||
alignment: Alignment.centerLeft,
|
||||
child: Text('Episode popup menu',
|
||||
child: Text(s.settingsPopupMenu,
|
||||
style: Theme.of(context)
|
||||
.textTheme
|
||||
.bodyText1
|
||||
@ -132,8 +133,8 @@ class _PopupMenuSettingState extends State<PopupMenuSetting> {
|
||||
LineIcons.play_circle_solid,
|
||||
color: context.accentColor,
|
||||
),
|
||||
text: 'Play',
|
||||
description: 'Play the episode');
|
||||
text: s.play,
|
||||
description: s.popupMenuPlayDes);
|
||||
break;
|
||||
case 1:
|
||||
return _popupMenuItem(menu, e,
|
||||
@ -141,15 +142,15 @@ class _PopupMenuSettingState extends State<PopupMenuSetting> {
|
||||
LineIcons.clock_solid,
|
||||
color: Colors.cyan,
|
||||
),
|
||||
text: 'Later',
|
||||
description: 'Add episode to playlist');
|
||||
text: s.later,
|
||||
description: s.popupMenuLaterDes);
|
||||
break;
|
||||
case 2:
|
||||
return _popupMenuItem(menu, e,
|
||||
icon: Icon(LineIcons.heart,
|
||||
color: Colors.red, size: 21),
|
||||
text: 'Like',
|
||||
description: 'Add episode to favorite');
|
||||
text: s.like,
|
||||
description: s.popupMenuLikeDes);
|
||||
break;
|
||||
case 3:
|
||||
return _popupMenuItem(menu, e,
|
||||
@ -160,8 +161,8 @@ class _PopupMenuSettingState extends State<PopupMenuSetting> {
|
||||
painter: ListenedAllPainter(Colors.blue,
|
||||
stroke: 1.5)),
|
||||
),
|
||||
text: 'Mark Listened',
|
||||
description: 'Mark episode as listened');
|
||||
text: s.markListened,
|
||||
description: s.popupMenuMarkDes);
|
||||
break;
|
||||
case 4:
|
||||
return _popupMenuItem(menu, e,
|
||||
@ -169,8 +170,8 @@ class _PopupMenuSettingState extends State<PopupMenuSetting> {
|
||||
LineIcons.download_solid,
|
||||
color: Colors.green,
|
||||
),
|
||||
text: 'Download',
|
||||
description: 'Download episode');
|
||||
text: s.download,
|
||||
description: s.popupMenuDownloadDes);
|
||||
break;
|
||||
default:
|
||||
return Text('Text');
|
||||
|
@ -332,8 +332,7 @@ class _SettingsState extends State<Settings>
|
||||
podcastFeature
|
||||
});
|
||||
Fluttertoast.showToast(
|
||||
msg:
|
||||
'Discovery Feature Reopened, pleast restart the app',
|
||||
msg: s.toastDiscovery,
|
||||
gravity: ToastGravity.BOTTOM,
|
||||
);
|
||||
},
|
||||
|
@ -213,22 +213,21 @@ class _StorageSettingState extends State<StorageSetting>
|
||||
subtitle: Text(s.settingsAutoDeleteDes),
|
||||
trailing: DropdownButton(
|
||||
hint: snapshot.data == -1
|
||||
? Text('Never')
|
||||
: Text(snapshot.data.toString() + 'days'),
|
||||
? Text(s.daysCount(0))
|
||||
: Text(s.daysCount(snapshot.data)),
|
||||
underline: Center(),
|
||||
elevation: 1,
|
||||
value: snapshot.data,
|
||||
onChanged: (value) async {
|
||||
await _setAutoDeleteDays(value);
|
||||
},
|
||||
//TODO remove 1 before release
|
||||
items: <int>[-1, 5, 10, 15, 30]
|
||||
.map<DropdownMenuItem<int>>((e) {
|
||||
return DropdownMenuItem<int>(
|
||||
value: e,
|
||||
child: e == -1
|
||||
? Text('Never')
|
||||
: Text(e.toString() + ' days'));
|
||||
? Text(s.daysCount(0))
|
||||
: Text(s.daysCount(e)));
|
||||
}).toList()),
|
||||
);
|
||||
},
|
||||
|
@ -92,9 +92,7 @@ class SyncingSetting extends StatelessWidget {
|
||||
title: Text(s.settingsUpdateInterval),
|
||||
subtitle: Text(s.settingsUpdateIntervalDes),
|
||||
trailing: DropdownButton(
|
||||
hint: data.item2 == 1
|
||||
? Text(data.item2.toString() + ' hour')
|
||||
: Text(data.item2.toString() + ' hours'),
|
||||
hint: Text(s.hoursCount(data.item2)),
|
||||
underline: Center(),
|
||||
elevation: 1,
|
||||
value: data.item2,
|
||||
@ -107,10 +105,7 @@ class SyncingSetting extends StatelessWidget {
|
||||
items: <int>[1, 2, 4, 8, 24, 48]
|
||||
.map<DropdownMenuItem<int>>((e) {
|
||||
return DropdownMenuItem<int>(
|
||||
value: e,
|
||||
child: e == 1
|
||||
? Text(e.toString() + ' hour')
|
||||
: Text(e.toString() + ' hours'));
|
||||
value: e, child: Text(s.hoursCount(e)));
|
||||
}).toList()),
|
||||
),
|
||||
Divider(height: 2),
|
||||
|
@ -53,10 +53,10 @@ class EpisodeGrid extends StatelessWidget {
|
||||
|
||||
Future<Tuple4<int, bool, bool, List<int>>> _initData(
|
||||
EpisodeBrief episode) async {
|
||||
List<int> menuList = await _getEpisodeMenu();
|
||||
int listened = await _isListened(episode);
|
||||
bool liked = await _isLiked(episode);
|
||||
bool downloaded = await _isDownloaded(episode);
|
||||
List<int> menuList = await _getEpisodeMenu();
|
||||
return Tuple4(listened, liked, downloaded, menuList);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user