diff --git a/lib/generated/intl/messages_all.dart b/lib/generated/intl/messages_all.dart index b285749..37eb10d 100644 --- a/lib/generated/intl/messages_all.dart +++ b/lib/generated/intl/messages_all.dart @@ -16,16 +16,20 @@ import 'package:intl/message_lookup_by_library.dart'; import 'package:intl/src/intl_helpers.dart'; import 'messages_en.dart' as messages_en; +import 'messages_zh-Hans.dart' as messages_zh_hans; typedef Future LibraryLoader(); Map _deferredLibraries = { 'en': () => new Future.value(null), + 'zh_Hans': () => new Future.value(null), }; MessageLookupByLibrary _findExact(String localeName) { switch (localeName) { case 'en': return messages_en.messages; + case 'zh_Hans': + return messages_zh_hans.messages; default: return null; } diff --git a/lib/generated/intl/messages_en.dart b/lib/generated/intl/messages_en.dart index 3c3738f..5c3f786 100644 --- a/lib/generated/intl/messages_en.dart +++ b/lib/generated/intl/messages_en.dart @@ -21,18 +21,124 @@ class MessageLookup extends MessageLookupByLibrary { final messages = _notInlinedMessages(_notInlinedMessages); static _notInlinedMessages(_) => { + "all" : MessageLookupByLibrary.simpleMessage("All"), + "cancel" : MessageLookupByLibrary.simpleMessage("Cancel"), + "chooseA" : MessageLookupByLibrary.simpleMessage("Choose a"), + "color" : MessageLookupByLibrary.simpleMessage("color"), + "confirm" : MessageLookupByLibrary.simpleMessage("Confirm"), + "darkMode" : MessageLookupByLibrary.simpleMessage("Dark mode"), + "delete" : MessageLookupByLibrary.simpleMessage("Delete"), + "download" : MessageLookupByLibrary.simpleMessage("Download"), + "editName" : MessageLookupByLibrary.simpleMessage("Edit name"), + "endOfEpisode" : MessageLookupByLibrary.simpleMessage("End of Episode"), + "feedbackEmail" : MessageLookupByLibrary.simpleMessage("Write to me"), + "feedbackGithub" : MessageLookupByLibrary.simpleMessage("Submit issue"), + "feedbackPlay" : MessageLookupByLibrary.simpleMessage("Rate on Play"), + "feedbackTelegram" : MessageLookupByLibrary.simpleMessage("Join group"), + "from" : MessageLookupByLibrary.simpleMessage("From"), + "groups" : MessageLookupByLibrary.simpleMessage("Groups"), "homeGroupsSeeAll" : MessageLookupByLibrary.simpleMessage("See All"), "homeMenuPlaylist" : MessageLookupByLibrary.simpleMessage("Playlist"), "homeSubMenuDownloaded" : MessageLookupByLibrary.simpleMessage("Downloaded"), "homeSubMenuLikeData" : MessageLookupByLibrary.simpleMessage("Like Date"), "homeSubMenuSortBy" : MessageLookupByLibrary.simpleMessage("Sort by"), - "homeSubMenuUpdateDate" : MessageLookupByLibrary.simpleMessage("UpdateDate"), - "homeTabMenuDownload" : MessageLookupByLibrary.simpleMessage("Download"), + "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") + "homeToprightMenuSettings" : MessageLookupByLibrary.simpleMessage("Settings"), + "later" : MessageLookupByLibrary.simpleMessage("Later"), + "lightMode" : MessageLookupByLibrary.simpleMessage("Light mode"), + "like" : MessageLookupByLibrary.simpleMessage("Like"), + "liked" : MessageLookupByLibrary.simpleMessage("Liked"), + "listen" : MessageLookupByLibrary.simpleMessage("Listen"), + "listened" : MessageLookupByLibrary.simpleMessage("Listened"), + "markListened" : MessageLookupByLibrary.simpleMessage("Mark listened"), + "menu" : MessageLookupByLibrary.simpleMessage("Menu"), + "menuAllPodcasts" : MessageLookupByLibrary.simpleMessage("All podcasts"), + "menuMarkAllListened" : MessageLookupByLibrary.simpleMessage("Mark All Listened"), + "menuMarkListened" : MessageLookupByLibrary.simpleMessage("Mark Listened"), + "menuViewRSS" : MessageLookupByLibrary.simpleMessage("Visit RSS Feed"), + "menuVisitSite" : MessageLookupByLibrary.simpleMessage("Visit Site"), + "network" : MessageLookupByLibrary.simpleMessage("Network"), + "newGroup" : MessageLookupByLibrary.simpleMessage("Create new group"), + "play" : MessageLookupByLibrary.simpleMessage("Play"), + "popupMenuDownloadDes" : MessageLookupByLibrary.simpleMessage("Download episode"), + "popupMenuLaterDes" : MessageLookupByLibrary.simpleMessage("Add episode to playlist"), + "popupMenuLikeDes" : MessageLookupByLibrary.simpleMessage("Add episode to favorite"), + "popupMenuMarkDes" : MessageLookupByLibrary.simpleMessage("Mark episode as listened"), + "popupMenuPlayDes" : MessageLookupByLibrary.simpleMessage("Play the episode"), + "remove" : MessageLookupByLibrary.simpleMessage("Remove"), + "schedule" : MessageLookupByLibrary.simpleMessage("Schedule"), + "searchPodcast" : MessageLookupByLibrary.simpleMessage("Search podcast"), + "settingStorage" : MessageLookupByLibrary.simpleMessage("Storage"), + "settingsAccentColor" : MessageLookupByLibrary.simpleMessage("Accent color"), + "settingsAccentColorDes" : MessageLookupByLibrary.simpleMessage("Include the ovelay color"), + "settingsAppIntro" : MessageLookupByLibrary.simpleMessage("App Intro"), + "settingsAppearance" : MessageLookupByLibrary.simpleMessage("Appearance"), + "settingsAppearanceDes" : MessageLookupByLibrary.simpleMessage("Colors and themes"), + "settingsAudioCache" : MessageLookupByLibrary.simpleMessage("Audio cache"), + "settingsAudioCacheDes" : MessageLookupByLibrary.simpleMessage("Audio cache max size"), + "settingsAutoDelete" : MessageLookupByLibrary.simpleMessage("Auto delete downloads after"), + "settingsAutoDeleteDes" : MessageLookupByLibrary.simpleMessage("Default 30 days"), + "settingsAutoPlayDes" : MessageLookupByLibrary.simpleMessage("Auto play next episode in playlist"), + "settingsDefaultGrid" : MessageLookupByLibrary.simpleMessage("Default grid view"), + "settingsDefaultGridDownload" : MessageLookupByLibrary.simpleMessage("Download tab"), + "settingsDefaultGridFavorite" : MessageLookupByLibrary.simpleMessage("Favorite tab"), + "settingsDefaultGridPodcast" : MessageLookupByLibrary.simpleMessage("Podcast page"), + "settingsDefaultGridRecent" : MessageLookupByLibrary.simpleMessage("Recent tab"), + "settingsDiscovery" : MessageLookupByLibrary.simpleMessage("Discovery Features Again"), + "settingsEnableSyncing" : MessageLookupByLibrary.simpleMessage("Enable Syncing"), + "settingsEnableSyncingDes" : MessageLookupByLibrary.simpleMessage("Refresh all podcasts in the background to get leatest episodes"), + "settingsExport" : MessageLookupByLibrary.simpleMessage("Export"), + "settingsExportDes" : MessageLookupByLibrary.simpleMessage("Export OMPL file of all podcasts"), + "settingsFeedback" : MessageLookupByLibrary.simpleMessage("Feedback"), + "settingsFeedbackDes" : MessageLookupByLibrary.simpleMessage("Bugs and feature request"), + "settingsHistory" : MessageLookupByLibrary.simpleMessage("History"), + "settingsHistoryDes" : MessageLookupByLibrary.simpleMessage("Listen date"), + "settingsInfo" : MessageLookupByLibrary.simpleMessage("Info"), + "settingsInterface" : MessageLookupByLibrary.simpleMessage("Interface"), + "settingsLayout" : MessageLookupByLibrary.simpleMessage("Layout"), + "settingsLayoutDes" : MessageLookupByLibrary.simpleMessage("App layout"), + "settingsLibraries" : MessageLookupByLibrary.simpleMessage("Libraries"), + "settingsLibrariesDes" : MessageLookupByLibrary.simpleMessage("Open source libraries used in app"), + "settingsManageDownload" : MessageLookupByLibrary.simpleMessage("Manage download"), + "settingsManageDownloadDes" : MessageLookupByLibrary.simpleMessage("Manage downloaded audio files"), + "settingsMenuAutoPlay" : MessageLookupByLibrary.simpleMessage("Auto play next"), + "settingsNetworkCellular" : MessageLookupByLibrary.simpleMessage("Ask before using cellular data"), + "settingsNetworkCellularAuto" : MessageLookupByLibrary.simpleMessage("Auto download using cellular data"), + "settingsNetworkCellularAutoDes" : MessageLookupByLibrary.simpleMessage("You can set podcast auto download in group manage page"), + "settingsNetworkCellularDes" : MessageLookupByLibrary.simpleMessage("Ask to confirm when using cellulae data to download episodes"), + "settingsPlayDes" : MessageLookupByLibrary.simpleMessage("Playlist and player"), + "settingsPopupMenu" : MessageLookupByLibrary.simpleMessage("Episodes popup menu"), + "settingsPopupMenuDes" : MessageLookupByLibrary.simpleMessage("Change the popup menu of episode"), + "settingsPrefrence" : MessageLookupByLibrary.simpleMessage("Prefrence"), + "settingsRealDark" : MessageLookupByLibrary.simpleMessage("Real dark"), + "settingsRealDarkDes" : MessageLookupByLibrary.simpleMessage("Turn on if you think the night is not dark enough"), + "settingsSTAuto" : MessageLookupByLibrary.simpleMessage("Auto turn on sleep timer"), + "settingsSTAutoDes" : MessageLookupByLibrary.simpleMessage("Auto start sleep timer at scheduled time"), + "settingsSTDefaultTime" : MessageLookupByLibrary.simpleMessage("Default time"), + "settingsSTDefautTimeDes" : MessageLookupByLibrary.simpleMessage("Default time for sleep timer"), + "settingsSTMode" : MessageLookupByLibrary.simpleMessage("Auto sleep timer mode"), + "settingsStorageDes" : MessageLookupByLibrary.simpleMessage("Manange cache and download storage"), + "settingsSyncing" : MessageLookupByLibrary.simpleMessage("Syncing"), + "settingsSyncingDes" : MessageLookupByLibrary.simpleMessage("Refresh podcasts in the background"), + "settingsTheme" : MessageLookupByLibrary.simpleMessage("Theme"), + "settingsUpdateInterval" : MessageLookupByLibrary.simpleMessage("Update interval"), + "settingsUpdateIntervalDes" : MessageLookupByLibrary.simpleMessage("Default 24 hours"), + "sleepTimer" : MessageLookupByLibrary.simpleMessage("Sleep timer"), + "subscribe" : MessageLookupByLibrary.simpleMessage("Subscribe"), + "systemDefault" : MessageLookupByLibrary.simpleMessage("System default"), + "to" : MessageLookupByLibrary.simpleMessage("To"), + "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"), + "toastReadFile" : MessageLookupByLibrary.simpleMessage("Read file successfully"), + "toastRemovePlaylist" : MessageLookupByLibrary.simpleMessage("Removed from playlist"), + "unlike" : MessageLookupByLibrary.simpleMessage("Unlike"), + "unliked" : MessageLookupByLibrary.simpleMessage("Unliked") }; } diff --git a/lib/generated/intl/messages_zh-Hans.dart b/lib/generated/intl/messages_zh-Hans.dart new file mode 100644 index 0000000..435ef80 --- /dev/null +++ b/lib/generated/intl/messages_zh-Hans.dart @@ -0,0 +1,144 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a zh_Hans locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'zh_Hans'; + + final messages = _notInlinedMessages(_notInlinedMessages); + static _notInlinedMessages(_) => { + "all" : MessageLookupByLibrary.simpleMessage("全部"), + "cancel" : MessageLookupByLibrary.simpleMessage("取消"), + "chooseA" : MessageLookupByLibrary.simpleMessage("选择"), + "color" : MessageLookupByLibrary.simpleMessage("颜色"), + "confirm" : MessageLookupByLibrary.simpleMessage("确认"), + "darkMode" : MessageLookupByLibrary.simpleMessage("夜晚模式"), + "delete" : MessageLookupByLibrary.simpleMessage("删除"), + "download" : MessageLookupByLibrary.simpleMessage("下载"), + "editName" : MessageLookupByLibrary.simpleMessage("修改组名"), + "endOfEpisode" : MessageLookupByLibrary.simpleMessage("节目结束"), + "feedbackEmail" : MessageLookupByLibrary.simpleMessage("发送邮件"), + "feedbackGithub" : MessageLookupByLibrary.simpleMessage("提交Issue"), + "feedbackPlay" : MessageLookupByLibrary.simpleMessage("Play评价"), + "feedbackTelegram" : MessageLookupByLibrary.simpleMessage("加入小组"), + "from" : MessageLookupByLibrary.simpleMessage("自"), + "groups" : MessageLookupByLibrary.simpleMessage("分组"), + "homeGroupsSeeAll" : MessageLookupByLibrary.simpleMessage("查看全部"), + "homeMenuPlaylist" : MessageLookupByLibrary.simpleMessage("播放列表"), + "homeSubMenuDownloaded" : 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("设置"), + "later" : MessageLookupByLibrary.simpleMessage("稍后"), + "lightMode" : MessageLookupByLibrary.simpleMessage("明亮模式"), + "like" : MessageLookupByLibrary.simpleMessage("喜欢"), + "liked" : MessageLookupByLibrary.simpleMessage("已收藏"), + "listen" : MessageLookupByLibrary.simpleMessage("收听"), + "listened" : MessageLookupByLibrary.simpleMessage("已收听"), + "markListened" : MessageLookupByLibrary.simpleMessage("标记已收听"), + "menu" : MessageLookupByLibrary.simpleMessage("菜单"), + "menuAllPodcasts" : MessageLookupByLibrary.simpleMessage("所有订阅"), + "menuMarkAllListened" : MessageLookupByLibrary.simpleMessage("标记所有已收听"), + "menuMarkListened" : MessageLookupByLibrary.simpleMessage("标记已收听"), + "menuViewRSS" : MessageLookupByLibrary.simpleMessage("查看 RSS"), + "menuVisitSite" : MessageLookupByLibrary.simpleMessage("访问网站"), + "network" : MessageLookupByLibrary.simpleMessage("网络"), + "newGroup" : MessageLookupByLibrary.simpleMessage("创建分组"), + "play" : MessageLookupByLibrary.simpleMessage("播放"), + "popupMenuDownloadDes" : MessageLookupByLibrary.simpleMessage("下载节目"), + "popupMenuLaterDes" : MessageLookupByLibrary.simpleMessage("添加到播放列表"), + "popupMenuLikeDes" : MessageLookupByLibrary.simpleMessage("添加到收藏"), + "popupMenuMarkDes" : MessageLookupByLibrary.simpleMessage("设置为已收听"), + "popupMenuPlayDes" : MessageLookupByLibrary.simpleMessage("播放节目"), + "remove" : MessageLookupByLibrary.simpleMessage("移除"), + "schedule" : MessageLookupByLibrary.simpleMessage("定时"), + "searchPodcast" : MessageLookupByLibrary.simpleMessage("搜索播客"), + "settingStorage" : MessageLookupByLibrary.simpleMessage("储存空间"), + "settingsAccentColor" : MessageLookupByLibrary.simpleMessage("次要颜色"), + "settingsAccentColorDes" : MessageLookupByLibrary.simpleMessage("包括溢出颜色"), + "settingsAppIntro" : MessageLookupByLibrary.simpleMessage("引导页"), + "settingsAppearance" : MessageLookupByLibrary.simpleMessage("界面"), + "settingsAppearanceDes" : MessageLookupByLibrary.simpleMessage("颜色与主题"), + "settingsAudioCache" : MessageLookupByLibrary.simpleMessage("播放缓存"), + "settingsAudioCacheDes" : MessageLookupByLibrary.simpleMessage("播放缓存设置"), + "settingsAutoDelete" : MessageLookupByLibrary.simpleMessage("自动删除下载节目"), + "settingsAutoDeleteDes" : MessageLookupByLibrary.simpleMessage("默认 30 天"), + "settingsAutoPlayDes" : MessageLookupByLibrary.simpleMessage("自动播放下一节目"), + "settingsDefaultGrid" : MessageLookupByLibrary.simpleMessage("默认布局"), + "settingsDefaultGridDownload" : MessageLookupByLibrary.simpleMessage("下载页"), + "settingsDefaultGridFavorite" : MessageLookupByLibrary.simpleMessage("收藏页"), + "settingsDefaultGridPodcast" : MessageLookupByLibrary.simpleMessage("播客页"), + "settingsDefaultGridRecent" : MessageLookupByLibrary.simpleMessage("最近页"), + "settingsDiscovery" : MessageLookupByLibrary.simpleMessage("再次功能介绍"), + "settingsEnableSyncing" : MessageLookupByLibrary.simpleMessage("开启自动更新"), + "settingsEnableSyncingDes" : MessageLookupByLibrary.simpleMessage("在后台更新所有订阅播客"), + "settingsExport" : MessageLookupByLibrary.simpleMessage("导出"), + "settingsExportDes" : MessageLookupByLibrary.simpleMessage("导出 OMPL 文件"), + "settingsFeedback" : MessageLookupByLibrary.simpleMessage("反馈"), + "settingsFeedbackDes" : MessageLookupByLibrary.simpleMessage("意见与建议"), + "settingsHistory" : MessageLookupByLibrary.simpleMessage("历史记录"), + "settingsHistoryDes" : MessageLookupByLibrary.simpleMessage("播放日期"), + "settingsInfo" : MessageLookupByLibrary.simpleMessage("信息"), + "settingsInterface" : MessageLookupByLibrary.simpleMessage("界面"), + "settingsLayout" : MessageLookupByLibrary.simpleMessage("布局"), + "settingsLayoutDes" : MessageLookupByLibrary.simpleMessage("应用布局"), + "settingsLibraries" : MessageLookupByLibrary.simpleMessage("开源"), + "settingsLibrariesDes" : MessageLookupByLibrary.simpleMessage("使用开源项目"), + "settingsManageDownload" : MessageLookupByLibrary.simpleMessage("下载管理"), + "settingsManageDownloadDes" : MessageLookupByLibrary.simpleMessage("管理下载节目文件"), + "settingsMenuAutoPlay" : MessageLookupByLibrary.simpleMessage("自动播放下一节目"), + "settingsNetworkCellular" : MessageLookupByLibrary.simpleMessage("蜂窝数据确认"), + "settingsNetworkCellularAuto" : MessageLookupByLibrary.simpleMessage("是否用蜂窝数据自动下载"), + "settingsNetworkCellularAutoDes" : MessageLookupByLibrary.simpleMessage("你可以在分组管理页面设置自动下载"), + "settingsNetworkCellularDes" : MessageLookupByLibrary.simpleMessage("在使用蜂窝数据下载前确认"), + "settingsPlayDes" : MessageLookupByLibrary.simpleMessage("播放列表和播放器"), + "settingsPopupMenu" : MessageLookupByLibrary.simpleMessage("节目弹出菜单"), + "settingsPopupMenuDes" : MessageLookupByLibrary.simpleMessage("修改节目弹出菜单"), + "settingsPrefrence" : MessageLookupByLibrary.simpleMessage("首选项"), + "settingsRealDark" : MessageLookupByLibrary.simpleMessage("真的黑"), + "settingsRealDarkDes" : MessageLookupByLibrary.simpleMessage("如果夜不够黑,请开启"), + "settingsSTAuto" : MessageLookupByLibrary.simpleMessage("自动睡眠模式"), + "settingsSTAutoDes" : MessageLookupByLibrary.simpleMessage("定期开启睡眠模式"), + "settingsSTDefaultTime" : MessageLookupByLibrary.simpleMessage("默认时长"), + "settingsSTDefautTimeDes" : MessageLookupByLibrary.simpleMessage("睡眠模式默认时长"), + "settingsSTMode" : MessageLookupByLibrary.simpleMessage("自动睡眠模式默认时长"), + "settingsStorageDes" : MessageLookupByLibrary.simpleMessage("管理缓存和下载空间"), + "settingsSyncing" : MessageLookupByLibrary.simpleMessage("同步"), + "settingsSyncingDes" : MessageLookupByLibrary.simpleMessage("在后台更新播客"), + "settingsTheme" : MessageLookupByLibrary.simpleMessage("主题"), + "settingsUpdateInterval" : MessageLookupByLibrary.simpleMessage("更新频率"), + "settingsUpdateIntervalDes" : MessageLookupByLibrary.simpleMessage("默认 24 小时"), + "sleepTimer" : MessageLookupByLibrary.simpleMessage("睡眠模式"), + "subscribe" : MessageLookupByLibrary.simpleMessage("订阅"), + "systemDefault" : MessageLookupByLibrary.simpleMessage("系统默认"), + "to" : MessageLookupByLibrary.simpleMessage("到"), + "toastAddPlaylist" : MessageLookupByLibrary.simpleMessage("添加到播放列表"), + "toastDescovery" : MessageLookupByLibrary.simpleMessage("重启应用后可查看"), + "toastFileError" : MessageLookupByLibrary.simpleMessage("文件错误,导入失败"), + "toastFileNotVilid" : MessageLookupByLibrary.simpleMessage("文件错误"), + "toastReadFile" : MessageLookupByLibrary.simpleMessage("读取文件成功"), + "toastRemovePlaylist" : MessageLookupByLibrary.simpleMessage("从播放列表移除"), + "unlike" : MessageLookupByLibrary.simpleMessage("取消喜欢"), + "unliked" : MessageLookupByLibrary.simpleMessage("从收藏移除") + }; +} diff --git a/lib/generated/l10n.dart b/lib/generated/l10n.dart index a5c6591..8928f4c 100644 --- a/lib/generated/l10n.dart +++ b/lib/generated/l10n.dart @@ -33,41 +33,161 @@ class S { return Localizations.of(context, S); } - /// `Refresh all` - String get homeToprightMenuRefreshAll { + /// `All` + String get all { return Intl.message( - 'Refresh all', - name: 'homeToprightMenuRefreshAll', + 'All', + name: 'all', desc: '', args: [], ); } - /// `Import OMPL` - String get homeToprightMenuImportOMPL { + /// `Cancel` + String get cancel { return Intl.message( - 'Import OMPL', - name: 'homeToprightMenuImportOMPL', + 'Cancel', + name: 'cancel', desc: '', args: [], ); } - /// `Settings` - String get homeToprightMenuSettings { + /// `Choose a` + String get chooseA { return Intl.message( - 'Settings', - name: 'homeToprightMenuSettings', + 'Choose a', + name: 'chooseA', desc: '', args: [], ); } - /// `About` - String get homeToprightMenuAbout { + /// `color` + String get color { return Intl.message( - 'About', - name: 'homeToprightMenuAbout', + 'color', + name: 'color', + desc: '', + args: [], + ); + } + + /// `Confirm` + String get confirm { + return Intl.message( + 'Confirm', + name: 'confirm', + desc: '', + args: [], + ); + } + + /// `Dark mode` + String get darkMode { + return Intl.message( + 'Dark mode', + name: 'darkMode', + desc: '', + args: [], + ); + } + + /// `Delete` + String get delete { + return Intl.message( + 'Delete', + name: 'delete', + desc: '', + args: [], + ); + } + + /// `Download` + String get download { + return Intl.message( + 'Download', + name: 'download', + desc: '', + args: [], + ); + } + + /// `Edit name` + String get editName { + return Intl.message( + 'Edit name', + name: 'editName', + desc: '', + args: [], + ); + } + + /// `End of Episode` + String get endOfEpisode { + return Intl.message( + 'End of Episode', + name: 'endOfEpisode', + desc: '', + args: [], + ); + } + + /// `Write to me` + String get feedbackEmail { + return Intl.message( + 'Write to me', + name: 'feedbackEmail', + desc: '', + args: [], + ); + } + + /// `Submit issue` + String get feedbackGithub { + return Intl.message( + 'Submit issue', + name: 'feedbackGithub', + desc: '', + args: [], + ); + } + + /// `Rate on Play` + String get feedbackPlay { + return Intl.message( + 'Rate on Play', + name: 'feedbackPlay', + desc: '', + args: [], + ); + } + + /// `Join group` + String get feedbackTelegram { + return Intl.message( + 'Join group', + name: 'feedbackTelegram', + desc: '', + args: [], + ); + } + + /// `From` + String get from { + return Intl.message( + 'From', + name: 'from', + desc: '', + args: [], + ); + } + + /// `Groups` + String get groups { + return Intl.message( + 'Groups', + name: 'groups', desc: '', args: [], ); @@ -83,36 +203,6 @@ class S { ); } - /// `Recent` - String get homeTabMenuRecent { - return Intl.message( - 'Recent', - name: 'homeTabMenuRecent', - desc: '', - args: [], - ); - } - - /// `Favorite` - String get homeTabMenuFavotite { - return Intl.message( - 'Favorite', - name: 'homeTabMenuFavotite', - desc: '', - args: [], - ); - } - - /// `Download` - String get homeTabMenuDownload { - return Intl.message( - 'Download', - name: 'homeTabMenuDownload', - desc: '', - args: [], - ); - } - /// `Playlist` String get homeMenuPlaylist { return Intl.message( @@ -123,21 +213,11 @@ class S { ); } - /// `Sort by` - String get homeSubMenuSortBy { + /// `Downloaded` + String get homeSubMenuDownloaded { return Intl.message( - 'Sort by', - name: 'homeSubMenuSortBy', - desc: '', - args: [], - ); - } - - /// `UpdateDate` - String get homeSubMenuUpdateDate { - return Intl.message( - 'UpdateDate', - name: 'homeSubMenuUpdateDate', + 'Downloaded', + name: 'homeSubMenuDownloaded', desc: '', args: [], ); @@ -153,11 +233,991 @@ class S { ); } - /// `Downloaded` - String get homeSubMenuDownloaded { + /// `Sort by` + String get homeSubMenuSortBy { return Intl.message( - 'Downloaded', - name: 'homeSubMenuDownloaded', + 'Sort by', + name: 'homeSubMenuSortBy', + desc: '', + args: [], + ); + } + + /// `Update Date` + String get homeSubMenuUpdateDate { + return Intl.message( + 'Update Date', + name: 'homeSubMenuUpdateDate', + desc: '', + args: [], + ); + } + + /// `Favorite` + String get homeTabMenuFavotite { + return Intl.message( + 'Favorite', + name: 'homeTabMenuFavotite', + desc: '', + args: [], + ); + } + + /// `Recent` + String get homeTabMenuRecent { + return Intl.message( + 'Recent', + name: 'homeTabMenuRecent', + desc: '', + args: [], + ); + } + + /// `About` + String get homeToprightMenuAbout { + return Intl.message( + 'About', + name: 'homeToprightMenuAbout', + desc: '', + args: [], + ); + } + + /// `Import OMPL` + String get homeToprightMenuImportOMPL { + return Intl.message( + 'Import OMPL', + name: 'homeToprightMenuImportOMPL', + desc: '', + args: [], + ); + } + + /// `Refresh all` + String get homeToprightMenuRefreshAll { + return Intl.message( + 'Refresh all', + name: 'homeToprightMenuRefreshAll', + desc: '', + args: [], + ); + } + + /// `Settings` + String get homeToprightMenuSettings { + return Intl.message( + 'Settings', + name: 'homeToprightMenuSettings', + desc: '', + args: [], + ); + } + + /// `Later` + String get later { + return Intl.message( + 'Later', + name: 'later', + desc: '', + args: [], + ); + } + + /// `Light mode` + String get lightMode { + return Intl.message( + 'Light mode', + name: 'lightMode', + desc: '', + args: [], + ); + } + + /// `Like` + String get like { + return Intl.message( + 'Like', + name: 'like', + desc: '', + args: [], + ); + } + + /// `Liked` + String get liked { + return Intl.message( + 'Liked', + name: 'liked', + desc: '', + args: [], + ); + } + + /// `Listen` + String get listen { + return Intl.message( + 'Listen', + name: 'listen', + desc: '', + args: [], + ); + } + + /// `Listened` + String get listened { + return Intl.message( + 'Listened', + name: 'listened', + desc: '', + args: [], + ); + } + + /// `Mark listened` + String get markListened { + return Intl.message( + 'Mark listened', + name: 'markListened', + desc: '', + args: [], + ); + } + + /// `Menu` + String get menu { + return Intl.message( + 'Menu', + name: 'menu', + desc: '', + args: [], + ); + } + + /// `All podcasts` + String get menuAllPodcasts { + return Intl.message( + 'All podcasts', + name: 'menuAllPodcasts', + desc: '', + args: [], + ); + } + + /// `Mark All Listened` + String get menuMarkAllListened { + return Intl.message( + 'Mark All Listened', + name: 'menuMarkAllListened', + desc: '', + args: [], + ); + } + + /// `Mark Listened` + String get menuMarkListened { + return Intl.message( + 'Mark Listened', + name: 'menuMarkListened', + desc: '', + args: [], + ); + } + + /// `Visit RSS Feed` + String get menuViewRSS { + return Intl.message( + 'Visit RSS Feed', + name: 'menuViewRSS', + desc: '', + args: [], + ); + } + + /// `Visit Site` + String get menuVisitSite { + return Intl.message( + 'Visit Site', + name: 'menuVisitSite', + desc: '', + args: [], + ); + } + + /// `Network` + String get network { + return Intl.message( + 'Network', + name: 'network', + desc: '', + args: [], + ); + } + + /// `Create new group` + String get newGroup { + return Intl.message( + 'Create new group', + name: 'newGroup', + desc: '', + args: [], + ); + } + + /// `Play` + String get play { + return Intl.message( + 'Play', + name: 'play', + desc: '', + args: [], + ); + } + + /// `Download episode` + String get popupMenuDownloadDes { + return Intl.message( + 'Download episode', + name: 'popupMenuDownloadDes', + desc: '', + args: [], + ); + } + + /// `Add episode to playlist` + String get popupMenuLaterDes { + return Intl.message( + 'Add episode to playlist', + name: 'popupMenuLaterDes', + desc: '', + args: [], + ); + } + + /// `Add episode to favorite` + String get popupMenuLikeDes { + return Intl.message( + 'Add episode to favorite', + name: 'popupMenuLikeDes', + desc: '', + args: [], + ); + } + + /// `Mark episode as listened` + String get popupMenuMarkDes { + return Intl.message( + 'Mark episode as listened', + name: 'popupMenuMarkDes', + desc: '', + args: [], + ); + } + + /// `Play the episode` + String get popupMenuPlayDes { + return Intl.message( + 'Play the episode', + name: 'popupMenuPlayDes', + desc: '', + args: [], + ); + } + + /// `Remove` + String get remove { + return Intl.message( + 'Remove', + name: 'remove', + desc: '', + args: [], + ); + } + + /// `Schedule` + String get schedule { + return Intl.message( + 'Schedule', + name: 'schedule', + desc: '', + args: [], + ); + } + + /// `Search podcast` + String get searchPodcast { + return Intl.message( + 'Search podcast', + name: 'searchPodcast', + desc: '', + args: [], + ); + } + + /// `Accent color` + String get settingsAccentColor { + return Intl.message( + 'Accent color', + name: 'settingsAccentColor', + desc: '', + args: [], + ); + } + + /// `Include the ovelay color` + String get settingsAccentColorDes { + return Intl.message( + 'Include the ovelay color', + name: 'settingsAccentColorDes', + desc: '', + args: [], + ); + } + + /// `Appearance` + String get settingsAppearance { + return Intl.message( + 'Appearance', + name: 'settingsAppearance', + desc: '', + args: [], + ); + } + + /// `Colors and themes` + String get settingsAppearanceDes { + return Intl.message( + 'Colors and themes', + name: 'settingsAppearanceDes', + desc: '', + args: [], + ); + } + + /// `App Intro` + String get settingsAppIntro { + return Intl.message( + 'App Intro', + name: 'settingsAppIntro', + desc: '', + args: [], + ); + } + + /// `Audio cache` + String get settingsAudioCache { + return Intl.message( + 'Audio cache', + name: 'settingsAudioCache', + desc: '', + args: [], + ); + } + + /// `Audio cache max size` + String get settingsAudioCacheDes { + return Intl.message( + 'Audio cache max size', + name: 'settingsAudioCacheDes', + desc: '', + args: [], + ); + } + + /// `Auto delete downloads after` + String get settingsAutoDelete { + return Intl.message( + 'Auto delete downloads after', + name: 'settingsAutoDelete', + desc: '', + args: [], + ); + } + + /// `Default 30 days` + String get settingsAutoDeleteDes { + return Intl.message( + 'Default 30 days', + name: 'settingsAutoDeleteDes', + desc: '', + args: [], + ); + } + + /// `Auto play next episode in playlist` + String get settingsAutoPlayDes { + return Intl.message( + 'Auto play next episode in playlist', + name: 'settingsAutoPlayDes', + desc: '', + args: [], + ); + } + + /// `Default grid view` + String get settingsDefaultGrid { + return Intl.message( + 'Default grid view', + name: 'settingsDefaultGrid', + desc: '', + args: [], + ); + } + + /// `Download tab` + String get settingsDefaultGridDownload { + return Intl.message( + 'Download tab', + name: 'settingsDefaultGridDownload', + desc: '', + args: [], + ); + } + + /// `Favorite tab` + String get settingsDefaultGridFavorite { + return Intl.message( + 'Favorite tab', + name: 'settingsDefaultGridFavorite', + desc: '', + args: [], + ); + } + + /// `Podcast page` + String get settingsDefaultGridPodcast { + return Intl.message( + 'Podcast page', + name: 'settingsDefaultGridPodcast', + desc: '', + args: [], + ); + } + + /// `Recent tab` + String get settingsDefaultGridRecent { + return Intl.message( + 'Recent tab', + name: 'settingsDefaultGridRecent', + desc: '', + args: [], + ); + } + + /// `Discovery Features Again` + String get settingsDiscovery { + return Intl.message( + 'Discovery Features Again', + name: 'settingsDiscovery', + desc: '', + args: [], + ); + } + + /// `Enable Syncing` + String get settingsEnableSyncing { + return Intl.message( + 'Enable Syncing', + name: 'settingsEnableSyncing', + desc: '', + args: [], + ); + } + + /// `Refresh all podcasts in the background to get leatest episodes` + String get settingsEnableSyncingDes { + return Intl.message( + 'Refresh all podcasts in the background to get leatest episodes', + name: 'settingsEnableSyncingDes', + desc: '', + args: [], + ); + } + + /// `Export` + String get settingsExport { + return Intl.message( + 'Export', + name: 'settingsExport', + desc: '', + args: [], + ); + } + + /// `Export OMPL file of all podcasts` + String get settingsExportDes { + return Intl.message( + 'Export OMPL file of all podcasts', + name: 'settingsExportDes', + desc: '', + args: [], + ); + } + + /// `Feedback` + String get settingsFeedback { + return Intl.message( + 'Feedback', + name: 'settingsFeedback', + desc: '', + args: [], + ); + } + + /// `Bugs and feature request` + String get settingsFeedbackDes { + return Intl.message( + 'Bugs and feature request', + name: 'settingsFeedbackDes', + desc: '', + args: [], + ); + } + + /// `History` + String get settingsHistory { + return Intl.message( + 'History', + name: 'settingsHistory', + desc: '', + args: [], + ); + } + + /// `Listen date` + String get settingsHistoryDes { + return Intl.message( + 'Listen date', + name: 'settingsHistoryDes', + desc: '', + args: [], + ); + } + + /// `Info` + String get settingsInfo { + return Intl.message( + 'Info', + name: 'settingsInfo', + desc: '', + args: [], + ); + } + + /// `Interface` + String get settingsInterface { + return Intl.message( + 'Interface', + name: 'settingsInterface', + desc: '', + args: [], + ); + } + + /// `Layout` + String get settingsLayout { + return Intl.message( + 'Layout', + name: 'settingsLayout', + desc: '', + args: [], + ); + } + + /// `App layout` + String get settingsLayoutDes { + return Intl.message( + 'App layout', + name: 'settingsLayoutDes', + desc: '', + args: [], + ); + } + + /// `Libraries` + String get settingsLibraries { + return Intl.message( + 'Libraries', + name: 'settingsLibraries', + desc: '', + args: [], + ); + } + + /// `Open source libraries used in app` + String get settingsLibrariesDes { + return Intl.message( + 'Open source libraries used in app', + name: 'settingsLibrariesDes', + desc: '', + args: [], + ); + } + + /// `Manage download` + String get settingsManageDownload { + return Intl.message( + 'Manage download', + name: 'settingsManageDownload', + desc: '', + args: [], + ); + } + + /// `Manage downloaded audio files` + String get settingsManageDownloadDes { + return Intl.message( + 'Manage downloaded audio files', + name: 'settingsManageDownloadDes', + desc: '', + args: [], + ); + } + + /// `Auto play next` + String get settingsMenuAutoPlay { + return Intl.message( + 'Auto play next', + name: 'settingsMenuAutoPlay', + desc: '', + args: [], + ); + } + + /// `Ask before using cellular data` + String get settingsNetworkCellular { + return Intl.message( + 'Ask before using cellular data', + name: 'settingsNetworkCellular', + desc: '', + args: [], + ); + } + + /// `Auto download using cellular data` + String get settingsNetworkCellularAuto { + return Intl.message( + 'Auto download using cellular data', + name: 'settingsNetworkCellularAuto', + desc: '', + args: [], + ); + } + + /// `You can set podcast auto download in group manage page` + String get settingsNetworkCellularAutoDes { + return Intl.message( + 'You can set podcast auto download in group manage page', + name: 'settingsNetworkCellularAutoDes', + desc: '', + args: [], + ); + } + + /// `Ask to confirm when using cellulae data to download episodes` + String get settingsNetworkCellularDes { + return Intl.message( + 'Ask to confirm when using cellulae data to download episodes', + name: 'settingsNetworkCellularDes', + desc: '', + args: [], + ); + } + + /// `Playlist and player` + String get settingsPlayDes { + return Intl.message( + 'Playlist and player', + name: 'settingsPlayDes', + desc: '', + args: [], + ); + } + + /// `Episodes popup menu` + String get settingsPopupMenu { + return Intl.message( + 'Episodes popup menu', + name: 'settingsPopupMenu', + desc: '', + args: [], + ); + } + + /// `Change the popup menu of episode` + String get settingsPopupMenuDes { + return Intl.message( + 'Change the popup menu of episode', + name: 'settingsPopupMenuDes', + desc: '', + args: [], + ); + } + + /// `Prefrence` + String get settingsPrefrence { + return Intl.message( + 'Prefrence', + name: 'settingsPrefrence', + desc: '', + args: [], + ); + } + + /// `Real dark` + String get settingsRealDark { + return Intl.message( + 'Real dark', + name: 'settingsRealDark', + desc: '', + args: [], + ); + } + + /// `Turn on if you think the night is not dark enough` + String get settingsRealDarkDes { + return Intl.message( + 'Turn on if you think the night is not dark enough', + name: 'settingsRealDarkDes', + desc: '', + args: [], + ); + } + + /// `Auto turn on sleep timer` + String get settingsSTAuto { + return Intl.message( + 'Auto turn on sleep timer', + name: 'settingsSTAuto', + desc: '', + args: [], + ); + } + + /// `Auto start sleep timer at scheduled time` + String get settingsSTAutoDes { + return Intl.message( + 'Auto start sleep timer at scheduled time', + name: 'settingsSTAutoDes', + desc: '', + args: [], + ); + } + + /// `Default time` + String get settingsSTDefaultTime { + return Intl.message( + 'Default time', + name: 'settingsSTDefaultTime', + desc: '', + args: [], + ); + } + + /// `Default time for sleep timer` + String get settingsSTDefautTimeDes { + return Intl.message( + 'Default time for sleep timer', + name: 'settingsSTDefautTimeDes', + desc: '', + args: [], + ); + } + + /// `Auto sleep timer mode` + String get settingsSTMode { + return Intl.message( + 'Auto sleep timer mode', + name: 'settingsSTMode', + desc: '', + args: [], + ); + } + + /// `Manange cache and download storage` + String get settingsStorageDes { + return Intl.message( + 'Manange cache and download storage', + name: 'settingsStorageDes', + desc: '', + args: [], + ); + } + + /// `Syncing` + String get settingsSyncing { + return Intl.message( + 'Syncing', + name: 'settingsSyncing', + desc: '', + args: [], + ); + } + + /// `Refresh podcasts in the background` + String get settingsSyncingDes { + return Intl.message( + 'Refresh podcasts in the background', + name: 'settingsSyncingDes', + desc: '', + args: [], + ); + } + + /// `Theme` + String get settingsTheme { + return Intl.message( + 'Theme', + name: 'settingsTheme', + desc: '', + args: [], + ); + } + + /// `Storage` + String get settingStorage { + return Intl.message( + 'Storage', + name: 'settingStorage', + desc: '', + args: [], + ); + } + + /// `Update interval` + String get settingsUpdateInterval { + return Intl.message( + 'Update interval', + name: 'settingsUpdateInterval', + desc: '', + args: [], + ); + } + + /// `Default 24 hours` + String get settingsUpdateIntervalDes { + return Intl.message( + 'Default 24 hours', + name: 'settingsUpdateIntervalDes', + desc: '', + args: [], + ); + } + + /// `Sleep timer` + String get sleepTimer { + return Intl.message( + 'Sleep timer', + name: 'sleepTimer', + desc: '', + args: [], + ); + } + + /// `Subscribe` + String get subscribe { + return Intl.message( + 'Subscribe', + name: 'subscribe', + desc: '', + args: [], + ); + } + + /// `System default` + String get systemDefault { + return Intl.message( + 'System default', + name: 'systemDefault', + desc: '', + args: [], + ); + } + + /// `To` + String get to { + return Intl.message( + 'To', + name: 'to', + desc: '', + args: [], + ); + } + + /// `Added to playlist` + String get toastAddPlaylist { + return Intl.message( + 'Added to playlist', + name: 'toastAddPlaylist', + desc: '', + args: [], + ); + } + + /// `Discovery feature reopened, pleast restart the app` + String get toastDescovery { + return Intl.message( + 'Discovery feature reopened, pleast restart the app', + name: 'toastDescovery', + desc: '', + args: [], + ); + } + + /// `File error, Subscribe failed` + String get toastFileError { + return Intl.message( + 'File error, Subscribe failed', + name: 'toastFileError', + desc: '', + args: [], + ); + } + + /// `File not vilid` + String get toastFileNotVilid { + return Intl.message( + 'File not vilid', + name: 'toastFileNotVilid', + desc: '', + args: [], + ); + } + + /// `Read file successfully` + String get toastReadFile { + return Intl.message( + 'Read file successfully', + name: 'toastReadFile', + desc: '', + args: [], + ); + } + + /// `Removed from playlist` + String get toastRemovePlaylist { + return Intl.message( + 'Removed from playlist', + name: 'toastRemovePlaylist', + desc: '', + args: [], + ); + } + + /// `Unlike` + String get unlike { + return Intl.message( + 'Unlike', + name: 'unlike', + desc: '', + args: [], + ); + } + + /// `Unliked` + String get unliked { + return Intl.message( + 'Unliked', + name: 'unliked', desc: '', args: [], ); @@ -170,6 +1230,7 @@ class AppLocalizationDelegate extends LocalizationsDelegate { List get supportedLocales { return const [ Locale.fromSubtags(languageCode: 'en'), + Locale.fromSubtags(languageCode: 'zh', scriptCode: 'Hans'), ]; } diff --git a/lib/home/audioplayer.dart b/lib/home/audioplayer.dart index 290f2b6..c4c43b9 100644 --- a/lib/home/audioplayer.dart +++ b/lib/home/audioplayer.dart @@ -20,7 +20,6 @@ import '../util/customslider.dart'; import '../episodes/episodedetail.dart'; import 'playlist.dart'; import 'audiopanel.dart'; -import 'share.dart'; final List _customShadow = [ BoxShadow(blurRadius: 26, offset: Offset(-6, -6), color: Colors.white), diff --git a/lib/home/home.dart b/lib/home/home.dart index 9e58d86..b50797b 100644 --- a/lib/home/home.dart +++ b/lib/home/home.dart @@ -94,6 +94,7 @@ class _HomeState extends State with SingleTickerProviderStateMixin { Widget build(BuildContext context) { double width = MediaQuery.of(context).size.width; double height = (width - 20) / 3 + 140; + final s = context.s; return AnnotatedRegion( value: SystemUiOverlayStyle( systemNavigationBarIconBrightness: @@ -342,13 +343,13 @@ class _HomeState extends State with SingleTickerProviderStateMixin { controller: _controller, tabs: [ Tab( - child: Text('Recent'), + child: Text(s.homeTabMenuRecent), ), Tab( - child: Text('Favorite'), + child: Text(s.homeTabMenuFavotite), ), Tab( - child: Text('Download'), + child: Text(s.download), ) ], ), @@ -547,6 +548,7 @@ class PlaylistButtonState extends State { @override Widget build(BuildContext context) { var audio = Provider.of(context, listen: false); + final s = context.s; return MyPopupMenuButton( shape: RoundedRectangleBorder( borderRadius: BorderRadius.all(Radius.circular(10))), @@ -651,7 +653,7 @@ class PlaylistButtonState extends State { Padding( padding: EdgeInsets.symmetric(horizontal: 5.0), ), - Text('Playlist'), + Text(s.homeMenuPlaylist), ], ), ), @@ -727,6 +729,7 @@ class _RecentUpdateState extends State<_RecentUpdate> Widget build(BuildContext context) { super.build(context); var audio = Provider.of(context, listen: false); + final s = context.s; return Selector( selector: (_, worker) => worker.created, builder: (context, created, child) { @@ -1050,6 +1053,7 @@ class _MyFavoriteState extends State<_MyFavorite> @override Widget build(BuildContext context) { super.build(context); + final s = context.s; return Selector( selector: (_, audio) => audio.episodeState, builder: (context, episodeState, child) { @@ -1108,7 +1112,7 @@ class _MyFavoriteState extends State<_MyFavorite> mainAxisSize: MainAxisSize.min, children: [ - Text('Sory by'), + Text(s.homeSubMenuSortBy), Padding( padding: EdgeInsets.symmetric( @@ -1259,6 +1263,7 @@ class _MyDownloadState extends State<_MyDownload> @override Widget build(BuildContext context) { super.build(context); + final s = context.s; return CustomScrollView( key: PageStorageKey('download_list'), slivers: [ @@ -1273,7 +1278,7 @@ class _MyDownloadState extends State<_MyDownload> children: [ Container( padding: EdgeInsets.symmetric(horizontal: 20), - child: Text('Downloaded')), + child: Text(s.homeSubMenuDownloaded)), Spacer(), Material( color: Colors.transparent, diff --git a/lib/home/home_groups.dart b/lib/home/home_groups.dart index 0228097..da75f80 100644 --- a/lib/home/home_groups.dart +++ b/lib/home/home_groups.dart @@ -7,7 +7,6 @@ import 'package:focused_menu/focused_menu.dart'; import 'package:focused_menu/modals.dart'; import 'package:provider/provider.dart'; import 'package:fluttertoast/fluttertoast.dart'; -import 'package:tsacdop/util/episodegrid.dart'; import 'package:tuple/tuple.dart'; import 'package:line_icons/line_icons.dart'; diff --git a/lib/home/popupmenu.dart b/lib/home/popupmenu.dart index 4353b33..28d8588 100644 --- a/lib/home/popupmenu.dart +++ b/lib/home/popupmenu.dart @@ -15,6 +15,7 @@ import 'package:intl/intl.dart'; import '../settings/settting.dart'; import '../state/refresh_podcast.dart'; import '../state/subscribe_podcast.dart'; +import '../util/context_extension.dart'; import 'about.dart'; class OmplOutline { @@ -70,7 +71,7 @@ class _PopupMenuState extends State { Widget build(BuildContext context) { var refreshWorker = Provider.of(context, listen: false); var subscribeWorker = Provider.of(context, listen: false); - + final s = context.s; void _saveOmpl(String path) async { File file = File(path); try { @@ -150,7 +151,7 @@ class _PopupMenuState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - 'Refresh All', + s.homeToprightMenuRefreshAll, ), FutureBuilder( future: _getRefreshDate(), @@ -179,7 +180,7 @@ class _PopupMenuState extends State { Padding( padding: EdgeInsets.symmetric(horizontal: 5.0), ), - Text('Import OMPL'), + Text(s.homeToprightMenuImportOMPL), ], ), ), @@ -194,7 +195,7 @@ class _PopupMenuState extends State { Padding( padding: EdgeInsets.symmetric(horizontal: 5.0), ), - Text('Settings'), + Text(s.homeToprightMenuSettings), ], ), ), @@ -209,7 +210,7 @@ class _PopupMenuState extends State { Padding( padding: EdgeInsets.symmetric(horizontal: 5.0), ), - Text('About'), + Text(s.homeToprightMenuAbout), ], ), ), diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb index 3d0b381..554e53d 100644 --- a/lib/l10n/intl_en.arb +++ b/lib/l10n/intl_en.arb @@ -1,15 +1,241 @@ { - "homeToprightMenuRefreshAll": "Refresh all", - "homeToprightMenuImportOMPL": "Import OMPL", - "homeToprightMenuSettings": "Settings", - "homeToprightMenuAbout": "About", - "homeGroupsSeeAll": "See All", - "homeTabMenuRecent": "Recent", - "homeTabMenuFavotite": "Favorite", - "homeTabMenuDownload": "Download", - "homeMenuPlaylist": "Playlist", - "homeSubMenuSortBy": "Sort by", - "homeSubMenuUpdateDate": "UpdateDate", - "homeSubMenuLikeData": "Like Date", - "homeSubMenuDownloaded": "Downloaded" + "@@locale": "en", + "all": "All", + "@all": {}, + "cancel": "Cancel", + "@cancel": {}, + "chooseA": "Choose a", + "@chooseA": {}, + "color": "color", + "@color": {}, + "confirm": "Confirm", + "@confirm": {}, + "darkMode": "Dark mode", + "@darkMode": {}, + "delete": "Delete", + "@delete": {}, + "download": "Download", + "@download": {}, + "editName": "Edit name", + "@editName": {}, + "endOfEpisode": "End of Episode", + "@endOfEpisode": {}, + "feedbackEmail": "Write to me", + "@feedbackEmail": {}, + "feedbackGithub": "Submit issue", + "@feedbackGithub": {}, + "feedbackPlay": "Rate on Play", + "@feedbackPlay": {}, + "feedbackTelegram": "Join group", + "@feedbackTelegram": {}, + "from": "From", + "@from": {}, + "groups": "Groups", + "@groups": {}, + "homeGroupsSeeAll": "See All", + "@homeGroupsSeeAll": {}, + "homeMenuPlaylist": "Playlist", + "@homeMenuPlaylist": {}, + "homeSubMenuDownloaded": "Downloaded", + "@homeSubMenuDownloaded": {}, + "homeSubMenuLikeData": "Like Date", + "@homeSubMenuLikeData": {}, + "homeSubMenuSortBy": "Sort by", + "@homeSubMenuSortBy": {}, + "homeSubMenuUpdateDate": "Update Date", + "@homeSubMenuUpdateDate": {}, + "homeTabMenuFavotite": "Favorite", + "@homeTabMenuFavotite": {}, + "homeTabMenuRecent": "Recent", + "@homeTabMenuRecent": {}, + "homeToprightMenuAbout": "About", + "@homeToprightMenuAbout": {}, + "homeToprightMenuImportOMPL": "Import OMPL", + "@homeToprightMenuImportOMPL": {}, + "homeToprightMenuRefreshAll": "Refresh all", + "@homeToprightMenuRefreshAll": {}, + "homeToprightMenuSettings": "Settings", + "@homeToprightMenuSettings": {}, + "later": "Later", + "@later": {}, + "lightMode": "Light mode", + "@lightMode": {}, + "like": "Like", + "@like": {}, + "liked": "Liked", + "@liked": {}, + "listen": "Listen", + "@listen": {}, + "listened": "Listened", + "@listened": {}, + "markListened": "Mark listened", + "@markListened": {}, + "menu": "Menu", + "@menu": {}, + "menuAllPodcasts": "All podcasts", + "@menuAllPodcasts": {}, + "menuMarkAllListened": "Mark All Listened", + "@menuMarkAllListened": {}, + "menuMarkListened": "Mark Listened", + "@menuMarkListened": {}, + "menuViewRSS": "Visit RSS Feed", + "@menuViewRSS": {}, + "menuVisitSite": "Visit Site", + "@menuVisitSite": {}, + "network": "Network", + "@network": {}, + "newGroup": "Create new group", + "@newGroup": {}, + "play": "Play", + "@play": {}, + "popupMenuDownloadDes": "Download episode", + "@popupMenuDownloadDes": {}, + "popupMenuLaterDes": "Add episode to playlist", + "@popupMenuLaterDes": {}, + "popupMenuLikeDes": "Add episode to favorite", + "@popupMenuLikeDes": {}, + "popupMenuMarkDes": "Mark episode as listened", + "@popupMenuMarkDes": {}, + "popupMenuPlayDes": "Play the episode", + "@popupMenuPlayDes": {}, + "remove": "Remove", + "@remove": {}, + "schedule": "Schedule", + "@schedule": {}, + "searchPodcast": "Search podcast", + "@searchPodcast": {}, + "settingsAccentColor": "Accent color", + "@settingsAccentColor": {}, + "settingsAccentColorDes": "Include the ovelay color", + "@settingsAccentColorDes": {}, + "settingsAppearance": "Appearance", + "@settingsAppearance": {}, + "settingsAppearanceDes": "Colors and themes", + "@settingsAppearanceDes": {}, + "settingsAppIntro": "App Intro", + "@settingsAppIntro": {}, + "settingsAudioCache": "Audio cache", + "@settingsAudioCache": {}, + "settingsAudioCacheDes": "Audio cache max size", + "@settingsAudioCacheDes": {}, + "settingsAutoDelete": "Auto delete downloads after", + "@settingsAutoDelete": {}, + "settingsAutoDeleteDes": "Default 30 days", + "@settingsAutoDeleteDes": {}, + "settingsAutoPlayDes": "Auto play next episode in playlist", + "@settingsAutoPlayDes": {}, + "settingsDefaultGrid": "Default grid view", + "@settingsDefaultGrid": {}, + "settingsDefaultGridDownload": "Download tab", + "@settingsDefaultGridDownload": {}, + "settingsDefaultGridFavorite": "Favorite tab", + "@settingsDefaultGridFavorite": {}, + "settingsDefaultGridPodcast": "Podcast page", + "@settingsDefaultGridPodcast": {}, + "settingsDefaultGridRecent": "Recent tab", + "@settingsDefaultGridRecent": {}, + "settingsDiscovery": "Discovery Features Again", + "@settingsDiscovery": {}, + "settingsEnableSyncing": "Enable Syncing", + "@settingsEnableSyncing": {}, + "settingsEnableSyncingDes": "Refresh all podcasts in the background to get leatest episodes", + "@settingsEnableSyncingDes": {}, + "settingsExport": "Export", + "@settingsExport": {}, + "settingsExportDes": "Export OMPL file of all podcasts", + "@settingsExportDes": {}, + "settingsFeedback": "Feedback", + "@settingsFeedback": {}, + "settingsFeedbackDes": "Bugs and feature request", + "@settingsFeedbackDes": {}, + "settingsHistory": "History", + "@settingsHistory": {}, + "settingsHistoryDes": "Listen date", + "@settingsHistoryDes": {}, + "settingsInfo": "Info", + "@settingsInfo": {}, + "settingsInterface": "Interface", + "@settingsInterface": {}, + "settingsLayout": "Layout", + "@settingsLayout": {}, + "settingsLayoutDes": "App layout", + "@settingsLayoutDes": {}, + "settingsLibraries": "Libraries", + "@settingsLibraries": {}, + "settingsLibrariesDes": "Open source libraries used in app", + "@settingsLibrariesDes": {}, + "settingsManageDownload": "Manage download", + "@settingsManageDownload": {}, + "settingsManageDownloadDes": "Manage downloaded audio files", + "@settingsManageDownloadDes": {}, + "settingsMenuAutoPlay": "Auto play next", + "@settingsMenuAutoPlay": {}, + "settingsNetworkCellular": "Ask before using cellular data", + "@settingsNetworkCellular": {}, + "settingsNetworkCellularAuto": "Auto download using cellular data", + "@settingsNetworkCellularAuto": {}, + "settingsNetworkCellularAutoDes": "You can set podcast auto download in group manage page", + "@settingsNetworkCellularAutoDes": {}, + "settingsNetworkCellularDes": "Ask to confirm when using cellulae data to download episodes", + "@settingsNetworkCellularDes": {}, + "settingsPlayDes": "Playlist and player", + "@settingsPlayDes": {}, + "settingsPopupMenu": "Episodes popup menu", + "@settingsPopupMenu": {}, + "settingsPopupMenuDes": "Change the popup menu of episode", + "@settingsPopupMenuDes": {}, + "settingsPrefrence": "Prefrence", + "@settingsPrefrence": {}, + "settingsRealDark": "Real dark", + "@settingsRealDark": {}, + "settingsRealDarkDes": "Turn on if you think the night is not dark enough", + "@settingsRealDarkDes": {}, + "settingsSTAuto": "Auto turn on sleep timer", + "@settingsSTAuto": {}, + "settingsSTAutoDes": "Auto start sleep timer at scheduled time", + "@settingsSTAutoDes": {}, + "settingsSTDefaultTime": "Default time", + "@settingsSTDefaultTime": {}, + "settingsSTDefautTimeDes": "Default time for sleep timer", + "@settingsSTDefautTimeDes": {}, + "settingsSTMode": "Auto sleep timer mode", + "@settingsSTMode": {}, + "settingsStorageDes": "Manange cache and download storage", + "@settingsStorageDes": {}, + "settingsSyncing": "Syncing", + "@settingsSyncing": {}, + "settingsSyncingDes": "Refresh podcasts in the background", + "@settingsSyncingDes": {}, + "settingsTheme": "Theme", + "@settingsTheme": {}, + "settingStorage": "Storage", + "@settingStorage": {}, + "settingsUpdateInterval": "Update interval", + "@settingsUpdateInterval": {}, + "settingsUpdateIntervalDes": "Default 24 hours", + "@settingsUpdateIntervalDes": {}, + "sleepTimer": "Sleep timer", + "@sleepTimer": {}, + "subscribe": "Subscribe", + "@subscribe": {}, + "systemDefault": "System default", + "@systemDefault": {}, + "to": "To", + "@to": {}, + "toastAddPlaylist": "Added to playlist", + "@toastAddPlaylist": {}, + "toastDescovery": "Discovery feature reopened, pleast restart the app", + "@toastDescovery": {}, + "toastFileError": "File error, Subscribe failed", + "@toastFileError": {}, + "toastFileNotVilid": "File not vilid", + "@toastFileNotVilid": {}, + "toastReadFile": "Read file successfully", + "@toastReadFile": {}, + "toastRemovePlaylist": "Removed from playlist", + "@toastRemovePlaylist": {}, + "unlike": "Unlike", + "@unlike": {}, + "unliked": "Unliked", + "@unliked": {} } \ No newline at end of file diff --git a/lib/l10n/intl_zh_Hans.arb b/lib/l10n/intl_zh_Hans.arb new file mode 100644 index 0000000..f76a377 --- /dev/null +++ b/lib/l10n/intl_zh_Hans.arb @@ -0,0 +1,241 @@ +{ + "@@locale": "zh-Hans", + "all": "全部", + "@all": {}, + "cancel": "取消", + "@cancel": {}, + "chooseA": "选择", + "@chooseA": {}, + "color": "颜色", + "@color": {}, + "confirm": "确认", + "@confirm": {}, + "darkMode": "夜晚模式", + "@darkMode": {}, + "delete": "删除", + "@delete": {}, + "download": "下载", + "@download": {}, + "editName": "修改组名", + "@editName": {}, + "endOfEpisode": "节目结束", + "@endOfEpisode": {}, + "feedbackEmail": "发送邮件", + "@feedbackEmail": {}, + "feedbackGithub": "提交Issue", + "@feedbackGithub": {}, + "feedbackPlay": "Play评价", + "@feedbackPlay": {}, + "feedbackTelegram": "加入小组", + "@feedbackTelegram": {}, + "from": "自", + "@from": {}, + "groups": "分组", + "@groups": {}, + "homeGroupsSeeAll": "查看全部", + "@homeGroupsSeeAll": {}, + "homeMenuPlaylist": "播放列表", + "@homeMenuPlaylist": {}, + "homeSubMenuDownloaded": "已下载", + "@homeSubMenuDownloaded": {}, + "homeSubMenuLikeData": "添加日期", + "@homeSubMenuLikeData": {}, + "homeSubMenuSortBy": "排序", + "@homeSubMenuSortBy": {}, + "homeSubMenuUpdateDate": "更新日期", + "@homeSubMenuUpdateDate": {}, + "homeTabMenuFavotite": "收藏", + "@homeTabMenuFavotite": {}, + "homeTabMenuRecent": "最近更新", + "@homeTabMenuRecent": {}, + "homeToprightMenuAbout": "关于", + "@homeToprightMenuAbout": {}, + "homeToprightMenuImportOMPL": "导入OMPL", + "@homeToprightMenuImportOMPL": {}, + "homeToprightMenuRefreshAll": "全部刷新", + "@homeToprightMenuRefreshAll": {}, + "homeToprightMenuSettings": "设置", + "@homeToprightMenuSettings": {}, + "later": "稍后", + "@later": {}, + "lightMode": "明亮模式", + "@lightMode": {}, + "like": "喜欢", + "@like": {}, + "liked": "已收藏", + "@liked": {}, + "listen": "收听", + "@listen": {}, + "listened": "已收听", + "@listened": {}, + "markListened": "标记已收听", + "@markListened": {}, + "menu": "菜单", + "@menu": {}, + "menuAllPodcasts": "所有订阅", + "@menuAllPodcasts": {}, + "menuMarkAllListened": "标记所有已收听", + "@menuMarkAllListened": {}, + "menuMarkListened": "标记已收听", + "@menuMarkListened": {}, + "menuViewRSS": "查看 RSS", + "@menuViewRSS": {}, + "menuVisitSite": "访问网站", + "@menuVisitSite": {}, + "network": "网络", + "@network": {}, + "newGroup": "创建分组", + "@newGroup": {}, + "play": "播放", + "@play": {}, + "popupMenuDownloadDes": "下载节目", + "@popupMenuDownloadDes": {}, + "popupMenuLaterDes": "添加到播放列表", + "@popupMenuLaterDes": {}, + "popupMenuLikeDes": "添加到收藏", + "@popupMenuLikeDes": {}, + "popupMenuMarkDes": "设置为已收听", + "@popupMenuMarkDes": {}, + "popupMenuPlayDes": "播放节目", + "@popupMenuPlayDes": {}, + "remove": "移除", + "@remove": {}, + "schedule": "定时", + "@schedule": {}, + "searchPodcast": "搜索播客", + "@searchPodcast": {}, + "settingsAccentColor": "次要颜色", + "@settingsAccentColor": {}, + "settingsAccentColorDes": "包括溢出颜色", + "@settingsAccentColorDes": {}, + "settingsAppearance": "界面", + "@settingsAppearance": {}, + "settingsAppearanceDes": "颜色与主题", + "@settingsAppearanceDes": {}, + "settingsAppIntro": "引导页", + "@settingsAppIntro": {}, + "settingsAudioCache": "播放缓存", + "@settingsAudioCache": {}, + "settingsAudioCacheDes": "播放缓存设置", + "@settingsAudioCacheDes": {}, + "settingsAutoDelete": "自动删除下载节目", + "@settingsAutoDelete": {}, + "settingsAutoDeleteDes": "默认 30 天", + "@settingsAutoDeleteDes": {}, + "settingsAutoPlayDes": "自动播放下一节目", + "@settingsAutoPlayDes": {}, + "settingsDefaultGrid": "默认布局", + "@settingsDefaultGrid": {}, + "settingsDefaultGridDownload": "下载页", + "@settingsDefaultGridDownload": {}, + "settingsDefaultGridFavorite": "收藏页", + "@settingsDefaultGridFavorite": {}, + "settingsDefaultGridPodcast": "播客页", + "@settingsDefaultGridPodcast": {}, + "settingsDefaultGridRecent": "最近页", + "@settingsDefaultGridRecent": {}, + "settingsDiscovery": "再次功能介绍", + "@settingsDiscovery": {}, + "settingsEnableSyncing": "开启自动更新", + "@settingsEnableSyncing": {}, + "settingsEnableSyncingDes": "在后台更新所有订阅播客", + "@settingsEnableSyncingDes": {}, + "settingsExport": "导出", + "@settingsExport": {}, + "settingsExportDes": "导出 OMPL 文件", + "@settingsExportDes": {}, + "settingsFeedback": "反馈", + "@settingsFeedback": {}, + "settingsFeedbackDes": "意见与建议", + "@settingsFeedbackDes": {}, + "settingsHistory": "历史记录", + "@settingsHistory": {}, + "settingsHistoryDes": "播放日期", + "@settingsHistoryDes": {}, + "settingsInfo": "信息", + "@settingsInfo": {}, + "settingsInterface": "界面", + "@settingsInterface": {}, + "settingsLayout": "布局", + "@settingsLayout": {}, + "settingsLayoutDes": "应用布局", + "@settingsLayoutDes": {}, + "settingsLibraries": "开源", + "@settingsLibraries": {}, + "settingsLibrariesDes": "使用开源项目", + "@settingsLibrariesDes": {}, + "settingsManageDownload": "下载管理", + "@settingsManageDownload": {}, + "settingsManageDownloadDes": "管理下载节目文件", + "@settingsManageDownloadDes": {}, + "settingsMenuAutoPlay": "自动播放下一节目", + "@settingsMenuAutoPlay": {}, + "settingsNetworkCellular": "蜂窝数据确认", + "@settingsNetworkCellular": {}, + "settingsNetworkCellularAuto": "是否用蜂窝数据自动下载", + "@settingsNetworkCellularAuto": {}, + "settingsNetworkCellularAutoDes": "你可以在分组管理页面设置自动下载", + "@settingsNetworkCellularAutoDes": {}, + "settingsNetworkCellularDes": "在使用蜂窝数据下载前确认", + "@settingsNetworkCellularDes": {}, + "settingsPlayDes": "播放列表和播放器", + "@settingsPlayDes": {}, + "settingsPopupMenu": "节目弹出菜单", + "@settingsPopupMenu": {}, + "settingsPopupMenuDes": "修改节目弹出菜单", + "@settingsPopupMenuDes": {}, + "settingsPrefrence": "首选项", + "@settingsPrefrence": {}, + "settingsRealDark": "真的黑", + "@settingsRealDark": {}, + "settingsRealDarkDes": "如果夜不够黑,请开启", + "@settingsRealDarkDes": {}, + "settingsSTAuto": "自动睡眠模式", + "@settingsSTAuto": {}, + "settingsSTAutoDes": "定期开启睡眠模式", + "@settingsSTAutoDes": {}, + "settingsSTDefaultTime": "默认时长", + "@settingsSTDefaultTime": {}, + "settingsSTDefautTimeDes": "睡眠模式默认时长", + "@settingsSTDefautTimeDes": {}, + "settingsSTMode": "自动睡眠模式默认时长", + "@settingsSTMode": {}, + "settingsStorageDes": "管理缓存和下载空间", + "@settingsStorageDes": {}, + "settingsSyncing": "同步", + "@settingsSyncing": {}, + "settingsSyncingDes": "在后台更新播客", + "@settingsSyncingDes": {}, + "settingsTheme": "主题", + "@settingsTheme": {}, + "settingStorage": "储存空间", + "@settingStorage": {}, + "settingsUpdateInterval": "更新频率", + "@settingsUpdateInterval": {}, + "settingsUpdateIntervalDes": "默认 24 小时", + "@settingsUpdateIntervalDes": {}, + "sleepTimer": "睡眠模式", + "@sleepTimer": {}, + "subscribe": "订阅", + "@subscribe": {}, + "systemDefault": "系统默认", + "@systemDefault": {}, + "to": "到", + "@to": {}, + "toastAddPlaylist": "添加到播放列表", + "@toastAddPlaylist": {}, + "toastDescovery": "重启应用后可查看", + "@toastDescovery": {}, + "toastFileError": "文件错误,导入失败", + "@toastFileError": {}, + "toastFileNotVilid": "文件错误", + "@toastFileNotVilid": {}, + "toastReadFile": "读取文件成功", + "@toastReadFile": {}, + "toastRemovePlaylist": "从播放列表移除", + "@toastRemovePlaylist": {}, + "unlike": "取消喜欢", + "@unlike": {}, + "unliked": "从收藏移除", + "@unliked": {} +} \ No newline at end of file diff --git a/lib/podcasts/podcastdetail.dart b/lib/podcasts/podcastdetail.dart index 06f1192..a26e76e 100644 --- a/lib/podcasts/podcastdetail.dart +++ b/lib/podcasts/podcastdetail.dart @@ -276,6 +276,7 @@ class _PodcastDetailState extends State { @override Widget build(BuildContext context) { Color _color = widget.podcastLocal.primaryColor.colorizedark(); + final s = context.s; return AnnotatedRegion( value: SystemUiOverlayStyle( statusBarIconBrightness: Brightness.dark, @@ -366,7 +367,7 @@ class _PodcastDetailState extends State { horizontal: 5.0), ), - Text('Visit Site'), + Text(s.menuVisitSite), ], ), ), @@ -390,7 +391,7 @@ class _PodcastDetailState extends State { EdgeInsets.symmetric( horizontal: 5.0), ), - Text('View Rss Feed'), + Text(s.menuViewRSS), ], ), ), @@ -422,7 +423,7 @@ class _PodcastDetailState extends State { horizontal: 5.0), ), Text( - 'Mark All Listened', + s.menuMarkAllListened, ), ], ), @@ -555,7 +556,7 @@ class _PodcastDetailState extends State { Radius.circular( 10))), elevation: 1, - tooltip: 'Sort By', + tooltip: s.homeSubMenuSortBy, child: Container( height: 30, padding: @@ -565,7 +566,8 @@ class _PodcastDetailState extends State { mainAxisSize: MainAxisSize.min, children: [ - Text('Sort by'), + Text(s + .homeSubMenuSortBy), Padding( padding: EdgeInsets .symmetric( diff --git a/lib/settings/downloads_manage.dart b/lib/settings/downloads_manage.dart index 26c8196..6ad40d8 100644 --- a/lib/settings/downloads_manage.dart +++ b/lib/settings/downloads_manage.dart @@ -97,6 +97,7 @@ class _DownloadsManageState extends State { @override Widget build(BuildContext context) { + final s = context.s; return AnnotatedRegion( value: SystemUiOverlayStyle( statusBarIconBrightness: Theme.of(context).accentColorBrightness, @@ -190,7 +191,7 @@ class _DownloadsManageState extends State { child: Row( mainAxisSize: MainAxisSize.min, children: [ - Text('Sory by'), + Text(s.homeSubMenuSortBy), Padding( padding: EdgeInsets.symmetric( horizontal: 5), diff --git a/lib/settings/history.dart b/lib/settings/history.dart index 7152084..7c1ff65 100644 --- a/lib/settings/history.dart +++ b/lib/settings/history.dart @@ -111,6 +111,7 @@ class _PlayedHistoryState extends State double top = 0; @override Widget build(BuildContext context) { + final s = context.s; return AnnotatedRegion( value: SystemUiOverlayStyle( statusBarIconBrightness: Theme.of(context).accentColorBrightness, @@ -137,7 +138,7 @@ class _PlayedHistoryState extends State return FlexibleSpaceBar( title: top < 70 + MediaQuery.of(context).padding.top ? Text( - 'History', + s.settingsHistory, ) : Center(), background: Padding( @@ -162,11 +163,11 @@ class _PlayedHistoryState extends State indicatorColor: context.accentColor, tabs: [ Tab( - child: Text('Listen', + child: Text(s.listen, style: context.textTheme.headline6), ), Tab( - child: Text('Subscribe', + child: Text(s.subscribe, style: context.textTheme.headline6), ) ], diff --git a/lib/settings/layouts.dart b/lib/settings/layouts.dart index c825093..688548d 100644 --- a/lib/settings/layouts.dart +++ b/lib/settings/layouts.dart @@ -111,6 +111,7 @@ class _LayoutSettingState extends State { @override Widget build(BuildContext context) { + final s = context.s; return AnnotatedRegion( value: SystemUiOverlayStyle( statusBarIconBrightness: Theme.of(context).accentColorBrightness, @@ -120,7 +121,7 @@ class _LayoutSettingState extends State { ), child: Scaffold( appBar: AppBar( - title: Text('Layout'), + title: Text(s.settingsLayout), elevation: 0, backgroundColor: context.primaryColor, ), @@ -135,7 +136,7 @@ class _LayoutSettingState extends State { height: 30.0, padding: EdgeInsets.symmetric(horizontal: 70), alignment: Alignment.centerLeft, - child: Text('Episode popup menu', + child: Text(s.settingsPopupMenu, style: Theme.of(context) .textTheme .bodyText1 @@ -152,8 +153,8 @@ class _LayoutSettingState extends State { MaterialPageRoute( builder: (context) => PopupMenuSetting())), contentPadding: EdgeInsets.only(left: 80.0, right: 20), - title: Text('Episode popup menu'), - subtitle: Text('Change the menu when long tap episode'), + title: Text(s.settingsPopupMenu), + subtitle: Text(s.settingsPopupMenuDes), ), Divider(height: 2), Padding( @@ -163,7 +164,7 @@ class _LayoutSettingState extends State { height: 30.0, padding: EdgeInsets.symmetric(horizontal: 70), alignment: Alignment.centerLeft, - child: Text('Default grid view', + child: Text(s.settingsDefaultGrid, style: Theme.of(context) .textTheme .bodyText1 @@ -176,13 +177,17 @@ class _LayoutSettingState extends State { scrollDirection: Axis.vertical, children: [ _setDefaultGridView(context, - text: 'Podcast page', key: podcastLayoutKey), + text: s.settingsDefaultGridPodcast, + key: podcastLayoutKey), _setDefaultGridView(context, - text: 'Recent tab', key: recentLayoutKey), + text: s.settingsDefaultGridRecent, + key: recentLayoutKey), _setDefaultGridView(context, - text: 'Favorite tab', key: favLayoutKey), + text: s.settingsDefaultGridFavorite, + key: favLayoutKey), _setDefaultGridView(context, - text: 'Downlaod tab', key: downloadLayoutKey), + text: s.settingsDefaultGridDownload, + key: downloadLayoutKey), ]), Divider(height: 2) ]), diff --git a/lib/settings/play_setting.dart b/lib/settings/play_setting.dart index 1eac1ca..e6320c1 100644 --- a/lib/settings/play_setting.dart +++ b/lib/settings/play_setting.dart @@ -207,6 +207,7 @@ class PlaySetting extends StatelessWidget { @override Widget build(BuildContext context) { var settings = Provider.of(context, listen: false); + final s = context.s; return AnnotatedRegion( value: SystemUiOverlayStyle( statusBarIconBrightness: Theme.of(context).accentColorBrightness, @@ -216,7 +217,7 @@ class PlaySetting extends StatelessWidget { ), child: Scaffold( appBar: AppBar( - title: Text('Player Setting'), + title: Text(s.play), elevation: 0, backgroundColor: Theme.of(context).primaryColor, ), @@ -237,7 +238,7 @@ class PlaySetting extends StatelessWidget { height: 30.0, padding: EdgeInsets.symmetric(horizontal: 70), alignment: Alignment.centerLeft, - child: Text('Playlist', + child: Text(s.homeMenuPlaylist, style: Theme.of(context) .textTheme .bodyText1 @@ -254,8 +255,8 @@ class PlaySetting extends StatelessWidget { onTap: () => settings.setAutoPlay = !data, contentPadding: EdgeInsets.only(left: 80.0, right: 20), - title: Text('Autoplay'), - subtitle: Text('Autoplay next episode in playlist'), + title: Text('Auto play next'), + subtitle: Text(s.settingsAutoPlayDes), trailing: Transform.scale( scale: 0.9, child: Switch( @@ -274,10 +275,8 @@ class PlaySetting extends StatelessWidget { height: 30.0, padding: EdgeInsets.symmetric(horizontal: 70), alignment: Alignment.centerLeft, - child: Text('Sleep timer', - style: Theme.of(context) - .textTheme - .bodyText1 + child: Text(s.sleepTimer, + style: context.textTheme.bodyText1 .copyWith(color: Theme.of(context).accentColor)), ), ListView( @@ -287,8 +286,8 @@ class PlaySetting extends StatelessWidget { children: [ ListTile( contentPadding: EdgeInsets.only(left: 80.0, right: 20), - title: Text('Default time'), - subtitle: Text('Default time for sleep timer'), + title: Text(s.settingsSTDefaultTime), + subtitle: Text(s.settingsSTDefautTimeDes), trailing: Selector( selector: (_, settings) => settings.defaultSleepTimer, builder: (_, data, __) => DropdownButton( @@ -313,9 +312,8 @@ class PlaySetting extends StatelessWidget { onTap: () => settings.setAutoSleepTimer = !data, contentPadding: const EdgeInsets.only( left: 80.0, right: 20.0, bottom: 10.0, top: 10.0), - title: Text('Auto turn on sleep timer'), - subtitle: - Text('Auto start sleep timer at scheduled time'), + title: Text(s.settingsSTAuto), + subtitle: Text(s.settingsSTAutoDes), trailing: Transform.scale( scale: 0.9, child: Switch( @@ -328,7 +326,7 @@ class PlaySetting extends StatelessWidget { ListTile( contentPadding: const EdgeInsets.only( left: 80.0, right: 20.0, bottom: 10.0, top: 10.0), - title: Text('Auto sleep timer mode'), + title: Text(s.settingsSTMode), subtitle: context.width > 360 ? null : _modeWidget(context), trailing: context.width > 360 @@ -337,7 +335,7 @@ class PlaySetting extends StatelessWidget { ListTile( contentPadding: EdgeInsets.only(left: 80.0, right: 20), - title: Text('Schedule'), + title: Text(s.schedule), subtitle: context.width > 360 ? null : _scheduleWidget(context), diff --git a/lib/settings/settting.dart b/lib/settings/settting.dart index 73f8fc9..aedda0c 100644 --- a/lib/settings/settting.dart +++ b/lib/settings/settting.dart @@ -102,6 +102,7 @@ class _SettingsState extends State @override Widget build(BuildContext context) { + final s = context.s; return AnnotatedRegion( value: SystemUiOverlayStyle( statusBarIconBrightness: Theme.of(context).accentColorBrightness, @@ -111,7 +112,7 @@ class _SettingsState extends State ), child: Scaffold( appBar: AppBar( - title: Text('Settings'), + title: Text(s.homeToprightMenuSettings), elevation: 0, backgroundColor: context.primaryColor, ), @@ -134,7 +135,7 @@ class _SettingsState extends State height: 30.0, padding: EdgeInsets.symmetric(horizontal: 70), alignment: Alignment.centerLeft, - child: Text('Prefrence', + child: Text(s.settingsPrefrence, style: Theme.of(context) .textTheme .bodyText1 @@ -153,8 +154,8 @@ class _SettingsState extends State contentPadding: EdgeInsets.symmetric(horizontal: 25.0), leading: Icon(LineIcons.adjust_solid), - title: Text('Appearance'), - subtitle: Text('Colors and themes'), + title: Text(s.settingsAppearance), + subtitle: Text(s.settingsAppearanceDes), ), Divider(height: 2), ListTile( @@ -165,8 +166,8 @@ class _SettingsState extends State contentPadding: EdgeInsets.symmetric(horizontal: 25.0), leading: Icon(LineIcons.stop_circle_solid), - title: Text('Layout'), - subtitle: Text('App layout'), + title: Text(s.settingsLayout), + subtitle: Text(s.settingsLayoutDes), ), Divider(height: 2), ListTile( @@ -177,21 +178,20 @@ class _SettingsState extends State contentPadding: EdgeInsets.symmetric(horizontal: 25.0), leading: Icon(LineIcons.play_circle), - title: Text('Play'), - subtitle: Text('Playlist and player'), + title: Text(s.play), + subtitle: Text(s.settingsPlayDes), ), Divider(height: 2), ListTile( - onTap: () => Navigator.push( - context, - MaterialPageRoute( - builder: (context) => SyncingSetting())), - contentPadding: - EdgeInsets.symmetric(horizontal: 25.0), - leading: Icon(LineIcons.cloud_download_alt_solid), - title: Text('Syncing'), - subtitle: Text('Refresh podcasts in the background'), - ), + onTap: () => Navigator.push( + context, + MaterialPageRoute( + builder: (context) => SyncingSetting())), + contentPadding: + EdgeInsets.symmetric(horizontal: 25.0), + leading: Icon(LineIcons.cloud_download_alt_solid), + title: Text(s.settingsSyncing), + subtitle: Text(s.settingsSyncingDes)), Divider(height: 2), ListTile( onTap: () => Navigator.push( @@ -201,8 +201,8 @@ class _SettingsState extends State contentPadding: EdgeInsets.symmetric(horizontal: 25.0), leading: Icon(LineIcons.save), - title: Text('Storage'), - subtitle: Text('Manage cache and download storage'), + title: Text(s.settingStorage), + subtitle: Text(s.settingsStorageDes), ), Divider(height: 2), ListTile( @@ -213,8 +213,8 @@ class _SettingsState extends State contentPadding: EdgeInsets.symmetric(horizontal: 25.0), leading: Icon(Icons.update), - title: Text('History'), - subtitle: Text('Listen data'), + title: Text(s.settingsHistory), + subtitle: Text(s.settingsHistoryDes), ), Divider(height: 2), ListTile( @@ -224,8 +224,8 @@ class _SettingsState extends State contentPadding: EdgeInsets.symmetric(horizontal: 25.0), leading: Icon(LineIcons.file_code_solid), - title: Text('Export'), - subtitle: Text('Export ompl file of all podcasts'), + title: Text(s.settingsExport), + subtitle: Text(s.settingsExportDes), ), Divider(height: 2), ], @@ -243,7 +243,7 @@ class _SettingsState extends State height: 30.0, padding: EdgeInsets.symmetric(horizontal: 70), alignment: Alignment.centerLeft, - child: Text('Info', + child: Text(s.settingsInfo, style: Theme.of(context) .textTheme .bodyText1 @@ -262,9 +262,8 @@ class _SettingsState extends State contentPadding: EdgeInsets.symmetric(horizontal: 25.0), leading: Icon(LineIcons.book_open_solid), - title: Text('Libraries'), - subtitle: - Text('Open source libraries in application'), + title: Text(s.settingsLibraries), + subtitle: Text(s.settingsLibrariesDes), ), Divider(height: 2), ListTile( @@ -280,8 +279,8 @@ class _SettingsState extends State contentPadding: EdgeInsets.symmetric(horizontal: 25.0), leading: Icon(LineIcons.bug_solid), - title: Text('Feedback'), - subtitle: Text('Bugs and feature request'), + title: Text(s.settingsFeedback), + subtitle: Text(s.settingsFeedbackDes), trailing: Transform.rotate( angle: math.pi * _value, child: Icon(Icons.keyboard_arrow_down), @@ -298,19 +297,19 @@ class _SettingsState extends State SizedBox(width: 75), _feedbackItem( LineIcons.github, - 'Submit issue', + s.feedbackGithub, 'https://github.com/stonega/tsacdop/issues'), _feedbackItem( LineIcons.telegram, - 'Join group', + s.feedbackTelegram, 'https://t.me/joinchat/Bk3LkRpTHy40QYC78PK7Qg'), _feedbackItem( LineIcons.envelope_open_text_solid, - 'Write to me', + s.feedbackEmail, 'mailto:?subject=Tsacdop Feedback'), _feedbackItem( LineIcons.google_play, - 'Rate on Play', + s.feedbackPlay, 'https://play.google.com/store/apps/details?id=com.stonegate.tsacdop') ], ), @@ -341,7 +340,7 @@ class _SettingsState extends State contentPadding: EdgeInsets.symmetric(horizontal: 25.0), leading: Icon(LineIcons.capsules_solid), - title: Text('Discovery Features Again'), + title: Text(s.settingsDiscovery), ), Divider(height: 2), ListTile( @@ -353,7 +352,7 @@ class _SettingsState extends State contentPadding: EdgeInsets.symmetric(horizontal: 25.0), leading: Icon(LineIcons.columns_solid), - title: Text('App Intro'), + title: Text(s.settingsAppIntro), ), Divider(height: 2), ], diff --git a/lib/settings/storage.dart b/lib/settings/storage.dart index c5a4112..a5a35aa 100644 --- a/lib/settings/storage.dart +++ b/lib/settings/storage.dart @@ -77,6 +77,7 @@ class _StorageSettingState extends State @override Widget build(BuildContext context) { + final s = context.s; var settings = Provider.of(context, listen: false); return AnnotatedRegion( value: SystemUiOverlayStyle( @@ -87,7 +88,7 @@ class _StorageSettingState extends State ), child: Scaffold( appBar: AppBar( - title: Text('Storage'), + title: Text(s.settingStorage), elevation: 0, backgroundColor: Theme.of(context).primaryColor, ), @@ -107,7 +108,7 @@ class _StorageSettingState extends State height: 30.0, padding: EdgeInsets.symmetric(horizontal: 70), alignment: Alignment.centerLeft, - child: Text('Network', + child: Text(s.network, style: Theme.of(context) .textTheme .bodyText1 @@ -125,9 +126,8 @@ class _StorageSettingState extends State onTap: () => settings.downloadUsingData = !data, contentPadding: EdgeInsets.only( left: 80.0, right: 25, bottom: 10, top: 10), - title: Text('Ask before using cellular data'), - subtitle: Text( - 'Ask to confirm when using cellular data to download episodes'), + title: Text(s.settingsNetworkCellular), + subtitle: Text(s.settingsNetworkCellularDes), trailing: Transform.scale( scale: 0.9, child: Switch( @@ -151,10 +151,9 @@ class _StorageSettingState extends State }, contentPadding: EdgeInsets.only( left: 80.0, right: 25, bottom: 10, top: 10), - title: - Text('Auto download using cellular data'), - subtitle: Text( - 'You can set podcast auto download in group manage page'), + title: Text(s.settingsNetworkCellularAuto), + subtitle: + Text(s.settingsNetworkCellularAutoDes), trailing: Transform.scale( scale: 0.9, child: Switch( @@ -182,7 +181,7 @@ class _StorageSettingState extends State height: 30.0, padding: EdgeInsets.symmetric(horizontal: 70), alignment: Alignment.centerLeft, - child: Text('Storage', + child: Text(s.settingStorage, style: Theme.of(context) .textTheme .bodyText1 @@ -199,8 +198,8 @@ class _StorageSettingState extends State MaterialPageRoute( builder: (context) => DownloadsManage())), contentPadding: EdgeInsets.symmetric(horizontal: 80.0), - title: Text('Downloads'), - subtitle: Text('Manage downloaded audio files'), + title: Text(s.download), + subtitle: Text(s.settingsManageDownloadDes), ), Divider(height: 2), FutureBuilder( @@ -210,8 +209,8 @@ class _StorageSettingState extends State return ListTile( contentPadding: EdgeInsets.only(left: 80.0, right: 20), - title: Text('Auto delete downloads after'), - subtitle: Text('Default 30 days'), + title: Text(s.settingsAutoDelete), + subtitle: Text(s.settingsAutoDeleteDes), trailing: DropdownButton( hint: snapshot.data == -1 ? Text('Never') @@ -238,8 +237,8 @@ class _StorageSettingState extends State ListTile( contentPadding: EdgeInsets.only(left: 80.0, right: 25), // leading: Icon(Icons.colorize), - title: Text('Audio cache'), - subtitle: Text('Audio cache max size'), + title: Text(s.settingsAudioCache), + subtitle: Text(s.settingsAudioCacheDes), trailing: Text.rich(TextSpan( text: '${(_value ~/ 100) * 100}', style: GoogleFonts.teko( diff --git a/lib/settings/syncing.dart b/lib/settings/syncing.dart index d13a12b..3e92339 100644 --- a/lib/settings/syncing.dart +++ b/lib/settings/syncing.dart @@ -4,10 +4,12 @@ import 'package:provider/provider.dart'; import 'package:tuple/tuple.dart'; import '../state/settingstate.dart'; +import '../util/context_extension.dart'; class SyncingSetting extends StatelessWidget { @override Widget build(BuildContext context) { + final s = context.s; var settings = Provider.of(context, listen: false); return AnnotatedRegion( value: SystemUiOverlayStyle( @@ -18,7 +20,7 @@ class SyncingSetting extends StatelessWidget { ), child: Scaffold( appBar: AppBar( - title: Text('Syncing'), + title: Text(s.settingsSyncing), elevation: 0, backgroundColor: Theme.of(context).primaryColor, ), @@ -40,16 +42,16 @@ class SyncingSetting extends StatelessWidget { ), Container( height: 30.0, - padding: EdgeInsets.symmetric(horizontal: 70), + padding: const EdgeInsets.symmetric(horizontal: 70), alignment: Alignment.centerLeft, - child: Text('Syncing', + child: Text(s.settingsSyncing, style: Theme.of(context) .textTheme .bodyText1 .copyWith(color: Theme.of(context).accentColor)), ), Padding( - padding: EdgeInsets.all(5.0), + padding: const EdgeInsets.all(5.0), ), ListView( physics: const BouncingScrollPhysics(), @@ -66,11 +68,10 @@ class SyncingSetting extends StatelessWidget { settings.setWorkManager(data.item2); } }, - contentPadding: EdgeInsets.only( + contentPadding: const EdgeInsets.only( left: 80.0, right: 20, bottom: 10), - title: Text('Enable syncing'), - subtitle: Text( - 'Refresh all podcasts in the background to get leatest episodes'), + title: Text(s.settingsEnableSyncing), + subtitle: Text(s.settingsEnableSyncingDes), trailing: Transform.scale( scale: 0.9, child: Switch( @@ -87,13 +88,13 @@ class SyncingSetting extends StatelessWidget { Divider(height: 2), ListTile( contentPadding: - EdgeInsets.only(left: 80.0, right: 20), - title: Text('Update Interval'), - subtitle: Text('Default 24 hours'), + const EdgeInsets.only(left: 80.0, right: 20), + title: Text(s.settingsUpdateInterval), + subtitle: Text(s.settingsUpdateIntervalDes), trailing: DropdownButton( hint: data.item2 == 1 ? Text(data.item2.toString() + ' hour') - : Text(data.item2.toString() + 'hours'), + : Text(data.item2.toString() + ' hours'), underline: Center(), elevation: 1, value: data.item2, diff --git a/lib/settings/theme.dart b/lib/settings/theme.dart index f3c8af0..1f7249c 100644 --- a/lib/settings/theme.dart +++ b/lib/settings/theme.dart @@ -9,6 +9,7 @@ import '../util/general_dialog.dart'; class ThemeSetting extends StatelessWidget { @override Widget build(BuildContext context) { + final s = context.s; var settings = Provider.of(context, listen: false); return AnnotatedRegion( value: SystemUiOverlayStyle( @@ -19,7 +20,7 @@ class ThemeSetting extends StatelessWidget { ), child: Scaffold( appBar: AppBar( - title: Text('Appearance'), + title: Text(s.settingsAppearance), elevation: 0, backgroundColor: Theme.of(context).primaryColor, ), @@ -34,7 +35,7 @@ class ThemeSetting extends StatelessWidget { height: 30.0, padding: EdgeInsets.symmetric(horizontal: 70), alignment: Alignment.centerLeft, - child: Text('Interface', + child: Text(s.settingsInterface, style: Theme.of(context) .textTheme .bodyText1 @@ -74,7 +75,7 @@ class ThemeSetting extends StatelessWidget { shape: RoundedRectangleBorder( borderRadius: BorderRadius.all(Radius.circular(10.0))), - title: Text('Theme'), + title: Text(s.settingsTheme), content: SingleChildScrollView( scrollDirection: Axis.vertical, child: Column( @@ -82,7 +83,7 @@ class ThemeSetting extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.start, children: [ RadioListTile( - title: Text('System default'), + title: Text(s.systemDefault), value: ThemeMode.system, groupValue: settings.theme, onChanged: (value) { @@ -112,8 +113,8 @@ class ThemeSetting extends StatelessWidget { )), contentPadding: EdgeInsets.symmetric(horizontal: 80.0), // leading: Icon(Icons.colorize), - title: Text('Theme'), - subtitle: Text('System default'), + title: Text(s.settingsTheme), + subtitle: Text(s.systemDefault), ), Selector( selector: (_, setting) => setting.realDark, @@ -123,10 +124,9 @@ class ThemeSetting extends StatelessWidget { left: 80.0, right: 20, bottom: 10, top: 10), // leading: Icon(Icons.colorize), title: Text( - 'Real Dark', + s.settingsRealDark, ), - subtitle: Text( - 'Turn on if you think the night is not dark enough'), + subtitle: Text(s.settingsRealDarkDes), trailing: Transform.scale( scale: 0.9, child: Switch( @@ -153,8 +153,8 @@ class ThemeSetting extends StatelessWidget { ), ), contentPadding: EdgeInsets.only(left: 80.0, right: 25), - title: Text('Accent color'), - subtitle: Text('Include the overlay color'), + title: Text(s.settingsAccentColor), + subtitle: Text(s.settingsAccentColorDes), trailing: Container( height: 25, width: 25, diff --git a/lib/util/context_extension.dart b/lib/util/context_extension.dart index ec49fb0..b2be539 100644 --- a/lib/util/context_extension.dart +++ b/lib/util/context_extension.dart @@ -1,13 +1,15 @@ import 'package:flutter/material.dart'; +import '../generated/l10n.dart'; -extension ContextExtension on BuildContext{ - Color get primaryColor => Theme.of(this).primaryColor; - Color get accentColor => Theme.of(this).accentColor; - Color get scaffoldBackgroundColor => Theme.of(this).scaffoldBackgroundColor; - Color get primaryColorDark => Theme.of(this).primaryColorDark; - Color get textColor => Theme.of(this).textTheme.bodyText1.color; - Brightness get brightness => Theme.of(this).brightness; - double get width => MediaQuery.of(this).size.width; - double get height => MediaQuery.of(this).size.width; - TextTheme get textTheme => Theme.of(this).textTheme; -} \ No newline at end of file +extension ContextExtension on BuildContext { + Color get primaryColor => Theme.of(this).primaryColor; + Color get accentColor => Theme.of(this).accentColor; + Color get scaffoldBackgroundColor => Theme.of(this).scaffoldBackgroundColor; + Color get primaryColorDark => Theme.of(this).primaryColorDark; + Color get textColor => Theme.of(this).textTheme.bodyText1.color; + Brightness get brightness => Theme.of(this).brightness; + double get width => MediaQuery.of(this).size.width; + double get height => MediaQuery.of(this).size.width; + TextTheme get textTheme => Theme.of(this).textTheme; + S get s => S.of(this); +} diff --git a/lib/util/customslider.dart b/lib/util/customslider.dart index 5d8bc00..949a9f4 100644 --- a/lib/util/customslider.dart +++ b/lib/util/customslider.dart @@ -54,10 +54,10 @@ class MyRoundSliderThumpShape extends SliderComponentShape { begin: _disabledThumbRadius, end: enabledThumbRadius, ); - final ColorTween colorTween = ColorTween( - begin: sliderTheme.disabledThumbColor, - end: sliderTheme.thumbColor, - ); + // final ColorTween colorTween = ColorTween( + // begin: sliderTheme.disabledThumbColor, + // end: sliderTheme.thumbColor, + // ); canvas.drawCircle( center, diff --git a/lib/util/episodegrid.dart b/lib/util/episodegrid.dart index 560cffd..7e3fbe3 100644 --- a/lib/util/episodegrid.dart +++ b/lib/util/episodegrid.dart @@ -10,7 +10,6 @@ import 'package:tuple/tuple.dart'; import 'package:line_icons/line_icons.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:auto_animated/auto_animated.dart'; -import 'package:tuple/tuple.dart'; import 'open_container.dart'; import '../state/audiostate.dart'; @@ -398,7 +397,7 @@ class EpisodeGrid extends StatelessWidget { showItemDuration: Duration(milliseconds: 50), ); final scrollController = ScrollController(); - + final s = context.s; return SliverPadding( padding: const EdgeInsets.only( top: 10.0, bottom: 5.0, left: 15.0, right: 15.0), @@ -507,7 +506,7 @@ class EpisodeGrid extends StatelessWidget { ? context.primaryColor : context.scaffoldBackgroundColor, title: Text(data.item1 != episodes[index] - ? "Play" + ? s.play : "Playing"), trailingIcon: Icon( LineIcons.play_circle_solid, @@ -526,7 +525,7 @@ class EpisodeGrid extends StatelessWidget { title: data.item2.contains( episodes[index].enclosureUrl) ? Text("Remove") - : Text("Later"), + : Text(s.later), trailingIcon: Icon( LineIcons.clock_solid, color: Colors.cyan, @@ -556,8 +555,8 @@ class EpisodeGrid extends StatelessWidget { ? context.primaryColor : context.scaffoldBackgroundColor, title: isLiked - ? Text("Unlike") - : Text("Like"), + ? Text(s.unlike) + : Text(s.like), trailingIcon: Icon(LineIcons.heart, color: Colors.red, size: 21), onPressed: () async { @@ -592,7 +591,7 @@ class EpisodeGrid extends StatelessWidget { color: context.textColor .withOpacity(0.5))) : Text( - 'Mark Listened', + s.markListened, maxLines: 1, overflow: TextOverflow.ellipsis, ), @@ -609,7 +608,7 @@ class EpisodeGrid extends StatelessWidget { await _markListened(episodes[index]); audio.setEpisodeState = true; Fluttertoast.showToast( - msg: 'Mark listened', + msg: s.markListened, gravity: ToastGravity.BOTTOM, ); } @@ -622,11 +621,11 @@ class EpisodeGrid extends StatelessWidget { ? context.primaryColor : context.scaffoldBackgroundColor, title: isDownloaded - ? Text('Downloaded', + ? Text(s.homeSubMenuDownloaded, style: TextStyle( color: context.textColor .withOpacity(0.5))) - : Text('Download'), + : Text(s.download), trailingIcon: Icon( LineIcons.download_solid, color: Colors.green), diff --git a/pubspec.yaml b/pubspec.yaml index 5019e9e..ad12ea7 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -70,3 +70,5 @@ flutter: uses-material-design: true flutter_intl: enabled: true + localizely: + project_id: bde4e9bd-4cb2-449b-9de2-18f231ddb47d