summaryrefslogtreecommitdiff
path: root/core/src/main
diff options
context:
space:
mode:
authorBrad Pitcher <bradpitcher@gmail.com>2019-04-10 08:21:55 -0700
committerGitHub <noreply@github.com>2019-04-10 08:21:55 -0700
commitf2af5192e68d756380556f8420caff2d5095ae97 (patch)
tree66b79c10506df9fafb64e7a68792ee9913ddf005 /core/src/main
parent3019c4a9be26239b193537264fbfaca3f8221a1e (diff)
parentd8a010ad487d186afedc85f61a8726813b72a82e (diff)
downloadAntennaPod-f2af5192e68d756380556f8420caff2d5095ae97.zip
Merge branch 'develop' into fix-2359
Diffstat (limited to 'core/src/main')
-rw-r--r--core/src/main/java/android/support/v4/app/SafeJobIntentService.java118
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/UpdateManager.java50
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/asynctask/DBTaskLoader.java29
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/asynctask/FeedRemover.java4
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrClickWorker.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrStatusFetcher.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/feed/Feed.java35
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/feed/FeedComponent.java4
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/feed/FeedImage.java92
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/feed/FeedItem.java50
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/feed/FeedItemFilter.java8
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java12
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/glide/ApGlideModule.java18
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/glide/ApGlideSettings.java1
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/glide/ApOkHttpUrlLoader.java45
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/glide/AudioCoverFetcher.java26
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/glide/FastBlurTransformation.java17
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/gpoddernet/GpodnetService.java3
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetEpisodeAction.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/preferences/GpodnetPreferences.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/preferences/SleepTimerPreferences.java1
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java109
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/receiver/PlayerWidget.java3
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/FeedUpdateJobService.java1
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/GpodnetSyncService.java9
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/PlayerWidgetJobService.java15
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java3
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadRequest.java6
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java55
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/Downloader.java7
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/DownloaderCallback.java10
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java15
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/ExoPlayerWrapper.java249
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java98
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java389
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceMediaPlayer.java6
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/PlayerStatus.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/APCleanupAlgorithm.java33
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java115
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java89
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/DBUpgrader.java293
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java250
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/DownloadRequester.java5
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/FeedSearcher.java6
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java490
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/syndication/handler/TypeGetter.java23
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/syndication/handler/UnsupportedFeedtypeException.java12
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSITunes.java24
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSMedia.java18
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSRSS20.java26
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/Namespace.java1
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/NSAtom.java9
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/Consumer.java5
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/Converter.java31
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/DateUtils.java9
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/EpisodeFilter.java50
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/FeedItemUtil.java1
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/FeedUpdateUtils.java20
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/Function.java7
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/IntentUtils.java5
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/LangUtils.java3
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/NetworkUtils.java37
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/Optional.java213
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/QueueAccess.java15
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/RewindAfterPauseUtils.java1
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/StorageUtils.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/ThemeUtils.java14
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/URLChecker.java3
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/download/AutoUpdateManager.java34
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/exception/MediaFileNotFoundException.java5
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrServiceCreator.java4
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrUtils.java4
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/gui/MoreContentListFooterUtil.java4
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/gui/NotificationUtils.java3
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/playback/AudioPlayer.java19
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/playback/IPlayer.java24
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/playback/MediaPlayerError.java1
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/playback/Playable.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java109
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackServiceStarter.java9
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/playback/Timeline.java99
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/playback/VideoPlayer.java43
-rwxr-xr-xcore/src/main/res/drawable-hdpi/ic_av_fast_forward_80dp.pngbin429 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-hdpi/ic_av_pause_circle_outline_80dp.pngbin1100 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-hdpi/ic_av_play_circle_outline_80dp.pngbin1232 -> 0 bytes
-rwxr-xr-xcore/src/main/res/drawable-hdpi/ic_av_rewind_80dp.pngbin408 -> 0 bytes
-rwxr-xr-xcore/src/main/res/drawable-hdpi/ic_baseline_question_answer_white_24dp.pngbin0 -> 187 bytes
-rw-r--r--core/src/main/res/drawable-hdpi/ic_bug_grey600_24dp.pngbin0 -> 813 bytes
-rw-r--r--core/src/main/res/drawable-hdpi/ic_bug_white_24dp.pngbin0 -> 653 bytes
-rw-r--r--core/src/main/res/drawable-hdpi/ic_cellphone_text_grey600_24dp.pngbin0 -> 649 bytes
-rw-r--r--core/src/main/res/drawable-hdpi/ic_cellphone_text_white_24dp.pngbin0 -> 592 bytes
-rw-r--r--core/src/main/res/drawable-hdpi/ic_check_box_grey600_24dp.pngbin278 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-hdpi/ic_check_box_outline_blank_grey600_24dp.pngbin180 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-hdpi/ic_check_box_outline_blank_white_24dp.pngbin170 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-hdpi/ic_check_box_white_24dp.pngbin260 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-hdpi/ic_format_list_bulleted_grey600_24dp.pngbin0 -> 492 bytes
-rw-r--r--core/src/main/res/drawable-hdpi/ic_format_list_bulleted_white_24dp.pngbin0 -> 459 bytes
-rw-r--r--core/src/main/res/drawable-hdpi/ic_forum_grey600_24dp.pngbin0 -> 601 bytes
-rw-r--r--core/src/main/res/drawable-hdpi/ic_indeterminate_check_box_grey600_24dp.pngbin179 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-hdpi/ic_indeterminate_check_box_white_24dp.pngbin171 -> 0 bytes
-rwxr-xr-xcore/src/main/res/drawable-mdpi/ic_av_fast_forward_80dp.pngbin328 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-mdpi/ic_av_pause_circle_outline_80dp.pngbin768 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-mdpi/ic_av_play_circle_outline_80dp.pngbin820 -> 0 bytes
-rwxr-xr-xcore/src/main/res/drawable-mdpi/ic_av_rewind_80dp.pngbin349 -> 0 bytes
-rwxr-xr-xcore/src/main/res/drawable-mdpi/ic_baseline_question_answer_white_24dp.pngbin0 -> 139 bytes
-rw-r--r--core/src/main/res/drawable-mdpi/ic_bug_grey600_24dp.pngbin0 -> 663 bytes
-rw-r--r--core/src/main/res/drawable-mdpi/ic_bug_white_24dp.pngbin0 -> 529 bytes
-rw-r--r--core/src/main/res/drawable-mdpi/ic_cellphone_text_grey600_24dp.pngbin0 -> 471 bytes
-rw-r--r--core/src/main/res/drawable-mdpi/ic_cellphone_text_white_24dp.pngbin0 -> 440 bytes
-rw-r--r--core/src/main/res/drawable-mdpi/ic_check_box_grey600_24dp.pngbin193 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-mdpi/ic_check_box_outline_blank_grey600_24dp.pngbin116 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-mdpi/ic_check_box_outline_blank_white_24dp.pngbin113 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-mdpi/ic_check_box_white_24dp.pngbin179 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-mdpi/ic_format_list_bulleted_grey600_24dp.pngbin0 -> 423 bytes
-rw-r--r--core/src/main/res/drawable-mdpi/ic_format_list_bulleted_white_24dp.pngbin0 -> 406 bytes
-rw-r--r--core/src/main/res/drawable-mdpi/ic_forum_grey600_24dp.pngbin0 -> 488 bytes
-rw-r--r--core/src/main/res/drawable-mdpi/ic_indeterminate_check_box_grey600_24dp.pngbin118 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-mdpi/ic_indeterminate_check_box_white_24dp.pngbin115 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-v21/overlay_button_circle_background.xml10
-rwxr-xr-xcore/src/main/res/drawable-xhdpi/ic_av_fast_forward_80dp.pngbin575 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xhdpi/ic_av_pause_circle_outline_80dp.pngbin1889 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xhdpi/ic_av_play_circle_outline_80dp.pngbin1994 -> 0 bytes
-rwxr-xr-xcore/src/main/res/drawable-xhdpi/ic_av_rewind_80dp.pngbin603 -> 0 bytes
-rwxr-xr-xcore/src/main/res/drawable-xhdpi/ic_baseline_question_answer_white_24dp.pngbin0 -> 212 bytes
-rw-r--r--core/src/main/res/drawable-xhdpi/ic_bug_grey600_24dp.pngbin0 -> 960 bytes
-rw-r--r--core/src/main/res/drawable-xhdpi/ic_bug_white_24dp.pngbin0 -> 710 bytes
-rw-r--r--core/src/main/res/drawable-xhdpi/ic_cellphone_text_grey600_24dp.pngbin0 -> 614 bytes
-rw-r--r--core/src/main/res/drawable-xhdpi/ic_cellphone_text_white_24dp.pngbin0 -> 564 bytes
-rw-r--r--core/src/main/res/drawable-xhdpi/ic_check_box_grey600_24dp.pngbin305 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xhdpi/ic_check_box_outline_blank_grey600_24dp.pngbin186 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xhdpi/ic_check_box_outline_blank_white_24dp.pngbin165 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xhdpi/ic_check_box_white_24dp.pngbin282 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xhdpi/ic_format_list_bulleted_grey600_24dp.pngbin0 -> 504 bytes
-rw-r--r--core/src/main/res/drawable-xhdpi/ic_format_list_bulleted_white_24dp.pngbin0 -> 462 bytes
-rw-r--r--core/src/main/res/drawable-xhdpi/ic_forum_grey600_24dp.pngbin0 -> 602 bytes
-rw-r--r--core/src/main/res/drawable-xhdpi/ic_indeterminate_check_box_grey600_24dp.pngbin186 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xhdpi/ic_indeterminate_check_box_white_24dp.pngbin166 -> 0 bytes
-rwxr-xr-xcore/src/main/res/drawable-xxhdpi/ic_av_fast_forward_80dp.pngbin831 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xxhdpi/ic_av_pause_circle_outline_80dp.pngbin2745 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xxhdpi/ic_av_play_circle_outline_80dp.pngbin2987 -> 0 bytes
-rwxr-xr-xcore/src/main/res/drawable-xxhdpi/ic_av_rewind_80dp.pngbin757 -> 0 bytes
-rwxr-xr-xcore/src/main/res/drawable-xxhdpi/ic_baseline_question_answer_white_24dp.pngbin0 -> 276 bytes
-rw-r--r--core/src/main/res/drawable-xxhdpi/ic_bug_grey600_24dp.pngbin0 -> 1270 bytes
-rw-r--r--core/src/main/res/drawable-xxhdpi/ic_bug_white_24dp.pngbin0 -> 926 bytes
-rw-r--r--core/src/main/res/drawable-xxhdpi/ic_cellphone_text_grey600_24dp.pngbin0 -> 801 bytes
-rw-r--r--core/src/main/res/drawable-xxhdpi/ic_cellphone_text_white_24dp.pngbin0 -> 739 bytes
-rw-r--r--core/src/main/res/drawable-xxhdpi/ic_check_box_grey600_24dp.pngbin415 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xxhdpi/ic_check_box_outline_blank_grey600_24dp.pngbin244 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xxhdpi/ic_check_box_outline_blank_white_24dp.pngbin214 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xxhdpi/ic_check_box_white_24dp.pngbin383 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xxhdpi/ic_format_list_bulleted_grey600_24dp.pngbin0 -> 631 bytes
-rw-r--r--core/src/main/res/drawable-xxhdpi/ic_format_list_bulleted_white_24dp.pngbin0 -> 594 bytes
-rw-r--r--core/src/main/res/drawable-xxhdpi/ic_forum_grey600_24dp.pngbin0 -> 766 bytes
-rw-r--r--core/src/main/res/drawable-xxhdpi/ic_indeterminate_check_box_grey600_24dp.pngbin247 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xxhdpi/ic_indeterminate_check_box_white_24dp.pngbin219 -> 0 bytes
-rwxr-xr-xcore/src/main/res/drawable-xxxhdpi/ic_av_fast_forward_80dp.pngbin1332 -> 0 bytes
-rwxr-xr-xcore/src/main/res/drawable-xxxhdpi/ic_av_rewind_80dp.pngbin1362 -> 0 bytes
-rwxr-xr-xcore/src/main/res/drawable-xxxhdpi/ic_baseline_question_answer_white_24db.pngbin0 -> 310 bytes
-rw-r--r--core/src/main/res/drawable-xxxhdpi/ic_bug_grey600_24dp.pngbin0 -> 1577 bytes
-rw-r--r--core/src/main/res/drawable-xxxhdpi/ic_bug_white_24dp.pngbin0 -> 1180 bytes
-rw-r--r--core/src/main/res/drawable-xxxhdpi/ic_cellphone_text_grey600_24dp.pngbin0 -> 971 bytes
-rw-r--r--core/src/main/res/drawable-xxxhdpi/ic_cellphone_text_white_24dp.pngbin0 -> 902 bytes
-rw-r--r--core/src/main/res/drawable-xxxhdpi/ic_format_list_bulleted_grey600_24dp.pngbin0 -> 738 bytes
-rw-r--r--core/src/main/res/drawable-xxxhdpi/ic_format_list_bulleted_white_24dp.pngbin0 -> 666 bytes
-rw-r--r--core/src/main/res/drawable-xxxhdpi/ic_forum_grey600_24dp.pngbin0 -> 900 bytes
-rw-r--r--core/src/main/res/drawable/ic_av_fast_forward_white_80dp.xml10
-rw-r--r--core/src/main/res/drawable/ic_av_fast_rewind_white_80dp.xml10
-rw-r--r--core/src/main/res/drawable/ic_av_pause_white_80dp.xml10
-rw-r--r--core/src/main/res/drawable/ic_av_play_white_80dp.xml10
-rw-r--r--core/src/main/res/drawable/ic_fab_edit.xml5
-rw-r--r--core/src/main/res/drawable/ic_remove_grey600.xml5
-rw-r--r--core/src/main/res/drawable/ic_remove_white.xml5
-rw-r--r--core/src/main/res/drawable/ic_select_all_grey600.xml9
-rw-r--r--core/src/main/res/drawable/ic_select_all_white.xml9
-rw-r--r--core/src/main/res/drawable/ic_select_none_grey600.xml11
-rw-r--r--core/src/main/res/drawable/ic_select_none_white.xml11
-rw-r--r--core/src/main/res/drawable/overlay_button_circle_background.xml10
-rw-r--r--core/src/main/res/drawable/overlay_drawable_dark_trueblack.xml15
-rw-r--r--core/src/main/res/drawable/progress_bar_horizontal_trueblack.xml15
-rw-r--r--core/src/main/res/values-ar/strings.xml72
-rw-r--r--core/src/main/res/values-az/strings.xml2
-rw-r--r--core/src/main/res/values-b+ast/strings.xml3
-rw-r--r--core/src/main/res/values-bg/strings.xml23
-rw-r--r--core/src/main/res/values-ca-rES/strings.xml1
-rw-r--r--core/src/main/res/values-ca/strings.xml127
-rw-r--r--core/src/main/res/values-cs-rCZ/strings.xml33
-rw-r--r--core/src/main/res/values-da/strings.xml27
-rw-r--r--core/src/main/res/values-de/strings.xml81
-rw-r--r--core/src/main/res/values-el/strings.xml49
-rw-r--r--core/src/main/res/values-es-rES/strings.xml2
-rw-r--r--core/src/main/res/values-es/strings.xml507
-rw-r--r--core/src/main/res/values-et/strings.xml31
-rw-r--r--core/src/main/res/values-fa/strings.xml183
-rw-r--r--core/src/main/res/values-fi/strings.xml1
-rw-r--r--core/src/main/res/values-fr/strings.xml175
-rw-r--r--core/src/main/res/values-gl-rES/strings.xml167
-rw-r--r--core/src/main/res/values-hi-rIN/strings.xml178
-rw-r--r--core/src/main/res/values-hu/strings.xml211
-rw-r--r--core/src/main/res/values-id/strings.xml1
-rw-r--r--core/src/main/res/values-is-rIS/strings.xml1
-rw-r--r--core/src/main/res/values-it-rIT/strings.xml526
-rw-r--r--core/src/main/res/values-it/strings.xml55
-rw-r--r--core/src/main/res/values-iw-rIL/strings.xml708
-rw-r--r--core/src/main/res/values-ja/strings.xml79
-rw-r--r--core/src/main/res/values-kn-rIN/strings.xml1
-rw-r--r--core/src/main/res/values-ko-rKR/strings.xml1
-rw-r--r--core/src/main/res/values-ko/strings.xml18
-rw-r--r--core/src/main/res/values-lt/strings.xml46
-rw-r--r--core/src/main/res/values-mk/strings.xml54
-rw-r--r--core/src/main/res/values-nb/strings.xml17
-rw-r--r--core/src/main/res/values-nl/strings.xml725
-rw-r--r--core/src/main/res/values-no-rNB/strings.xml25
-rw-r--r--core/src/main/res/values-no/strings.xml1
-rw-r--r--core/src/main/res/values-pl-rPL/strings.xml47
-rw-r--r--core/src/main/res/values-pl/strings.xml2
-rw-r--r--core/src/main/res/values-pt-rBR/strings.xml30
-rw-r--r--core/src/main/res/values-pt/strings.xml101
-rw-r--r--core/src/main/res/values-ro-rRO/strings.xml24
-rw-r--r--core/src/main/res/values-ru/strings.xml88
-rw-r--r--core/src/main/res/values-sv-rSE/strings.xml95
-rw-r--r--core/src/main/res/values-sw-rKE/strings.xml1
-rw-r--r--core/src/main/res/values-te/strings.xml49
-rw-r--r--core/src/main/res/values-tr/strings.xml20
-rw-r--r--core/src/main/res/values-uk-rUA/strings.xml258
-rw-r--r--core/src/main/res/values-v21/styles.xml13
-rw-r--r--core/src/main/res/values-v23/styles.xml13
-rw-r--r--core/src/main/res/values-vi-rVN/strings.xml1
-rw-r--r--core/src/main/res/values-vi/strings.xml13
-rw-r--r--core/src/main/res/values-zh-rCN/strings.xml43
-rw-r--r--core/src/main/res/values-zh-rHK/strings.xml1
-rw-r--r--core/src/main/res/values-zh-rTW/strings.xml18
-rw-r--r--core/src/main/res/values/arrays.xml80
-rw-r--r--core/src/main/res/values/attrs.xml17
-rw-r--r--core/src/main/res/values/colors.xml6
-rw-r--r--core/src/main/res/values/strings.xml132
-rw-r--r--core/src/main/res/values/styles.xml132
236 files changed, 5311 insertions, 3817 deletions
diff --git a/core/src/main/java/android/support/v4/app/SafeJobIntentService.java b/core/src/main/java/android/support/v4/app/SafeJobIntentService.java
new file mode 100644
index 000000000..c07c409ee
--- /dev/null
+++ b/core/src/main/java/android/support/v4/app/SafeJobIntentService.java
@@ -0,0 +1,118 @@
+package android.support.v4.app;
+
+import android.app.job.JobParameters;
+import android.app.job.JobServiceEngine;
+import android.app.job.JobWorkItem;
+import android.content.Intent;
+import android.os.Build;
+import android.os.IBinder;
+import android.support.annotation.RequiresApi;
+import android.util.Log;
+
+
+public abstract class SafeJobIntentService extends JobIntentService {
+
+ @Override
+ public void onCreate() {
+ super.onCreate();
+ if (Build.VERSION.SDK_INT >= 26) {
+ mJobImpl = new SafeJobServiceEngineImpl(this);
+ }
+ }
+
+ /**
+ * Implementation of a safe JobServiceEngine for interaction with JobIntentService.
+ */
+ @RequiresApi(26)
+ static final class SafeJobServiceEngineImpl extends JobServiceEngine
+ implements JobIntentService.CompatJobEngine {
+ static final String TAG = "JobServiceEngineImpl";
+
+ static final boolean DEBUG = false;
+
+ final JobIntentService mService;
+ final Object mLock = new Object();
+ JobParameters mParams;
+
+ final class WrapperWorkItem implements JobIntentService.GenericWorkItem {
+ final JobWorkItem mJobWork;
+
+ WrapperWorkItem(JobWorkItem jobWork) {
+ mJobWork = jobWork;
+ }
+
+ @Override
+ public Intent getIntent() {
+ return mJobWork.getIntent();
+ }
+
+ @Override
+ public void complete() {
+ synchronized (mLock) {
+ if (mParams != null) {
+ try {
+ mParams.completeWork(mJobWork);
+ } catch (SecurityException e) {
+ Log.e(TAG, Log.getStackTraceString(e));
+ }
+ }
+ }
+ }
+ }
+
+ SafeJobServiceEngineImpl(JobIntentService service) {
+ super(service);
+ mService = service;
+ }
+
+ @Override
+ public IBinder compatGetBinder() {
+ return getBinder();
+ }
+
+ @Override
+ public boolean onStartJob(JobParameters params) {
+ if (DEBUG) Log.d(TAG, "onStartJob: " + params);
+ mParams = params;
+ // We can now start dequeuing work!
+ mService.ensureProcessorRunningLocked(false);
+ return true;
+ }
+
+ @Override
+ public boolean onStopJob(JobParameters params) {
+ if (DEBUG) Log.d(TAG, "onStartJob: " + params);
+ boolean result = mService.doStopCurrentWork();
+ synchronized (mLock) {
+ // Once we return, the job is stopped, so its JobParameters are no
+ // longer valid and we should not be doing anything with them.
+ mParams = null;
+ }
+ return result;
+ }
+
+ /**
+ * Dequeue some work.
+ */
+ @Override
+ public JobIntentService.GenericWorkItem dequeueWork() {
+ JobWorkItem work = null;
+ synchronized (mLock) {
+ if (mParams == null) {
+ return null;
+ }
+ try {
+ work = mParams.dequeueWork();
+ } catch (SecurityException e) {
+ Log.e(TAG, Log.getStackTraceString(e));
+ }
+ }
+ if (work != null) {
+ work.getIntent().setExtrasClassLoader(mService.getClassLoader());
+ return new WrapperWorkItem(work);
+ } else {
+ return null;
+ }
+ }
+ }
+}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/UpdateManager.java b/core/src/main/java/de/danoeh/antennapod/core/UpdateManager.java
index 96e3a77be..1b4cbc0ea 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/UpdateManager.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/UpdateManager.java
@@ -10,21 +10,15 @@ import android.util.Log;
import org.antennapod.audio.MediaPlayer;
-import java.io.File;
-import java.util.List;
-
-import de.danoeh.antennapod.core.feed.Feed;
-import de.danoeh.antennapod.core.feed.FeedImage;
-import de.danoeh.antennapod.core.feed.FeedItem;
import de.danoeh.antennapod.core.preferences.UserPreferences;
-import de.danoeh.antennapod.core.storage.DBReader;
-import de.danoeh.antennapod.core.storage.DBWriter;
/*
* This class's job is do perform maintenance tasks whenever the app has been updated
*/
class UpdateManager {
+ private UpdateManager(){}
+
private static final String TAG = UpdateManager.class.getSimpleName();
private static final String PREF_NAME = "app_version";
@@ -64,32 +58,22 @@ class UpdateManager {
}
private static void onUpgrade(final int oldVersionCode, final int newVersionCode) {
- if(oldVersionCode < 1030099) {
- // delete the now obsolete image cache
- // from now on, Glide will handle caching images
- new Thread() {
- public void run() {
- List<Feed> feeds = DBReader.getFeedList();
- for (Feed podcast : feeds) {
- List<FeedItem> episodes = DBReader.getFeedItemList(podcast);
- for (FeedItem episode : episodes) {
- FeedImage image = episode.getImage();
- if (image != null && image.isDownloaded() && image.getFile_url() != null) {
- File imageFile = new File(image.getFile_url());
- if (imageFile.exists()) {
- imageFile.delete();
- }
- image.setFile_url(null); // calls setDownloaded(false)
- DBWriter.setFeedImage(image);
- }
- }
- }
- }
- }.start();
- }
- if(oldVersionCode < 1050004) {
+ if (oldVersionCode < 1050004) {
if(MediaPlayer.isPrestoLibraryInstalled(context) && Build.VERSION.SDK_INT >= 16) {
- UserPreferences.enableSonic(true);
+ UserPreferences.enableSonic();
+ }
+ }
+
+ if (oldVersionCode < 1070196) {
+ // migrate episode cleanup value (unit changed from days to hours)
+ int oldValueInDays = UserPreferences.getEpisodeCleanupValue();
+ if (oldValueInDays > 0) {
+ UserPreferences.setEpisodeCleanupValue(oldValueInDays * 24);
+ } // else 0 or special negative values, no change needed
+ }
+ if (oldVersionCode < 1070197) {
+ if (prefs.getBoolean("prefMobileUpdate", false)) {
+ prefs.edit().putString(UserPreferences.PREF_MOBILE_UPDATE, "everything").apply();
}
}
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/asynctask/DBTaskLoader.java b/core/src/main/java/de/danoeh/antennapod/core/asynctask/DBTaskLoader.java
deleted file mode 100644
index 1b4aafeaa..000000000
--- a/core/src/main/java/de/danoeh/antennapod/core/asynctask/DBTaskLoader.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package de.danoeh.antennapod.core.asynctask;
-
-import android.content.Context;
-import android.support.v4.content.AsyncTaskLoader;
-
-/**
- * Subclass of AsyncTaskLoader that is made for loading data with one of the DB*-classes.
- * This class will provide a useful default implementation that would otherwise always be necessary when interacting
- * with the DB*-classes with an AsyncTaskLoader.
- */
-abstract class DBTaskLoader<D> extends AsyncTaskLoader<D> {
-
- public DBTaskLoader(Context context) {
- super(context);
- }
-
- @Override
- protected void onStopLoading() {
- super.onStopLoading();
- cancelLoad();
- }
-
- @Override
- protected void onStartLoading() {
- super.onStartLoading();
- // according to https://code.google.com/p/android/issues/detail?id=14944, this has to be called manually
- forceLoad();
- }
-}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/asynctask/FeedRemover.java b/core/src/main/java/de/danoeh/antennapod/core/asynctask/FeedRemover.java
index 1e0c07b01..4504b2e7f 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/asynctask/FeedRemover.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/asynctask/FeedRemover.java
@@ -2,7 +2,6 @@ package de.danoeh.antennapod.core.asynctask;
import android.app.ProgressDialog;
import android.content.Context;
-import android.content.Intent;
import android.os.AsyncTask;
import java.util.concurrent.ExecutionException;
@@ -11,6 +10,7 @@ import de.danoeh.antennapod.core.R;
import de.danoeh.antennapod.core.feed.Feed;
import de.danoeh.antennapod.core.service.playback.PlaybackService;
import de.danoeh.antennapod.core.storage.DBWriter;
+import de.danoeh.antennapod.core.util.IntentUtils;
/** Removes a feed in the background. */
public class FeedRemover extends AsyncTask<Void, Void, Void> {
@@ -41,7 +41,7 @@ public class FeedRemover extends AsyncTask<Void, Void, Void> {
dialog.dismiss();
}
if(skipOnCompletion) {
- context.sendBroadcast(new Intent(PlaybackService.ACTION_SKIP_CURRENT_EPISODE));
+ IntentUtils.sendLocalBroadcast(context, PlaybackService.ACTION_SKIP_CURRENT_EPISODE);
}
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrClickWorker.java b/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrClickWorker.java
index f4c99011a..318e404c8 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrClickWorker.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrClickWorker.java
@@ -10,7 +10,6 @@ import android.support.v4.app.NotificationCompat;
import android.util.Log;
import android.widget.Toast;
-import de.danoeh.antennapod.core.util.gui.NotificationUtils;
import org.shredzone.flattr4j.exception.FlattrException;
import java.util.LinkedList;
@@ -27,6 +26,7 @@ import de.danoeh.antennapod.core.storage.DBWriter;
import de.danoeh.antennapod.core.util.NetworkUtils;
import de.danoeh.antennapod.core.util.flattr.FlattrThing;
import de.danoeh.antennapod.core.util.flattr.FlattrUtils;
+import de.danoeh.antennapod.core.util.gui.NotificationUtils;
/**
* Performs a click action in a background thread.
diff --git a/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrStatusFetcher.java b/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrStatusFetcher.java
index 420a60469..6d9ab2bd3 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrStatusFetcher.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrStatusFetcher.java
@@ -19,11 +19,9 @@ import de.danoeh.antennapod.core.util.flattr.FlattrUtils;
public class FlattrStatusFetcher extends Thread {
private static final String TAG = "FlattrStatusFetcher";
- private final Context context;
public FlattrStatusFetcher(Context context) {
super();
- this.context = context;
}
@Override
diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/Feed.java b/core/src/main/java/de/danoeh/antennapod/core/feed/Feed.java
index 78df74ee7..3395653f3 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/feed/Feed.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/feed/Feed.java
@@ -44,7 +44,7 @@ public class Feed extends FeedFile implements FlattrThing, ImageResource {
* Name of the author
*/
private String author;
- private FeedImage image;
+ private String imageUrl;
private List<FeedItem> items;
/**
@@ -96,7 +96,7 @@ public class Feed extends FeedFile implements FlattrThing, ImageResource {
* This constructor is used for restoring a feed from the database.
*/
public Feed(long id, String lastUpdate, String title, String customTitle, String link, String description, String paymentLink,
- String author, String language, String type, String feedIdentifier, FeedImage image, String fileUrl,
+ String author, String language, String type, String feedIdentifier, String imageUrl, String fileUrl,
String downloadUrl, boolean downloaded, FlattrStatus status, boolean paged, String nextPageLink,
String filter, boolean lastUpdateFailed) {
super(fileUrl, downloadUrl, downloaded);
@@ -111,7 +111,7 @@ public class Feed extends FeedFile implements FlattrThing, ImageResource {
this.language = language;
this.type = type;
this.feedIdentifier = feedIdentifier;
- this.image = image;
+ this.imageUrl = imageUrl;
this.flattrStatus = status;
this.paged = paged;
this.nextPageLink = nextPageLink;
@@ -128,9 +128,9 @@ public class Feed extends FeedFile implements FlattrThing, ImageResource {
* This constructor is used for test purposes and uses a default flattr status object.
*/
public Feed(long id, String lastUpdate, String title, String link, String description, String paymentLink,
- String author, String language, String type, String feedIdentifier, FeedImage image, String fileUrl,
+ String author, String language, String type, String feedIdentifier, String imageUrl, String fileUrl,
String downloadUrl, boolean downloaded) {
- this(id, lastUpdate, title, null, link, description, paymentLink, author, language, type, feedIdentifier, image,
+ this(id, lastUpdate, title, null, link, description, paymentLink, author, language, type, feedIdentifier, imageUrl,
fileUrl, downloadUrl, downloaded, new FlattrStatus(), false, null, null, false);
}
@@ -191,6 +191,7 @@ public class Feed extends FeedFile implements FlattrThing, ImageResource {
int indexNextPageLink = cursor.getColumnIndex(PodDBAdapter.KEY_NEXT_PAGE_LINK);
int indexHide = cursor.getColumnIndex(PodDBAdapter.KEY_HIDE);
int indexLastUpdateFailed = cursor.getColumnIndex(PodDBAdapter.KEY_LAST_UPDATE_FAILED);
+ int indexImageUrl = cursor.getColumnIndex(PodDBAdapter.KEY_IMAGE_URL);
Feed feed = new Feed(
cursor.getLong(indexId),
@@ -204,7 +205,7 @@ public class Feed extends FeedFile implements FlattrThing, ImageResource {
cursor.getString(indexLanguage),
cursor.getString(indexType),
cursor.getString(indexFeedIdentifier),
- null,
+ cursor.getString(indexImageUrl),
cursor.getString(indexFileUrl),
cursor.getString(indexDownloadUrl),
cursor.getInt(indexDownloaded) > 0,
@@ -266,8 +267,8 @@ public class Feed extends FeedFile implements FlattrThing, ImageResource {
public void updateFromOther(Feed other) {
// don't update feed's download_url, we do that manually if redirected
// see AntennapodHttpClient
- if (other.image != null) {
- this.image = other.image;
+ if (other.imageUrl != null) {
+ this.imageUrl = other.imageUrl;
}
if (other.feedTitle != null) {
feedTitle = other.feedTitle;
@@ -305,8 +306,8 @@ public class Feed extends FeedFile implements FlattrThing, ImageResource {
if (super.compareWithOther(other)) {
return true;
}
- if (other.image != null) {
- if (image == null || !TextUtils.equals(image.download_url, other.image.download_url)) {
+ if (other.imageUrl != null) {
+ if (imageUrl == null || !TextUtils.equals(imageUrl, other.imageUrl)) {
return true;
}
}
@@ -411,12 +412,12 @@ public class Feed extends FeedFile implements FlattrThing, ImageResource {
this.description = description;
}
- public FeedImage getImage() {
- return image;
+ public String getImageUrl() {
+ return imageUrl;
}
- public void setImage(FeedImage image) {
- this.image = image;
+ public void setImageUrl(String imageUrl) {
+ this.imageUrl = imageUrl;
}
public List<FeedItem> getItems() {
@@ -505,11 +506,7 @@ public class Feed extends FeedFile implements FlattrThing, ImageResource {
@Override
public String getImageLocation() {
- if (image != null) {
- return image.getImageLocation();
- } else {
- return null;
- }
+ return imageUrl;
}
public int getPageNr() {
diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedComponent.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedComponent.java
index a3f91b1c9..2610d253f 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedComponent.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedComponent.java
@@ -50,7 +50,7 @@ public abstract class FeedComponent {
@Override
public boolean equals(Object o) {
if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
+ if (o == null || !(o instanceof FeedComponent)) return false;
FeedComponent that = (FeedComponent) o;
@@ -62,4 +62,4 @@ public abstract class FeedComponent {
public int hashCode() {
return (int) (id ^ (id >>> 32));
}
-} \ No newline at end of file
+}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedImage.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedImage.java
deleted file mode 100644
index 45bd2ad31..000000000
--- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedImage.java
+++ /dev/null
@@ -1,92 +0,0 @@
-package de.danoeh.antennapod.core.feed;
-
-import android.database.Cursor;
-
-import java.io.File;
-
-import de.danoeh.antennapod.core.asynctask.ImageResource;
-import de.danoeh.antennapod.core.storage.PodDBAdapter;
-
-
-public class FeedImage extends FeedFile implements ImageResource {
- public static final int FEEDFILETYPE_FEEDIMAGE = 1;
-
- private String title;
- private FeedComponent owner;
-
- public FeedImage(FeedComponent owner, String download_url, String title) {
- super(null, download_url, false);
- this.download_url = download_url;
- this.title = title;
- this.owner = owner;
- }
-
- public FeedImage(long id, String title, String file_url,
- String download_url, boolean downloaded) {
- super(file_url, download_url, downloaded);
- this.id = id;
- this.title = title;
- }
-
- public FeedImage() {
- super();
- }
-
- public static FeedImage fromCursor(Cursor cursor) {
- int indexId = cursor.getColumnIndex(PodDBAdapter.KEY_ID);
- int indexTitle = cursor.getColumnIndex(PodDBAdapter.KEY_TITLE);
- int indexFileUrl = cursor.getColumnIndex(PodDBAdapter.KEY_FILE_URL);
- int indexDownloadUrl = cursor.getColumnIndex(PodDBAdapter.KEY_DOWNLOAD_URL);
- int indexDownloaded = cursor.getColumnIndex(PodDBAdapter.KEY_DOWNLOADED);
-
- return new FeedImage(
- cursor.getLong(indexId),
- cursor.getString(indexTitle),
- cursor.getString(indexFileUrl),
- cursor.getString(indexDownloadUrl),
- cursor.getInt(indexDownloaded) > 0
- );
- }
-
-
- @Override
- public String getHumanReadableIdentifier() {
- if (owner != null && owner.getHumanReadableIdentifier() != null) {
- return owner.getHumanReadableIdentifier();
- } else {
- return download_url;
- }
- }
-
- @Override
- public int getTypeAsInt() {
- return FEEDFILETYPE_FEEDIMAGE;
- }
-
- public String getTitle() {
- return title;
- }
-
- public void setTitle(String title) {
- this.title = title;
- }
-
- public FeedComponent getOwner() {
- return owner;
- }
-
- public void setOwner(FeedComponent owner) {
- this.owner = owner;
- }
-
- @Override
- public String getImageLocation() {
- if (file_url != null && downloaded) {
- return new File(file_url).getAbsolutePath();
- } else if(download_url != null) {
- return download_url;
- } else {
- return null;
- }
- }
-}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItem.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItem.java
index 87298d4c3..0f0343f25 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItem.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItem.java
@@ -2,8 +2,8 @@ package de.danoeh.antennapod.core.feed;
import android.database.Cursor;
import android.support.annotation.Nullable;
-
import android.text.TextUtils;
+
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
@@ -75,7 +75,7 @@ public class FeedItem extends FeedComponent implements ShownotesProvider, Flattr
* in the database. The 'hasChapters' attribute should be used to check if this item has any chapters.
* */
private List<Chapter> chapters;
- private FeedImage image;
+ private String imageUrl;
/*
* 0: auto download disabled
@@ -100,7 +100,7 @@ public class FeedItem extends FeedComponent implements ShownotesProvider, Flattr
* This constructor is used by DBReader.
* */
public FeedItem(long id, String title, String link, Date pubDate, String paymentLink, long feedId,
- FlattrStatus flattrStatus, boolean hasChapters, FeedImage image, int state,
+ FlattrStatus flattrStatus, boolean hasChapters, String imageUrl, int state,
String itemIdentifier, long autoDownload) {
this.id = id;
this.title = title;
@@ -110,7 +110,7 @@ public class FeedItem extends FeedComponent implements ShownotesProvider, Flattr
this.feedId = feedId;
this.flattrStatus = flattrStatus;
this.hasChapters = hasChapters;
- this.image = image;
+ this.imageUrl = imageUrl;
this.state = state;
this.itemIdentifier = itemIdentifier;
this.autoDownload = autoDownload;
@@ -158,6 +158,7 @@ public class FeedItem extends FeedComponent implements ShownotesProvider, Flattr
int indexRead = cursor.getColumnIndex(PodDBAdapter.KEY_READ);
int indexItemIdentifier = cursor.getColumnIndex(PodDBAdapter.KEY_ITEM_IDENTIFIER);
int indexAutoDownload = cursor.getColumnIndex(PodDBAdapter.KEY_AUTO_DOWNLOAD);
+ int indexImageUrl = cursor.getColumnIndex(PodDBAdapter.KEY_IMAGE_URL);
long id = cursor.getInt(indexId);
String title = cursor.getString(indexTitle);
@@ -170,15 +171,16 @@ public class FeedItem extends FeedComponent implements ShownotesProvider, Flattr
int state = cursor.getInt(indexRead);
String itemIdentifier = cursor.getString(indexItemIdentifier);
long autoDownload = cursor.getLong(indexAutoDownload);
+ String imageUrl = cursor.getString(indexImageUrl);
return new FeedItem(id, title, link, pubDate, paymentLink, feedId, flattrStatus,
- hasChapters, null, state, itemIdentifier, autoDownload);
+ hasChapters, imageUrl, state, itemIdentifier, autoDownload);
}
public void updateFromOther(FeedItem other) {
super.updateFromOther(other);
- if (other.image != null) {
- this.image = other.image;
+ if (other.imageUrl != null) {
+ this.imageUrl = other.imageUrl;
}
if (other.title != null) {
title = other.title;
@@ -192,7 +194,7 @@ public class FeedItem extends FeedComponent implements ShownotesProvider, Flattr
if (other.link != null) {
link = other.link;
}
- if (other.pubDate != null && other.pubDate != pubDate) {
+ if (other.pubDate != null && other.pubDate.equals(pubDate)) {
pubDate = other.pubDate;
}
if (other.media != null) {
@@ -212,9 +214,6 @@ public class FeedItem extends FeedComponent implements ShownotesProvider, Flattr
chapters = other.chapters;
}
}
- if (image == null) {
- image = other.image;
- }
}
/**
@@ -389,8 +388,8 @@ public class FeedItem extends FeedComponent implements ShownotesProvider, Flattr
public String getImageLocation() {
if(media != null && media.hasEmbeddedPicture()) {
return media.getImageLocation();
- } else if (image != null) {
- return image.getImageLocation();
+ } else if (imageUrl != null) {
+ return imageUrl;
} else if (feed != null) {
return feed.getImageLocation();
} else {
@@ -426,29 +425,12 @@ public class FeedItem extends FeedComponent implements ShownotesProvider, Flattr
* Returns the image of this item or the image of the feed if this item does
* not have its own image.
*/
- public FeedImage getImage() {
- return (hasItemImage()) ? image : feed.getImage();
- }
-
- public void setImage(FeedImage image) {
- this.image = image;
- if (image != null) {
- image.setOwner(this);
- }
- }
-
- /**
- * Returns true if this FeedItem has its own image, false otherwise.
- */
- public boolean hasItemImage() {
- return image != null;
+ public String getImageUrl() {
+ return (imageUrl != null) ? imageUrl : feed.getImageUrl();
}
- /**
- * Returns true if this FeedItem has its own image and the image has been downloaded.
- */
- public boolean hasItemImageDownloaded() {
- return image != null && image.isDownloaded();
+ public void setImageUrl(String imageUrl) {
+ this.imageUrl = imageUrl;
}
@Override
diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItemFilter.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItemFilter.java
index 200153876..719383d23 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItemFilter.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItemFilter.java
@@ -8,6 +8,8 @@ import java.util.List;
import de.danoeh.antennapod.core.storage.DBReader;
import de.danoeh.antennapod.core.util.LongList;
+import static de.danoeh.antennapod.core.feed.FeedItem.TAG_FAVORITE;
+
public class FeedItemFilter {
private final String[] mProperties;
@@ -19,6 +21,7 @@ public class FeedItemFilter {
private boolean showDownloaded = false;
private boolean showNotDownloaded = false;
private boolean showHasMedia = false;
+ private boolean showIsFavorite = false;
public FeedItemFilter(String properties) {
this(TextUtils.split(properties, ","));
@@ -53,6 +56,9 @@ public class FeedItemFilter {
case "has_media":
showHasMedia = true;
break;
+ case "is_favorite":
+ showIsFavorite = true;
+ break;
}
}
}
@@ -88,6 +94,8 @@ public class FeedItemFilter {
if (showHasMedia && !item.hasMedia()) continue;
+ if (showIsFavorite && !item.isTagged(TAG_FAVORITE)) continue;
+
// If the item reaches here, it meets all criteria
result.add(item);
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java
index a22422596..f3a43e2d0 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java
@@ -19,6 +19,7 @@ import de.danoeh.antennapod.core.gpoddernet.model.GpodnetEpisodeAction;
import de.danoeh.antennapod.core.preferences.GpodnetPreferences;
import de.danoeh.antennapod.core.preferences.PlaybackPreferences;
import de.danoeh.antennapod.core.preferences.UserPreferences;
+import de.danoeh.antennapod.core.service.playback.PlaybackService;
import de.danoeh.antennapod.core.storage.DBReader;
import de.danoeh.antennapod.core.storage.DBTasks;
import de.danoeh.antennapod.core.storage.DBWriter;
@@ -218,7 +219,7 @@ public class FeedMedia extends FeedFile implements Playable {
* currently being played and the current player status is playing.
*/
public boolean isCurrentlyPlaying() {
- return isPlaying() &&
+ return isPlaying() && PlaybackService.isRunning &&
((PlaybackPreferences.getCurrentPlayerStatus() == PlaybackPreferences.PLAYER_STATUS_PLAYING));
}
@@ -531,8 +532,8 @@ public class FeedMedia extends FeedFile implements Playable {
UserPreferences.isAutoFlattr() &&
item.getPaymentLink() != null &&
item.getFlattrStatus().getUnflattred() &&
- (completed && autoFlattrThreshold <= 1.0f ||
- played_duration >= autoFlattrThreshold * duration)) {
+ ((completed && autoFlattrThreshold <= 1.0f) ||
+ (played_duration >= autoFlattrThreshold * duration))) {
DBTasks.flattrItemIfLoggedIn(context, item);
}
}
@@ -593,7 +594,7 @@ public class FeedMedia extends FeedFile implements Playable {
@Override
public void setDownloaded(boolean downloaded) {
super.setDownloaded(downloaded);
- if(item != null && downloaded) {
+ if(item != null && downloaded && item.isNew()) {
item.setPlayed(false);
}
}
@@ -625,6 +626,9 @@ public class FeedMedia extends FeedFile implements Playable {
@Override
public boolean equals(Object o) {
+ if (o == null) {
+ return false;
+ }
if (FeedMediaFlavorHelper.instanceOfRemoteMedia(o)) {
return o.equals(this);
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/glide/ApGlideModule.java b/core/src/main/java/de/danoeh/antennapod/core/glide/ApGlideModule.java
index 835dee735..552c1b691 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/glide/ApGlideModule.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/glide/ApGlideModule.java
@@ -2,31 +2,35 @@ package de.danoeh.antennapod.core.glide;
import android.content.Context;
+import android.support.annotation.NonNull;
import com.bumptech.glide.Glide;
import com.bumptech.glide.GlideBuilder;
+import com.bumptech.glide.Registry;
+import com.bumptech.glide.annotation.GlideModule;
import com.bumptech.glide.load.DecodeFormat;
import com.bumptech.glide.load.engine.cache.InternalCacheDiskCacheFactory;
-import com.bumptech.glide.module.GlideModule;
+import com.bumptech.glide.module.AppGlideModule;
import java.io.InputStream;
+import com.bumptech.glide.request.RequestOptions;
import de.danoeh.antennapod.core.preferences.UserPreferences;
/**
* {@see com.bumptech.glide.integration.okhttp.OkHttpGlideModule}
*/
-public class ApGlideModule implements GlideModule {
+@GlideModule
+public class ApGlideModule extends AppGlideModule {
@Override
- public void applyOptions(Context context, GlideBuilder builder) {
- builder.setDecodeFormat(DecodeFormat.PREFER_ARGB_8888);
+ public void applyOptions(@NonNull Context context, @NonNull GlideBuilder builder) {
+ builder.setDefaultRequestOptions(new RequestOptions().format(DecodeFormat.PREFER_ARGB_8888));
builder.setDiskCache(new InternalCacheDiskCacheFactory(context,
UserPreferences.getImageCacheSize()));
}
@Override
- public void registerComponents(Context context, Glide glide) {
- glide.register(String.class, InputStream.class, new ApOkHttpUrlLoader.Factory());
+ public void registerComponents(@NonNull Context context, @NonNull Glide glide, @NonNull Registry registry) {
+ registry.replace(String.class, InputStream.class, new ApOkHttpUrlLoader.Factory());
}
-
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/glide/ApGlideSettings.java b/core/src/main/java/de/danoeh/antennapod/core/glide/ApGlideSettings.java
index fc1acd0e1..d0061af99 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/glide/ApGlideSettings.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/glide/ApGlideSettings.java
@@ -6,6 +6,7 @@ import com.bumptech.glide.load.engine.DiskCacheStrategy;
* The settings that AntennaPod will use for various Glide options
*/
public class ApGlideSettings {
+ private ApGlideSettings(){}
public static final DiskCacheStrategy AP_DISK_CACHE_STRATEGY = DiskCacheStrategy.ALL;
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/glide/ApOkHttpUrlLoader.java b/core/src/main/java/de/danoeh/antennapod/core/glide/ApOkHttpUrlLoader.java
index 3e4f06a12..2e742e979 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/glide/ApOkHttpUrlLoader.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/glide/ApOkHttpUrlLoader.java
@@ -1,12 +1,12 @@
package de.danoeh.antennapod.core.glide;
-import android.content.Context;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
import android.text.TextUtils;
import android.util.Log;
import com.bumptech.glide.integration.okhttp3.OkHttpStreamFetcher;
-import com.bumptech.glide.load.data.DataFetcher;
-import com.bumptech.glide.load.model.GenericLoaderFactory;
+import com.bumptech.glide.load.Options;
import com.bumptech.glide.load.model.GlideUrl;
import com.bumptech.glide.load.model.ModelLoader;
import com.bumptech.glide.load.model.ModelLoaderFactory;
@@ -15,14 +15,14 @@ import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
+import com.bumptech.glide.load.model.MultiModelLoaderFactory;
+import com.bumptech.glide.signature.ObjectKey;
import de.danoeh.antennapod.core.service.download.AntennapodHttpClient;
import de.danoeh.antennapod.core.service.download.HttpDownloader;
import de.danoeh.antennapod.core.storage.DBReader;
import de.danoeh.antennapod.core.util.NetworkUtils;
-import okhttp3.Interceptor;
-import okhttp3.OkHttpClient;
-import okhttp3.Request;
-import okhttp3.Response;
+import okhttp3.*;
+import okhttp3.internal.http.RealResponseBody;
/**
* @see com.bumptech.glide.integration.okhttp3.OkHttpUrlLoader
@@ -56,19 +56,20 @@ class ApOkHttpUrlLoader implements ModelLoader<String, InputStream> {
/**
* Constructor for a new Factory that runs requests using a static singleton client.
*/
- public Factory() {
+ Factory() {
this(getInternalClient());
}
/**
* Constructor for a new Factory that runs requests using given client.
*/
- public Factory(OkHttpClient client) {
+ Factory(OkHttpClient client) {
this.client = client;
}
+ @NonNull
@Override
- public ModelLoader<String, InputStream> build(Context context, GenericLoaderFactory factories) {
+ public ModelLoader<String, InputStream> build(@NonNull MultiModelLoaderFactory multiFactory) {
return new ApOkHttpUrlLoader(client);
}
@@ -84,28 +85,40 @@ class ApOkHttpUrlLoader implements ModelLoader<String, InputStream> {
this.client = client;
}
+ @Nullable
@Override
- public DataFetcher<InputStream> getResourceFetcher(String model, int width, int height) {
- Log.d(TAG, "getResourceFetcher() called with: " + "model = [" + model + "], width = ["
+ public LoadData<InputStream> buildLoadData(@NonNull String model, int width, int height, @NonNull Options options) {
+ Log.d(TAG, "buildLoadData() called with: " + "model = [" + model + "], width = ["
+ width + "], height = [" + height + "]");
if(TextUtils.isEmpty(model)) {
return null;
} else if(model.startsWith("/")) {
- return new AudioCoverFetcher(model);
+ return new LoadData<>(new ObjectKey(model), new AudioCoverFetcher(model));
} else {
GlideUrl url = new GlideUrl(model);
- return new OkHttpStreamFetcher(client, url);
+ return new LoadData<>(new ObjectKey(model), new OkHttpStreamFetcher(client, url));
}
}
+ @Override
+ public boolean handles(@NonNull String s) {
+ return true;
+ }
+
private static class NetworkAllowanceInterceptor implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
- if (NetworkUtils.isDownloadAllowed()) {
+ if (NetworkUtils.isImageAllowed()) {
return chain.proceed(chain.request());
} else {
- return null;
+ return new Response.Builder()
+ .protocol(Protocol.HTTP_2)
+ .code(420)
+ .message("Policy Not Fulfilled")
+ .body(ResponseBody.create(null, new byte[0]))
+ .request(chain.request())
+ .build();
}
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/glide/AudioCoverFetcher.java b/core/src/main/java/de/danoeh/antennapod/core/glide/AudioCoverFetcher.java
index 8159a1b3e..479846655 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/glide/AudioCoverFetcher.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/glide/AudioCoverFetcher.java
@@ -2,7 +2,9 @@ package de.danoeh.antennapod.core.glide;
import android.media.MediaMetadataRetriever;
+import android.support.annotation.NonNull;
import com.bumptech.glide.Priority;
+import com.bumptech.glide.load.DataSource;
import com.bumptech.glide.load.data.DataFetcher;
import java.io.ByteArrayInputStream;
@@ -20,22 +22,20 @@ class AudioCoverFetcher implements DataFetcher<InputStream> {
this.path = path;
}
- @Override public String getId() {
- return path;
- }
-
- @Override public InputStream loadData(Priority priority) throws Exception {
+ @Override
+ public void loadData(@NonNull Priority priority, @NonNull DataCallback<? super InputStream> callback) {
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
try {
retriever.setDataSource(path);
byte[] picture = retriever.getEmbeddedPicture();
if (picture != null) {
- return new ByteArrayInputStream(picture);
+ callback.onDataReady(new ByteArrayInputStream(picture));
+ return;
}
} finally {
retriever.release();
}
- throw new IOException("Loading embedded cover did not work");
+ callback.onLoadFailed(new IOException("Loading embedded cover did not work"));
}
@Override public void cleanup() {
@@ -44,4 +44,16 @@ class AudioCoverFetcher implements DataFetcher<InputStream> {
@Override public void cancel() {
// cannot cancel
}
+
+ @NonNull
+ @Override
+ public Class<InputStream> getDataClass() {
+ return InputStream.class;
+ }
+
+ @NonNull
+ @Override
+ public DataSource getDataSource() {
+ return DataSource.LOCAL;
+ }
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/glide/FastBlurTransformation.java b/core/src/main/java/de/danoeh/antennapod/core/glide/FastBlurTransformation.java
index ee58c2f39..a740782d6 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/glide/FastBlurTransformation.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/glide/FastBlurTransformation.java
@@ -1,13 +1,15 @@
package de.danoeh.antennapod.core.glide;
-import android.content.Context;
import android.graphics.Bitmap;
import android.media.ThumbnailUtils;
+import android.support.annotation.NonNull;
import android.util.Log;
import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool;
import com.bumptech.glide.load.resource.bitmap.BitmapTransformation;
+import java.security.MessageDigest;
+
public class FastBlurTransformation extends BitmapTransformation {
private static final String TAG = FastBlurTransformation.class.getSimpleName();
@@ -15,8 +17,8 @@ public class FastBlurTransformation extends BitmapTransformation {
private static final int STACK_BLUR_RADIUS = 1;
private static final int BLUR_IMAGE_WIDTH = 150;
- public FastBlurTransformation(Context context) {
- super(context);
+ public FastBlurTransformation() {
+ super();
}
@Override
@@ -33,11 +35,6 @@ public class FastBlurTransformation extends BitmapTransformation {
return result;
}
- @Override
- public String getId() {
- return "FastBlurTransformation[width=" + BLUR_IMAGE_WIDTH + "px,radius=" + STACK_BLUR_RADIUS +"]";
- }
-
private static Bitmap fastBlur(Bitmap bitmap, int radius) {
// Stack Blur v1.0 from
@@ -264,4 +261,8 @@ public class FastBlurTransformation extends BitmapTransformation {
return bitmap;
}
+ @Override
+ public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) {
+ messageDigest.update(TAG.getBytes());
+ }
} \ No newline at end of file
diff --git a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/GpodnetService.java b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/GpodnetService.java
index 3af5e9080..2588cfdee 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/GpodnetService.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/GpodnetService.java
@@ -14,6 +14,7 @@ import java.net.MalformedURLException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
+import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedList;
@@ -587,7 +588,7 @@ public class GpodnetService {
String result = null;
ResponseBody body = null;
try {
- String credential = Credentials.basic(username, password);
+ String credential = Credentials.basic(username, password, Charset.forName("UTF-8"));
Request authRequest = request.newBuilder().header("Authorization", credential).build();
Response response = httpClient.newCall(authRequest).execute();
checkStatusCode(response);
diff --git a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetEpisodeAction.java b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetEpisodeAction.java
index b76988fd8..330cde525 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetEpisodeAction.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetEpisodeAction.java
@@ -169,7 +169,7 @@ public class GpodnetEpisodeAction {
@Override
public boolean equals(Object o) {
if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
+ if (o == null || !(o instanceof GpodnetEpisodeAction)) return false;
GpodnetEpisodeAction that = (GpodnetEpisodeAction) o;
diff --git a/core/src/main/java/de/danoeh/antennapod/core/preferences/GpodnetPreferences.java b/core/src/main/java/de/danoeh/antennapod/core/preferences/GpodnetPreferences.java
index b51b8d996..5b17dd338 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/preferences/GpodnetPreferences.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/preferences/GpodnetPreferences.java
@@ -24,6 +24,8 @@ import de.danoeh.antennapod.core.service.GpodnetSyncService;
*/
public class GpodnetPreferences {
+ private GpodnetPreferences(){}
+
private static final String TAG = "GpodnetPreferences";
private static final String PREF_NAME = "gpodder.net";
diff --git a/core/src/main/java/de/danoeh/antennapod/core/preferences/SleepTimerPreferences.java b/core/src/main/java/de/danoeh/antennapod/core/preferences/SleepTimerPreferences.java
index b7ed890f5..0f3a9fcb3 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/preferences/SleepTimerPreferences.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/preferences/SleepTimerPreferences.java
@@ -23,7 +23,6 @@ public class SleepTimerPreferences {
private static final String DEFAULT_VALUE = "15";
private static final int DEFAULT_TIME_UNIT = 1;
- private static Context context;
private static SharedPreferences prefs;
/**
diff --git a/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java b/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java
index 44b2fa2b2..805f0c1b6 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java
@@ -8,14 +8,7 @@ import android.support.annotation.NonNull;
import android.support.v4.app.NotificationCompat;
import android.text.TextUtils;
import android.util.Log;
-import de.danoeh.antennapod.core.R;
-import de.danoeh.antennapod.core.service.download.ProxyConfig;
-import de.danoeh.antennapod.core.storage.APCleanupAlgorithm;
-import de.danoeh.antennapod.core.storage.APNullCleanupAlgorithm;
-import de.danoeh.antennapod.core.storage.APQueueCleanupAlgorithm;
-import de.danoeh.antennapod.core.storage.EpisodeCleanupAlgorithm;
-import de.danoeh.antennapod.core.util.Converter;
-import de.danoeh.antennapod.core.util.download.AutoUpdateManager;
+
import org.json.JSONArray;
import org.json.JSONException;
@@ -27,6 +20,15 @@ import java.util.Arrays;
import java.util.List;
import java.util.concurrent.TimeUnit;
+import de.danoeh.antennapod.core.R;
+import de.danoeh.antennapod.core.service.download.ProxyConfig;
+import de.danoeh.antennapod.core.storage.APCleanupAlgorithm;
+import de.danoeh.antennapod.core.storage.APNullCleanupAlgorithm;
+import de.danoeh.antennapod.core.storage.APQueueCleanupAlgorithm;
+import de.danoeh.antennapod.core.storage.EpisodeCleanupAlgorithm;
+import de.danoeh.antennapod.core.util.Converter;
+import de.danoeh.antennapod.core.util.download.AutoUpdateManager;
+
/**
* Provides access to preferences set by the user in the settings screen. A
* private instance of this class must first be instantiated via
@@ -34,6 +36,7 @@ import java.util.concurrent.TimeUnit;
* when called.
*/
public class UserPreferences {
+ private UserPreferences(){}
private static final String IMPORT_DIR = "import/";
@@ -44,11 +47,13 @@ public class UserPreferences {
public static final String PREF_HIDDEN_DRAWER_ITEMS = "prefHiddenDrawerItems";
private static final String PREF_DRAWER_FEED_ORDER = "prefDrawerFeedOrder";
private static final String PREF_DRAWER_FEED_COUNTER = "prefDrawerFeedIndicator";
- private static final String PREF_EXPANDED_NOTIFICATION = "prefExpandNotify";
+ public static final String PREF_EXPANDED_NOTIFICATION = "prefExpandNotify";
private static final String PREF_PERSISTENT_NOTIFICATION = "prefPersistNotify";
public static final String PREF_COMPACT_NOTIFICATION_BUTTONS = "prefCompactNotificationButtons";
public static final String PREF_LOCKSCREEN_BACKGROUND = "prefLockscreenBackground";
private static final String PREF_SHOW_DOWNLOAD_REPORT = "prefShowDownloadReport";
+ public static final String PREF_BACK_BUTTON_BEHAVIOR = "prefBackButtonBehavior";
+ private static final String PREF_BACK_BUTTON_GO_TO_PAGE = "prefBackButtonGoToPage";
// Queue
private static final String PREF_QUEUE_ADD_TO_FRONT = "prefQueueAddToFront";
@@ -72,7 +77,7 @@ public class UserPreferences {
// Network
private static final String PREF_ENQUEUE_DOWNLOADED = "prefEnqueueDownloaded";
public static final String PREF_UPDATE_INTERVAL = "prefAutoUpdateIntervall";
- private static final String PREF_MOBILE_UPDATE = "prefMobileUpdate";
+ public static final String PREF_MOBILE_UPDATE = "prefMobileUpdateAllowed";
public static final String PREF_EPISODE_CLEANUP = "prefEpisodeCleanup";
public static final String PREF_PARALLEL_DOWNLOADS = "prefParallelDownloads";
public static final String PREF_EPISODE_CACHE_SIZE = "prefEpisodeCacheSize";
@@ -95,9 +100,13 @@ public class UserPreferences {
// Other
private static final String PREF_DATA_FOLDER = "prefDataFolder";
public static final String PREF_IMAGE_CACHE_SIZE = "prefImageCacheSize";
+ public static final String PREF_DELETE_REMOVES_FROM_QUEUE = "prefDeleteRemovesFromQueue";
// Mediaplayer
+ public static final String PREF_MEDIA_PLAYER = "prefMediaPlayer";
+ public static final String PREF_MEDIA_PLAYER_EXOPLAYER = "exoplayer";
private static final String PREF_PLAYBACK_SPEED = "prefPlaybackSpeed";
+ public static final String PREF_PLAYBACK_SKIP_SILENCE = "prefSkipSilence";
private static final String PREF_FAST_FORWARD_SECS = "prefFastForwardSecs";
private static final String PREF_REWIND_SECS = "prefRewindSecs";
private static final String PREF_QUEUE_LOCKED = "prefQueueLocked";
@@ -107,9 +116,7 @@ public class UserPreferences {
private static final String PREF_RIGHT_VOLUME = "prefRightVolume";
// Experimental
- public static final String PREF_SONIC = "prefSonic";
private static final String PREF_STEREO_TO_MONO = "PrefStereoToMono";
- public static final String PREF_NORMALIZER = "prefNormalizer";
public static final String PREF_CAST_ENABLED = "prefCast"; //Used for enabling Chromecast support
public static final int EPISODE_CLEANUP_QUEUE = -1;
public static final int EPISODE_CLEANUP_NULL = -2;
@@ -122,7 +129,6 @@ public class UserPreferences {
private static final int EPISODE_CACHE_SIZE_UNLIMITED = -1;
public static final int FEED_ORDER_COUNTER = 0;
public static final int FEED_ORDER_ALPHABETICAL = 1;
- public static final int FEED_ORDER_LAST_UPDATE = 2;
public static final int FEED_ORDER_MOST_PLAYED = 3;
public static final int FEED_COUNTER_SHOW_NEW_UNPLAYED_SUM = 0;
public static final int FEED_COUNTER_SHOW_NEW = 1;
@@ -161,6 +167,8 @@ public class UserPreferences {
int theme = getTheme();
if (theme == R.style.Theme_AntennaPod_Dark) {
return R.style.Theme_AntennaPod_Dark_NoTitle;
+ } else if (theme == R.style.Theme_AntennaPod_TrueBlack) {
+ return R.style.Theme_AntennaPod_TrueBlack_NoTitle;
} else {
return R.style.Theme_AntennaPod_Light_NoTitle;
}
@@ -304,6 +312,10 @@ public class UserPreferences {
return Integer.parseInt(prefs.getString(PREF_SMART_MARK_AS_PLAYED_SECS, "30"));
}
+ public static boolean shouldDeleteRemoveFromQueue() {
+ return prefs.getBoolean(PREF_DELETE_REMOVES_FROM_QUEUE, false);
+ }
+
public static boolean isAutoFlattr() {
return prefs.getBoolean(PREF_AUTO_FLATTR, false);
}
@@ -312,6 +324,10 @@ public class UserPreferences {
return prefs.getString(PREF_PLAYBACK_SPEED, "1.00");
}
+ public static boolean isSkipSilence() {
+ return prefs.getBoolean(PREF_PLAYBACK_SKIP_SILENCE, false);
+ }
+
public static String[] getPlaybackSpeedArray() {
return readPlaybackSpeedArray(prefs.getString(PREF_PLAYBACK_SPEED_ARRAY, null));
}
@@ -364,8 +380,16 @@ public class UserPreferences {
}
}
+ public static String getMobileUpdatesEnabled() {
+ return prefs.getString(PREF_MOBILE_UPDATE, "images");
+ }
+
public static boolean isAllowMobileUpdate() {
- return prefs.getBoolean(PREF_MOBILE_UPDATE, false);
+ return getMobileUpdatesEnabled().equals("everything");
+ }
+
+ public static boolean isAllowMobileImages() {
+ return isAllowMobileUpdate() || getMobileUpdatesEnabled().equals("images");
}
public static int getParallelDownloads() {
@@ -498,6 +522,12 @@ public class UserPreferences {
.apply();
}
+ public static void setSkipSilence(boolean skipSilence) {
+ prefs.edit()
+ .putBoolean(PREF_PLAYBACK_SKIP_SILENCE, skipSilence)
+ .apply();
+ }
+
public static void setPlaybackSpeedArray(String[] speeds) {
JSONArray jsonArray = new JSONArray();
for (String speed : speeds) {
@@ -597,6 +627,8 @@ public class UserPreferences {
return R.style.Theme_AntennaPod_Light;
case 1:
return R.style.Theme_AntennaPod_Dark;
+ case 2:
+ return R.style.Theme_AntennaPod_TrueBlack;
default:
return R.style.Theme_AntennaPod_Light;
}
@@ -636,13 +668,15 @@ public class UserPreferences {
}
public static boolean useSonic() {
- return prefs.getBoolean(PREF_SONIC, false);
+ return prefs.getString(PREF_MEDIA_PLAYER, "sonic").equals("sonic");
}
- public static void enableSonic(boolean enable) {
- prefs.edit()
- .putBoolean(PREF_SONIC, enable)
- .apply();
+ public static boolean useExoplayer() {
+ return prefs.getString(PREF_MEDIA_PLAYER, "sonic").equals(PREF_MEDIA_PLAYER_EXOPLAYER);
+ }
+
+ public static void enableSonic() {
+ prefs.edit().putString(PREF_MEDIA_PLAYER, "sonic").apply();
}
public static boolean stereoToMono() {
@@ -665,7 +699,7 @@ public class UserPreferences {
}
public static EpisodeCleanupAlgorithm getEpisodeCleanupAlgorithm() {
- int cleanupValue = Integer.parseInt(prefs.getString(PREF_EPISODE_CLEANUP, "-1"));
+ int cleanupValue = getEpisodeCleanupValue();
if (cleanupValue == EPISODE_CLEANUP_QUEUE) {
return new APQueueCleanupAlgorithm();
} else if (cleanupValue == EPISODE_CLEANUP_NULL) {
@@ -675,6 +709,16 @@ public class UserPreferences {
}
}
+ public static int getEpisodeCleanupValue() {
+ return Integer.parseInt(prefs.getString(PREF_EPISODE_CLEANUP, "-1"));
+ }
+
+ public static void setEpisodeCleanupValue(int episodeCleanupValue) {
+ prefs.edit()
+ .putString(PREF_EPISODE_CLEANUP, Integer.toString(episodeCleanupValue))
+ .apply();
+ }
+
/**
* Return the folder where the app stores all of its data. This method will
* return the standard data folder if none has been set by the user.
@@ -802,4 +846,29 @@ public class UserPreferences {
public enum VideoBackgroundBehavior {
STOP, PICTURE_IN_PICTURE, CONTINUE_PLAYING
}
+
+ public enum BackButtonBehavior {
+ DEFAULT, OPEN_DRAWER, DOUBLE_TAP, SHOW_PROMPT, GO_TO_PAGE
+ }
+
+ public static BackButtonBehavior getBackButtonBehavior() {
+ switch (prefs.getString(PREF_BACK_BUTTON_BEHAVIOR, "default")) {
+ case "default": return BackButtonBehavior.DEFAULT;
+ case "drawer": return BackButtonBehavior.OPEN_DRAWER;
+ case "doubletap": return BackButtonBehavior.DOUBLE_TAP;
+ case "prompt": return BackButtonBehavior.SHOW_PROMPT;
+ case "page": return BackButtonBehavior.GO_TO_PAGE;
+ default: return BackButtonBehavior.DEFAULT;
+ }
+ }
+
+ public static String getBackButtonGoToPage() {
+ return prefs.getString(PREF_BACK_BUTTON_GO_TO_PAGE, "QueueFragment");
+ }
+
+ public static void setBackButtonGoToPage(String tag) {
+ prefs.edit()
+ .putString(PREF_BACK_BUTTON_GO_TO_PAGE, tag)
+ .apply();
+ }
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/receiver/PlayerWidget.java b/core/src/main/java/de/danoeh/antennapod/core/receiver/PlayerWidget.java
index edc2ea3e0..7663cdbe4 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/receiver/PlayerWidget.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/receiver/PlayerWidget.java
@@ -6,10 +6,11 @@ import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.util.Log;
-import de.danoeh.antennapod.core.service.PlayerWidgetJobService;
import java.util.Arrays;
+import de.danoeh.antennapod.core.service.PlayerWidgetJobService;
+
public class PlayerWidget extends AppWidgetProvider {
private static final String TAG = "PlayerWidget";
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/FeedUpdateJobService.java b/core/src/main/java/de/danoeh/antennapod/core/service/FeedUpdateJobService.java
index 55a8d6b86..7d80d4e7c 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/FeedUpdateJobService.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/FeedUpdateJobService.java
@@ -5,6 +5,7 @@ import android.app.job.JobService;
import android.os.Build;
import android.support.annotation.RequiresApi;
import android.util.Log;
+
import de.danoeh.antennapod.core.ClientConfig;
import de.danoeh.antennapod.core.preferences.UserPreferences;
import de.danoeh.antennapod.core.util.FeedUpdateUtils;
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/GpodnetSyncService.java b/core/src/main/java/de/danoeh/antennapod/core/service/GpodnetSyncService.java
index de040603d..5584991ca 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/GpodnetSyncService.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/GpodnetSyncService.java
@@ -6,8 +6,8 @@ import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.support.annotation.NonNull;
-import android.support.v4.app.JobIntentService;
import android.support.v4.app.NotificationCompat;
+import android.support.v4.app.SafeJobIntentService;
import android.support.v4.util.ArrayMap;
import android.util.Log;
import android.util.Pair;
@@ -44,7 +44,8 @@ import de.danoeh.antennapod.core.util.gui.NotificationUtils;
* Synchronizes local subscriptions with gpodder.net service. The service should be started with ACTION_SYNC as an action argument.
* This class also provides static methods for starting the GpodnetSyncService.
*/
-public class GpodnetSyncService extends JobIntentService {
+public class GpodnetSyncService extends SafeJobIntentService {
+
private static final String TAG = "GpodnetSyncService";
private static final long WAIT_INTERVAL = 5000L;
@@ -61,8 +62,10 @@ public class GpodnetSyncService extends JobIntentService {
private static boolean syncSubscriptions = false;
private static boolean syncActions = false;
+ private static final int JOB_ID = -17000;
+
private static void enqueueWork(Context context, Intent intent) {
- enqueueWork(context, GpodnetSyncService.class, 0, intent);
+ enqueueWork(context, GpodnetSyncService.class, JOB_ID, intent);
}
@Override
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/PlayerWidgetJobService.java b/core/src/main/java/de/danoeh/antennapod/core/service/PlayerWidgetJobService.java
index 4948912ca..dbf80cf37 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/PlayerWidgetJobService.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/PlayerWidgetJobService.java
@@ -10,7 +10,7 @@ import android.graphics.Bitmap;
import android.os.Build;
import android.os.IBinder;
import android.support.annotation.NonNull;
-import android.support.v4.app.JobIntentService;
+import android.support.v4.app.SafeJobIntentService;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
@@ -21,23 +21,26 @@ import com.bumptech.glide.Glide;
import de.danoeh.antennapod.core.R;
import de.danoeh.antennapod.core.glide.ApGlideSettings;
import de.danoeh.antennapod.core.receiver.MediaButtonReceiver;
+import de.danoeh.antennapod.core.receiver.PlayerWidget;
import de.danoeh.antennapod.core.service.playback.PlaybackService;
import de.danoeh.antennapod.core.service.playback.PlayerStatus;
import de.danoeh.antennapod.core.util.Converter;
import de.danoeh.antennapod.core.util.playback.Playable;
-import de.danoeh.antennapod.core.receiver.PlayerWidget;
/**
* Updates the state of the player widget
*/
-public class PlayerWidgetJobService extends JobIntentService {
+public class PlayerWidgetJobService extends SafeJobIntentService {
+
private static final String TAG = "PlayerWidgetJobService";
private PlaybackService playbackService;
private final Object waitForService = new Object();
+ private static final int JOB_ID = -17001;
+
public static void updateWidget(Context context) {
- enqueueWork(context, PlayerWidgetJobService.class, 0, new Intent(context, PlayerWidgetJobService.class));
+ enqueueWork(context, PlayerWidgetJobService.class, JOB_ID, new Intent(context, PlayerWidgetJobService.class));
}
@Override
@@ -46,8 +49,8 @@ public class PlayerWidgetJobService extends JobIntentService {
return;
}
- if (PlaybackService.isRunning && playbackService == null) {
- synchronized (waitForService) {
+ synchronized (waitForService) {
+ if (PlaybackService.isRunning && playbackService == null) {
bindService(new Intent(this, PlaybackService.class), mConnection, 0);
while (playbackService == null) {
try {
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java
index 57d099dfc..97007a214 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java
@@ -40,6 +40,9 @@ import okhttp3.internal.http.StatusLine;
* Provides access to a HttpClient singleton.
*/
public class AntennapodHttpClient {
+
+ private AntennapodHttpClient(){}
+
private static final String TAG = "AntennapodHttpClient";
private static final int CONNECTION_TIMEOUT = 30000;
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadRequest.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadRequest.java
index 9a64bebf7..48234c387 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadRequest.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadRequest.java
@@ -124,7 +124,7 @@ public class DownloadRequest implements Parcelable {
@Override
public boolean equals(Object o) {
if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
+ if (o == null || !(o instanceof DownloadRequest)) return false;
DownloadRequest that = (DownloadRequest) o;
@@ -211,10 +211,6 @@ public class DownloadRequest implements Parcelable {
this.size = size;
}
- public int getStatusMsg() {
- return statusMsg;
- }
-
public void setStatusMsg(int statusMsg) {
this.statusMsg = statusMsg;
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java
index 9c2266622..ae1e9de86 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java
@@ -13,14 +13,12 @@ import android.os.Build;
import android.os.Handler;
import android.os.IBinder;
import android.support.annotation.NonNull;
-import android.support.annotation.VisibleForTesting;
import android.support.v4.app.NotificationCompat;
import android.text.TextUtils;
import android.util.Log;
import android.util.Pair;
import android.webkit.URLUtil;
-import de.danoeh.antennapod.core.util.gui.NotificationUtils;
import org.apache.commons.io.FileUtils;
import org.xml.sax.SAXException;
@@ -30,10 +28,8 @@ import java.net.HttpURLConnection;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
-import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
-import java.util.Set;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.Callable;
import java.util.concurrent.CompletionService;
@@ -55,7 +51,6 @@ import de.danoeh.antennapod.core.R;
import de.danoeh.antennapod.core.event.DownloadEvent;
import de.danoeh.antennapod.core.event.FeedItemEvent;
import de.danoeh.antennapod.core.feed.Feed;
-import de.danoeh.antennapod.core.feed.FeedImage;
import de.danoeh.antennapod.core.feed.FeedItem;
import de.danoeh.antennapod.core.feed.FeedMedia;
import de.danoeh.antennapod.core.feed.FeedPreferences;
@@ -75,6 +70,7 @@ import de.danoeh.antennapod.core.syndication.handler.UnsupportedFeedtypeExceptio
import de.danoeh.antennapod.core.util.ChapterUtils;
import de.danoeh.antennapod.core.util.DownloadError;
import de.danoeh.antennapod.core.util.InvalidFeedException;
+import de.danoeh.antennapod.core.util.gui.NotificationUtils;
import de.greenrobot.event.EventBus;
/**
@@ -117,11 +113,6 @@ public class DownloadService extends Service {
private CompletionService<Downloader> downloadExecutor;
private FeedSyncThread feedSyncThread;
- /**
- * Number of threads of downloadExecutor.
- */
- private static final int NUM_PARALLEL_DOWNLOADS = 6;
-
private DownloadRequester requester;
@@ -489,9 +480,7 @@ public class DownloadService extends Service {
if (status.isSuccessful()) {
successfulDownloads++;
} else if (!status.isCancelled()) {
- if (status.getFeedfileType() != FeedImage.FEEDFILETYPE_FEEDIMAGE) {
- createReport = true;
- }
+ createReport = true;
failedDownloads++;
}
}
@@ -688,10 +677,6 @@ public class DownloadService extends Service {
Log.d(TAG, "Bundling " + results.size() + " feeds");
- for (Pair<DownloadRequest, FeedHandlerResult> result : results) {
- removeDuplicateImages(result.second.feed); // duplicate images have to removed because the DownloadRequester does not accept two downloads with the same download URL yet.
- }
-
// Save information of feed in DB
if (dbUpdateFuture != null) {
try {
@@ -866,22 +851,6 @@ public class DownloadService extends Service {
return true;
}
- /**
- * Delete files that aren't needed anymore
- */
- private void cleanup(Feed feed) {
- if (feed.getFile_url() != null) {
- if (new File(feed.getFile_url()).delete()) {
- Log.d(TAG, "Successfully deleted cache file.");
- } else {
- Log.e(TAG, "Failed to delete cache file.");
- }
- feed.setFile_url(null);
- } else {
- Log.d(TAG, "Didn't delete cache file: File url is not set.");
- }
- }
-
public void shutdown() {
isActive = false;
if (isCollectingRequests) {
@@ -1101,26 +1070,6 @@ public class DownloadService extends Service {
}
}
- /**
- * Checks if the FeedItems of this feed have images that point to the same URL. If two FeedItems
- * have an image that points to the same URL, the reference of the second item is removed, so
- * that every image reference is unique.
- */
- @VisibleForTesting
- static void removeDuplicateImages(Feed feed) {
- Set<String> known = new HashSet<>();
- for (FeedItem item : feed.getItems()) {
- String url = item.hasItemImage() ? item.getImage().getDownload_url() : null;
- if (url != null) {
- if (known.contains(url)) {
- item.setImage(null);
- } else {
- known.add(url);
- }
- }
- }
- }
-
private static String compileNotificationString(List<Downloader> downloads) {
List<String> lines = new ArrayList<>(downloads.size());
for (Downloader downloader : downloads) {
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/Downloader.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/Downloader.java
index 445210d3a..38b93eab8 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/download/Downloader.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/Downloader.java
@@ -2,6 +2,7 @@ package de.danoeh.antennapod.core.service.download;
import android.content.Context;
import android.net.wifi.WifiManager;
+import android.support.annotation.NonNull;
import java.util.concurrent.Callable;
@@ -18,10 +19,12 @@ public abstract class Downloader implements Callable<Downloader> {
volatile boolean cancelled;
+ @NonNull
final DownloadRequest request;
+ @NonNull
final DownloadStatus result;
- Downloader(DownloadRequest request) {
+ Downloader(@NonNull DownloadRequest request) {
super();
this.request = request;
this.request.setStatusMsg(R.string.download_pending);
@@ -54,10 +57,12 @@ public abstract class Downloader implements Callable<Downloader> {
return this;
}
+ @NonNull
public DownloadRequest getDownloadRequest() {
return request;
}
+ @NonNull
public DownloadStatus getResult() {
return result;
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloaderCallback.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloaderCallback.java
deleted file mode 100644
index b0829f084..000000000
--- a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloaderCallback.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package de.danoeh.antennapod.core.service.download;
-
-/**
- * Callback used by the Downloader-classes to notify the requester that the
- * download has completed.
- */
-public interface DownloaderCallback {
-
- void onDownloadCompleted(Downloader downloader);
-}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java
index 7ab0931d6..c27cefc10 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java
@@ -1,5 +1,6 @@
package de.danoeh.antennapod.core.service.download;
+import android.support.annotation.NonNull;
import android.text.TextUtils;
import android.util.Log;
@@ -20,7 +21,6 @@ import java.util.Date;
import de.danoeh.antennapod.core.ClientConfig;
import de.danoeh.antennapod.core.R;
-import de.danoeh.antennapod.core.feed.FeedImage;
import de.danoeh.antennapod.core.feed.FeedMedia;
import de.danoeh.antennapod.core.util.DateUtils;
import de.danoeh.antennapod.core.util.DownloadError;
@@ -39,7 +39,7 @@ public class HttpDownloader extends Downloader {
private static final int BUFFER_SIZE = 8 * 1024;
- public HttpDownloader(DownloadRequest request) {
+ public HttpDownloader(@NonNull DownloadRequest request) {
super(request);
}
@@ -50,13 +50,8 @@ public class HttpDownloader extends Downloader {
if (request.isDeleteOnFailure() && fileExists) {
Log.w(TAG, "File already exists");
- if (request.getFeedfileType() != FeedImage.FEEDFILETYPE_FEEDIMAGE) {
- onFail(DownloadError.ERROR_FILE_EXISTS, null);
- return;
- } else {
- onSuccess();
- return;
- }
+ onSuccess();
+ return;
}
OkHttpClient.Builder httpClientBuilder = AntennapodHttpClient.newBuilder();
@@ -310,7 +305,7 @@ public class HttpDownloader extends Downloader {
String encoded = ByteString.of(bytes).base64();
return "Basic " + encoded;
} catch (UnsupportedEncodingException e) {
- throw new AssertionError();
+ throw new AssertionError(e);
}
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/ExoPlayerWrapper.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/ExoPlayerWrapper.java
new file mode 100644
index 000000000..281bd064b
--- /dev/null
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/ExoPlayerWrapper.java
@@ -0,0 +1,249 @@
+package de.danoeh.antennapod.core.service.playback;
+
+import android.content.Context;
+import android.net.Uri;
+import android.view.SurfaceHolder;
+
+import com.google.android.exoplayer2.C;
+import com.google.android.exoplayer2.DefaultLoadControl;
+import com.google.android.exoplayer2.DefaultRenderersFactory;
+import com.google.android.exoplayer2.ExoPlaybackException;
+import com.google.android.exoplayer2.ExoPlayerFactory;
+import com.google.android.exoplayer2.PlaybackParameters;
+import com.google.android.exoplayer2.Player;
+import com.google.android.exoplayer2.SeekParameters;
+import com.google.android.exoplayer2.SimpleExoPlayer;
+import com.google.android.exoplayer2.Timeline;
+import com.google.android.exoplayer2.audio.AudioAttributes;
+import com.google.android.exoplayer2.source.ExtractorMediaSource;
+import com.google.android.exoplayer2.source.MediaSource;
+import com.google.android.exoplayer2.source.TrackGroupArray;
+import com.google.android.exoplayer2.trackselection.DefaultTrackSelector;
+import com.google.android.exoplayer2.trackselection.TrackSelectionArray;
+import com.google.android.exoplayer2.upstream.DataSource;
+import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory;
+import com.google.android.exoplayer2.util.Util;
+
+import org.antennapod.audio.MediaPlayer;
+import de.danoeh.antennapod.core.util.playback.IPlayer;
+
+
+public class ExoPlayerWrapper implements IPlayer {
+ private final Context mContext;
+ private SimpleExoPlayer mExoPlayer;
+ private MediaSource mediaSource;
+ private MediaPlayer.OnSeekCompleteListener audioSeekCompleteListener;
+ private MediaPlayer.OnCompletionListener audioCompletionListener;
+ private MediaPlayer.OnErrorListener audioErrorListener;
+
+ ExoPlayerWrapper(Context context) {
+ mContext = context;
+ mExoPlayer = createPlayer();
+ }
+
+ private SimpleExoPlayer createPlayer() {
+ SimpleExoPlayer p = ExoPlayerFactory.newSimpleInstance(mContext, new DefaultRenderersFactory(mContext),
+ new DefaultTrackSelector(), new DefaultLoadControl());
+ p.setSeekParameters(SeekParameters.PREVIOUS_SYNC);
+ p.addListener(new Player.EventListener() {
+ @Override
+ public void onTimelineChanged(Timeline timeline, Object manifest, int reason) {
+
+ }
+
+ @Override
+ public void onTracksChanged(TrackGroupArray trackGroups, TrackSelectionArray trackSelections) {
+
+ }
+
+ @Override
+ public void onLoadingChanged(boolean isLoading) {
+
+ }
+
+ @Override
+ public void onPlayerStateChanged(boolean playWhenReady, int playbackState) {
+ if (playbackState == Player.STATE_ENDED) {
+ audioCompletionListener.onCompletion(null);
+ }
+ }
+
+ @Override
+ public void onRepeatModeChanged(int repeatMode) {
+
+ }
+
+ @Override
+ public void onShuffleModeEnabledChanged(boolean shuffleModeEnabled) {
+
+ }
+
+ @Override
+ public void onPlayerError(ExoPlaybackException error) {
+ if (audioErrorListener != null) {
+ audioErrorListener.onError(null, 0, 0);
+ }
+ }
+
+ @Override
+ public void onPositionDiscontinuity(int reason) {
+
+ }
+
+ @Override
+ public void onPlaybackParametersChanged(PlaybackParameters playbackParameters) {
+
+ }
+
+ @Override
+ public void onSeekProcessed() {
+ audioSeekCompleteListener.onSeekComplete(null);
+ }
+ });
+ return p;
+ }
+
+ @Override
+ public boolean canSetSpeed() {
+ return true;
+ }
+
+ @Override
+ public boolean canDownmix() {
+ return false;
+ }
+
+ @Override
+ public int getCurrentPosition() {
+ return (int) mExoPlayer.getCurrentPosition();
+ }
+
+ @Override
+ public float getCurrentSpeedMultiplier() {
+ return mExoPlayer.getPlaybackParameters().speed;
+ }
+
+ @Override
+ public int getDuration() {
+ if (mExoPlayer.getDuration() == C.TIME_UNSET) {
+ return PlaybackServiceMediaPlayer.INVALID_TIME;
+ }
+ return (int) mExoPlayer.getDuration();
+ }
+
+ @Override
+ public boolean isPlaying() {
+ return mExoPlayer.getPlayWhenReady();
+ }
+
+ @Override
+ public void pause() {
+ mExoPlayer.setPlayWhenReady(false);
+ }
+
+ @Override
+ public void prepare() throws IllegalStateException {
+ mExoPlayer.prepare(mediaSource);
+ }
+
+ @Override
+ public void release() {
+ if (mExoPlayer != null) {
+ mExoPlayer.release();
+ }
+ audioSeekCompleteListener = null;
+ audioCompletionListener = null;
+ audioErrorListener = null;
+ }
+
+ @Override
+ public void reset() {
+ mExoPlayer.release();
+ mExoPlayer = createPlayer();
+ }
+
+ @Override
+ public void seekTo(int i) throws IllegalStateException {
+ mExoPlayer.seekTo(i);
+ }
+
+ @Override
+ public void setAudioStreamType(int i) {
+ AudioAttributes a = mExoPlayer.getAudioAttributes();
+ AudioAttributes.Builder b = new AudioAttributes.Builder();
+ b.setContentType(i);
+ b.setFlags(a.flags);
+ b.setUsage(a.usage);
+ mExoPlayer.setAudioAttributes(b.build());
+ }
+
+ @Override
+ public void setDataSource(String s) throws IllegalArgumentException, IllegalStateException {
+ DataSource.Factory dataSourceFactory =
+ new DefaultDataSourceFactory(mContext, Util.getUserAgent(mContext, mContext.getPackageName()), null);
+ ExtractorMediaSource.Factory f = new ExtractorMediaSource.Factory(dataSourceFactory);
+ mediaSource = f.createMediaSource(Uri.parse(s));
+ }
+
+ @Override
+ public void setDisplay(SurfaceHolder sh) {
+ mExoPlayer.setVideoSurfaceHolder(sh);
+ }
+
+ @Override
+ public void setPlaybackParams(float speed, boolean skipSilence) {
+ PlaybackParameters params = mExoPlayer.getPlaybackParameters();
+ mExoPlayer.setPlaybackParameters(new PlaybackParameters(speed, params.pitch, skipSilence));
+ }
+
+ @Override
+ public void setDownmix(boolean b) {
+
+ }
+
+ @Override
+ public void setVolume(float v, float v1) {
+ mExoPlayer.setVolume(v);
+ }
+
+ @Override
+ public void setWakeMode(Context context, int i) {
+
+ }
+
+ @Override
+ public void start() {
+ mExoPlayer.setPlayWhenReady(true);
+ }
+
+ @Override
+ public void stop() {
+ mExoPlayer.stop();
+ }
+
+ void setOnCompletionListener(MediaPlayer.OnCompletionListener audioCompletionListener) {
+ this.audioCompletionListener = audioCompletionListener;
+ }
+
+ void setOnSeekCompleteListener(MediaPlayer.OnSeekCompleteListener audioSeekCompleteListener) {
+ this.audioSeekCompleteListener = audioSeekCompleteListener;
+ }
+
+ void setOnErrorListener(MediaPlayer.OnErrorListener audioErrorListener) {
+ this.audioErrorListener = audioErrorListener;
+ }
+
+ int getVideoWidth() {
+ if (mExoPlayer.getVideoFormat() == null) {
+ return 0;
+ }
+ return mExoPlayer.getVideoFormat().width;
+ }
+
+ int getVideoHeight() {
+ if (mExoPlayer.getVideoFormat() == null) {
+ return 0;
+ }
+ return mExoPlayer.getVideoFormat().height;
+ }
+}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java
index 0e64f484f..9274b9a49 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java
@@ -1,7 +1,10 @@
package de.danoeh.antennapod.core.service.playback;
import android.content.Context;
+import android.media.AudioAttributes;
+import android.media.AudioFocusRequest;
import android.media.AudioManager;
+import android.os.Build;
import android.os.PowerManager;
import android.support.annotation.NonNull;
import android.telephony.TelephonyManager;
@@ -202,9 +205,26 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
private void resumeSync() {
if (playerStatus == PlayerStatus.PAUSED || playerStatus == PlayerStatus.PREPARED) {
- int focusGained = audioManager.requestAudioFocus(
- audioFocusChangeListener, AudioManager.STREAM_MUSIC,
- AudioManager.AUDIOFOCUS_GAIN);
+ int focusGained;
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ AudioAttributes audioAttributes = new AudioAttributes.Builder()
+ .setUsage(AudioAttributes.USAGE_MEDIA)
+ .setContentType(AudioAttributes.CONTENT_TYPE_SPEECH)
+ .build();
+ AudioFocusRequest audioFocusRequest = new AudioFocusRequest.Builder(AudioManager.AUDIOFOCUS_GAIN)
+ .setAudioAttributes(audioAttributes)
+ .setOnAudioFocusChangeListener(audioFocusChangeListener)
+ .setAcceptsDelayedFocusGain(true)
+ .setWillPauseWhenDucked(true)
+ .build();
+ focusGained = audioManager.requestAudioFocus(audioFocusRequest);
+ } else {
+ focusGained = audioManager.requestAudioFocus(
+ audioFocusChangeListener, AudioManager.STREAM_MUSIC,
+ AudioManager.AUDIOFOCUS_GAIN);
+ }
+
if (focusGained == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
Log.d(TAG, "Audiofocus successfully requested");
Log.d(TAG, "Resuming/Starting playback");
@@ -216,7 +236,7 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
Log.e(TAG, Log.getStackTraceString(e));
UserPreferences.setPlaybackSpeed(String.valueOf(speed));
}
- setSpeed(speed);
+ setPlaybackParams(speed, UserPreferences.isSkipSilence());
setVolume(UserPreferences.getLeftVolume(), UserPreferences.getRightVolume());
if (playerStatus == PlayerStatus.PREPARED && media.getPosition() > 0) {
@@ -259,7 +279,13 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
setPlayerStatus(PlayerStatus.PAUSED, media, getPosition());
if (abandonFocus) {
- audioManager.abandonAudioFocus(audioFocusChangeListener);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ AudioFocusRequest.Builder builder = new AudioFocusRequest.Builder(AudioManager.AUDIOFOCUS_GAIN)
+ .setOnAudioFocusChangeListener(audioFocusChangeListener);
+ audioManager.abandonAudioFocusRequest(builder.build());
+ } else {
+ audioManager.abandonAudioFocus(audioFocusChangeListener);
+ }
pausedBecauseOfTransientAudiofocusLoss = false;
}
if (stream && reinit) {
@@ -313,7 +339,10 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
Log.d(TAG, "Resource prepared");
- if (mediaType == MediaType.VIDEO) {
+ if (mediaType == MediaType.VIDEO && mediaPlayer instanceof ExoPlayerWrapper) {
+ ExoPlayerWrapper vp = (ExoPlayerWrapper) mediaPlayer;
+ videoSize = new Pair<>(vp.getVideoWidth(), vp.getVideoHeight());
+ } else if(mediaType == MediaType.VIDEO && mediaPlayer instanceof VideoPlayer) {
VideoPlayer vp = (VideoPlayer) mediaPlayer;
videoSize = new Pair<>(vp.getVideoWidth(), vp.getVideoHeight());
}
@@ -447,7 +476,8 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
|| playerStatus == PlayerStatus.PAUSED
|| playerStatus == PlayerStatus.PREPARED) {
retVal = mediaPlayer.getDuration();
- } else if (media != null && media.getDuration() > 0) {
+ }
+ if (retVal <= 0 && media != null && media.getDuration() > 0) {
retVal = media.getDuration();
}
@@ -507,14 +537,14 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
* Sets the playback speed.
* This method is executed on the caller's thread.
*/
- private void setSpeedSync(float speed) {
+ private void setSpeedSyncAndSkipSilence(float speed, boolean skipSilence) {
playerLock.lock();
if (media != null && media.getMediaType() == MediaType.AUDIO) {
if (mediaPlayer.canSetSpeed()) {
- mediaPlayer.setPlaybackSpeed(speed);
Log.d(TAG, "Playback speed was set to " + speed);
callback.playbackSpeedChanged(speed);
}
+ mediaPlayer.setPlaybackParams(speed, skipSilence);
}
playerLock.unlock();
}
@@ -524,8 +554,8 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
* This method is executed on an internal executor service.
*/
@Override
- public void setSpeed(final float speed) {
- executor.submit(() -> setSpeedSync(speed));
+ public void setPlaybackParams(final float speed, final boolean skipSilence) {
+ executor.submit(() -> setSpeedSyncAndSkipSilence(speed, skipSilence));
}
/**
@@ -610,13 +640,29 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
executor.shutdown();
if (mediaPlayer != null) {
try {
- mediaPlayer.stop();
+ removeMediaPlayerErrorListener();
+ if (mediaPlayer.isPlaying()) {
+ mediaPlayer.stop();
+ }
} catch (Exception ignore) { }
mediaPlayer.release();
}
releaseWifiLockIfNecessary();
}
+ private void removeMediaPlayerErrorListener() {
+ if (mediaPlayer instanceof VideoPlayer) {
+ VideoPlayer vp = (VideoPlayer) mediaPlayer;
+ vp.setOnErrorListener((mp, what, extra) -> true);
+ } else if (mediaPlayer instanceof AudioPlayer) {
+ AudioPlayer ap = (AudioPlayer) mediaPlayer;
+ ap.setOnErrorListener((mediaPlayer, i, i1) -> true);
+ } else if (mediaPlayer instanceof ExoPlayerWrapper) {
+ ExoPlayerWrapper ap = (ExoPlayerWrapper) mediaPlayer;
+ ap.setOnErrorListener((mediaPlayer, i, i1) -> true);
+ }
+ }
+
/**
* Releases internally used resources. This method should only be called when the object is not used anymore.
* This method is executed on an internal executor service.
@@ -669,6 +715,10 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
Pair<Integer, Integer> res;
if (mediaPlayer == null || playerStatus == PlayerStatus.ERROR || mediaType != MediaType.VIDEO) {
res = null;
+ } else if (mediaPlayer instanceof ExoPlayerWrapper) {
+ ExoPlayerWrapper vp = (ExoPlayerWrapper) mediaPlayer;
+ videoSize = new Pair<>(vp.getVideoWidth(), vp.getVideoHeight());
+ res = videoSize;
} else {
VideoPlayer vp = (VideoPlayer) mediaPlayer;
videoSize = new Pair<>(vp.getVideoWidth(), vp.getVideoHeight());
@@ -698,15 +748,19 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
if (mediaPlayer != null) {
mediaPlayer.release();
}
- if(media == null) {
+ if (media == null) {
mediaPlayer = null;
return;
}
- if (media.getMediaType() == MediaType.VIDEO) {
+
+ if (UserPreferences.useExoplayer()) {
+ mediaPlayer = new ExoPlayerWrapper(context);
+ } else if (media.getMediaType() == MediaType.VIDEO) {
mediaPlayer = new VideoPlayer();
} else {
mediaPlayer = new AudioPlayer(context);
}
+
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setWakeMode(context, PowerManager.PARTIAL_WAKE_LOCK);
setMediaPlayerListeners(mediaPlayer);
@@ -787,7 +841,14 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
if (mediaPlayer != null) {
mediaPlayer.reset();
}
- audioManager.abandonAudioFocus(audioFocusChangeListener);
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ AudioFocusRequest.Builder builder = new AudioFocusRequest.Builder(AudioManager.AUDIOFOCUS_GAIN)
+ .setOnAudioFocusChangeListener(audioFocusChangeListener);
+ audioManager.abandonAudioFocusRequest(builder.build());
+ } else {
+ audioManager.abandonAudioFocus(audioFocusChangeListener);
+ }
final Playable currentMedia = media;
Playable nextMedia = null;
@@ -883,6 +944,11 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
ap.setOnBufferingUpdateListener(audioBufferingUpdateListener);
ap.setOnInfoListener(audioInfoListener);
ap.setOnSpeedAdjustmentAvailableChangedListener(audioSetSpeedAbilityListener);
+ } else if (mp instanceof ExoPlayerWrapper) {
+ ExoPlayerWrapper ap = (ExoPlayerWrapper) mp;
+ ap.setOnCompletionListener(audioCompletionListener);
+ ap.setOnSeekCompleteListener(audioSeekCompleteListener);
+ ap.setOnErrorListener(audioErrorListener);
} else {
Log.w(TAG, "Unknown media player: " + mp);
}
@@ -925,7 +991,7 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
private final MediaPlayer.OnErrorListener audioErrorListener =
(mp, what, extra) -> {
- if(mp.canFallback()) {
+ if(mp != null && mp.canFallback()) {
mp.fallback();
return true;
} else {
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java
index be6cb346d..7fe93a162 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java
@@ -24,13 +24,14 @@ import android.os.Vibrator;
import android.preference.PreferenceManager;
import android.support.annotation.NonNull;
import android.support.annotation.StringRes;
+import android.support.v4.app.NotificationCompat;
+import android.support.v4.content.ContextCompat;
import android.support.v4.media.MediaBrowserCompat;
import android.support.v4.media.MediaBrowserServiceCompat;
import android.support.v4.media.MediaDescriptionCompat;
import android.support.v4.media.MediaMetadataCompat;
import android.support.v4.media.session.MediaSessionCompat;
import android.support.v4.media.session.PlaybackStateCompat;
-import android.support.v4.app.NotificationCompat;
import android.text.TextUtils;
import android.util.Log;
import android.util.Pair;
@@ -39,6 +40,7 @@ import android.view.SurfaceHolder;
import android.widget.Toast;
import com.bumptech.glide.Glide;
+import com.bumptech.glide.request.RequestOptions;
import com.bumptech.glide.request.target.Target;
import java.util.ArrayList;
@@ -65,14 +67,20 @@ import de.danoeh.antennapod.core.storage.DBTasks;
import de.danoeh.antennapod.core.storage.DBWriter;
import de.danoeh.antennapod.core.storage.FeedSearcher;
import de.danoeh.antennapod.core.util.IntList;
-import de.danoeh.antennapod.core.util.gui.NotificationUtils;
+import de.danoeh.antennapod.core.util.IntentUtils;
import de.danoeh.antennapod.core.util.QueueAccess;
+import de.danoeh.antennapod.core.util.gui.NotificationUtils;
import de.danoeh.antennapod.core.util.playback.ExternalMedia;
import de.danoeh.antennapod.core.util.playback.Playable;
import de.greenrobot.event.EventBus;
/**
* Controls the MediaPlayer that plays a FeedMedia-file
+ *
+ * Callers should connect to the service with either:
+ * - .bindService()
+ * - ContextCompat.startForegroundService(), optionally with arguments, such as media to be played, in intent extras
+ *
*/
public class PlaybackService extends MediaBrowserServiceCompat {
/**
@@ -191,10 +199,6 @@ public class PlaybackService extends MediaBrowserServiceCompat {
*/
public static boolean isRunning = false;
/**
- * Is true if service has received a valid start command.
- */
- public static boolean started = false;
- /**
* Is true if the service was running, but paused due to headphone disconnect
*/
private static boolean transientPause = false;
@@ -310,15 +314,9 @@ public class PlaybackService extends MediaBrowserServiceCompat {
}
flavorHelper.initializeMediaPlayer(PlaybackService.this);
-
mediaSession.setActive(true);
- NotificationCompat.Builder notificationBuilder = createBasicNotification();
- startForeground(NOTIFICATION_ID, notificationBuilder.build());
EventBus.getDefault().post(new ServiceEvent(ServiceEvent.Action.SERVICE_STARTED));
-
-
- setupNotification(Playable.PlayableUtils.createInstanceFromPreferences(getApplicationContext()));
}
private NotificationCompat.Builder createBasicNotification() {
@@ -343,8 +341,8 @@ public class PlaybackService extends MediaBrowserServiceCompat {
public void onDestroy() {
super.onDestroy();
Log.d(TAG, "Service is about to be destroyed");
+ stopForeground(true);
isRunning = false;
- started = false;
currentMediaType = MediaType.UNKNOWN;
PreferenceManager.getDefaultSharedPreferences(this)
@@ -365,7 +363,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
mediaPlayer.shutdown();
taskManager.shutdown();
}
-
+
@Override
public BrowserRoot onGetRoot(@NonNull String clientPackageName, int clientUid, Bundle rootHints) {
Log.d(TAG, "OnGetRoot: clientPackageName=" + clientPackageName +
@@ -459,33 +457,32 @@ public class PlaybackService extends MediaBrowserServiceCompat {
final boolean castDisconnect = intent.getBooleanExtra(EXTRA_CAST_DISCONNECT, false);
Playable playable = intent.getParcelableExtra(EXTRA_PLAYABLE);
if (keycode == -1 && playable == null && !castDisconnect) {
- Log.e(TAG, "PlaybackService was started with no arguments");
- stopSelf();
+ // Typical cases when the service was started with no argument
+ // - when it is first bound, and then moved to startedState, as in <code>serviceManager.moveServiceToStartedState()</code>
+ // - callers (e.g., Controller) explicitly
+ Log.d(TAG, "PlaybackService was started with no arguments.");
return Service.START_NOT_STICKY;
}
- if ((flags & Service.START_FLAG_REDELIVERY) != 0) {
- Log.d(TAG, "onStartCommand is a redelivered intent, calling stopForeground now.");
- stopForeground(true);
- } else {
-
- if (keycode != -1) {
- Log.d(TAG, "Received media button event");
- handleKeycode(keycode, true);
- } else if (!flavorHelper.castDisconnect(castDisconnect) && playable != null) {
- started = true;
- boolean stream = intent.getBooleanExtra(EXTRA_SHOULD_STREAM,
- true);
- boolean startWhenPrepared = intent.getBooleanExtra(EXTRA_START_WHEN_PREPARED, false);
- boolean prepareImmediately = intent.getBooleanExtra(EXTRA_PREPARE_IMMEDIATELY, false);
- sendNotificationBroadcast(NOTIFICATION_TYPE_RELOAD, 0);
- //If the user asks to play External Media, the casting session, if on, should end.
- flavorHelper.castDisconnect(playable instanceof ExternalMedia);
- if (playable instanceof FeedMedia) {
- playable = DBReader.getFeedMedia(((FeedMedia) playable).getId());
- }
- mediaPlayer.playMediaObject(playable, stream, startWhenPrepared, prepareImmediately);
+ if (keycode != -1) {
+ Log.d(TAG, "Received media button event");
+ boolean handled = handleKeycode(keycode, true);
+ if (!handled) {
+ // Just silently ignores unsupported keycode. Whether the service will
+ // continue to run is solely dependent on whether it is playing some media.
+ return Service.START_NOT_STICKY;
+ }
+ } else if (!flavorHelper.castDisconnect(castDisconnect) && playable != null) {
+ boolean stream = intent.getBooleanExtra(EXTRA_SHOULD_STREAM, true);
+ boolean startWhenPrepared = intent.getBooleanExtra(EXTRA_START_WHEN_PREPARED, false);
+ boolean prepareImmediately = intent.getBooleanExtra(EXTRA_PREPARE_IMMEDIATELY, false);
+ sendNotificationBroadcast(NOTIFICATION_TYPE_RELOAD, 0);
+ //If the user asks to play External Media, the casting session, if on, should end.
+ flavorHelper.castDisconnect(playable instanceof ExternalMedia);
+ if (playable instanceof FeedMedia) {
+ playable = DBReader.getFeedMedia(((FeedMedia) playable).getId());
}
+ mediaPlayer.playMediaObject(playable, stream, startWhenPrepared, prepareImmediately);
}
return Service.START_NOT_STICKY;
@@ -559,12 +556,23 @@ public class PlaybackService extends MediaBrowserServiceCompat {
mediaPlayer.seekDelta(-UserPreferences.getRewindSecs() * 1000);
return true;
case KeyEvent.KEYCODE_MEDIA_STOP:
+ // The logic gives UI illusion of stop by removing notification
+ // In the UI within AntennaPod, including widgets, it is seen as PAUSE, e.g.,
+ // users can still user on-screen widget to resume playing.
if (status == PlayerStatus.PLAYING) {
+ // Implementation note: Use of a state in serviceManager to tell it to
+ // show stop state UI (i.e., stopForeground(true)) is a bit awkward.
+ //
+ // More intuitive API would be for mediaPlayer.pause() returns a Future that
+ // returns after pause, including the related async notification work completes.
+ // However, it has its own complication, that mediaPlayer.pause() does not
+ // really know when all the related work completes, as they are buried into
+ // (asynchronous) callbacks.
+ serviceManager.treatNextPauseAsStopOnUI();
mediaPlayer.pause(true, true);
- started = false;
+ } else {
+ serviceManager.showUIForStopState();
}
-
- stopForeground(true); // gets rid of persistent notification
return true;
default:
Log.d(TAG, "Unhandled key code: " + keycode);
@@ -580,7 +588,6 @@ public class PlaybackService extends MediaBrowserServiceCompat {
Playable playable = Playable.PlayableUtils.createInstanceFromPreferences(getApplicationContext());
if (playable != null) {
mediaPlayer.playMediaObject(playable, false, true, true);
- started = true;
PlaybackService.this.updateMediaSessionMetadata(playable);
}
}
@@ -594,19 +601,10 @@ public class PlaybackService extends MediaBrowserServiceCompat {
mediaPlayer.setVideoSurface(sh);
}
- /**
- * Called when the surface holder of the mediaplayer has to be changed.
- */
- private void resetVideoSurface() {
- taskManager.cancelPositionSaver();
- mediaPlayer.resetVideoSurface();
- }
-
public void notifyVideoSurfaceAbandoned() {
+ Log.v(TAG, "notifyVideoSurfaceAbandoned()");
mediaPlayer.pause(true, false);
mediaPlayer.resetVideoSurface();
- setupNotification(getPlayable());
- stopForeground(!UserPreferences.isPersistNotify());
}
private final PlaybackServiceTaskManager.PSTMCallback taskManagerCallback = new PlaybackServiceTaskManager.PSTMCallback() {
@@ -652,7 +650,12 @@ public class PlaybackService extends MediaBrowserServiceCompat {
private final PlaybackServiceMediaPlayer.PSMPCallback mediaPlayerCallback = new PlaybackServiceMediaPlayer.PSMPCallback() {
@Override
public void statusChanged(PlaybackServiceMediaPlayer.PSMPInfo newInfo) {
- currentMediaType = mediaPlayer.getCurrentMediaType();
+ if (mediaPlayer != null) {
+ currentMediaType = mediaPlayer.getCurrentMediaType();
+ } else {
+ currentMediaType = MediaType.UNKNOWN;
+ }
+
updateMediaSession(newInfo.playerStatus);
switch (newInfo.playerStatus) {
case INITIALIZED:
@@ -664,27 +667,15 @@ public class PlaybackService extends MediaBrowserServiceCompat {
break;
case PAUSED:
- if ((UserPreferences.isPersistNotify() || isCasting) &&
- android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
- // do not remove notification on pause based on user pref and whether android version supports expanded notifications
- // Change [Play] button to [Pause]
- setupNotification(newInfo);
- } else if (!UserPreferences.isPersistNotify() && !isCasting) {
- // remove notification on pause
- stopForeground(true);
- }
writePlayerStatusPlaybackPreferences();
break;
case STOPPED:
- //setCurrentlyPlayingMedia(PlaybackPreferences.NO_MEDIA_PLAYING);
- //stopSelf();
+ //writePlaybackPreferencesNoMediaPlaying();
break;
case PLAYING:
writePlayerStatusPlaybackPreferences();
- setupNotification(newInfo);
- started = true;
// set sleep timer if auto-enabled
if (newInfo.oldPlayerStatus != null && newInfo.oldPlayerStatus != PlayerStatus.SEEKING &&
SleepTimerPreferences.autoEnable() && !sleepTimerActive()) {
@@ -699,9 +690,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
}
- Intent statusUpdate = new Intent(ACTION_PLAYER_STATUS_CHANGED);
- // statusUpdate.putExtra(EXTRA_NEW_PLAYER_STATUS, newInfo.playerStatus.ordinal());
- sendBroadcast(statusUpdate);
+ IntentUtils.sendLocalBroadcast(getApplicationContext(), ACTION_PLAYER_STATUS_CHANGED);
PlayerWidgetJobService.updateWidget(getBaseContext());
bluetoothNotifyChange(newInfo, AVRCP_ACTION_PLAYER_STATUS_CHANGED);
bluetoothNotifyChange(newInfo, AVRCP_ACTION_META_CHANGED);
@@ -709,7 +698,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
@Override
public void shouldStop() {
- stopSelf();
+ serviceManager.stopService();
}
@Override
@@ -758,7 +747,6 @@ public class PlaybackService extends MediaBrowserServiceCompat {
}
sendNotificationBroadcast(NOTIFICATION_TYPE_ERROR, what);
writePlaybackPreferencesNoMediaPlaying();
- stopSelf();
return true;
}
@@ -842,9 +830,6 @@ public class PlaybackService extends MediaBrowserServiceCompat {
if (stopPlaying) {
taskManager.cancelPositionSaver();
writePlaybackPreferencesNoMediaPlaying();
- if (!isCasting) {
- stopForeground(true);
- }
}
if (mediaType == null) {
sendNotificationBroadcast(NOTIFICATION_TYPE_PLAYBACK_END, 0);
@@ -913,7 +898,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
final List<FeedItem> queue = taskManager.getQueue();
if (QueueAccess.ItemListAccess(queue).contains(item.getId())) {
// don't know if it actually matters to not autodownload when smart mark as played is triggered
- DBWriter.removeQueueItem(PlaybackService.this, item, ended);
+ DBWriter.removeQueueItem(PlaybackService.this, ended, item);
}
} catch (InterruptedException e) {
e.printStackTrace();
@@ -1042,17 +1027,11 @@ public class PlaybackService extends MediaBrowserServiceCompat {
editor.commit();
}
- /**
- * Send ACTION_PLAYER_STATUS_CHANGED without changing the status attribute.
- */
- private void postStatusUpdateIntent() {
- sendBroadcast(new Intent(ACTION_PLAYER_STATUS_CHANGED));
- }
-
private void sendNotificationBroadcast(int type, int code) {
Intent intent = new Intent(ACTION_PLAYER_NOTIFICATION);
intent.putExtra(EXTRA_NOTIFICATION_TYPE, type);
intent.putExtra(EXTRA_NOTIFICATION_CODE, code);
+ intent.setPackage(getPackageName());
sendBroadcast(intent);
}
@@ -1064,6 +1043,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
private void updateMediaSession(final PlayerStatus playerStatus) {
PlaybackStateCompat.Builder sessionState = new PlaybackStateCompat.Builder();
+ @PlaybackStateCompat.State
int state;
if (playerStatus != null) {
switch (playerStatus) {
@@ -1098,7 +1078,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
} else {
state = PlaybackStateCompat.STATE_NONE;
}
- sessionState.setState(state, mediaPlayer.getPosition(), mediaPlayer.getPlaybackSpeed());
+ sessionState.setState(state, getCurrentPosition(), getCurrentPlaybackSpeed());
long capabilities = PlaybackStateCompat.ACTION_PLAY_PAUSE
| PlaybackStateCompat.ACTION_REWIND
| PlaybackStateCompat.ACTION_FAST_FORWARD
@@ -1127,7 +1107,9 @@ public class PlaybackService extends MediaBrowserServiceCompat {
flavorHelper.mediaSessionSetExtraForWear(mediaSession);
- mediaSession.setPlaybackState(sessionState.build());
+ final PlaybackStateCompat sessionStateBuilt = sessionState.build();
+ mediaSession.setPlaybackState(sessionStateBuilt);
+ serviceManager.onPlaybackStateChange(sessionStateBuilt);
}
private static boolean useSkipToPreviousForRewindInLockscreen() {
@@ -1167,10 +1149,10 @@ public class PlaybackService extends MediaBrowserServiceCompat {
builder.putString(MediaMetadataCompat.METADATA_KEY_ART_URI, imageLocation);
try {
Bitmap art = Glide.with(this)
- .load(imageLocation)
.asBitmap()
- .diskCacheStrategy(ApGlideSettings.AP_DISK_CACHE_STRATEGY)
- .into(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL)
+ .load(imageLocation)
+ .apply(RequestOptions.diskCacheStrategyOf(ApGlideSettings.AP_DISK_CACHE_STRATEGY))
+ .submit(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL)
.get();
builder.putBitmap(MediaMetadataCompat.METADATA_KEY_ART, art);
} catch (Throwable tr) {
@@ -1181,7 +1163,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
builder.putString(MediaMetadataCompat.METADATA_KEY_DISPLAY_ICON_URI, imageLocation);
}
}
- if (!Thread.currentThread().isInterrupted() && started) {
+ if (!Thread.currentThread().isInterrupted() && isStarted()) {
mediaSession.setSessionActivity(PendingIntent.getActivity(this, 0,
PlaybackService.getPlayerActivityIntent(this),
PendingIntent.FLAG_UPDATE_CURRENT));
@@ -1204,49 +1186,55 @@ public class PlaybackService extends MediaBrowserServiceCompat {
*/
private Thread notificationSetupThread;
- /**
- * Prepares notification and starts the service in the foreground.
- */
- private void setupNotification(final PlaybackServiceMediaPlayer.PSMPInfo info) {
- setupNotification(info.playable);
- }
-
- private synchronized void setupNotification(final Playable playable) {
+ private synchronized void setupNotification(final Playable playable, boolean treatPauseAsStop) {
if (notificationSetupThread != null) {
notificationSetupThread.interrupt();
}
+ if (playable == null) {
+ Log.d(TAG, "setupNotification: playable is null");
+ if (!isStarted()) {
+ serviceManager.stopService();
+ }
+ return;
+ }
Runnable notificationSetupTask = new Runnable() {
Bitmap icon = null;
@Override
public void run() {
- Log.d(TAG, "Starting background work");
- if (playable != null) {
- int iconSize = getResources().getDimensionPixelSize(
- android.R.dimen.notification_large_icon_width);
- try {
- icon = Glide.with(PlaybackService.this)
- .load(playable.getImageLocation())
- .asBitmap()
- .diskCacheStrategy(ApGlideSettings.AP_DISK_CACHE_STRATEGY)
- .centerCrop()
- .into(iconSize, iconSize)
- .get();
- } catch (Throwable tr) {
- Log.e(TAG, "Error loading the media icon for the notification", tr);
+ Log.d(TAG, "notificationSetupTask: Starting background work");
+
+ if (mediaPlayer == null) {
+ Log.d(TAG, "notificationSetupTask: mediaPlayer is null");
+ if (!isStarted()) {
+ serviceManager.stopService();
}
+ return;
+ }
+
+ int iconSize = getResources().getDimensionPixelSize(
+ android.R.dimen.notification_large_icon_width);
+ try {
+ icon = Glide.with(PlaybackService.this)
+ .asBitmap()
+ .load(playable.getImageLocation())
+ .apply(RequestOptions.diskCacheStrategyOf(ApGlideSettings.AP_DISK_CACHE_STRATEGY))
+ .apply(new RequestOptions().centerCrop())
+ .submit(iconSize, iconSize)
+ .get();
+ } catch (Throwable tr) {
+ Log.e(TAG, "Error loading the media icon for the notification", tr);
}
+
if (icon == null) {
icon = BitmapFactory.decodeResource(getApplicationContext().getResources(),
ClientConfig.playbackServiceCallbacks.getNotificationIconResource(getApplicationContext()));
}
- if (mediaPlayer == null) {
- return;
- }
PlayerStatus playerStatus = mediaPlayer.getPlayerStatus();
+ Log.v(TAG, "notificationSetupTask: playerStatus=" + playerStatus);
- if (!Thread.currentThread().isInterrupted() && started && playable != null) {
+ if (!Thread.currentThread().isInterrupted() && isStarted()) {
String contentText = playable.getEpisodeTitle();
String contentTitle = playable.getFeedTitle();
Notification notification;
@@ -1338,15 +1326,33 @@ public class PlaybackService extends MediaBrowserServiceCompat {
playerStatus == PlayerStatus.PREPARING ||
playerStatus == PlayerStatus.SEEKING ||
isCasting) {
+ Log.v(TAG, "notificationSetupTask: make service foreground");
startForeground(NOTIFICATION_ID, notification);
+ } else if (playerStatus == PlayerStatus.PAUSED) {
+ if (treatPauseAsStop) {
+ stopForeground(true);
+ } else if ((UserPreferences.isPersistNotify() || isCasting) &&
+ android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
+ // do not remove notification on pause based on user pref and whether android version supports expanded notifications
+ // Change [Play] button to [Pause]
+ leaveNotificationAsBackground(notification);
+ } else if (!UserPreferences.isPersistNotify() && !isCasting) {
+ // remove notification on pause
+ stopForeground(true);
+ }
} else {
- stopForeground(false);
- NotificationManager mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
- mNotificationManager.notify(NOTIFICATION_ID, notification);
+ leaveNotificationAsBackground(notification);
}
Log.d(TAG, "Notification set up");
}
}
+
+ private void leaveNotificationAsBackground(@NonNull Notification notification) {
+ stopForeground(false);
+ NotificationManager mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
+ mNotificationManager.notify(NOTIFICATION_ID, notification);
+ }
+
};
notificationSetupThread = new Thread(notificationSetupTask);
notificationSetupThread.start();
@@ -1541,7 +1547,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
@Override
public void onReceive(Context context, Intent intent) {
if (TextUtils.equals(intent.getAction(), ACTION_SHUTDOWN_PLAYBACK_SERVICE)) {
- stopSelf();
+ serviceManager.stopService();
}
}
@@ -1618,7 +1624,11 @@ public class PlaybackService extends MediaBrowserServiceCompat {
}
public void setSpeed(float speed) {
- mediaPlayer.setSpeed(speed);
+ mediaPlayer.setPlaybackParams(speed, UserPreferences.isSkipSilence());
+ }
+
+ public void skipSilence(boolean skipSilence) {
+ mediaPlayer.setPlaybackParams(getCurrentPlaybackSpeed(), skipSilence);
}
public void setVolume(float leftVolume, float rightVolume) {
@@ -1626,6 +1636,9 @@ public class PlaybackService extends MediaBrowserServiceCompat {
}
public float getCurrentPlaybackSpeed() {
+ if(mediaPlayer == null) {
+ return 1.0f;
+ }
return mediaPlayer.getPlaybackSpeed();
}
@@ -1667,6 +1680,9 @@ public class PlaybackService extends MediaBrowserServiceCompat {
* an invalid state.
*/
public int getDuration() {
+ if (mediaPlayer == null) {
+ return INVALID_TIME;
+ }
return mediaPlayer.getDuration();
}
@@ -1675,6 +1691,9 @@ public class PlaybackService extends MediaBrowserServiceCompat {
* is in an invalid state.
*/
public int getCurrentPosition() {
+ if (mediaPlayer == null) {
+ return INVALID_TIME;
+ }
return mediaPlayer.getPosition();
}
@@ -1783,7 +1802,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
public boolean onMediaButtonEvent(final Intent mediaButton) {
Log.d(TAG, "onMediaButtonEvent(" + mediaButton + ")");
if (mediaButton != null) {
- KeyEvent keyEvent = (KeyEvent) mediaButton.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
+ KeyEvent keyEvent = mediaButton.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
if (keyEvent != null &&
keyEvent.getAction() == KeyEvent.ACTION_DOWN &&
keyEvent.getRepeatCount() == 0) {
@@ -1826,8 +1845,6 @@ public class PlaybackService extends MediaBrowserServiceCompat {
void saveCurrentPosition(boolean fromMediaPlayer, Playable playable, int position);
- void setupNotification(boolean connected, PlaybackServiceMediaPlayer.PSMPInfo info);
-
MediaSessionCompat getMediaSession();
Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter);
@@ -1867,24 +1884,6 @@ public class PlaybackService extends MediaBrowserServiceCompat {
}
@Override
- public void setupNotification(boolean connected, PlaybackServiceMediaPlayer.PSMPInfo info) {
- if (connected) {
- PlaybackService.this.setupNotification(info);
- } else {
- PlayerStatus status = info.playerStatus;
- if ((status == PlayerStatus.PLAYING ||
- status == PlayerStatus.SEEKING ||
- status == PlayerStatus.PREPARING ||
- UserPreferences.isPersistNotify()) &&
- android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
- PlaybackService.this.setupNotification(info);
- } else if (!UserPreferences.isPersistNotify()) {
- PlaybackService.this.stopForeground(true);
- }
- }
- }
-
- @Override
public MediaSessionCompat getMediaSession() {
return PlaybackService.this.mediaSession;
}
@@ -1899,4 +1898,116 @@ public class PlaybackService extends MediaBrowserServiceCompat {
PlaybackService.this.unregisterReceiver(receiver);
}
};
+
+ private boolean isStarted() {
+ return serviceManager.serviceInStartedState;
+ }
+
+ /**
+ * The helper that manages PlaybackService's foreground service life cycle and the associated
+ * notification control.
+ *
+ * The logic is adapted from a sample app from The Android Open Source Project.
+ * See https://github.com/googlesamples/android-MediaBrowserService/blob/6cf01be9ef82ca2dd653f03e2a4af0b075cc0021/Application/src/main/java/com/example/android/mediasession/service/MusicService.java#L211
+ *
+ */
+ private class ServiceManager {
+ private boolean serviceInStartedState;
+ private boolean toTreatNextPauseAsStopOnUI = false;
+
+ /**
+ *
+ * Entry point method for callers. Upon PlaybackState changes,
+ * the manager start/stop the PlaybackService as well as relevant notification
+ */
+ void onPlaybackStateChange(PlaybackStateCompat state) {
+ // Report the state to the MediaSession.
+
+ Log.v(TAG, "onPlaybackStateChange(" + (state != null ? state.getState() : "null") + ")");
+ try {
+ // Manage the started state of this service.
+ switch (state.getState()) {
+ case PlaybackStateCompat.STATE_CONNECTING:
+ // move the service to started, aka, making it foreground
+ // upon STATE_CONNECTING, i.e., in preparing to play a media.
+ // This is done so that in case the preparation takes a long time, e.g.,
+ // streaming over a slow network,
+ // the service won't be killed by the system prematurely.
+ moveServiceToStartedState(state);
+ break;
+ case PlaybackStateCompat.STATE_PLAYING:
+ moveServiceToStartedState(state);
+ break;
+ case PlaybackStateCompat.STATE_PAUSED:
+ updateNotificationForPause(state);
+ break;
+ case PlaybackStateCompat.STATE_STOPPED:
+ moveServiceOutOfStartedState(state);
+ break;
+ case PlaybackStateCompat.STATE_ERROR:
+ moveServiceOutOfStartedState(state);
+ break;
+ }
+ } finally {
+ if (toTreatNextPauseAsStopOnUI) {
+ Log.v(TAG, "onPlaybackStateChange() - toTreatNextPauseAsStopOnUI enabled. The actual state (should be PAUSED, aka 2): " + state.getState());
+ toTreatNextPauseAsStopOnUI = false;
+ }
+ }
+ }
+
+ /**
+ * Tell service manager that on the next state change, if the state is STATE_PAUSED,
+ * give UI treatment as if it is stopped.
+ *
+ * @see #handleKeycode(int, boolean) the use case
+ */
+ public void treatNextPauseAsStopOnUI() {
+ this.toTreatNextPauseAsStopOnUI = true;
+ }
+
+ public void showUIForStopState() {
+ Log.v(TAG, "serviceManager.showUIForStopState()");
+ stopForeground(true); // gets rid of persistent notification, to give the UI illusion of STOP
+ }
+
+ public void stopService() {
+ stopForeground(true);
+ stopSelf();
+ serviceInStartedState = false;
+ }
+
+ private void moveServiceToStartedState(PlaybackStateCompat state) {
+ if (!serviceInStartedState) {
+ ContextCompat.startForegroundService(
+ PlaybackService.this,
+ new Intent(PlaybackService.this, PlaybackService.class));
+ serviceInStartedState = true;
+ }
+
+ doSetupNotification();
+ }
+
+ private void updateNotificationForPause(PlaybackStateCompat state) {
+ doSetupNotification();
+ }
+
+ private void moveServiceOutOfStartedState(PlaybackStateCompat state) {
+ stopService();
+ }
+
+ private void doSetupNotification() {
+ if (mediaPlayer != null && mediaPlayer.getPlayable() != null) {
+ // it updates notification and set foreground status
+ // based on player status (similar to PlaybackState)
+ setupNotification(mediaPlayer.getPlayable(), toTreatNextPauseAsStopOnUI);
+ } else {
+ // should not happen unless there are bugs.
+ Log.e(TAG, "doSetupNotification() - unexpectedly there is no playable. No notification setup done. mediaPlayer." + mediaPlayer);
+ }
+ }
+ }
+
+ private final ServiceManager serviceManager = new ServiceManager();
+
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceMediaPlayer.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceMediaPlayer.java
index a2481b801..b8198fa63 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceMediaPlayer.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceMediaPlayer.java
@@ -148,10 +148,12 @@ public abstract class PlaybackServiceMediaPlayer {
public abstract boolean canSetSpeed();
/**
- * Sets the playback speed.
+ * Sets the playback parameters.
+ * - Speed
+ * - SkipSilence (ExoPlayer only)
* This method is executed on an internal executor service.
*/
- public abstract void setSpeed(float speed);
+ public abstract void setPlaybackParams(final float speed, final boolean skipSilence);
/**
* Returns the current playback speed. If the playback speed could not be retrieved, 1 is returned.
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlayerStatus.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlayerStatus.java
index 8a222d7ec..4f2ae34f8 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlayerStatus.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlayerStatus.java
@@ -12,7 +12,7 @@ public enum PlayerStatus {
INITIALIZING(9), // playback service is loading the Playable's metadata
INITIALIZED(10); // playback service was started, data source of media player was set.
- private int statusValue;
+ private final int statusValue;
private static final PlayerStatus[] fromOrdinalLookup;
static {
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/APCleanupAlgorithm.java b/core/src/main/java/de/danoeh/antennapod/core/storage/APCleanupAlgorithm.java
index e94874453..c63ac4416 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/APCleanupAlgorithm.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/APCleanupAlgorithm.java
@@ -2,6 +2,7 @@ package de.danoeh.antennapod.core.storage;
import android.content.Context;
import android.support.annotation.NonNull;
+import android.support.annotation.VisibleForTesting;
import android.util.Log;
import java.util.ArrayList;
@@ -20,11 +21,12 @@ import de.danoeh.antennapod.core.feed.FeedMedia;
public class APCleanupAlgorithm extends EpisodeCleanupAlgorithm {
private static final String TAG = "APCleanupAlgorithm";
- /** the number of days after playback to wait before an item is eligible to be cleaned up */
- private final int numberOfDaysAfterPlayback;
+ /** the number of days after playback to wait before an item is eligible to be cleaned up.
+ Fractional for number of hours, e.g., 0.5 = 12 hours, 0.0416 = 1 hour. */
+ private final int numberOfHoursAfterPlayback;
- public APCleanupAlgorithm(int numberOfDaysAfterPlayback) {
- this.numberOfDaysAfterPlayback = numberOfDaysAfterPlayback;
+ public APCleanupAlgorithm(int numberOfHoursAfterPlayback) {
+ this.numberOfHoursAfterPlayback = numberOfHoursAfterPlayback;
}
/**
@@ -77,13 +79,17 @@ public class APCleanupAlgorithm extends EpisodeCleanupAlgorithm {
return counter;
}
+ @VisibleForTesting
+ Date calcMostRecentDateForDeletion(@NonNull Date currentDate) {
+ return minusHours(currentDate, numberOfHoursAfterPlayback);
+ }
+
@NonNull
private List<FeedItem> getCandidates() {
List<FeedItem> candidates = new ArrayList<>();
List<FeedItem> downloadedItems = DBReader.getDownloadedItems();
- Calendar cal = Calendar.getInstance();
- cal.add(Calendar.DAY_OF_MONTH, -1 * numberOfDaysAfterPlayback);
- Date mostRecentDateForDeletion = cal.getTime();
+
+ Date mostRecentDateForDeletion = calcMostRecentDateForDeletion(new Date());
for (FeedItem item : downloadedItems) {
if (item.hasMedia()
&& item.getMedia().isDownloaded()
@@ -108,5 +114,16 @@ public class APCleanupAlgorithm extends EpisodeCleanupAlgorithm {
return getNumEpisodesToCleanup(0);
}
- public int getNumberOfDaysAfterPlayback() { return numberOfDaysAfterPlayback; }
+ @VisibleForTesting
+ public int getNumberOfHoursAfterPlayback() { return numberOfHoursAfterPlayback; }
+
+ private static Date minusHours(Date baseDate, int numberOfHours) {
+ Calendar cal = Calendar.getInstance();
+ cal.setTime(baseDate);
+
+ cal.add(Calendar.HOUR_OF_DAY, -1 * numberOfHours);
+
+ return cal.getTime();
+ }
+
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java
index fa87cc216..1b579f99a 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java
@@ -1,7 +1,10 @@
package de.danoeh.antennapod.core.storage;
import android.database.Cursor;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
import android.support.v4.util.ArrayMap;
+import android.text.TextUtils;
import android.util.Log;
import java.util.ArrayList;
@@ -13,7 +16,6 @@ import java.util.Map;
import de.danoeh.antennapod.core.feed.Chapter;
import de.danoeh.antennapod.core.feed.Feed;
-import de.danoeh.antennapod.core.feed.FeedImage;
import de.danoeh.antennapod.core.feed.FeedItem;
import de.danoeh.antennapod.core.feed.FeedMedia;
import de.danoeh.antennapod.core.feed.FeedPreferences;
@@ -57,6 +59,7 @@ public final class DBReader {
* of the returned list does NOT have its list of FeedItems yet. The FeedItem-list
* can be loaded separately with {@link #getFeedItemList(Feed)}.
*/
+ @NonNull
public static List<Feed> getFeedList() {
Log.d(TAG, "Extracting Feedlist");
@@ -69,13 +72,14 @@ public final class DBReader {
}
}
+ @NonNull
private static List<Feed> getFeedList(PodDBAdapter adapter) {
Cursor cursor = null;
try {
cursor = adapter.getAllFeedsCursor();
List<Feed> feeds = new ArrayList<>(cursor.getCount());
while (cursor.moveToNext()) {
- Feed feed = extractFeedFromCursorRow(adapter, cursor);
+ Feed feed = extractFeedFromCursorRow(cursor);
feeds.add(feed);
}
return feeds;
@@ -198,28 +202,19 @@ public final class DBReader {
}
}
+ @NonNull
private static List<FeedItem> extractItemlistFromCursor(PodDBAdapter adapter, Cursor cursor) {
List<FeedItem> result = new ArrayList<>(cursor.getCount());
- LongList imageIds = new LongList(cursor.getCount());
LongList itemIds = new LongList(cursor.getCount());
if (cursor.moveToFirst()) {
do {
- int indexImage = cursor.getColumnIndex(PodDBAdapter.KEY_IMAGE);
- long imageId = cursor.getLong(indexImage);
- imageIds.add(imageId);
-
FeedItem item = FeedItem.fromCursor(cursor);
result.add(item);
itemIds.add(item.getId());
} while (cursor.moveToNext());
- Map<Long, FeedImage> images = getFeedImages(adapter, imageIds.toArray());
Map<Long, FeedMedia> medias = getFeedMedia(adapter, itemIds);
- for (int i = 0; i < result.size(); i++) {
- FeedItem item = result.get(i);
- long imageId = imageIds.get(i);
- FeedImage image = images.get(imageId);
- item.setImage(image);
+ for (FeedItem item : result) {
FeedMedia media = medias.get(item.getId());
item.setMedia(media);
if (media != null) {
@@ -253,28 +248,14 @@ public final class DBReader {
return result;
}
- private static Feed extractFeedFromCursorRow(PodDBAdapter adapter, Cursor cursor) {
- final FeedImage image;
- int indexImage = cursor.getColumnIndex(PodDBAdapter.KEY_IMAGE);
- long imageId = cursor.getLong(indexImage);
- if (imageId != 0) {
- image = getFeedImage(adapter, imageId);
- } else {
- image = null;
- }
-
+ private static Feed extractFeedFromCursorRow(Cursor cursor) {
Feed feed = Feed.fromCursor(cursor);
- if (image != null) {
- feed.setImage(image);
- image.setOwner(feed);
- }
-
FeedPreferences preferences = FeedPreferences.fromCursor(cursor);
feed.setPreferences(preferences);
-
return feed;
}
+ @NonNull
static List<FeedItem> getQueue(PodDBAdapter adapter) {
Log.d(TAG, "getQueue()");
Cursor cursor = null;
@@ -331,6 +312,7 @@ public final class DBReader {
* @return A list of FeedItems sorted by the same order as the queue. The caller can wrap the returned
* list in a {@link de.danoeh.antennapod.core.util.QueueAccess} object for easier access to the queue's properties.
*/
+ @NonNull
public static List<FeedItem> getQueue() {
Log.d(TAG, "getQueue() called");
@@ -348,6 +330,7 @@ public final class DBReader {
*
* @return A list of FeedItems whose episdoe has been downloaded.
*/
+ @NonNull
public static List<FeedItem> getDownloadedItems() {
Log.d(TAG, "getDownloadedItems() called");
@@ -438,6 +421,7 @@ public final class DBReader {
*
* @param limit The maximum number of episodes that should be loaded.
*/
+ @NonNull
public static List<FeedItem> getRecentlyPublishedEpisodes(int limit) {
Log.d(TAG, "getRecentlyPublishedEpisodes() called with: " + "limit = [" + limit + "]");
@@ -464,6 +448,7 @@ public final class DBReader {
* @return The playback history. The FeedItems are sorted by their media's playbackCompletionDate in descending order.
* The size of the returned list is limited by {@link #PLAYBACK_HISTORY_SIZE}.
*/
+ @NonNull
public static List<FeedItem> getPlaybackHistory() {
Log.d(TAG, "getPlaybackHistory() called");
@@ -599,13 +584,14 @@ public final class DBReader {
}
}
+ @Nullable
static Feed getFeed(final long feedId, PodDBAdapter adapter) {
Feed feed = null;
Cursor cursor = null;
try {
cursor = adapter.getFeedCursor(feedId);
if (cursor.moveToNext()) {
- feed = extractFeedFromCursorRow(adapter, cursor);
+ feed = extractFeedFromCursorRow(cursor);
feed.setItems(getFeedItemList(feed));
} else {
Log.e(TAG, "getFeed could not find feed with id " + feedId);
@@ -618,6 +604,7 @@ public final class DBReader {
}
}
+ @Nullable
private static FeedItem getFeedItem(final long itemId, PodDBAdapter adapter) {
Log.d(TAG, "Loading feeditem with id " + itemId);
@@ -651,6 +638,7 @@ public final class DBReader {
* @return The FeedItem or null if the FeedItem could not be found. All FeedComponent-attributes
* as well as chapter marks of the FeedItem will also be loaded from the database.
*/
+ @Nullable
public static FeedItem getFeedItem(final long itemId) {
Log.d(TAG, "getFeedItem() called with: " + "itemId = [" + itemId + "]");
@@ -663,6 +651,7 @@ public final class DBReader {
}
}
+ @Nullable
private static FeedItem getFeedItem(final String podcastUrl, final String episodeUrl, PodDBAdapter adapter) {
Log.d(TAG, "Loading feeditem with podcast url " + podcastUrl + " and episode url " + episodeUrl);
Cursor cursor = null;
@@ -714,7 +703,7 @@ public final class DBReader {
if (cursor.moveToFirst()) {
String username = cursor.getString(0);
String password = cursor.getString(1);
- if (username != null && password != null) {
+ if (!TextUtils.isEmpty(username) && password != null) {
credentials = username + ":" + password;
} else {
credentials = "";
@@ -839,62 +828,6 @@ public final class DBReader {
}
/**
- * Searches the DB for a FeedImage of the given id.
- *
- * @param imageId The id of the object
- * @return The found object
- */
- public static FeedImage getFeedImage(final long imageId) {
- Log.d(TAG, "getFeedImage() called with: " + "imageId = [" + imageId + "]");
- PodDBAdapter adapter = PodDBAdapter.getInstance();
- adapter.open();
- try {
- return getFeedImage(adapter, imageId);
- } finally {
- adapter.close();
- }
- }
-
- /**
- * Searches the DB for a FeedImage of the given id.
- *
- * @param imageId The id of the object
- * @return The found object
- */
- private static FeedImage getFeedImage(PodDBAdapter adapter, final long imageId) {
- return getFeedImages(adapter, imageId).get(imageId);
- }
-
- /**
- * Searches the DB for a FeedImage of the given id.
- *
- * @param imageIds The ids of the images
- * @return Map that associates the id of an image with the image itself
- */
- private static Map<Long, FeedImage> getFeedImages(PodDBAdapter adapter, final long... imageIds) {
- String[] ids = new String[imageIds.length];
- for (int i = 0, len = imageIds.length; i < len; i++) {
- ids[i] = String.valueOf(imageIds[i]);
- }
- Cursor cursor = adapter.getImageCursor(ids);
- int imageCount = cursor.getCount();
- if (imageCount == 0) {
- cursor.close();
- return Collections.emptyMap();
- }
- Map<Long, FeedImage> result = new ArrayMap<>(imageCount);
- try {
- while (cursor.moveToNext()) {
- FeedImage image = FeedImage.fromCursor(cursor);
- result.put(image.getId(), image);
- }
- } finally {
- cursor.close();
- }
- return result;
- }
-
- /**
* Searches the DB for a FeedMedia of the given id.
*
* @param mediaId The id of the object
@@ -938,6 +871,7 @@ public final class DBReader {
* countAll calculation time
* @return The StatisticsInfo object
*/
+ @NonNull
public static StatisticsData getStatistics(boolean sortByCountAll) {
PodDBAdapter adapter = PodDBAdapter.getInstance();
adapter.open();
@@ -961,10 +895,6 @@ public final class DBReader {
continue;
}
- // played duration used to be reset when the item is added to the playback history
- if (media.getPlaybackCompletionDate() != null) {
- feedPlayedTime += media.getDuration() / 1000;
- }
feedPlayedTime += media.getPlayedDuration() / 1000;
if (item.isPlayed()) {
@@ -1088,7 +1018,7 @@ public final class DBReader {
Cursor feedCursor = adapter.getFeedsInFlattrQueueCursor();
if (feedCursor.moveToFirst()) {
do {
- result.add(extractFeedFromCursorRow(adapter, feedCursor));
+ result.add(extractFeedFromCursorRow(feedCursor));
} while (feedCursor.moveToNext());
}
feedCursor.close();
@@ -1108,6 +1038,7 @@ public final class DBReader {
* the list of subscriptions, the number of items in the queue and the number of unread
* items.
*/
+ @NonNull
public static NavDrawerData getNavDrawerData() {
Log.d(TAG, "getNavDrawerData() called with: " + "");
PodDBAdapter adapter = PodDBAdapter.getInstance();
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java
index da500fd3e..dab8e19b5 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java
@@ -1,11 +1,9 @@
package de.danoeh.antennapod.core.storage;
import android.content.Context;
-import android.content.Intent;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.support.annotation.Nullable;
-import android.support.v4.content.ContextCompat;
import android.util.Log;
import java.util.ArrayList;
@@ -19,7 +17,6 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.FutureTask;
-import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import de.danoeh.antennapod.core.ClientConfig;
@@ -30,12 +27,11 @@ import de.danoeh.antennapod.core.feed.Feed;
import de.danoeh.antennapod.core.feed.FeedItem;
import de.danoeh.antennapod.core.feed.FeedMedia;
import de.danoeh.antennapod.core.feed.FeedPreferences;
-import de.danoeh.antennapod.core.preferences.UserPreferences;
import de.danoeh.antennapod.core.service.GpodnetSyncService;
import de.danoeh.antennapod.core.service.download.DownloadStatus;
import de.danoeh.antennapod.core.service.playback.PlaybackService;
-import de.danoeh.antennapod.core.util.Converter;
import de.danoeh.antennapod.core.util.DownloadError;
+import de.danoeh.antennapod.core.util.IntentUtils;
import de.danoeh.antennapod.core.util.LongList;
import de.danoeh.antennapod.core.util.comparator.FeedItemPubdateComparator;
import de.danoeh.antennapod.core.util.exception.MediaFileNotFoundException;
@@ -142,8 +138,7 @@ public final class DBTasks {
} catch (MediaFileNotFoundException e) {
e.printStackTrace();
if (media.isPlaying()) {
- context.sendBroadcast(new Intent(
- PlaybackService.ACTION_SHUTDOWN_PLAYBACK_SERVICE));
+ IntentUtils.sendLocalBroadcast(context, PlaybackService.ACTION_SHUTDOWN_PLAYBACK_SERVICE);
}
notifyMissingFeedMediaFile(context, media);
}
@@ -198,8 +193,10 @@ public final class DBTasks {
if (ClientConfig.gpodnetCallbacks.gpodnetEnabled()) {
GpodnetSyncService.sendSyncIntent(context);
}
- Log.d(TAG, "refreshAllFeeds autodownload");
- autodownloadUndownloadedItems(context);
+ // Note: automatic download of episodes will be done but not here.
+ // Instead it is done after all feeds have been refreshed (asynchronously),
+ // in DownloadService.onDestroy()
+ // See Issue #2577 for the details of the rationale
if (callback != null) {
callback.run();
@@ -207,6 +204,11 @@ public final class DBTasks {
}).start();
}
+ public static long getLastRefreshAllFeedsTimeMillis(final Context context) {
+ SharedPreferences prefs = context.getSharedPreferences(DBTasks.PREF_NAME, MODE_PRIVATE);
+ return prefs.getLong(DBTasks.PREF_LAST_REFRESH, 0);
+ }
+
/**
* @param context
* @param feedList the list of feeds to refresh
@@ -237,27 +239,6 @@ public final class DBTasks {
}
/**
- * Downloads all pages of the given feed.
- *
- * @param context Used for requesting the download.
- * @param feed The Feed object.
- */
- public static void refreshCompleteFeed(final Context context, final Feed feed) {
- try {
- refreshFeed(context, feed, true, false);
- } catch (DownloadRequestException e) {
- e.printStackTrace();
- DBWriter.addDownloadStatus(
- new DownloadStatus(feed, feed
- .getHumanReadableIdentifier(),
- DownloadError.ERROR_REQUEST_ERROR, false, e
- .getMessage()
- )
- );
- }
- }
-
- /**
* Downloads all pages of the given feed even if feed has not been modified since last refresh
*
* @param context Used for requesting the download.
@@ -338,31 +319,6 @@ public final class DBTasks {
DownloadRequester.getInstance().downloadFeed(context, f, loadAllPages, force);
}
- /*
- * Checks if the app should refresh all feeds, i.e. if the last auto refresh failed.
- *
- * The feeds are only refreshed if an update interval or time of day is set and the last
- * (successful) refresh was before the last interval or more than a day ago, respectively.
- */
- public static void checkShouldRefreshFeeds(Context context) {
- long interval = 0;
- if(UserPreferences.getUpdateInterval() > 0) {
- interval = UserPreferences.getUpdateInterval();
- } else if(UserPreferences.getUpdateTimeOfDay().length > 0){
- interval = TimeUnit.DAYS.toMillis(1);
- }
- if(interval == 0) { // auto refresh is disabled
- return;
- }
- SharedPreferences prefs = context.getSharedPreferences(PREF_NAME, MODE_PRIVATE);
- long lastRefresh = prefs.getLong(PREF_LAST_REFRESH, 0);
- Log.d(TAG, "last refresh: " + Converter.getDurationStringLocalized(context,
- System.currentTimeMillis() - lastRefresh) + " ago");
- if(lastRefresh <= System.currentTimeMillis() - interval) {
- DBTasks.refreshAllFeeds(context, null);
- }
- }
-
/**
* Notifies the database about a missing FeedMedia file. This method will correct the FeedMedia object's values in the
* DB and send a FeedUpdateBroadcast.
@@ -378,27 +334,6 @@ public final class DBTasks {
}
/**
- * Request the download of all objects in the queue. from a separate Thread.
- *
- * @param context Used for requesting the download an accessing the database.
- */
- public static void downloadAllItemsInQueue(final Context context) {
- new Thread() {
- public void run() {
- List<FeedItem> queue = DBReader.getQueue();
- if (!queue.isEmpty()) {
- try {
- downloadFeedItems(context,
- queue.toArray(new FeedItem[queue.size()]));
- } catch (DownloadRequestException e) {
- e.printStackTrace();
- }
- }
- }
- }.start();
- }
-
- /**
* Requests the download of a list of FeedItem objects.
*
* @param context Used for requesting the download and accessing the DB.
@@ -817,10 +752,8 @@ public final class DBTasks {
*/
abstract static class QueryTask<T> implements Callable<T> {
private T result;
- private final Context context;
public QueryTask(Context context) {
- this.context = context;
}
@Override
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBUpgrader.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBUpgrader.java
new file mode 100644
index 000000000..0beb765e7
--- /dev/null
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBUpgrader.java
@@ -0,0 +1,293 @@
+package de.danoeh.antennapod.core.storage;
+
+import android.content.ContentValues;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteDatabase;
+import android.media.MediaMetadataRetriever;
+import android.util.Log;
+
+import de.danoeh.antennapod.core.feed.FeedItem;
+
+class DBUpgrader {
+ /**
+ * Upgrades the given database to a new schema version
+ */
+ static void upgrade(final SQLiteDatabase db, final int oldVersion, final int newVersion) {
+ if (oldVersion <= 1) {
+ db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS + " ADD COLUMN "
+ + PodDBAdapter.KEY_TYPE + " TEXT");
+ }
+ if (oldVersion <= 2) {
+ db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_SIMPLECHAPTERS
+ + " ADD COLUMN " + PodDBAdapter.KEY_LINK + " TEXT");
+ }
+ if (oldVersion <= 3) {
+ db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEED_ITEMS
+ + " ADD COLUMN " + PodDBAdapter.KEY_ITEM_IDENTIFIER + " TEXT");
+ }
+ if (oldVersion <= 4) {
+ db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS + " ADD COLUMN "
+ + PodDBAdapter.KEY_FEED_IDENTIFIER + " TEXT");
+ }
+ if (oldVersion <= 5) {
+ db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_DOWNLOAD_LOG
+ + " ADD COLUMN " + PodDBAdapter.KEY_REASON_DETAILED + " TEXT");
+ db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_DOWNLOAD_LOG
+ + " ADD COLUMN " + PodDBAdapter.KEY_DOWNLOADSTATUS_TITLE + " TEXT");
+ }
+ if (oldVersion <= 6) {
+ db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_SIMPLECHAPTERS
+ + " ADD COLUMN " + PodDBAdapter.KEY_CHAPTER_TYPE + " INTEGER");
+ }
+ if (oldVersion <= 7) {
+ db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEED_MEDIA
+ + " ADD COLUMN " + PodDBAdapter.KEY_PLAYBACK_COMPLETION_DATE
+ + " INTEGER");
+ }
+ if (oldVersion <= 8) {
+ final int KEY_ID_POSITION = 0;
+ final int KEY_MEDIA_POSITION = 1;
+
+ // Add feeditem column to feedmedia table
+ db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEED_MEDIA
+ + " ADD COLUMN " + PodDBAdapter.KEY_FEEDITEM
+ + " INTEGER");
+ Cursor feeditemCursor = db.query(PodDBAdapter.TABLE_NAME_FEED_ITEMS,
+ new String[]{PodDBAdapter.KEY_ID, PodDBAdapter.KEY_MEDIA}, "? > 0",
+ new String[]{PodDBAdapter.KEY_MEDIA}, null, null, null);
+ if (feeditemCursor.moveToFirst()) {
+ db.beginTransaction();
+ ContentValues contentValues = new ContentValues();
+ do {
+ long mediaId = feeditemCursor.getLong(KEY_MEDIA_POSITION);
+ contentValues.put(PodDBAdapter.KEY_FEEDITEM, feeditemCursor.getLong(KEY_ID_POSITION));
+ db.update(PodDBAdapter.TABLE_NAME_FEED_MEDIA, contentValues, PodDBAdapter.KEY_ID + "=?", new String[]{String.valueOf(mediaId)});
+ contentValues.clear();
+ } while (feeditemCursor.moveToNext());
+ db.setTransactionSuccessful();
+ db.endTransaction();
+ }
+ feeditemCursor.close();
+ }
+ if (oldVersion <= 9) {
+ db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS
+ + " ADD COLUMN " + PodDBAdapter.KEY_AUTO_DOWNLOAD
+ + " INTEGER DEFAULT 1");
+ }
+ if (oldVersion <= 10) {
+ db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS
+ + " ADD COLUMN " + PodDBAdapter.KEY_FLATTR_STATUS
+ + " INTEGER");
+ db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEED_ITEMS
+ + " ADD COLUMN " + PodDBAdapter.KEY_FLATTR_STATUS
+ + " INTEGER");
+ db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEED_MEDIA
+ + " ADD COLUMN " + PodDBAdapter.KEY_PLAYED_DURATION
+ + " INTEGER");
+ }
+ if (oldVersion <= 11) {
+ db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS
+ + " ADD COLUMN " + PodDBAdapter.KEY_USERNAME
+ + " TEXT");
+ db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS
+ + " ADD COLUMN " + PodDBAdapter.KEY_PASSWORD
+ + " TEXT");
+ db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEED_ITEMS
+ + " ADD COLUMN " + PodDBAdapter.KEY_IMAGE
+ + " INTEGER");
+ }
+ if (oldVersion <= 12) {
+ db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS
+ + " ADD COLUMN " + PodDBAdapter.KEY_IS_PAGED + " INTEGER DEFAULT 0");
+ db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS
+ + " ADD COLUMN " + PodDBAdapter.KEY_NEXT_PAGE_LINK + " TEXT");
+ }
+ if (oldVersion <= 13) {
+ // remove duplicate rows in "Chapters" table that were created because of a bug.
+ db.execSQL(String.format("DELETE FROM %s WHERE %s NOT IN " +
+ "(SELECT MIN(%s) as %s FROM %s GROUP BY %s,%s,%s,%s,%s)",
+ PodDBAdapter.TABLE_NAME_SIMPLECHAPTERS,
+ PodDBAdapter.KEY_ID,
+ PodDBAdapter.KEY_ID,
+ PodDBAdapter.KEY_ID,
+ PodDBAdapter.TABLE_NAME_SIMPLECHAPTERS,
+ PodDBAdapter.KEY_TITLE,
+ PodDBAdapter.KEY_START,
+ PodDBAdapter.KEY_FEEDITEM,
+ PodDBAdapter.KEY_LINK,
+ PodDBAdapter.KEY_CHAPTER_TYPE));
+ }
+ if (oldVersion <= 14) {
+ db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEED_ITEMS
+ + " ADD COLUMN " + PodDBAdapter.KEY_AUTO_DOWNLOAD + " INTEGER");
+ db.execSQL("UPDATE " + PodDBAdapter.TABLE_NAME_FEED_ITEMS
+ + " SET " + PodDBAdapter.KEY_AUTO_DOWNLOAD + " = "
+ + "(SELECT " + PodDBAdapter.KEY_AUTO_DOWNLOAD
+ + " FROM " + PodDBAdapter.TABLE_NAME_FEEDS
+ + " WHERE " + PodDBAdapter.TABLE_NAME_FEEDS + "." + PodDBAdapter.KEY_ID
+ + " = " + PodDBAdapter.TABLE_NAME_FEED_ITEMS + "." + PodDBAdapter.KEY_FEED + ")");
+
+ db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS
+ + " ADD COLUMN " + PodDBAdapter.KEY_HIDE + " TEXT");
+
+ db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS
+ + " ADD COLUMN " + PodDBAdapter.KEY_LAST_UPDATE_FAILED + " INTEGER DEFAULT 0");
+
+ // create indexes
+ db.execSQL(PodDBAdapter.CREATE_INDEX_FEEDITEMS_FEED);
+ db.execSQL(PodDBAdapter.CREATE_INDEX_FEEDMEDIA_FEEDITEM);
+ db.execSQL(PodDBAdapter.CREATE_INDEX_QUEUE_FEEDITEM);
+ db.execSQL(PodDBAdapter.CREATE_INDEX_SIMPLECHAPTERS_FEEDITEM);
+ }
+ if (oldVersion <= 15) {
+ db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEED_MEDIA
+ + " ADD COLUMN " + PodDBAdapter.KEY_HAS_EMBEDDED_PICTURE + " INTEGER DEFAULT -1");
+ db.execSQL("UPDATE " + PodDBAdapter.TABLE_NAME_FEED_MEDIA
+ + " SET " + PodDBAdapter.KEY_HAS_EMBEDDED_PICTURE + "=0"
+ + " WHERE " + PodDBAdapter.KEY_DOWNLOADED + "=0");
+ Cursor c = db.rawQuery("SELECT " + PodDBAdapter.KEY_FILE_URL
+ + " FROM " + PodDBAdapter.TABLE_NAME_FEED_MEDIA
+ + " WHERE " + PodDBAdapter.KEY_DOWNLOADED + "=1 "
+ + " AND " + PodDBAdapter.KEY_HAS_EMBEDDED_PICTURE + "=-1", null);
+ if (c.moveToFirst()) {
+ MediaMetadataRetriever mmr = new MediaMetadataRetriever();
+ do {
+ String fileUrl = c.getString(0);
+ try {
+ mmr.setDataSource(fileUrl);
+ byte[] image = mmr.getEmbeddedPicture();
+ if (image != null) {
+ db.execSQL("UPDATE " + PodDBAdapter.TABLE_NAME_FEED_MEDIA
+ + " SET " + PodDBAdapter.KEY_HAS_EMBEDDED_PICTURE + "=1"
+ + " WHERE " + PodDBAdapter.KEY_FILE_URL + "='" + fileUrl + "'");
+ } else {
+ db.execSQL("UPDATE " + PodDBAdapter.TABLE_NAME_FEED_MEDIA
+ + " SET " + PodDBAdapter.KEY_HAS_EMBEDDED_PICTURE + "=0"
+ + " WHERE " + PodDBAdapter.KEY_FILE_URL + "='" + fileUrl + "'");
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ } while (c.moveToNext());
+ }
+ c.close();
+ }
+ if (oldVersion <= 16) {
+ String selectNew = "SELECT " + PodDBAdapter.TABLE_NAME_FEED_ITEMS + "." + PodDBAdapter.KEY_ID
+ + " FROM " + PodDBAdapter.TABLE_NAME_FEED_ITEMS
+ + " INNER JOIN " + PodDBAdapter.TABLE_NAME_FEED_MEDIA + " ON "
+ + PodDBAdapter.TABLE_NAME_FEED_ITEMS + "." + PodDBAdapter.KEY_ID + "="
+ + PodDBAdapter.TABLE_NAME_FEED_MEDIA + "." + PodDBAdapter.KEY_FEEDITEM
+ + " LEFT OUTER JOIN " + PodDBAdapter.TABLE_NAME_QUEUE + " ON "
+ + PodDBAdapter.TABLE_NAME_FEED_ITEMS + "." + PodDBAdapter.KEY_ID + "="
+ + PodDBAdapter.TABLE_NAME_QUEUE + "." + PodDBAdapter.KEY_FEEDITEM
+ + " WHERE "
+ + PodDBAdapter.TABLE_NAME_FEED_ITEMS + "." + PodDBAdapter.KEY_READ + " = 0 AND " // unplayed
+ + PodDBAdapter.TABLE_NAME_FEED_MEDIA + "." + PodDBAdapter.KEY_DOWNLOADED + " = 0 AND " // undownloaded
+ + PodDBAdapter.TABLE_NAME_FEED_MEDIA + "." + PodDBAdapter.KEY_POSITION + " = 0 AND " // not partially played
+ + PodDBAdapter.TABLE_NAME_QUEUE + "." + PodDBAdapter.KEY_ID + " IS NULL"; // not in queue
+ String sql = "UPDATE " + PodDBAdapter.TABLE_NAME_FEED_ITEMS
+ + " SET " + PodDBAdapter.KEY_READ + "=" + FeedItem.NEW
+ + " WHERE " + PodDBAdapter.KEY_ID + " IN (" + selectNew + ")";
+ Log.d("Migration", "SQL: " + sql);
+ db.execSQL(sql);
+ }
+ if (oldVersion <= 17) {
+ db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS
+ + " ADD COLUMN " + PodDBAdapter.KEY_AUTO_DELETE_ACTION + " INTEGER DEFAULT 0");
+ }
+ if (oldVersion < 1030005) {
+ db.execSQL("UPDATE FeedItems SET auto_download=0 WHERE " +
+ "(read=1 OR id IN (SELECT feeditem FROM FeedMedia WHERE position>0 OR downloaded=1)) " +
+ "AND id NOT IN (SELECT feeditem FROM Queue)");
+ }
+ if (oldVersion < 1040001) {
+ db.execSQL(PodDBAdapter.CREATE_TABLE_FAVORITES);
+ }
+ if (oldVersion < 1040002) {
+ db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEED_MEDIA
+ + " ADD COLUMN " + PodDBAdapter.KEY_LAST_PLAYED_TIME + " INTEGER DEFAULT 0");
+ }
+ if (oldVersion < 1040013) {
+ db.execSQL(PodDBAdapter.CREATE_INDEX_FEEDITEMS_PUBDATE);
+ db.execSQL(PodDBAdapter.CREATE_INDEX_FEEDITEMS_READ);
+ }
+ if (oldVersion < 1050003) {
+ // Migrates feed list filter data
+
+ db.beginTransaction();
+
+ // Change to intermediate values to avoid overwriting in the following find/replace
+ db.execSQL("UPDATE " + PodDBAdapter.TABLE_NAME_FEEDS + "\n" +
+ "SET " + PodDBAdapter.KEY_HIDE + " = replace(" + PodDBAdapter.KEY_HIDE + ", 'unplayed', 'noplay')");
+ db.execSQL("UPDATE " + PodDBAdapter.TABLE_NAME_FEEDS + "\n" +
+ "SET " + PodDBAdapter.KEY_HIDE + " = replace(" + PodDBAdapter.KEY_HIDE + ", 'not_queued', 'noqueue')");
+ db.execSQL("UPDATE " + PodDBAdapter.TABLE_NAME_FEEDS + "\n" +
+ "SET " + PodDBAdapter.KEY_HIDE + " = replace(" + PodDBAdapter.KEY_HIDE + ", 'not_downloaded', 'nodl')");
+
+ // Replace played, queued, and downloaded with their opposites
+ db.execSQL("UPDATE " + PodDBAdapter.TABLE_NAME_FEEDS + "\n" +
+ "SET " + PodDBAdapter.KEY_HIDE + " = replace(" + PodDBAdapter.KEY_HIDE + ", 'played', 'unplayed')");
+ db.execSQL("UPDATE " + PodDBAdapter.TABLE_NAME_FEEDS + "\n" +
+ "SET " + PodDBAdapter.KEY_HIDE + " = replace(" + PodDBAdapter.KEY_HIDE + ", 'queued', 'not_queued')");
+ db.execSQL("UPDATE " + PodDBAdapter.TABLE_NAME_FEEDS + "\n" +
+ "SET " + PodDBAdapter.KEY_HIDE + " = replace(" + PodDBAdapter.KEY_HIDE + ", 'downloaded', 'not_downloaded')");
+
+ // Now replace intermediates for unplayed, not queued, etc. with their opposites
+ db.execSQL("UPDATE " + PodDBAdapter.TABLE_NAME_FEEDS + "\n" +
+ "SET " + PodDBAdapter.KEY_HIDE + " = replace(" + PodDBAdapter.KEY_HIDE + ", 'noplay', 'played')");
+ db.execSQL("UPDATE " + PodDBAdapter.TABLE_NAME_FEEDS + "\n" +
+ "SET " + PodDBAdapter.KEY_HIDE + " = replace(" + PodDBAdapter.KEY_HIDE + ", 'noqueue', 'queued')");
+ db.execSQL("UPDATE " + PodDBAdapter.TABLE_NAME_FEEDS + "\n" +
+ "SET " + PodDBAdapter.KEY_HIDE + " = replace(" + PodDBAdapter.KEY_HIDE + ", 'nodl', 'downloaded')");
+
+ // Paused doesn't have an opposite, so unplayed is the next best option
+ db.execSQL("UPDATE " + PodDBAdapter.TABLE_NAME_FEEDS + "\n" +
+ "SET " + PodDBAdapter.KEY_HIDE + " = replace(" + PodDBAdapter.KEY_HIDE + ", 'paused', 'unplayed')");
+
+ db.setTransactionSuccessful();
+ db.endTransaction();
+
+ // and now get ready for autodownload filters
+ db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS
+ + " ADD COLUMN " + PodDBAdapter.KEY_INCLUDE_FILTER + " TEXT DEFAULT ''");
+
+ db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS
+ + " ADD COLUMN " + PodDBAdapter.KEY_EXCLUDE_FILTER + " TEXT DEFAULT ''");
+
+ // and now auto refresh
+ db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS
+ + " ADD COLUMN " + PodDBAdapter.KEY_KEEP_UPDATED + " INTEGER DEFAULT 1");
+ }
+ if (oldVersion < 1050004) {
+ // prevent old timestamps to be misinterpreted as ETags
+ db.execSQL("UPDATE " + PodDBAdapter.TABLE_NAME_FEEDS
+ + " SET " + PodDBAdapter.KEY_LASTUPDATE + "=NULL");
+ }
+ if (oldVersion < 1060200) {
+ db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS
+ + " ADD COLUMN " + PodDBAdapter.KEY_CUSTOM_TITLE + " TEXT");
+ }
+ if (oldVersion < 1060596) {
+ db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS
+ + " ADD COLUMN " + PodDBAdapter.KEY_IMAGE_URL + " TEXT");
+ db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEED_ITEMS
+ + " ADD COLUMN " + PodDBAdapter.KEY_IMAGE_URL + " TEXT");
+
+ db.execSQL("UPDATE " + PodDBAdapter.TABLE_NAME_FEED_ITEMS + " SET " + PodDBAdapter.KEY_IMAGE_URL + " = ("
+ + " SELECT " + PodDBAdapter.KEY_DOWNLOAD_URL
+ + " FROM " + PodDBAdapter.TABLE_NAME_FEED_IMAGES
+ + " WHERE " + PodDBAdapter.TABLE_NAME_FEED_IMAGES + "." + PodDBAdapter.KEY_ID
+ + " = " + PodDBAdapter.TABLE_NAME_FEED_ITEMS + "." + PodDBAdapter.KEY_IMAGE + ")");
+
+ db.execSQL("UPDATE " + PodDBAdapter.TABLE_NAME_FEEDS + " SET " + PodDBAdapter.KEY_IMAGE_URL + " = ("
+ + " SELECT " + PodDBAdapter.KEY_DOWNLOAD_URL
+ + " FROM " + PodDBAdapter.TABLE_NAME_FEED_IMAGES
+ + " WHERE " + PodDBAdapter.TABLE_NAME_FEED_IMAGES + "." + PodDBAdapter.KEY_ID
+ + " = " + PodDBAdapter.TABLE_NAME_FEEDS + "." + PodDBAdapter.KEY_IMAGE + ")");
+
+ db.execSQL("DROP TABLE " + PodDBAdapter.TABLE_NAME_FEED_IMAGES);
+ }
+ }
+
+}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java
index 8cdf82e15..f7226729a 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java
@@ -5,6 +5,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
+import android.support.annotation.NonNull;
import android.util.Log;
import org.shredzone.flattr4j.model.Flattr;
@@ -32,7 +33,6 @@ import de.danoeh.antennapod.core.event.QueueEvent;
import de.danoeh.antennapod.core.feed.EventDistributor;
import de.danoeh.antennapod.core.feed.Feed;
import de.danoeh.antennapod.core.feed.FeedEvent;
-import de.danoeh.antennapod.core.feed.FeedImage;
import de.danoeh.antennapod.core.feed.FeedItem;
import de.danoeh.antennapod.core.feed.FeedMedia;
import de.danoeh.antennapod.core.feed.FeedPreferences;
@@ -42,6 +42,7 @@ import de.danoeh.antennapod.core.preferences.PlaybackPreferences;
import de.danoeh.antennapod.core.preferences.UserPreferences;
import de.danoeh.antennapod.core.service.download.DownloadStatus;
import de.danoeh.antennapod.core.service.playback.PlaybackService;
+import de.danoeh.antennapod.core.util.IntentUtils;
import de.danoeh.antennapod.core.util.LongList;
import de.danoeh.antennapod.core.util.Permutor;
import de.danoeh.antennapod.core.util.flattr.FlattrStatus;
@@ -80,65 +81,72 @@ public class DBWriter {
* @param context A context that is used for opening a database connection.
* @param mediaId ID of the FeedMedia object whose downloaded file should be deleted.
*/
- public static Future<?> deleteFeedMediaOfItem(final Context context,
+ public static Future<?> deleteFeedMediaOfItem(@NonNull final Context context,
final long mediaId) {
return dbExec.submit(() -> {
final FeedMedia media = DBReader.getFeedMedia(mediaId);
if (media != null) {
- Log.i(TAG, String.format("Requested to delete FeedMedia [id=%d, title=%s, downloaded=%s",
- media.getId(), media.getEpisodeTitle(), String.valueOf(media.isDownloaded())));
- if (media.isDownloaded()) {
- // delete downloaded media file
- File mediaFile = new File(media.getFile_url());
- if (mediaFile.exists() && !mediaFile.delete()) {
- MessageEvent evt = new MessageEvent(context.getString(R.string.delete_failed));
- EventBus.getDefault().post(evt);
- return;
- }
- media.setDownloaded(false);
- media.setFile_url(null);
- media.setHasEmbeddedPicture(false);
- PodDBAdapter adapter = PodDBAdapter.getInstance();
- adapter.open();
- adapter.setMedia(media);
- adapter.close();
-
- // If media is currently being played, change playback
- // type to 'stream' and shutdown playback service
- SharedPreferences prefs = PreferenceManager
- .getDefaultSharedPreferences(context);
- if (PlaybackPreferences.getCurrentlyPlayingMedia() == FeedMedia.PLAYABLE_TYPE_FEEDMEDIA) {
- if (media.getId() == PlaybackPreferences
- .getCurrentlyPlayingFeedMediaId()) {
- SharedPreferences.Editor editor = prefs.edit();
- editor.putBoolean(
- PlaybackPreferences.PREF_CURRENT_EPISODE_IS_STREAM,
- true);
- editor.commit();
- }
- if (PlaybackPreferences
- .getCurrentlyPlayingFeedMediaId() == media
- .getId()) {
- context.sendBroadcast(new Intent(
- PlaybackService.ACTION_SHUTDOWN_PLAYBACK_SERVICE));
- }
- }
- // Gpodder: queue delete action for synchronization
- if(GpodnetPreferences.loggedIn()) {
- FeedItem item = media.getItem();
- GpodnetEpisodeAction action = new GpodnetEpisodeAction.Builder(item, GpodnetEpisodeAction.Action.DELETE)
- .currentDeviceId()
- .currentTimestamp()
- .build();
- GpodnetPreferences.enqueueEpisodeAction(action);
- }
+ boolean result = deleteFeedMediaSynchronous(context, media);
+
+ if (result && UserPreferences.shouldDeleteRemoveFromQueue()) {
+ DBWriter.removeQueueItemSynchronous(context, false, media.getItem().getId());
}
- EventBus.getDefault().post(FeedItemEvent.deletedMedia(Collections.singletonList(media.getItem())));
- EventDistributor.getInstance().sendUnreadItemsUpdateBroadcast();
}
});
}
+ private static boolean deleteFeedMediaSynchronous(@NonNull Context context, @NonNull FeedMedia media) {
+ Log.i(TAG, String.format("Requested to delete FeedMedia [id=%d, title=%s, downloaded=%s",
+ media.getId(), media.getEpisodeTitle(), String.valueOf(media.isDownloaded())));
+ if (media.isDownloaded()) {
+ // delete downloaded media file
+ File mediaFile = new File(media.getFile_url());
+ if (mediaFile.exists() && !mediaFile.delete()) {
+ MessageEvent evt = new MessageEvent(context.getString(R.string.delete_failed));
+ EventBus.getDefault().post(evt);
+ return false;
+ }
+ media.setDownloaded(false);
+ media.setFile_url(null);
+ media.setHasEmbeddedPicture(false);
+ PodDBAdapter adapter = PodDBAdapter.getInstance();
+ adapter.open();
+ adapter.setMedia(media);
+ adapter.close();
+
+ // If media is currently being played, change playback
+ // type to 'stream' and shutdown playback service
+ SharedPreferences prefs = PreferenceManager
+ .getDefaultSharedPreferences(context);
+ if (PlaybackPreferences.getCurrentlyPlayingMedia() == FeedMedia.PLAYABLE_TYPE_FEEDMEDIA) {
+ if (media.getId() == PlaybackPreferences
+ .getCurrentlyPlayingFeedMediaId()) {
+ SharedPreferences.Editor editor = prefs.edit();
+ editor.putBoolean(
+ PlaybackPreferences.PREF_CURRENT_EPISODE_IS_STREAM,
+ true);
+ editor.commit();
+ }
+ if (PlaybackPreferences.getCurrentlyPlayingFeedMediaId() == media.getId()) {
+ IntentUtils.sendLocalBroadcast(context, PlaybackService.ACTION_SHUTDOWN_PLAYBACK_SERVICE);
+ }
+ }
+ // Gpodder: queue delete action for synchronization
+ if(GpodnetPreferences.loggedIn()) {
+ FeedItem item = media.getItem();
+ GpodnetEpisodeAction action = new GpodnetEpisodeAction.Builder(item, GpodnetEpisodeAction.Action.DELETE)
+ .currentDeviceId()
+ .currentTimestamp()
+ .build();
+ GpodnetPreferences.enqueueEpisodeAction(action);
+ }
+ }
+ EventBus.getDefault().post(FeedItemEvent.deletedMedia(Collections.singletonList(media.getItem())));
+ EventDistributor.getInstance().sendUnreadItemsUpdateBroadcast();
+
+ return true;
+ }
+
/**
* Deletes a Feed and all downloaded files of its components like images and downloaded episodes.
*
@@ -157,8 +165,7 @@ public class DBWriter {
if (PlaybackPreferences.getCurrentlyPlayingMedia() == FeedMedia.PLAYABLE_TYPE_FEEDMEDIA
&& PlaybackPreferences.getLastPlayedFeedId() == feed
.getId()) {
- context.sendBroadcast(new Intent(
- PlaybackService.ACTION_SHUTDOWN_PLAYBACK_SERVICE));
+ IntentUtils.sendLocalBroadcast(context, PlaybackService.ACTION_SHUTDOWN_PLAYBACK_SERVICE);
SharedPreferences.Editor editor = prefs.edit();
editor.putLong(
PlaybackPreferences.PREF_CURRENTLY_PLAYING_FEED_ID,
@@ -166,17 +173,6 @@ public class DBWriter {
editor.commit();
}
- // delete image file
- if (feed.getImage() != null) {
- if (feed.getImage().isDownloaded()
- && feed.getImage().getFile_url() != null) {
- File imageFile = new File(feed.getImage()
- .getFile_url());
- imageFile.delete();
- } else if (requester.isDownloadingFile(feed.getImage())) {
- requester.cancelDownload(context, feed.getImage());
- }
- }
// delete stored media files and mark them as read
List<FeedItem> queue = DBReader.getQueue();
List<FeedItem> removed = new ArrayList<>();
@@ -200,16 +196,6 @@ public class DBWriter {
&& requester.isDownloadingFile(item.getMedia())) {
requester.cancelDownload(context, item.getMedia());
}
-
- if (item.hasItemImage()) {
- FeedImage image = item.getImage();
- if (image.isDownloaded() && image.getFile_url() != null) {
- File imgFile = new File(image.getFile_url());
- imgFile.delete();
- } else if (requester.isDownloadingFile(image)) {
- requester.cancelDownload(context, item.getImage());
- }
- }
}
PodDBAdapter adapter = PodDBAdapter.getInstance();
adapter.open();
@@ -437,38 +423,68 @@ public class DBWriter {
/**
* Removes a FeedItem object from the queue.
- *
- * @param context A context that is used for opening a database connection.
- * @param item FeedItem that should be removed.
+ * @param context A context that is used for opening a database connection.
* @param performAutoDownload true if an auto-download process should be started after the operation.
+ * @param item FeedItem that should be removed.
*/
public static Future<?> removeQueueItem(final Context context,
- final FeedItem item, final boolean performAutoDownload) {
- return dbExec.submit(() -> {
- final PodDBAdapter adapter = PodDBAdapter.getInstance();
- adapter.open();
- final List<FeedItem> queue = DBReader.getQueue(adapter);
+ final boolean performAutoDownload, final FeedItem item) {
+ return dbExec.submit(() -> removeQueueItemSynchronous(context, performAutoDownload, item.getId()));
+ }
- if (queue != null) {
- int position = queue.indexOf(item);
+ public static Future<?> removeQueueItem(final Context context, final boolean performAutoDownload,
+ final long... itemIds) {
+ return dbExec.submit(() -> removeQueueItemSynchronous(context, performAutoDownload, itemIds));
+ }
+
+ private static void removeQueueItemSynchronous(final Context context,
+ final boolean performAutoDownload,
+ final long... itemIds) {
+ if (itemIds.length < 1) {
+ return;
+ }
+ final PodDBAdapter adapter = PodDBAdapter.getInstance();
+ adapter.open();
+ final List<FeedItem> queue = DBReader.getQueue(adapter);
+
+ if (queue != null) {
+ boolean queueModified = false;
+ List<QueueEvent> events = new ArrayList<>();
+ List<FeedItem> updatedItems = new ArrayList<>();
+ for (long itemId : itemIds) {
+ int position = indexInItemList(queue, itemId);
if (position >= 0) {
+ final FeedItem item = DBReader.getFeedItem(itemId);
+ if (item == null) {
+ Log.e(TAG, "removeQueueItem - item in queue but somehow cannot be loaded." +
+ " Item ignored. It should never happen. id:" + itemId);
+ continue;
+ }
queue.remove(position);
- adapter.setQueue(queue);
item.removeTag(FeedItem.TAG_QUEUE);
- EventBus.getDefault().post(QueueEvent.removed(item));
- EventBus.getDefault().post(FeedItemEvent.updated(item));
+ events.add(QueueEvent.removed(item));
+ updatedItems.add(item);
+ queueModified = true;
} else {
- Log.w(TAG, "Queue was not modified by call to removeQueueItem");
+ Log.v(TAG, "removeQueueItem - item not in queue:" + itemId);
}
- } else {
- Log.e(TAG, "removeQueueItem: Could not load queue");
}
- adapter.close();
- if (performAutoDownload) {
- DBTasks.autodownloadUndownloadedItems(context);
+ if (queueModified) {
+ adapter.setQueue(queue);
+ for (QueueEvent event : events) {
+ EventBus.getDefault().post(event);
+ }
+ EventBus.getDefault().post(FeedItemEvent.updated(updatedItems));
+ } else {
+ Log.w(TAG, "Queue was not modified by call to removeQueueItem");
}
- });
-
+ } else {
+ Log.e(TAG, "removeQueueItem: Could not load queue");
+ }
+ adapter.close();
+ if (performAutoDownload) {
+ DBTasks.autodownloadUndownloadedItems(context);
+ }
}
public static Future<?> addFavoriteItem(final FeedItem item) {
@@ -482,22 +498,6 @@ public class DBWriter {
});
}
- public static Future<?> addFavoriteItemById(final long itemId) {
- return dbExec.submit(() -> {
- final FeedItem item = DBReader.getFeedItem(itemId);
- if (item == null) {
- Log.d(TAG, "Can't find item for itemId " + itemId);
- return;
- }
- final PodDBAdapter adapter = PodDBAdapter.getInstance().open();
- adapter.addFavoriteItem(item);
- adapter.close();
- item.addTag(FeedItem.TAG_FAVORITE);
- EventBus.getDefault().post(FavoritesEvent.added(item));
- EventBus.getDefault().post(FeedItemEvent.updated(item));
- });
- }
-
public static Future<?> removeFavoriteItem(final FeedItem item) {
return dbExec.submit(() -> {
final PodDBAdapter adapter = PodDBAdapter.getInstance().open();
@@ -633,11 +633,13 @@ public class DBWriter {
* FeedItem.NEW, FeedItem.UNPLAYED
* @param resetMediaPosition true if this method should also reset the position of the FeedItem's FeedMedia object.
*/
+ @NonNull
public static Future<?> markItemPlayed(FeedItem item, int played, boolean resetMediaPosition) {
long mediaId = (item.hasMedia()) ? item.getMedia().getId() : 0;
return markItemPlayed(item.getId(), played, mediaId, resetMediaPosition);
}
+ @NonNull
private static Future<?> markItemPlayed(final long itemId,
final int played,
final long mediaId,
@@ -786,21 +788,6 @@ public class DBWriter {
}
/**
- * Saves a FeedImage object in the database. This method will save all attributes of the FeedImage object. The
- * contents of FeedComponent-attributes (e.g. the FeedImages's 'feed'-attribute) will not be saved.
- *
- * @param image The FeedImage object.
- */
- public static Future<?> setFeedImage(final FeedImage image) {
- return dbExec.submit(() -> {
- PodDBAdapter adapter = PodDBAdapter.getInstance();
- adapter.open();
- adapter.setImage(image);
- adapter.close();
- });
- }
-
- /**
* Updates download URL of a feed
*/
public static Future<?> updateFeedDownloadURL(final String original, final String updated) {
@@ -829,12 +816,17 @@ public class DBWriter {
}
private static boolean itemListContains(List<FeedItem> items, long itemId) {
- for (FeedItem item : items) {
+ return indexInItemList(items, itemId) >= 0;
+ }
+
+ private static int indexInItemList(List<FeedItem> items, long itemId) {
+ for (int i = 0; i < items.size(); i ++) {
+ FeedItem item = items.get(i);
if (item.getId() == itemId) {
- return true;
+ return i;
}
}
- return false;
+ return -1;
}
/**
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DownloadRequester.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DownloadRequester.java
index 7d4b737db..892a4675a 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/DownloadRequester.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DownloadRequester.java
@@ -23,6 +23,7 @@ import de.danoeh.antennapod.core.preferences.UserPreferences;
import de.danoeh.antennapod.core.service.download.DownloadRequest;
import de.danoeh.antennapod.core.service.download.DownloadService;
import de.danoeh.antennapod.core.util.FileNameGenerator;
+import de.danoeh.antennapod.core.util.IntentUtils;
import de.danoeh.antennapod.core.util.URLChecker;
@@ -242,6 +243,7 @@ public class DownloadRequester {
Log.d(TAG, "Cancelling download with url " + downloadUrl);
Intent cancelIntent = new Intent(DownloadService.ACTION_CANCEL_DOWNLOAD);
cancelIntent.putExtra(DownloadService.EXTRA_DOWNLOAD_URL, downloadUrl);
+ cancelIntent.setPackage(context.getPackageName());
context.sendBroadcast(cancelIntent);
}
@@ -250,8 +252,7 @@ public class DownloadRequester {
*/
public synchronized void cancelAllDownloads(Context context) {
Log.d(TAG, "Cancelling all running downloads");
- context.sendBroadcast(new Intent(
- DownloadService.ACTION_CANCEL_ALL_DOWNLOADS));
+ IntentUtils.sendLocalBroadcast(context, DownloadService.ACTION_CANCEL_ALL_DOWNLOADS);
}
/**
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/FeedSearcher.java b/core/src/main/java/de/danoeh/antennapod/core/storage/FeedSearcher.java
index aa5706ad0..4093c41a5 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/FeedSearcher.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/FeedSearcher.java
@@ -1,6 +1,7 @@
package de.danoeh.antennapod.core.storage;
import android.content.Context;
+import android.support.annotation.NonNull;
import java.util.ArrayList;
import java.util.Collections;
@@ -19,6 +20,8 @@ import de.danoeh.antennapod.core.util.comparator.SearchResultValueComparator;
* Performs search on Feeds and FeedItems
*/
public class FeedSearcher {
+ private FeedSearcher(){}
+
private static final String TAG = "FeedSearcher";
@@ -33,6 +36,7 @@ public class FeedSearcher {
* @param selectedFeed feed to search, 0 to search through all feeds
* @return list of episodes containing the query
*/
+ @NonNull
public static List<SearchResult> performSearch(final Context context,
final String query, final long selectedFeed) {
final int values[] = {2, 1, 0, 0, 0, 0};
@@ -43,7 +47,7 @@ public class FeedSearcher {
context.getString(R.string.found_in_authors_label),
context.getString(R.string.found_in_feeds_label)};
- List<SearchResult> result = new ArrayList<>();
+ final List<SearchResult> result = new ArrayList<>();
List<FutureTask<List<FeedItem>>> tasks = new ArrayList<>();
tasks.add(DBTasks.searchFeedItemTitle(context, selectedFeed, query));
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java b/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java
index e82252310..1daa43025 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java
@@ -1,5 +1,6 @@
package de.danoeh.antennapod.core.storage;
+import android.annotation.SuppressLint;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
@@ -12,9 +13,14 @@ import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.media.MediaMetadataRetriever;
+import android.os.Build;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
import android.text.TextUtils;
import android.util.Log;
+import org.apache.commons.io.FileUtils;
+
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
@@ -26,8 +32,6 @@ import de.danoeh.antennapod.core.R;
import de.danoeh.antennapod.core.event.ProgressEvent;
import de.danoeh.antennapod.core.feed.Chapter;
import de.danoeh.antennapod.core.feed.Feed;
-import de.danoeh.antennapod.core.feed.FeedComponent;
-import de.danoeh.antennapod.core.feed.FeedImage;
import de.danoeh.antennapod.core.feed.FeedItem;
import de.danoeh.antennapod.core.feed.FeedMedia;
import de.danoeh.antennapod.core.feed.FeedPreferences;
@@ -36,7 +40,6 @@ import de.danoeh.antennapod.core.service.download.DownloadStatus;
import de.danoeh.antennapod.core.util.LongIntMap;
import de.danoeh.antennapod.core.util.flattr.FlattrStatus;
import de.greenrobot.event.EventBus;
-import org.apache.commons.io.FileUtils;
// TODO Remove media column from feeditem table
@@ -74,8 +77,9 @@ public class PodDBAdapter {
public static final String KEY_SIZE = "filesize";
public static final String KEY_MIME_TYPE = "mime_type";
public static final String KEY_IMAGE = "image";
+ public static final String KEY_IMAGE_URL = "image_url";
public static final String KEY_FEED = "feed";
- private static final String KEY_MEDIA = "media";
+ public static final String KEY_MEDIA = "media";
public static final String KEY_DOWNLOADED = "downloaded";
public static final String KEY_LASTUPDATE = "last_update";
public static final String KEY_FEEDFILE = "feedfile";
@@ -114,14 +118,14 @@ public class PodDBAdapter {
public static final String KEY_EXCLUDE_FILTER = "exclude_filter";
// Table names
- private static final String TABLE_NAME_FEEDS = "Feeds";
- private static final String TABLE_NAME_FEED_ITEMS = "FeedItems";
- private static final String TABLE_NAME_FEED_IMAGES = "FeedImages";
- private static final String TABLE_NAME_FEED_MEDIA = "FeedMedia";
- private static final String TABLE_NAME_DOWNLOAD_LOG = "DownloadLog";
- private static final String TABLE_NAME_QUEUE = "Queue";
- private static final String TABLE_NAME_SIMPLECHAPTERS = "SimpleChapters";
- private static final String TABLE_NAME_FAVORITES = "Favorites";
+ static final String TABLE_NAME_FEEDS = "Feeds";
+ static final String TABLE_NAME_FEED_ITEMS = "FeedItems";
+ static final String TABLE_NAME_FEED_IMAGES = "FeedImages";
+ static final String TABLE_NAME_FEED_MEDIA = "FeedMedia";
+ static final String TABLE_NAME_DOWNLOAD_LOG = "DownloadLog";
+ static final String TABLE_NAME_QUEUE = "Queue";
+ static final String TABLE_NAME_SIMPLECHAPTERS = "SimpleChapters";
+ static final String TABLE_NAME_FAVORITES = "Favorites";
// SQL Statements for creating new tables
private static final String TABLE_PRIMARY_KEY = KEY_ID
@@ -133,7 +137,7 @@ public class PodDBAdapter {
+ KEY_DOWNLOADED + " INTEGER," + KEY_LINK + " TEXT,"
+ KEY_DESCRIPTION + " TEXT," + KEY_PAYMENT_LINK + " TEXT,"
+ KEY_LASTUPDATE + " TEXT," + KEY_LANGUAGE + " TEXT," + KEY_AUTHOR
- + " TEXT," + KEY_IMAGE + " INTEGER," + KEY_TYPE + " TEXT,"
+ + " TEXT," + KEY_IMAGE_URL + " TEXT," + KEY_TYPE + " TEXT,"
+ KEY_FEED_IDENTIFIER + " TEXT," + KEY_AUTO_DOWNLOAD + " INTEGER DEFAULT 1,"
+ KEY_FLATTR_STATUS + " INTEGER,"
+ KEY_USERNAME + " TEXT,"
@@ -155,14 +159,9 @@ public class PodDBAdapter {
+ KEY_MEDIA + " INTEGER," + KEY_FEED + " INTEGER,"
+ KEY_HAS_CHAPTERS + " INTEGER," + KEY_ITEM_IDENTIFIER + " TEXT,"
+ KEY_FLATTR_STATUS + " INTEGER,"
- + KEY_IMAGE + " INTEGER,"
+ + KEY_IMAGE_URL + " TEXT,"
+ KEY_AUTO_DOWNLOAD + " INTEGER)";
- private static final String CREATE_TABLE_FEED_IMAGES = "CREATE TABLE "
- + TABLE_NAME_FEED_IMAGES + " (" + TABLE_PRIMARY_KEY + KEY_TITLE
- + " TEXT," + KEY_FILE_URL + " TEXT," + KEY_DOWNLOAD_URL + " TEXT,"
- + KEY_DOWNLOADED + " INTEGER)";
-
private static final String CREATE_TABLE_FEED_MEDIA = "CREATE TABLE "
+ TABLE_NAME_FEED_MEDIA + " (" + TABLE_PRIMARY_KEY + KEY_DURATION
+ " INTEGER," + KEY_FILE_URL + " TEXT," + KEY_DOWNLOAD_URL
@@ -191,36 +190,31 @@ public class PodDBAdapter {
+ KEY_LINK + " TEXT," + KEY_CHAPTER_TYPE + " INTEGER)";
// SQL Statements for creating indexes
- private static final String CREATE_INDEX_FEEDITEMS_FEED = "CREATE INDEX "
+ static final String CREATE_INDEX_FEEDITEMS_FEED = "CREATE INDEX "
+ TABLE_NAME_FEED_ITEMS + "_" + KEY_FEED + " ON " + TABLE_NAME_FEED_ITEMS + " ("
+ KEY_FEED + ")";
- private static final String CREATE_INDEX_FEEDITEMS_IMAGE = "CREATE INDEX "
- + TABLE_NAME_FEED_ITEMS + "_" + KEY_IMAGE + " ON " + TABLE_NAME_FEED_ITEMS + " ("
- + KEY_IMAGE + ")";
-
- private static final String CREATE_INDEX_FEEDITEMS_PUBDATE = "CREATE INDEX IF NOT EXISTS "
+ static final String CREATE_INDEX_FEEDITEMS_PUBDATE = "CREATE INDEX IF NOT EXISTS "
+ TABLE_NAME_FEED_ITEMS + "_" + KEY_PUBDATE + " ON " + TABLE_NAME_FEED_ITEMS + " ("
+ KEY_PUBDATE + ")";
- private static final String CREATE_INDEX_FEEDITEMS_READ = "CREATE INDEX IF NOT EXISTS "
+ static final String CREATE_INDEX_FEEDITEMS_READ = "CREATE INDEX IF NOT EXISTS "
+ TABLE_NAME_FEED_ITEMS + "_" + KEY_READ + " ON " + TABLE_NAME_FEED_ITEMS + " ("
+ KEY_READ + ")";
-
- private static final String CREATE_INDEX_QUEUE_FEEDITEM = "CREATE INDEX "
+ static final String CREATE_INDEX_QUEUE_FEEDITEM = "CREATE INDEX "
+ TABLE_NAME_QUEUE + "_" + KEY_FEEDITEM + " ON " + TABLE_NAME_QUEUE + " ("
+ KEY_FEEDITEM + ")";
- private static final String CREATE_INDEX_FEEDMEDIA_FEEDITEM = "CREATE INDEX "
+ static final String CREATE_INDEX_FEEDMEDIA_FEEDITEM = "CREATE INDEX "
+ TABLE_NAME_FEED_MEDIA + "_" + KEY_FEEDITEM + " ON " + TABLE_NAME_FEED_MEDIA + " ("
+ KEY_FEEDITEM + ")";
- private static final String CREATE_INDEX_SIMPLECHAPTERS_FEEDITEM = "CREATE INDEX "
+ static final String CREATE_INDEX_SIMPLECHAPTERS_FEEDITEM = "CREATE INDEX "
+ TABLE_NAME_SIMPLECHAPTERS + "_" + KEY_FEEDITEM + " ON " + TABLE_NAME_SIMPLECHAPTERS + " ("
+ KEY_FEEDITEM + ")";
- private static final String CREATE_TABLE_FAVORITES = "CREATE TABLE "
+ static final String CREATE_TABLE_FAVORITES = "CREATE TABLE "
+ TABLE_NAME_FAVORITES + "(" + KEY_ID + " INTEGER PRIMARY KEY,"
+ KEY_FEEDITEM + " INTEGER," + KEY_FEED + " INTEGER)";
@@ -240,7 +234,7 @@ public class PodDBAdapter {
TABLE_NAME_FEEDS + "." + KEY_LASTUPDATE,
TABLE_NAME_FEEDS + "." + KEY_LANGUAGE,
TABLE_NAME_FEEDS + "." + KEY_AUTHOR,
- TABLE_NAME_FEEDS + "." + KEY_IMAGE,
+ TABLE_NAME_FEEDS + "." + KEY_IMAGE_URL,
TABLE_NAME_FEEDS + "." + KEY_TYPE,
TABLE_NAME_FEEDS + "." + KEY_FEED_IDENTIFIER,
TABLE_NAME_FEEDS + "." + KEY_AUTO_DOWNLOAD,
@@ -273,7 +267,7 @@ public class PodDBAdapter {
TABLE_NAME_FEED_ITEMS + "." + KEY_HAS_CHAPTERS,
TABLE_NAME_FEED_ITEMS + "." + KEY_ITEM_IDENTIFIER,
TABLE_NAME_FEED_ITEMS + "." + KEY_FLATTR_STATUS,
- TABLE_NAME_FEED_ITEMS + "." + KEY_IMAGE,
+ TABLE_NAME_FEED_ITEMS + "." + KEY_IMAGE_URL,
TABLE_NAME_FEED_ITEMS + "." + KEY_AUTO_DOWNLOAD
};
@@ -283,7 +277,6 @@ public class PodDBAdapter {
private static final String[] ALL_TABLES = {
TABLE_NAME_FEEDS,
TABLE_NAME_FEED_ITEMS,
- TABLE_NAME_FEED_IMAGES,
TABLE_NAME_FEED_MEDIA,
TABLE_NAME_DOWNLOAD_LOG,
TABLE_NAME_QUEUE,
@@ -310,7 +303,6 @@ public class PodDBAdapter {
private static Context context;
private static volatile SQLiteDatabase db;
- private static int counter = 0;
public static void init(Context context) {
PodDBAdapter.context = context.getApplicationContext();
@@ -330,20 +322,20 @@ public class PodDBAdapter {
}
public synchronized PodDBAdapter open() {
- counter++;
- Log.v(TAG, "Opening DB #" + counter);
-
if (db == null || !db.isOpen() || db.isReadOnly()) {
db = openDb();
}
return this;
}
+ @SuppressLint("NewApi")
private SQLiteDatabase openDb() {
SQLiteDatabase newDb;
try {
newDb = SingletonHolder.dbHelper.getWritableDatabase();
- newDb.enableWriteAheadLogging();
+ if (Build.VERSION.SDK_INT >= 16) {
+ newDb.disableWriteAheadLogging();
+ }
} catch (SQLException ex) {
Log.e(TAG, Log.getStackTraceString(ex));
newDb = SingletonHolder.dbHelper.getReadableDatabase();
@@ -352,14 +344,7 @@ public class PodDBAdapter {
}
public synchronized void close() {
- counter--;
- Log.v(TAG, "Closing DB #" + counter);
-
- if (counter == 0) {
- Log.v(TAG, "Closing DB, really");
- db.close();
- db = null;
- }
+ // do nothing
}
public static boolean deleteDatabase() {
@@ -388,12 +373,7 @@ public class PodDBAdapter {
values.put(KEY_PAYMENT_LINK, feed.getPaymentLink());
values.put(KEY_AUTHOR, feed.getAuthor());
values.put(KEY_LANGUAGE, feed.getLanguage());
- if (feed.getImage() != null) {
- if (feed.getImage().getId() == 0) {
- setImage(feed.getImage());
- }
- values.put(KEY_IMAGE, feed.getImage().getId());
- }
+ values.put(KEY_IMAGE_URL, feed.getImageUrl());
values.put(KEY_FILE_URL, feed.getFile_url());
values.put(KEY_DOWNLOAD_URL, feed.getDownload_url());
@@ -450,54 +430,7 @@ public class PodDBAdapter {
}
/**
- * Inserts or updates an image entry
- *
- * @return the id of the entry
- */
- public long setImage(FeedImage image) {
- boolean startedTransaction = false;
-
- try {
- if (!db.inTransaction()) {
- db.beginTransactionNonExclusive();
- startedTransaction = true;
- }
-
- ContentValues values = new ContentValues();
- values.put(KEY_TITLE, image.getTitle());
- values.put(KEY_DOWNLOAD_URL, image.getDownload_url());
- values.put(KEY_DOWNLOADED, image.isDownloaded());
- values.put(KEY_FILE_URL, image.getFile_url());
- if (image.getId() == 0) {
- image.setId(db.insert(TABLE_NAME_FEED_IMAGES, null, values));
- } else {
- db.update(TABLE_NAME_FEED_IMAGES, values, KEY_ID + "=?",
- new String[]{String.valueOf(image.getId())});
- }
-
- final FeedComponent owner = image.getOwner();
- if (owner != null && owner.getId() != 0) {
- values.clear();
- values.put(KEY_IMAGE, image.getId());
- if (owner instanceof Feed) {
- db.update(TABLE_NAME_FEEDS, values, KEY_ID + "=?", new String[]{String.valueOf(image.getOwner().getId())});
- }
- }
- if (startedTransaction) {
- db.setTransactionSuccessful();
- }
- } catch (SQLException e) {
- Log.e(TAG, Log.getStackTraceString(e));
- } finally {
- if (startedTransaction) {
- db.endTransaction();
- }
- }
- return image.getId();
- }
-
- /**
- * Inserts or updates an image entry
+ * Inserts or updates a media entry
*
* @return the id of the entry
*/
@@ -608,31 +541,6 @@ public class PodDBAdapter {
}
/**
- * Counts feeds and feed items in the flattr queue
- */
- public int getFlattrQueueSize() {
- int res = 0;
- Cursor c = db.rawQuery(String.format("SELECT count(*) FROM %s WHERE %s=%s",
- TABLE_NAME_FEEDS, KEY_FLATTR_STATUS, String.valueOf(FlattrStatus.STATUS_QUEUE)), null);
- if (c.moveToFirst()) {
- res = c.getInt(0);
- c.close();
- } else {
- Log.e(TAG, "Unable to determine size of flattr queue: Could not count number of feeds");
- }
- c = db.rawQuery(String.format("SELECT count(*) FROM %s WHERE %s=%s",
- TABLE_NAME_FEED_ITEMS, KEY_FLATTR_STATUS, String.valueOf(FlattrStatus.STATUS_QUEUE)), null);
- if (c.moveToFirst()) {
- res += c.getInt(0);
- c.close();
- } else {
- Log.e(TAG, "Unable to determine size of flattr queue: Could not count number of feed items");
- }
-
- return res;
- }
-
- /**
* Updates the download URL of a Feed.
*/
public void setFeedDownloadUrl(String original, String updated) {
@@ -759,12 +667,7 @@ public class PodDBAdapter {
values.put(KEY_ITEM_IDENTIFIER, item.getItemIdentifier());
values.put(KEY_FLATTR_STATUS, item.getFlattrStatus().toLong());
values.put(KEY_AUTO_DOWNLOAD, item.getAutoDownload());
- if (item.hasItemImage()) {
- if (item.getImage().getId() == 0) {
- setImage(item.getImage());
- }
- values.put(KEY_IMAGE, item.getImage().getId());
- }
+ values.put(KEY_IMAGE_URL, item.getImageUrl());
if (item.getId() == 0) {
item.setId(db.insert(TABLE_NAME_FEED_ITEMS, null, values));
@@ -944,17 +847,6 @@ public class PodDBAdapter {
return count > 0;
}
- public long getDownloadLogSize() {
- final String query = String.format("SELECT COUNT(%s) FROM %s", KEY_ID, TABLE_NAME_DOWNLOAD_LOG);
- Cursor result = db.rawQuery(query, null);
- long count = 0;
- if (result.moveToFirst()) {
- count = result.getLong(0);
- }
- result.close();
- return count;
- }
-
public void setQueue(List<FeedItem> queue) {
ContentValues values = new ContentValues();
try {
@@ -993,11 +885,6 @@ public class PodDBAdapter {
new String[]{String.valueOf(item.getId())});
}
- private void removeFeedImage(FeedImage image) {
- db.delete(TABLE_NAME_FEED_IMAGES, KEY_ID + "=?",
- new String[]{String.valueOf(image.getId())});
- }
-
/**
* Remove a FeedItem and its FeedMedia entry.
*/
@@ -1008,9 +895,6 @@ public class PodDBAdapter {
if (item.hasChapters() || item.getChapters() != null) {
removeChaptersOfItem(item);
}
- if (item.hasItemImage()) {
- removeFeedImage(item.getImage());
- }
db.delete(TABLE_NAME_FEED_ITEMS, KEY_ID + "=?",
new String[]{String.valueOf(item.getId())});
}
@@ -1021,9 +905,6 @@ public class PodDBAdapter {
public void removeFeed(Feed feed) {
try {
db.beginTransactionNonExclusive();
- if (feed.getImage() != null) {
- removeFeedImage(feed.getImage());
- }
if (feed.getItems() != null) {
for (FeedItem item : feed.getItems()) {
removeFeedItem(item);
@@ -1094,18 +975,6 @@ public class PodDBAdapter {
}
/**
- * Returns a cursor for a DB query in the FeedMedia table for a given ID.
- *
- * @param item The item you want to get the FeedMedia from
- * @return The cursor of the query
- */
- public final Cursor getFeedMediaOfItemCursor(final FeedItem item) {
- return db.query(TABLE_NAME_FEED_MEDIA, null, KEY_ID + "=?",
- new String[]{String.valueOf(item.getMedia().getId())}, null,
- null, null);
- }
-
- /**
* Returns a cursor for a DB query in the FeedImages table for given IDs.
*
* @param imageIds IDs of the images
@@ -1363,17 +1232,12 @@ public class PodDBAdapter {
public Cursor getImageAuthenticationCursor(final String imageUrl) {
String downloadUrl = DatabaseUtils.sqlEscapeString(imageUrl);
final String query = ""
- + "SELECT " + KEY_USERNAME + "," + KEY_PASSWORD + " FROM " + TABLE_NAME_FEED_IMAGES
+ + "SELECT " + KEY_USERNAME + "," + KEY_PASSWORD + " FROM " + TABLE_NAME_FEED_ITEMS
+ " INNER JOIN " + TABLE_NAME_FEEDS
- + " ON " + TABLE_NAME_FEED_IMAGES + "." + KEY_ID + "=" + TABLE_NAME_FEEDS + "." + KEY_IMAGE
- + " WHERE " + TABLE_NAME_FEED_IMAGES + "." + KEY_DOWNLOAD_URL + "=" + downloadUrl
- + " UNION SELECT " + KEY_USERNAME + "," + KEY_PASSWORD
- + " FROM " + TABLE_NAME_FEED_IMAGES
- + " INNER JOIN " + TABLE_NAME_FEED_ITEMS
- + " ON " + TABLE_NAME_FEED_IMAGES + "." + KEY_ID + "=" + TABLE_NAME_FEED_ITEMS + "." + KEY_IMAGE
- + " INNER JOIN " + TABLE_NAME_FEEDS
- + " ON " + TABLE_NAME_FEED_ITEMS + "." + KEY_FEED + "=" + TABLE_NAME_FEEDS + "." + KEY_ID
- + " WHERE " + TABLE_NAME_FEED_IMAGES + "." + KEY_DOWNLOAD_URL + "=" + downloadUrl;
+ + " ON " + TABLE_NAME_FEED_ITEMS + "." + KEY_FEED + " = " + TABLE_NAME_FEEDS + "." + KEY_ID
+ + " WHERE " + TABLE_NAME_FEED_ITEMS + "." + KEY_IMAGE_URL + "=" + downloadUrl
+ + " UNION SELECT " + KEY_USERNAME + "," + KEY_PASSWORD + " FROM " + TABLE_NAME_FEEDS
+ + " WHERE " + TABLE_NAME_FEEDS + "." + KEY_IMAGE_URL + "=" + downloadUrl;
return db.rawQuery(query, null);
}
@@ -1389,9 +1253,15 @@ public class PodDBAdapter {
}
public final int getNumberOfNewItems() {
- final String query = "SELECT COUNT(" + KEY_ID + ")"
- + " FROM " + TABLE_NAME_FEED_ITEMS
- + " WHERE " + KEY_READ + "=" + FeedItem.NEW;
+ Object[] args = new String[]{
+ TABLE_NAME_FEED_ITEMS + "." + KEY_ID,
+ TABLE_NAME_FEED_ITEMS,
+ TABLE_NAME_FEEDS,
+ TABLE_NAME_FEED_ITEMS + "." + KEY_FEED + "=" + TABLE_NAME_FEEDS + "." + KEY_ID,
+ TABLE_NAME_FEED_ITEMS + "." + KEY_READ + "=" + FeedItem.NEW
+ + " AND " + TABLE_NAME_FEEDS + "." + KEY_KEEP_UPDATED + " > 0"
+ };
+ final String query = String.format("SELECT COUNT(%s) FROM %s INNER JOIN %s ON %s WHERE %s", args);
Cursor c = db.rawQuery(query, null);
int result = 0;
if (c.moveToFirst()) {
@@ -1672,7 +1542,7 @@ public class PodDBAdapter {
*/
private static class PodDBHelper extends SQLiteOpenHelper {
- private static final int VERSION = 1060200;
+ private static final int VERSION = 1060596;
private final Context context;
@@ -1693,7 +1563,6 @@ public class PodDBAdapter {
public void onCreate(final SQLiteDatabase db) {
db.execSQL(CREATE_TABLE_FEEDS);
db.execSQL(CREATE_TABLE_FEED_ITEMS);
- db.execSQL(CREATE_TABLE_FEED_IMAGES);
db.execSQL(CREATE_TABLE_FEED_MEDIA);
db.execSQL(CREATE_TABLE_DOWNLOAD_LOG);
db.execSQL(CREATE_TABLE_QUEUE);
@@ -1701,7 +1570,6 @@ public class PodDBAdapter {
db.execSQL(CREATE_TABLE_FAVORITES);
db.execSQL(CREATE_INDEX_FEEDITEMS_FEED);
- db.execSQL(CREATE_INDEX_FEEDITEMS_IMAGE);
db.execSQL(CREATE_INDEX_FEEDITEMS_PUBDATE);
db.execSQL(CREATE_INDEX_FEEDITEMS_READ);
db.execSQL(CREATE_INDEX_FEEDMEDIA_FEEDITEM);
@@ -1716,263 +1584,7 @@ public class PodDBAdapter {
EventBus.getDefault().post(ProgressEvent.start(context.getString(R.string.progress_upgrading_database)));
Log.w("DBAdapter", "Upgrading from version " + oldVersion + " to "
+ newVersion + ".");
- if (oldVersion <= 1) {
- db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS + " ADD COLUMN "
- + KEY_TYPE + " TEXT");
- }
- if (oldVersion <= 2) {
- db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_SIMPLECHAPTERS
- + " ADD COLUMN " + KEY_LINK + " TEXT");
- }
- if (oldVersion <= 3) {
- db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEED_ITEMS
- + " ADD COLUMN " + KEY_ITEM_IDENTIFIER + " TEXT");
- }
- if (oldVersion <= 4) {
- db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS + " ADD COLUMN "
- + KEY_FEED_IDENTIFIER + " TEXT");
- }
- if (oldVersion <= 5) {
- db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_DOWNLOAD_LOG
- + " ADD COLUMN " + KEY_REASON_DETAILED + " TEXT");
- db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_DOWNLOAD_LOG
- + " ADD COLUMN " + KEY_DOWNLOADSTATUS_TITLE + " TEXT");
- }
- if (oldVersion <= 6) {
- db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_SIMPLECHAPTERS
- + " ADD COLUMN " + KEY_CHAPTER_TYPE + " INTEGER");
- }
- if (oldVersion <= 7) {
- db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEED_MEDIA
- + " ADD COLUMN " + KEY_PLAYBACK_COMPLETION_DATE
- + " INTEGER");
- }
- if (oldVersion <= 8) {
- final int KEY_ID_POSITION = 0;
- final int KEY_MEDIA_POSITION = 1;
-
- // Add feeditem column to feedmedia table
- db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEED_MEDIA
- + " ADD COLUMN " + KEY_FEEDITEM
- + " INTEGER");
- Cursor feeditemCursor = db.query(PodDBAdapter.TABLE_NAME_FEED_ITEMS,
- new String[]{KEY_ID, KEY_MEDIA}, "? > 0",
- new String[]{KEY_MEDIA}, null, null, null);
- if (feeditemCursor.moveToFirst()) {
- db.beginTransaction();
- ContentValues contentValues = new ContentValues();
- do {
- long mediaId = feeditemCursor.getLong(KEY_MEDIA_POSITION);
- contentValues.put(KEY_FEEDITEM, feeditemCursor.getLong(KEY_ID_POSITION));
- db.update(PodDBAdapter.TABLE_NAME_FEED_MEDIA, contentValues, KEY_ID + "=?", new String[]{String.valueOf(mediaId)});
- contentValues.clear();
- } while (feeditemCursor.moveToNext());
- db.setTransactionSuccessful();
- db.endTransaction();
- }
- feeditemCursor.close();
- }
- if (oldVersion <= 9) {
- db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS
- + " ADD COLUMN " + KEY_AUTO_DOWNLOAD
- + " INTEGER DEFAULT 1");
- }
- if (oldVersion <= 10) {
- db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS
- + " ADD COLUMN " + KEY_FLATTR_STATUS
- + " INTEGER");
- db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEED_ITEMS
- + " ADD COLUMN " + KEY_FLATTR_STATUS
- + " INTEGER");
- db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEED_MEDIA
- + " ADD COLUMN " + KEY_PLAYED_DURATION
- + " INTEGER");
- }
- if (oldVersion <= 11) {
- db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS
- + " ADD COLUMN " + KEY_USERNAME
- + " TEXT");
- db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS
- + " ADD COLUMN " + KEY_PASSWORD
- + " TEXT");
- db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEED_ITEMS
- + " ADD COLUMN " + KEY_IMAGE
- + " INTEGER");
- }
- if (oldVersion <= 12) {
- db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS
- + " ADD COLUMN " + KEY_IS_PAGED + " INTEGER DEFAULT 0");
- db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS
- + " ADD COLUMN " + KEY_NEXT_PAGE_LINK + " TEXT");
- }
- if (oldVersion <= 13) {
- // remove duplicate rows in "Chapters" table that were created because of a bug.
- db.execSQL(String.format("DELETE FROM %s WHERE %s NOT IN " +
- "(SELECT MIN(%s) as %s FROM %s GROUP BY %s,%s,%s,%s,%s)",
- PodDBAdapter.TABLE_NAME_SIMPLECHAPTERS,
- KEY_ID,
- KEY_ID,
- KEY_ID,
- PodDBAdapter.TABLE_NAME_SIMPLECHAPTERS,
- KEY_TITLE,
- KEY_START,
- KEY_FEEDITEM,
- KEY_LINK,
- KEY_CHAPTER_TYPE));
- }
- if (oldVersion <= 14) {
- db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEED_ITEMS
- + " ADD COLUMN " + KEY_AUTO_DOWNLOAD + " INTEGER");
- db.execSQL("UPDATE " + PodDBAdapter.TABLE_NAME_FEED_ITEMS
- + " SET " + KEY_AUTO_DOWNLOAD + " = "
- + "(SELECT " + KEY_AUTO_DOWNLOAD
- + " FROM " + PodDBAdapter.TABLE_NAME_FEEDS
- + " WHERE " + PodDBAdapter.TABLE_NAME_FEEDS + "." + KEY_ID
- + " = " + PodDBAdapter.TABLE_NAME_FEED_ITEMS + "." + KEY_FEED + ")");
-
- db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS
- + " ADD COLUMN " + KEY_HIDE + " TEXT");
-
- db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS
- + " ADD COLUMN " + KEY_LAST_UPDATE_FAILED + " INTEGER DEFAULT 0");
-
- // create indexes
- db.execSQL(PodDBAdapter.CREATE_INDEX_FEEDITEMS_FEED);
- db.execSQL(PodDBAdapter.CREATE_INDEX_FEEDITEMS_IMAGE);
- db.execSQL(PodDBAdapter.CREATE_INDEX_FEEDMEDIA_FEEDITEM);
- db.execSQL(PodDBAdapter.CREATE_INDEX_QUEUE_FEEDITEM);
- db.execSQL(PodDBAdapter.CREATE_INDEX_SIMPLECHAPTERS_FEEDITEM);
- }
- if (oldVersion <= 15) {
- db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEED_MEDIA
- + " ADD COLUMN " + KEY_HAS_EMBEDDED_PICTURE + " INTEGER DEFAULT -1");
- db.execSQL("UPDATE " + PodDBAdapter.TABLE_NAME_FEED_MEDIA
- + " SET " + KEY_HAS_EMBEDDED_PICTURE + "=0"
- + " WHERE " + KEY_DOWNLOADED + "=0");
- Cursor c = db.rawQuery("SELECT " + KEY_FILE_URL
- + " FROM " + PodDBAdapter.TABLE_NAME_FEED_MEDIA
- + " WHERE " + KEY_DOWNLOADED + "=1 "
- + " AND " + KEY_HAS_EMBEDDED_PICTURE + "=-1", null);
- if (c.moveToFirst()) {
- MediaMetadataRetriever mmr = new MediaMetadataRetriever();
- do {
- String fileUrl = c.getString(0);
- try {
- mmr.setDataSource(fileUrl);
- byte[] image = mmr.getEmbeddedPicture();
- if (image != null) {
- db.execSQL("UPDATE " + PodDBAdapter.TABLE_NAME_FEED_MEDIA
- + " SET " + KEY_HAS_EMBEDDED_PICTURE + "=1"
- + " WHERE " + KEY_FILE_URL + "='" + fileUrl + "'");
- } else {
- db.execSQL("UPDATE " + PodDBAdapter.TABLE_NAME_FEED_MEDIA
- + " SET " + KEY_HAS_EMBEDDED_PICTURE + "=0"
- + " WHERE " + KEY_FILE_URL + "='" + fileUrl + "'");
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- } while (c.moveToNext());
- }
- c.close();
- }
- if (oldVersion <= 16) {
- String selectNew = "SELECT " + PodDBAdapter.TABLE_NAME_FEED_ITEMS + "." + KEY_ID
- + " FROM " + PodDBAdapter.TABLE_NAME_FEED_ITEMS
- + " INNER JOIN " + PodDBAdapter.TABLE_NAME_FEED_MEDIA + " ON "
- + PodDBAdapter.TABLE_NAME_FEED_ITEMS + "." + KEY_ID + "="
- + PodDBAdapter.TABLE_NAME_FEED_MEDIA + "." + KEY_FEEDITEM
- + " LEFT OUTER JOIN " + PodDBAdapter.TABLE_NAME_QUEUE + " ON "
- + PodDBAdapter.TABLE_NAME_FEED_ITEMS + "." + KEY_ID + "="
- + PodDBAdapter.TABLE_NAME_QUEUE + "." + KEY_FEEDITEM
- + " WHERE "
- + PodDBAdapter.TABLE_NAME_FEED_ITEMS + "." + KEY_READ + " = 0 AND " // unplayed
- + PodDBAdapter.TABLE_NAME_FEED_MEDIA + "." + KEY_DOWNLOADED + " = 0 AND " // undownloaded
- + PodDBAdapter.TABLE_NAME_FEED_MEDIA + "." + KEY_POSITION + " = 0 AND " // not partially played
- + PodDBAdapter.TABLE_NAME_QUEUE + "." + KEY_ID + " IS NULL"; // not in queue
- String sql = "UPDATE " + PodDBAdapter.TABLE_NAME_FEED_ITEMS
- + " SET " + KEY_READ + "=" + FeedItem.NEW
- + " WHERE " + KEY_ID + " IN (" + selectNew + ")";
- Log.d("Migration", "SQL: " + sql);
- db.execSQL(sql);
- }
- if (oldVersion <= 17) {
- db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS
- + " ADD COLUMN " + PodDBAdapter.KEY_AUTO_DELETE_ACTION + " INTEGER DEFAULT 0");
- }
- if (oldVersion < 1030005) {
- db.execSQL("UPDATE FeedItems SET auto_download=0 WHERE " +
- "(read=1 OR id IN (SELECT feeditem FROM FeedMedia WHERE position>0 OR downloaded=1)) " +
- "AND id NOT IN (SELECT feeditem FROM Queue)");
- }
- if (oldVersion < 1040001) {
- db.execSQL(CREATE_TABLE_FAVORITES);
- }
- if (oldVersion < 1040002) {
- db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEED_MEDIA
- + " ADD COLUMN " + PodDBAdapter.KEY_LAST_PLAYED_TIME + " INTEGER DEFAULT 0");
- }
- if (oldVersion < 1040013) {
- db.execSQL(PodDBAdapter.CREATE_INDEX_FEEDITEMS_PUBDATE);
- db.execSQL(PodDBAdapter.CREATE_INDEX_FEEDITEMS_READ);
- }
- if (oldVersion < 1050003) {
- // Migrates feed list filter data
-
- db.beginTransaction();
-
- // Change to intermediate values to avoid overwriting in the following find/replace
- db.execSQL("UPDATE " + TABLE_NAME_FEEDS + "\n" +
- "SET " + KEY_HIDE + " = replace(" + KEY_HIDE + ", 'unplayed', 'noplay')");
- db.execSQL("UPDATE " + TABLE_NAME_FEEDS + "\n" +
- "SET " + KEY_HIDE + " = replace(" + KEY_HIDE + ", 'not_queued', 'noqueue')");
- db.execSQL("UPDATE " + TABLE_NAME_FEEDS + "\n" +
- "SET " + KEY_HIDE + " = replace(" + KEY_HIDE + ", 'not_downloaded', 'nodl')");
-
- // Replace played, queued, and downloaded with their opposites
- db.execSQL("UPDATE " + TABLE_NAME_FEEDS + "\n" +
- "SET " + KEY_HIDE + " = replace(" + KEY_HIDE + ", 'played', 'unplayed')");
- db.execSQL("UPDATE " + TABLE_NAME_FEEDS + "\n" +
- "SET " + KEY_HIDE + " = replace(" + KEY_HIDE + ", 'queued', 'not_queued')");
- db.execSQL("UPDATE " + TABLE_NAME_FEEDS + "\n" +
- "SET " + KEY_HIDE + " = replace(" + KEY_HIDE + ", 'downloaded', 'not_downloaded')");
-
- // Now replace intermediates for unplayed, not queued, etc. with their opposites
- db.execSQL("UPDATE " + TABLE_NAME_FEEDS + "\n" +
- "SET " + KEY_HIDE + " = replace(" + KEY_HIDE + ", 'noplay', 'played')");
- db.execSQL("UPDATE " + TABLE_NAME_FEEDS + "\n" +
- "SET " + KEY_HIDE + " = replace(" + KEY_HIDE + ", 'noqueue', 'queued')");
- db.execSQL("UPDATE " + TABLE_NAME_FEEDS + "\n" +
- "SET " + KEY_HIDE + " = replace(" + KEY_HIDE + ", 'nodl', 'downloaded')");
-
- // Paused doesn't have an opposite, so unplayed is the next best option
- db.execSQL("UPDATE " + TABLE_NAME_FEEDS + "\n" +
- "SET " + KEY_HIDE + " = replace(" + KEY_HIDE + ", 'paused', 'unplayed')");
-
- db.setTransactionSuccessful();
- db.endTransaction();
-
- // and now get ready for autodownload filters
- db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS
- + " ADD COLUMN " + PodDBAdapter.KEY_INCLUDE_FILTER + " TEXT DEFAULT ''");
-
- db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS
- + " ADD COLUMN " + PodDBAdapter.KEY_EXCLUDE_FILTER + " TEXT DEFAULT ''");
-
- // and now auto refresh
- db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS
- + " ADD COLUMN " + PodDBAdapter.KEY_KEEP_UPDATED + " INTEGER DEFAULT 1");
- }
- if (oldVersion < 1050004) {
- // prevent old timestamps to be misinterpreted as ETags
- db.execSQL("UPDATE " + PodDBAdapter.TABLE_NAME_FEEDS
- + " SET " + PodDBAdapter.KEY_LASTUPDATE + "=NULL");
- }
- if (oldVersion < 1060200) {
- db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS
- + " ADD COLUMN " + PodDBAdapter.KEY_CUSTOM_TITLE + " TEXT");
- }
-
+ DBUpgrader.upgrade(db, oldVersion, newVersion);
EventBus.getDefault().post(ProgressEvent.end());
}
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/TypeGetter.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/TypeGetter.java
index ee0a71f30..b4c77e58d 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/TypeGetter.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/TypeGetter.java
@@ -54,18 +54,19 @@ public class TypeGetter {
return Type.ATOM;
case RSS_ROOT:
String strVersion = xpp.getAttributeValue(null, "version");
- if (strVersion != null) {
- if (strVersion.equals("2.0")) {
- feed.setType(Feed.TYPE_RSS2);
- Log.d(TAG, "Recognized type RSS 2.0");
- return Type.RSS20;
- } else if (strVersion.equals("0.91")
- || strVersion.equals("0.92")) {
- Log.d(TAG, "Recognized type RSS 0.91/0.92");
- return Type.RSS091;
- }
+ if (strVersion == null) {
+ feed.setType(Feed.TYPE_RSS2);
+ Log.d(TAG, "Assuming type RSS 2.0");
+ return Type.RSS20;
+ } else if (strVersion.equals("2.0")) {
+ feed.setType(Feed.TYPE_RSS2);
+ Log.d(TAG, "Recognized type RSS 2.0");
+ return Type.RSS20;
+ } else if (strVersion.equals("0.91") || strVersion.equals("0.92")) {
+ Log.d(TAG, "Recognized type RSS 0.91/0.92");
+ return Type.RSS091;
}
- throw new UnsupportedFeedtypeException(Type.INVALID);
+ throw new UnsupportedFeedtypeException("Unsupported rss version");
default:
Log.d(TAG, "Type is invalid");
throw new UnsupportedFeedtypeException(Type.INVALID, tag);
diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/UnsupportedFeedtypeException.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/UnsupportedFeedtypeException.java
index 606f93faf..fd7d0a4e1 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/UnsupportedFeedtypeException.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/UnsupportedFeedtypeException.java
@@ -5,7 +5,8 @@ import de.danoeh.antennapod.core.syndication.handler.TypeGetter.Type;
public class UnsupportedFeedtypeException extends Exception {
private static final long serialVersionUID = 9105878964928170669L;
private final TypeGetter.Type type;
- private String rootElement;
+ private String rootElement;
+ private String message = null;
public UnsupportedFeedtypeException(Type type) {
super();
@@ -17,6 +18,11 @@ public class UnsupportedFeedtypeException extends Exception {
this.rootElement = rootElement;
}
+ public UnsupportedFeedtypeException(String message) {
+ this.message = message;
+ type = Type.INVALID;
+ }
+
public TypeGetter.Type getType() {
return type;
}
@@ -27,7 +33,9 @@ public class UnsupportedFeedtypeException extends Exception {
@Override
public String getMessage() {
- if (type == TypeGetter.Type.INVALID) {
+ if (message != null) {
+ return message;
+ } else if (type == TypeGetter.Type.INVALID) {
return "Invalid type";
} else {
return "Type " + type + " not supported";
diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSITunes.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSITunes.java
index 670e99fce..b3b8a40ce 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSITunes.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSITunes.java
@@ -7,7 +7,6 @@ import org.xml.sax.Attributes;
import java.util.concurrent.TimeUnit;
-import de.danoeh.antennapod.core.feed.FeedImage;
import de.danoeh.antennapod.core.syndication.handler.HandlerState;
public class NSITunes extends Namespace {
@@ -16,7 +15,6 @@ public class NSITunes extends Namespace {
public static final String NSURI = "http://www.itunes.com/dtds/podcast-1.0.dtd";
private static final String IMAGE = "image";
- private static final String IMAGE_TITLE = "image";
private static final String IMAGE_HREF = "href";
private static final String AUTHOR = "author";
@@ -29,21 +27,15 @@ public class NSITunes extends Namespace {
public SyndElement handleElementStart(String localName, HandlerState state,
Attributes attributes) {
if (IMAGE.equals(localName)) {
- FeedImage image = new FeedImage();
- image.setTitle(IMAGE_TITLE);
- image.setDownload_url(attributes.getValue(IMAGE_HREF));
+ String url = attributes.getValue(IMAGE_HREF);
if (state.getCurrentItem() != null) {
- // this is an items image
- image.setTitle(state.getCurrentItem().getTitle() + IMAGE_TITLE);
- image.setOwner(state.getCurrentItem());
- state.getCurrentItem().setImage(image);
+ state.getCurrentItem().setImageUrl(url);
} else {
// this is the feed image
// prefer to all other images
- if (!TextUtils.isEmpty(image.getDownload_url())) {
- image.setOwner(state.getFeed());
- state.getFeed().setImage(image);
+ if (!TextUtils.isEmpty(url)) {
+ state.getFeed().setImageUrl(url);
}
}
}
@@ -55,6 +47,9 @@ public class NSITunes extends Namespace {
if(state.getContentBuf() == null) {
return;
}
+ SyndElement secondElement = state.getSecondTag();
+ String second = secondElement.getName();
+
if (AUTHOR.equals(localName)) {
if (state.getFeed() != null) {
String author = state.getContentBuf().toString();
@@ -103,10 +98,9 @@ public class NSITunes extends Namespace {
}
if (state.getCurrentItem() != null &&
(TextUtils.isEmpty(state.getCurrentItem().getDescription()) ||
- state.getCurrentItem().getDescription().length() * 1.25 < summary.length())
- ) {
+ state.getCurrentItem().getDescription().length() * 1.25 < summary.length())) {
state.getCurrentItem().setDescription(summary);
- } else if (state.getFeed() != null) {
+ } else if (NSRSS20.CHANNEL.equals(second) && state.getFeed() != null) {
state.getFeed().setDescription(summary);
}
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSMedia.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSMedia.java
index f2cfc2e57..638383223 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSMedia.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSMedia.java
@@ -7,7 +7,6 @@ import org.xml.sax.Attributes;
import java.util.concurrent.TimeUnit;
-import de.danoeh.antennapod.core.feed.FeedImage;
import de.danoeh.antennapod.core.feed.FeedMedia;
import de.danoeh.antennapod.core.syndication.handler.HandlerState;
import de.danoeh.antennapod.core.syndication.namespace.atom.AtomText;
@@ -94,25 +93,16 @@ public class NSMedia extends Namespace {
}
state.getCurrentItem().setMedia(media);
} else if (state.getCurrentItem() != null && url != null && validTypeImage) {
- FeedImage image = new FeedImage();
- image.setDownload_url(url);
- image.setOwner(state.getCurrentItem());
-
- state.getCurrentItem().setImage(image);
+ state.getCurrentItem().setImageUrl(url);
}
} else if (IMAGE.equals(localName)) {
String url = attributes.getValue(IMAGE_URL);
if (url != null) {
- FeedImage image = new FeedImage();
- image.setDownload_url(url);
-
if (state.getCurrentItem() != null) {
- image.setOwner(state.getCurrentItem());
- state.getCurrentItem().setImage(image);
+ state.getCurrentItem().setImageUrl(url);
} else {
- if (state.getFeed().getImage() == null) {
- image.setOwner(state.getFeed());
- state.getFeed().setImage(image);
+ if (state.getFeed().getImageUrl() == null) {
+ state.getFeed().setImageUrl(url);
}
}
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSRSS20.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSRSS20.java
index 3d752df76..e391af1b2 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSRSS20.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSRSS20.java
@@ -5,8 +5,6 @@ import android.util.Log;
import org.xml.sax.Attributes;
-import de.danoeh.antennapod.core.feed.Feed;
-import de.danoeh.antennapod.core.feed.FeedImage;
import de.danoeh.antennapod.core.feed.FeedItem;
import de.danoeh.antennapod.core.feed.FeedMedia;
import de.danoeh.antennapod.core.syndication.handler.HandlerState;
@@ -23,9 +21,6 @@ public class NSRSS20 extends Namespace {
private static final String TAG = "NSRSS20";
- private static final String NSTAG = "rss";
- private static final String NSURI = "";
-
public static final String CHANNEL = "channel";
public static final String ITEM = "item";
private static final String GUID = "guid";
@@ -77,17 +72,6 @@ public class NSRSS20 extends Namespace {
state.getCurrentItem().setMedia(media);
}
- } else if (IMAGE.equals(localName)) {
- if (state.getTagstack().size() >= 1) {
- String parent = state.getTagstack().peek().getName();
- if (CHANNEL.equals(parent)) {
- Feed feed = state.getFeed();
- if(feed != null && feed.getImage() == null) {
- feed.setImage(new FeedImage());
- feed.getImage().setOwner(state.getFeed());
- }
- }
- }
}
return new SyndElement(localName, this);
}
@@ -134,11 +118,6 @@ public class NSRSS20 extends Namespace {
state.getCurrentItem().setTitle(title);
} else if (CHANNEL.equals(second) && state.getFeed() != null) {
state.getFeed().setTitle(title);
- } else if (IMAGE.equals(second) && CHANNEL.equals(third)) {
- if(state.getFeed() != null && state.getFeed().getImage() != null &&
- state.getFeed().getImage().getTitle() == null) {
- state.getFeed().getImage().setTitle(title);
- }
}
} else if (LINK.equals(top)) {
if (CHANNEL.equals(second) && state.getFeed() != null) {
@@ -150,9 +129,8 @@ public class NSRSS20 extends Namespace {
state.getCurrentItem().setPubDate(DateUtils.parse(content));
} else if (URL.equals(top) && IMAGE.equals(second) && CHANNEL.equals(third)) {
// prefer itunes:image
- if(state.getFeed() != null && state.getFeed().getImage() != null &&
- state.getFeed().getImage().getDownload_url() == null) {
- state.getFeed().getImage().setDownload_url(content);
+ if (state.getFeed() != null) {
+ state.getFeed().setImageUrl(content);
}
} else if (DESCR.equals(localName)) {
if (CHANNEL.equals(second) && state.getFeed() != null) {
diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/Namespace.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/Namespace.java
index 1836bbec1..e5fbdb9bb 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/Namespace.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/Namespace.java
@@ -15,7 +15,6 @@ public abstract class Namespace {
public abstract SyndElement handleElementStart(String localName, HandlerState state, Attributes attributes);
/** Called by a Feedhandler when in endElement and it detects a namespace element
- * @return true if namespace handled the element, false if it ignored it
* */
public abstract void handleElementEnd(String localName, HandlerState state);
diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/NSAtom.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/NSAtom.java
index 1fe388d9d..83957456a 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/NSAtom.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/NSAtom.java
@@ -5,7 +5,6 @@ import android.util.Log;
import org.xml.sax.Attributes;
-import de.danoeh.antennapod.core.feed.FeedImage;
import de.danoeh.antennapod.core.feed.FeedItem;
import de.danoeh.antennapod.core.feed.FeedMedia;
import de.danoeh.antennapod.core.syndication.handler.HandlerState;
@@ -48,8 +47,6 @@ public class NSAtom extends Namespace {
private static final String LINK_REL_ARCHIVES = "archives";
private static final String LINK_REL_ENCLOSURE = "enclosure";
private static final String LINK_REL_PAYMENT = "payment";
- private static final String LINK_REL_RELATED = "related";
- private static final String LINK_REL_SELF = "self";
private static final String LINK_REL_NEXT = "next";
// type-values
private static final String LINK_TYPE_ATOM = "application/atom+xml";
@@ -210,10 +207,10 @@ public class NSAtom extends Namespace {
state.getCurrentItem().setPubDate(DateUtils.parse(content));
} else if (PUBLISHED.equals(top) && ENTRY.equals(second) && state.getCurrentItem() != null) {
state.getCurrentItem().setPubDate(DateUtils.parse(content));
- } else if (IMAGE_LOGO.equals(top) && state.getFeed() != null && state.getFeed().getImage() == null) {
- state.getFeed().setImage(new FeedImage(state.getFeed(), content, null));
+ } else if (IMAGE_LOGO.equals(top) && state.getFeed() != null && state.getFeed().getImageUrl() == null) {
+ state.getFeed().setImageUrl(content);
} else if (IMAGE_ICON.equals(top) && state.getFeed() != null) {
- state.getFeed().setImage(new FeedImage(state.getFeed(), content, null));
+ state.getFeed().setImageUrl(content);
} else if (AUTHOR_NAME.equals(top) && AUTHOR.equals(second) &&
state.getFeed() != null && state.getCurrentItem() == null) {
String currentName = state.getFeed().getAuthor();
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/Consumer.java b/core/src/main/java/de/danoeh/antennapod/core/util/Consumer.java
new file mode 100644
index 000000000..13a87af0d
--- /dev/null
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/Consumer.java
@@ -0,0 +1,5 @@
+package de.danoeh.antennapod.core.util;
+
+public interface Consumer<T> {
+ void accept(T t);
+}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/Converter.java b/core/src/main/java/de/danoeh/antennapod/core/util/Converter.java
index b513fbe99..6ecca941a 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/Converter.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/Converter.java
@@ -28,7 +28,6 @@ public final class Converter {
/** Determines the length of the number for best readability.*/
private static final int NUM_LENGTH = 1024;
- private static final int DAYS_MIL = 86400000;
private static final int HOURS_MIL = 3600000;
private static final int MINUTES_MIL = 60000;
private static final int SECONDS_MIL = 1000;
@@ -75,13 +74,14 @@ public final class Converter {
return String.format(Locale.getDefault(), "%02d:%02d:%02d", h, m, s);
}
- /** Converts milliseconds to a string containing hours and minutes */
- public static String getDurationStringShort(int duration) {
- int h = duration / HOURS_MIL;
- int rest = duration - h * HOURS_MIL;
- int m = rest / MINUTES_MIL;
-
- return String.format(Locale.getDefault(), "%02d:%02d", h, m);
+ /** Converts milliseconds to a string containing hours and minutes or minutes and seconds*/
+ public static String getDurationStringShort(int duration, boolean durationIsInHours) {
+ int firstPartBase = durationIsInHours ? HOURS_MIL : MINUTES_MIL;
+ int firstPart = duration / firstPartBase;
+ int leftoverFromFirstPart = duration - firstPart * firstPartBase;
+ int secondPart = leftoverFromFirstPart / (durationIsInHours ? MINUTES_MIL : SECONDS_MIL);
+
+ return String.format(Locale.getDefault(), "%02d:%02d", firstPart, secondPart);
}
/** Converts long duration string (HH:MM:SS) to milliseconds. */
@@ -95,14 +95,20 @@ public final class Converter {
Integer.parseInt(parts[2]) * 1000;
}
- /** Converts short duration string (HH:MM) to milliseconds. */
- public static int durationStringShortToMs(String input) {
+ /**
+ * Converts short duration string (XX:YY) to milliseconds. If durationIsInHours is true then the
+ * format is HH:MM, otherwise it's MM:SS.
+ * */
+ public static int durationStringShortToMs(String input, boolean durationIsInHours) {
String[] parts = input.split(":");
if (parts.length != 2) {
return 0;
}
- return Integer.parseInt(parts[0]) * 3600 * 1000 +
- Integer.parseInt(parts[1]) * 1000 * 60;
+
+ int modifier = durationIsInHours ? 60 : 1;
+
+ return Integer.parseInt(parts[0]) * 60 * 1000 * modifier+
+ Integer.parseInt(parts[1]) * 1000 * modifier;
}
/** Converts milliseconds to a localized string containing hours and minutes */
@@ -131,6 +137,7 @@ public final class Converter {
return String.format(Locale.getDefault(), "%.1f ", hours) + context.getString(R.string.time_hours);
}
+
/**
* Converts the volume as read as the progress from a SeekBar scaled to 100 and as saved in
* UserPreferences to the format taken by setVolume methods.
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/DateUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/DateUtils.java
index 5056ea274..5141e3a78 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/DateUtils.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/DateUtils.java
@@ -17,7 +17,9 @@ import java.util.TimeZone;
*/
public class DateUtils {
- private static final String TAG = "DateUtils";
+ private DateUtils(){}
+
+ private static final String TAG = "DateUtils";
private static final TimeZone defaultTimezone = TimeZone.getTimeZone("GMT");
@@ -85,7 +87,8 @@ public class DateUtils {
"yyyy-MM-dd'T'HH:mm:ss'Z'",
"yyyy-MM-dd'T'HH:mm:ss.SSSZ",
"yyyy-MM-ddZ",
- "yyyy-MM-dd"
+ "yyyy-MM-dd",
+ "EEE d MMM yyyy HH:mm:ss 'GMT'Z (z)"
};
SimpleDateFormat parser = new SimpleDateFormat("", Locale.US);
@@ -134,7 +137,7 @@ public class DateUtils {
if (parts.length >= 2) {
result += Integer.parseInt(parts[idx]) * 60000L;
idx++;
- result += (Float.parseFloat(parts[idx])) * 1000L;
+ result += (long) (Float.parseFloat(parts[idx]) * 1000L);
}
return result;
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/EpisodeFilter.java b/core/src/main/java/de/danoeh/antennapod/core/util/EpisodeFilter.java
deleted file mode 100644
index fb1b0dc8f..000000000
--- a/core/src/main/java/de/danoeh/antennapod/core/util/EpisodeFilter.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package de.danoeh.antennapod.core.util;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import de.danoeh.antennapod.core.feed.FeedItem;
-
-class EpisodeFilter {
-
- private EpisodeFilter() {
-
- }
-
- /** Return a copy of the itemlist without items which have no media. */
- public static ArrayList<FeedItem> getEpisodeList(List<FeedItem> items) {
- ArrayList<FeedItem> episodes = new ArrayList<>(items);
- for (FeedItem item : items) {
- if (item.getMedia() == null) {
- episodes.remove(item);
- }
- }
- return episodes;
- }
-
- public static int countItemsWithEpisodes(List<FeedItem> items) {
- int count = 0;
- for (FeedItem item : items) {
- if (item.getMedia() != null) {
- count++;
- }
- }
- return count;
- }
-
- public static FeedItem accessEpisodeByIndex(List<FeedItem> items,
- int position) {
- int count = 0;
- for (FeedItem item : items) {
-
- if (item.getMedia() != null) {
- if (count == position) {
- return item;
- } else {
- count++;
- }
- }
- }
- return null;
- }
-}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/FeedItemUtil.java b/core/src/main/java/de/danoeh/antennapod/core/util/FeedItemUtil.java
index 76a6549ae..826c06822 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/FeedItemUtil.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/FeedItemUtil.java
@@ -5,6 +5,7 @@ import java.util.List;
import de.danoeh.antennapod.core.feed.FeedItem;
public class FeedItemUtil {
+ private FeedItemUtil(){}
public static int indexOfItemWithDownloadUrl(List<FeedItem> items, String downloadUrl) {
if(items == null) {
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/FeedUpdateUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/FeedUpdateUtils.java
index 24e0da9ed..afaf13390 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/FeedUpdateUtils.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/FeedUpdateUtils.java
@@ -2,20 +2,30 @@ package de.danoeh.antennapod.core.util;
import android.content.Context;
import android.util.Log;
+
+import org.awaitility.core.ConditionTimeoutException;
+
+import java.util.concurrent.TimeUnit;
+
import de.danoeh.antennapod.core.storage.DBTasks;
+import static org.awaitility.Awaitility.with;
+
public class FeedUpdateUtils {
private static final String TAG = "FeedUpdateUtils";
- private FeedUpdateUtils() {
-
- }
+ private FeedUpdateUtils() {}
public static void startAutoUpdate(Context context, Runnable callback) {
- if (NetworkUtils.networkAvailable() && NetworkUtils.isDownloadAllowed()) {
+ try {
+ with().pollInterval(1, TimeUnit.SECONDS)
+ .await()
+ .atMost(10, TimeUnit.SECONDS)
+ .until(() -> NetworkUtils.networkAvailable() && NetworkUtils.isDownloadAllowed());
DBTasks.refreshAllFeeds(context, null, callback);
- } else {
+ } catch (ConditionTimeoutException ignore) {
Log.d(TAG, "Blocking automatic update: no wifi available / no mobile updates allowed");
}
}
+
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/Function.java b/core/src/main/java/de/danoeh/antennapod/core/util/Function.java
new file mode 100644
index 000000000..c4f4ad68a
--- /dev/null
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/Function.java
@@ -0,0 +1,7 @@
+package de.danoeh.antennapod.core.util;
+
+import io.reactivex.annotations.NonNull;
+
+public interface Function<T, R> {
+ R apply(@NonNull T t);
+}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/IntentUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/IntentUtils.java
index 1571b71c2..e81ab47ed 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/IntentUtils.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/IntentUtils.java
@@ -8,6 +8,7 @@ import android.content.pm.ResolveInfo;
import java.util.List;
public class IntentUtils {
+ private IntentUtils(){}
/*
* Checks if there is at least one exported activity that can be performed for the intent
@@ -23,4 +24,8 @@ public class IntentUtils {
return false;
}
+ public static void sendLocalBroadcast(Context context, String action) {
+ context.sendBroadcast(new Intent(action).setPackage(context.getPackageName()));
+ }
+
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/LangUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/LangUtils.java
index 7ec7f84c4..90e0b0981 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/LangUtils.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/LangUtils.java
@@ -5,6 +5,9 @@ import android.support.v4.util.ArrayMap;
import java.nio.charset.Charset;
public class LangUtils {
+
+ private LangUtils(){}
+
public static final Charset UTF_8 = Charset.forName("UTF-8");
private static final ArrayMap<String, String> languages;
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/NetworkUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/NetworkUtils.java
index cbda583fa..9bdd375ce 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/NetworkUtils.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/NetworkUtils.java
@@ -18,15 +18,16 @@ import de.danoeh.antennapod.core.feed.FeedMedia;
import de.danoeh.antennapod.core.preferences.UserPreferences;
import de.danoeh.antennapod.core.service.download.AntennapodHttpClient;
import de.danoeh.antennapod.core.storage.DBWriter;
+import io.reactivex.Single;
+import io.reactivex.SingleOnSubscribe;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
-import rx.Observable;
-import rx.Subscriber;
-import rx.android.schedulers.AndroidSchedulers;
-import rx.schedulers.Schedulers;
public class NetworkUtils {
+ private NetworkUtils(){}
private static final String TAG = NetworkUtils.class.getSimpleName();
@@ -89,9 +90,13 @@ public class NetworkUtils {
return info != null && info.isConnected();
}
- public static boolean isDownloadAllowed() {
- return UserPreferences.isAllowMobileUpdate() || !NetworkUtils.isNetworkMetered();
- }
+ public static boolean isDownloadAllowed() {
+ return UserPreferences.isAllowMobileUpdate() || !NetworkUtils.isNetworkMetered();
+ }
+
+ public static boolean isImageAllowed() {
+ return UserPreferences.isAllowMobileImages() || !NetworkUtils.isNetworkMetered();
+ }
private static boolean isNetworkMetered() {
ConnectivityManager connManager = (ConnectivityManager) context
@@ -111,11 +116,10 @@ public class NetworkUtils {
return null;
}
- public static Observable<Long> getFeedMediaSizeObservable(FeedMedia media) {
- return Observable.create((Observable.OnSubscribe<Long>) subscriber -> {
+ public static Single<Long> getFeedMediaSizeObservable(FeedMedia media) {
+ return Single.create((SingleOnSubscribe<Long>) emitter -> {
if (!NetworkUtils.isDownloadAllowed()) {
- subscriber.onNext(0L);
- subscriber.onCompleted();
+ emitter.onSuccess(0L);
return;
}
long size = Integer.MIN_VALUE;
@@ -129,8 +133,7 @@ public class NetworkUtils {
String url = media.getDownload_url();
if(TextUtils.isEmpty(url)) {
- subscriber.onNext(0L);
- subscriber.onCompleted();
+ emitter.onSuccess(0L);
return;
}
@@ -150,8 +153,7 @@ public class NetworkUtils {
}
}
} catch (IOException e) {
- subscriber.onNext(0L);
- subscriber.onCompleted();
+ emitter.onSuccess(0L);
Log.e(TAG, Log.getStackTraceString(e));
return; // better luck next time
}
@@ -163,11 +165,10 @@ public class NetworkUtils {
} else {
media.setSize(size);
}
- subscriber.onNext(size);
- subscriber.onCompleted();
+ emitter.onSuccess(size);
DBWriter.setFeedMedia(media);
})
- .subscribeOn(Schedulers.newThread())
+ .subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/Optional.java b/core/src/main/java/de/danoeh/antennapod/core/util/Optional.java
new file mode 100644
index 000000000..0fe11ec53
--- /dev/null
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/Optional.java
@@ -0,0 +1,213 @@
+/*
+ * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package de.danoeh.antennapod.core.util;
+
+import java.util.NoSuchElementException;
+import java.util.Objects;
+
+// AntennaPod's stripped-down version of Java/Android platform's java.util.Optional
+// so that it can be used on lower API level (API level 14)
+
+// Android-changed: removed ValueBased paragraph.
+/**
+ * A container object which may or may not contain a non-null value.
+ * If a value is present, {@code isPresent()} will return {@code true} and
+ * {@code get()} will return the value.
+ *
+ * <p>Additional methods that depend on the presence or absence of a contained
+ * value are provided, such as {@link #orElse(java.lang.Object) orElse()}
+ * (return a default value if value not present) and
+ * {@link #ifPresent(java.util.function.Consumer) ifPresent()} (execute a block
+ * of code if the value is present).
+ *
+ * @since 1.8
+ */
+public final class Optional<T> {
+ /**
+ * Common instance for {@code empty()}.
+ */
+ private static final Optional<?> EMPTY = new Optional<>();
+
+ /**
+ * If non-null, the value; if null, indicates no value is present
+ */
+ private final T value;
+
+ /**
+ * Constructs an empty instance.
+ *
+ * @implNote Generally only one empty instance, {@link Optional#EMPTY},
+ * should exist per VM.
+ */
+ private Optional() {
+ this.value = null;
+ }
+
+ /**
+ * Returns an empty {@code Optional} instance. No value is present for this
+ * Optional.
+ *
+ * @apiNote Though it may be tempting to do so, avoid testing if an object
+ * is empty by comparing with {@code ==} against instances returned by
+ * {@code Option.empty()}. There is no guarantee that it is a singleton.
+ * Instead, use {@link #isPresent()}.
+ *
+ * @param <T> Type of the non-existent value
+ * @return an empty {@code Optional}
+ */
+ public static<T> Optional<T> empty() {
+ @SuppressWarnings("unchecked")
+ Optional<T> t = (Optional<T>) EMPTY;
+ return t;
+ }
+
+ /**
+ * Constructs an instance with the value present.
+ *
+ * @param value the non-null value to be present
+ * @throws NullPointerException if value is null
+ */
+ private Optional(T value) {
+ this.value = Objects.requireNonNull(value);
+ }
+
+ /**
+ * Returns an {@code Optional} with the specified present non-null value.
+ *
+ * @param <T> the class of the value
+ * @param value the value to be present, which must be non-null
+ * @return an {@code Optional} with the value present
+ * @throws NullPointerException if value is null
+ */
+ public static <T> Optional<T> of(T value) {
+ return new Optional<>(value);
+ }
+
+ /**
+ * Returns an {@code Optional} describing the specified value, if non-null,
+ * otherwise returns an empty {@code Optional}.
+ *
+ * @param <T> the class of the value
+ * @param value the possibly-null value to describe
+ * @return an {@code Optional} with a present value if the specified value
+ * is non-null, otherwise an empty {@code Optional}
+ */
+ public static <T> Optional<T> ofNullable(T value) {
+ return value == null ? empty() : of(value);
+ }
+
+ /**
+ * If a value is present in this {@code Optional}, returns the value,
+ * otherwise throws {@code NoSuchElementException}.
+ *
+ * @return the non-null value held by this {@code Optional}
+ * @throws NoSuchElementException if there is no value present
+ *
+ * @see Optional#isPresent()
+ */
+ public T get() {
+ if (value == null) {
+ throw new NoSuchElementException("No value present");
+ }
+ return value;
+ }
+
+ /**
+ * Return {@code true} if there is a value present, otherwise {@code false}.
+ *
+ * @return {@code true} if there is a value present, otherwise {@code false}
+ */
+ public boolean isPresent() {
+ return value != null;
+ }
+
+
+ /**
+ * Return the value if present, otherwise return {@code other}.
+ *
+ * @param other the value to be returned if there is no value present, may
+ * be null
+ * @return the value, if present, otherwise {@code other}
+ */
+ public T orElse(T other) {
+ return value != null ? value : other;
+ }
+
+ /**
+ * Indicates whether some other object is "equal to" this Optional. The
+ * other object is considered equal if:
+ * <ul>
+ * <li>it is also an {@code Optional} and;
+ * <li>both instances have no value present or;
+ * <li>the present values are "equal to" each other via {@code equals()}.
+ * </ul>
+ *
+ * @param obj an object to be tested for equality
+ * @return {code true} if the other object is "equal to" this object
+ * otherwise {@code false}
+ */
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+
+ if (!(obj instanceof Optional)) {
+ return false;
+ }
+
+ Optional<?> other = (Optional<?>) obj;
+ return (value == other.value) || (value != null && value.equals(other.value));
+ }
+
+ /**
+ * Returns the hash code value of the present value, if any, or 0 (zero) if
+ * no value is present.
+ *
+ * @return hash code value of the present value or 0 if no value is present
+ */
+ @Override
+ public int hashCode() {
+ return value != null ? value.hashCode() : 0;
+ }
+
+ /**
+ * Returns a non-empty string representation of this Optional suitable for
+ * debugging. The exact presentation format is unspecified and may vary
+ * between implementations and versions.
+ *
+ * @implSpec If a value is present the result must include its string
+ * representation in the result. Empty and present Optionals must be
+ * unambiguously differentiable.
+ *
+ * @return the string representation of this instance
+ */
+ @Override
+ public String toString() {
+ return value != null
+ ? String.format("Optional[%s]", value)
+ : "Optional.empty";
+ }
+}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/QueueAccess.java b/core/src/main/java/de/danoeh/antennapod/core/util/QueueAccess.java
index 7377b202d..9408be348 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/QueueAccess.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/QueueAccess.java
@@ -58,19 +58,4 @@ public abstract class QueueAccess {
};
}
- public static QueueAccess NotInQueueAccess() {
- return new QueueAccess() {
- @Override
- public boolean contains(long id) {
- return false;
- }
-
- @Override
- public boolean remove(long id) {
- return false;
- }
- };
-
- }
-
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/RewindAfterPauseUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/RewindAfterPauseUtils.java
index ee306a401..d1818aeef 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/RewindAfterPauseUtils.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/RewindAfterPauseUtils.java
@@ -9,6 +9,7 @@ import java.util.concurrent.TimeUnit;
* Media file should be "rewinded" x seconds after user resumes the playback.
*/
public class RewindAfterPauseUtils {
+ private RewindAfterPauseUtils(){}
public static final long ELAPSED_TIME_FOR_SHORT_REWIND = TimeUnit.MINUTES.toMillis(1);
public static final long ELAPSED_TIME_FOR_MEDIUM_REWIND = TimeUnit.HOURS.toMillis(1);
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/StorageUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/StorageUtils.java
index 1ef81bf64..3a6bf5755 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/StorageUtils.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/StorageUtils.java
@@ -14,6 +14,8 @@ import de.danoeh.antennapod.core.preferences.UserPreferences;
* Utility functions for handling storage errors
*/
public class StorageUtils {
+ private StorageUtils(){}
+
private static final String TAG = "StorageUtils";
public static boolean storageAvailable() {
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/ThemeUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/ThemeUtils.java
index f67367643..14f091249 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/ThemeUtils.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/ThemeUtils.java
@@ -1,17 +1,25 @@
package de.danoeh.antennapod.core.util;
+import android.content.Context;
+import android.support.annotation.AttrRes;
+import android.support.annotation.ColorInt;
import android.util.Log;
+import android.util.TypedValue;
import de.danoeh.antennapod.core.R;
import de.danoeh.antennapod.core.preferences.UserPreferences;
public class ThemeUtils {
+ private ThemeUtils(){}
+
private static final String TAG = "ThemeUtils";
public static int getSelectionBackgroundColor() {
int theme = UserPreferences.getTheme();
if (theme == R.style.Theme_AntennaPod_Dark) {
return R.color.selection_background_color_dark;
+ } else if (theme == R.style.Theme_AntennaPod_TrueBlack){
+ return R.color.selection_background_color_trueblack;
} else if (theme == R.style.Theme_AntennaPod_Light) {
return R.color.selection_background_color_light;
} else {
@@ -20,4 +28,10 @@ public class ThemeUtils {
return R.color.selection_background_color_light;
}
}
+
+ public static @ColorInt int getColorFromAttr(Context context, @AttrRes int attr) {
+ TypedValue typedValue = new TypedValue();
+ context.getTheme().resolveAttribute(attr, typedValue, true);
+ return typedValue.data;
+ }
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/URLChecker.java b/core/src/main/java/de/danoeh/antennapod/core/util/URLChecker.java
index 40faa1dd2..ffc6a6e28 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/URLChecker.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/URLChecker.java
@@ -1,6 +1,7 @@
package de.danoeh.antennapod.core.util;
import android.net.Uri;
+import android.support.annotation.NonNull;
import android.util.Log;
import de.danoeh.antennapod.core.BuildConfig;
@@ -29,7 +30,7 @@ public final class URLChecker {
* @param url The url which is going to be prepared
* @return The prepared url
*/
- public static String prepareURL(String url) {
+ public static String prepareURL(@NonNull String url) {
url = url.trim();
if (url.startsWith("feed://")) {
if (BuildConfig.DEBUG) Log.d(TAG, "Replacing feed:// with http://");
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/download/AutoUpdateManager.java b/core/src/main/java/de/danoeh/antennapod/core/util/download/AutoUpdateManager.java
index ad723c685..1629f4aaf 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/download/AutoUpdateManager.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/download/AutoUpdateManager.java
@@ -11,12 +11,17 @@ import android.os.Build;
import android.os.SystemClock;
import android.support.annotation.RequiresApi;
import android.util.Log;
-import de.danoeh.antennapod.core.receiver.FeedUpdateReceiver;
-import de.danoeh.antennapod.core.service.FeedUpdateJobService;
import java.util.Calendar;
import java.util.concurrent.TimeUnit;
+import de.danoeh.antennapod.core.preferences.UserPreferences;
+import de.danoeh.antennapod.core.receiver.FeedUpdateReceiver;
+import de.danoeh.antennapod.core.service.FeedUpdateJobService;
+import de.danoeh.antennapod.core.storage.DBTasks;
+import de.danoeh.antennapod.core.util.Converter;
+import de.danoeh.antennapod.core.util.FeedUpdateUtils;
+
public class AutoUpdateManager {
private static final int JOB_ID_FEED_UPDATE = 42;
private static final String TAG = "AutoUpdateManager";
@@ -152,4 +157,29 @@ public class AutoUpdateManager {
updateIntent);
Log.d(TAG, "Changed alarm to new time of day " + alarm.get(Calendar.HOUR_OF_DAY) + ":" + alarm.get(Calendar.MINUTE));
}
+
+ /*
+ * Checks if the app should refresh all feeds, i.e. if the last auto refresh failed.
+ *
+ * The feeds are only refreshed if an update interval or time of day is set and the last
+ * (successful) refresh was before the last interval or more than a day ago, respectively.
+ *
+ */
+ public static void checkShouldRefreshFeeds(Context context) {
+ long interval = 0;
+ if(UserPreferences.getUpdateInterval() > 0) {
+ interval = UserPreferences.getUpdateInterval();
+ } else if(UserPreferences.getUpdateTimeOfDay().length > 0){
+ interval = TimeUnit.DAYS.toMillis(1);
+ }
+ if(interval == 0) { // auto refresh is disabled
+ return;
+ }
+ long lastRefresh = DBTasks.getLastRefreshAllFeedsTimeMillis(context);
+ Log.d(TAG, "last refresh: " + Converter.getDurationStringLocalized(context,
+ System.currentTimeMillis() - lastRefresh) + " ago");
+ if(lastRefresh <= System.currentTimeMillis() - interval) {
+ FeedUpdateUtils.startAutoUpdate(context, null);
+ }
+ }
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/exception/MediaFileNotFoundException.java b/core/src/main/java/de/danoeh/antennapod/core/util/exception/MediaFileNotFoundException.java
index ecb641dad..3000e2fa4 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/exception/MediaFileNotFoundException.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/exception/MediaFileNotFoundException.java
@@ -12,11 +12,6 @@ public class MediaFileNotFoundException extends Exception {
this.media = media;
}
- public MediaFileNotFoundException(FeedMedia media) {
- super();
- this.media = media;
- }
-
public FeedMedia getMedia() {
return media;
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrServiceCreator.java b/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrServiceCreator.java
index 45cb56988..d4d5843d2 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrServiceCreator.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrServiceCreator.java
@@ -11,7 +11,9 @@ import de.danoeh.antennapod.core.BuildConfig;
/** Ensures that only one instance of the FlattrService class exists at a time */
class FlattrServiceCreator {
- private static final String TAG = "FlattrServiceCreator";
+ private FlattrServiceCreator(){}
+
+ public static final String TAG = "FlattrServiceCreator";
private static volatile FlattrService flattrService;
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrUtils.java
index 313d1c2f2..919fc82f2 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrUtils.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrUtils.java
@@ -1,8 +1,6 @@
package de.danoeh.antennapod.core.util.flattr;
import android.content.Context;
-import android.content.DialogInterface;
-import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
@@ -36,6 +34,8 @@ import de.danoeh.antennapod.core.storage.DBWriter;
*/
public class FlattrUtils {
+ private FlattrUtils(){}
+
private static final String TAG = "FlattrUtils";
private static final String HOST_NAME = "de.danoeh.antennapod";
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/gui/MoreContentListFooterUtil.java b/core/src/main/java/de/danoeh/antennapod/core/util/gui/MoreContentListFooterUtil.java
index 386f46724..6e5c3e84b 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/gui/MoreContentListFooterUtil.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/gui/MoreContentListFooterUtil.java
@@ -27,8 +27,8 @@ public class MoreContentListFooterUtil {
}
public void setLoadingState(boolean newState) {
- final ImageView imageView = (ImageView) root.findViewById(R.id.imgExpand);
- final ProgressBar progressBar = (ProgressBar) root.findViewById(R.id.progBar);
+ final ImageView imageView = root.findViewById(R.id.imgExpand);
+ final ProgressBar progressBar = root.findViewById(R.id.progBar);
if (newState) {
imageView.setVisibility(View.GONE);
progressBar.setVisibility(View.VISIBLE);
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/gui/NotificationUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/gui/NotificationUtils.java
index 1c42364ea..52a43aab2 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/gui/NotificationUtils.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/gui/NotificationUtils.java
@@ -6,6 +6,7 @@ import android.app.NotificationManager;
import android.content.Context;
import android.os.Build;
import android.support.annotation.RequiresApi;
+
import de.danoeh.antennapod.core.R;
public class NotificationUtils {
@@ -41,6 +42,7 @@ public class NotificationUtils {
NotificationChannel mChannel = new NotificationChannel(CHANNEL_ID_DOWNLOADING,
c.getString(R.string.notification_channel_downloading), NotificationManager.IMPORTANCE_LOW);
mChannel.setDescription(c.getString(R.string.notification_channel_downloading_description));
+ mChannel.setShowBadge(false);
return mChannel;
}
@@ -49,6 +51,7 @@ public class NotificationUtils {
NotificationChannel mChannel = new NotificationChannel(CHANNEL_ID_PLAYING,
c.getString(R.string.notification_channel_playing), NotificationManager.IMPORTANCE_LOW);
mChannel.setDescription(c.getString(R.string.notification_channel_playing_description));
+ mChannel.setShowBadge(false);
return mChannel;
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/AudioPlayer.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/AudioPlayer.java
index 846733882..2b3f38841 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/AudioPlayer.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/AudioPlayer.java
@@ -21,18 +21,12 @@ public class AudioPlayer extends MediaPlayer implements IPlayer {
private final SharedPreferences.OnSharedPreferenceChangeListener sonicListener =
(sharedPreferences, key) -> {
- if (key.equals(UserPreferences.PREF_SONIC)) {
+ if (key.equals(UserPreferences.PREF_MEDIA_PLAYER)) {
checkMpi();
}
};
@Override
- public void setScreenOnWhilePlaying(boolean screenOn) {
- Log.e(TAG, "Setting screen on while playing not supported in Audio Player");
- throw new UnsupportedOperationException("Setting screen on while playing not supported in Audio Player");
- }
-
- @Override
public void setDisplay(SurfaceHolder sh) {
if (sh != null) {
Log.e(TAG, "Setting display not supported in Audio Player");
@@ -40,10 +34,13 @@ public class AudioPlayer extends MediaPlayer implements IPlayer {
}
}
- @Override
- public void setVideoScalingMode(int mode) {
- throw new UnsupportedOperationException("Setting scaling mode is not supported in Audio Player");
- }
+ @Override
+ public void setPlaybackParams(float speed, boolean skipSilence) {
+ if(canSetSpeed()) {
+ setPlaybackSpeed(speed);
+ }
+ //Default player does not support silence skipping
+ }
@Override
protected boolean useSonic() {
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/IPlayer.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/IPlayer.java
index aba395ec1..c2b768ea8 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/IPlayer.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/IPlayer.java
@@ -6,13 +6,11 @@ import android.view.SurfaceHolder;
import java.io.IOException;
public interface IPlayer {
- boolean canSetPitch();
boolean canSetSpeed();
boolean canDownmix();
- float getCurrentPitchStepsAdjustment();
int getCurrentPosition();
@@ -20,20 +18,12 @@ public interface IPlayer {
int getDuration();
- float getMaxSpeedMultiplier();
-
- float getMinSpeedMultiplier();
-
- boolean isLooping();
-
boolean isPlaying();
void pause();
void prepare() throws IllegalStateException, IOException;
- void prepareAsync();
-
void release();
void reset();
@@ -42,22 +32,12 @@ public interface IPlayer {
void setAudioStreamType(int streamtype);
- void setScreenOnWhilePlaying(boolean screenOn);
-
void setDataSource(String path) throws IllegalStateException, IOException,
IllegalArgumentException, SecurityException;
void setDisplay(SurfaceHolder sh);
- void setEnableSpeedAdjustment(boolean enableSpeedAdjustment);
-
- void setLooping(boolean looping);
-
- void setPitchStepsAdjustment(float pitchSteps);
-
- void setPlaybackPitch(float f);
-
- void setPlaybackSpeed(float f);
+ void setPlaybackParams(float speed, boolean skipSilence);
void setDownmix(boolean enable);
@@ -67,7 +47,5 @@ public interface IPlayer {
void stop();
- void setVideoScalingMode(int mode);
-
void setWakeMode(Context context, int mode);
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/MediaPlayerError.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/MediaPlayerError.java
index a576dd497..b04c02075 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/MediaPlayerError.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/MediaPlayerError.java
@@ -7,6 +7,7 @@ import de.danoeh.antennapod.core.R;
/** Utility class for MediaPlayer errors. */
public class MediaPlayerError {
+ private MediaPlayerError(){}
/** Get a human-readable string for a specific error code. */
public static String getErrorString(Context context, int code) {
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/Playable.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/Playable.java
index ff7f5b79d..da9b96430 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/Playable.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/Playable.java
@@ -176,6 +176,8 @@ public interface Playable extends Parcelable,
* Provides utility methods for Playable objects.
*/
class PlayableUtils {
+ private PlayableUtils(){}
+
private static final String TAG = "PlayableUtils";
/**
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java
index a3f02d5cc..6498b9ff1 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java
@@ -7,15 +7,11 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.ServiceConnection;
-import android.content.SharedPreferences;
import android.content.res.TypedArray;
import android.media.MediaPlayer;
import android.os.Build;
import android.os.IBinder;
-import android.preference.PreferenceManager;
import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.content.ContextCompat;
import android.text.TextUtils;
import android.util.Log;
import android.util.Pair;
@@ -24,10 +20,8 @@ import android.widget.ImageButton;
import android.widget.SeekBar;
import android.widget.TextView;
-import java.util.concurrent.RejectedExecutionHandler;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.ScheduledThreadPoolExecutor;
-import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import de.danoeh.antennapod.core.R;
@@ -41,11 +35,14 @@ import de.danoeh.antennapod.core.service.playback.PlaybackServiceMediaPlayer;
import de.danoeh.antennapod.core.service.playback.PlayerStatus;
import de.danoeh.antennapod.core.storage.DBTasks;
import de.danoeh.antennapod.core.util.Converter;
+import de.danoeh.antennapod.core.util.Optional;
import de.danoeh.antennapod.core.util.playback.Playable.PlayableUtils;
-import rx.Observable;
-import rx.Subscription;
-import rx.android.schedulers.AndroidSchedulers;
-import rx.schedulers.Schedulers;
+import io.reactivex.Maybe;
+import io.reactivex.MaybeOnSubscribe;
+import io.reactivex.Observable;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.disposables.Disposable;
+import io.reactivex.schedulers.Schedulers;
/**
* Communicates with the playback service. GUI classes should use this class to
@@ -73,7 +70,8 @@ public abstract class PlaybackController {
private boolean released = false;
private boolean initialized = false;
- private Subscription serviceBinder;
+ private Disposable serviceBinder;
+ private Disposable mediaLoader;
/**
* True if controller should reinit playback service if 'pause' button is
@@ -106,6 +104,7 @@ public abstract class PlaybackController {
}
private synchronized void initServiceRunning() {
+ Log.v(TAG, "initServiceRunning()");
if (initialized) {
return;
}
@@ -148,7 +147,7 @@ public abstract class PlaybackController {
}
if(serviceBinder != null) {
- serviceBinder.unsubscribe();
+ serviceBinder.dispose();
}
try {
activity.unbindService(mConnection);
@@ -183,27 +182,20 @@ public abstract class PlaybackController {
private void bindToService() {
Log.d(TAG, "Trying to connect to service");
if (serviceBinder != null) {
- serviceBinder.unsubscribe();
+ serviceBinder.dispose();
}
serviceBinder = Observable.fromCallable(this::getPlayLastPlayedMediaIntent)
- .subscribeOn(Schedulers.newThread())
+ .subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
- .subscribe(intent -> {
+ .subscribe(optionalIntent -> {
boolean bound = false;
- if (!PlaybackService.started) {
- if (intent != null) {
- Log.d(TAG, "Calling start service");
- ContextCompat.startForegroundService(activity, intent);
- bound = activity.bindService(intent, mConnection, 0);
- } else {
- status = PlayerStatus.STOPPED;
- setupGUI();
- handleStatus();
- }
+ if (optionalIntent.isPresent()) {
+ Log.d(TAG, "Calling bind service");
+ bound = activity.bindService(optionalIntent.get(), mConnection, 0);
} else {
- Log.d(TAG, "PlaybackService is running, trying to connect without start command.");
- bound = activity.bindService(new Intent(activity, PlaybackService.class),
- mConnection, 0);
+ status = PlayerStatus.STOPPED;
+ setupGUI();
+ handleStatus();
}
Log.d(TAG, "Result for service binding: " + bound);
}, error -> Log.e(TAG, Log.getStackTraceString(error)));
@@ -213,24 +205,26 @@ public abstract class PlaybackController {
* Returns an intent that starts the PlaybackService and plays the last
* played media or null if no last played media could be found.
*/
- @Nullable private Intent getPlayLastPlayedMediaIntent() {
+ @NonNull
+ private Optional<Intent> getPlayLastPlayedMediaIntent() {
Log.d(TAG, "Trying to restore last played media");
Playable media = PlayableUtils.createInstanceFromPreferences(activity);
if (media == null) {
Log.d(TAG, "No last played media found");
- return null;
+ return Optional.empty();
}
+
boolean fileExists = media.localFileAvailable();
boolean lastIsStream = PlaybackPreferences.getCurrentEpisodeIsStream();
if (!fileExists && !lastIsStream && media instanceof FeedMedia) {
DBTasks.notifyMissingFeedMediaFile(activity, (FeedMedia) media);
}
- return new PlaybackServiceStarter(activity, media)
+ return Optional.of(new PlaybackServiceStarter(activity, media)
.startWhenPrepared(false)
.shouldStream(lastIsStream || !fileExists)
- .getIntent();
+ .getIntent());
}
@@ -413,8 +407,8 @@ public abstract class PlaybackController {
pauseResource = res.getResourceId(1, R.drawable.ic_pause_grey600_36dp);
res.recycle();
} else {
- playResource = R.drawable.ic_av_play_circle_outline_80dp;
- pauseResource = R.drawable.ic_av_pause_circle_outline_80dp;
+ playResource = R.drawable.ic_av_play_white_80dp;
+ pauseResource = R.drawable.ic_av_pause_white_80dp;
}
Log.d(TAG, "status: " + status.toString());
@@ -588,7 +582,8 @@ public abstract class PlaybackController {
.startWhenPrepared(true)
.streamIfLastWasStream()
.start();
- Log.w(TAG, "Play/Pause button was pressed, but playbackservice was null!");
+ Log.d(TAG, "Play/Pause button was pressed, but playbackservice was null - " +
+ "it is likely to have been released by Android system. Restarting it.");
return;
}
switch (status) {
@@ -699,7 +694,7 @@ public abstract class PlaybackController {
return org.antennapod.audio.MediaPlayer.isPrestoLibraryInstalled(activity.getApplicationContext())
|| UserPreferences.useSonic()
|| Build.VERSION.SDK_INT >= 23
- || playbackService != null && playbackService.canSetSpeed();
+ || (playbackService != null && playbackService.canSetSpeed());
}
public void setPlaybackSpeed(float speed) {
@@ -707,6 +702,11 @@ public abstract class PlaybackController {
playbackService.setSpeed(speed);
}
}
+ public void setSkipSilence(boolean skipSilence) {
+ if (playbackService != null) {
+ playbackService.skipSilence(skipSilence);
+ }
+ }
public void setVolume(float leftVolume, float rightVolume) {
if (playbackService != null) {
@@ -760,6 +760,7 @@ public abstract class PlaybackController {
}
public void notifyVideoSurfaceAbandoned() {
+ Log.v(TAG, "notifyVideoSurfaceAbandoned() - hasPlaybackService=" + (playbackService != null));
if (playbackService != null) {
playbackService.notifyVideoSurfaceAbandoned();
}
@@ -780,18 +781,28 @@ public abstract class PlaybackController {
}
private void initServiceNotRunning() {
- if (getMedia() == null) {
- return;
- }
- if (getMedia().getMediaType() == MediaType.AUDIO) {
- TypedArray res = activity.obtainStyledAttributes(new int[]{
- de.danoeh.antennapod.core.R.attr.av_play_big});
- getPlayButton().setImageResource(
- res.getResourceId(0, de.danoeh.antennapod.core.R.drawable.ic_play_arrow_grey600_36dp));
- res.recycle();
- } else {
- getPlayButton().setImageResource(R.drawable.ic_av_play_circle_outline_80dp);
- }
+ Log.v(TAG, "initServiceNotRunning()");
+ mediaLoader = Maybe.create((MaybeOnSubscribe<Playable>) emitter -> {
+ Playable media = getMedia();
+ if (media != null) {
+ emitter.onSuccess(media);
+ } else {
+ emitter.onComplete();
+ }
+ })
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(media -> {
+ if (media.getMediaType() == MediaType.AUDIO) {
+ TypedArray res = activity.obtainStyledAttributes(new int[]{
+ de.danoeh.antennapod.core.R.attr.av_play_big});
+ getPlayButton().setImageResource(
+ res.getResourceId(0, de.danoeh.antennapod.core.R.drawable.ic_play_arrow_grey600_36dp));
+ res.recycle();
+ } else {
+ getPlayButton().setImageResource(R.drawable.ic_av_play_white_80dp);
+ }
+ }, error -> Log.e(TAG, Log.getStackTraceString(error)));
}
/**
@@ -799,7 +810,7 @@ public abstract class PlaybackController {
*/
public class MediaPositionObserver implements Runnable {
- public static final int WAITING_INTERVALL = 1000;
+ static final int WAITING_INTERVALL = 1000;
@Override
public void run() {
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackServiceStarter.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackServiceStarter.java
index 3ba553d12..64cf61457 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackServiceStarter.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackServiceStarter.java
@@ -2,12 +2,15 @@ package de.danoeh.antennapod.core.util.playback;
import android.content.Context;
import android.content.Intent;
-import android.media.MediaPlayer;
import android.support.v4.content.ContextCompat;
+import android.util.Log;
+
import de.danoeh.antennapod.core.preferences.PlaybackPreferences;
import de.danoeh.antennapod.core.service.playback.PlaybackService;
public class PlaybackServiceStarter {
+ private static final String TAG = "PlaybackServiceStarter";
+
private final Context context;
private final Playable media;
private boolean startWhenPrepared = false;
@@ -64,6 +67,10 @@ public class PlaybackServiceStarter {
launchIntent.putExtra(PlaybackService.EXTRA_SHOULD_STREAM, shouldStream);
launchIntent.putExtra(PlaybackService.EXTRA_PREPARE_IMMEDIATELY, prepareImmediately);
+ if (media == null) {
+ Log.e(TAG, "getIntent() - media is unexpectedly null. intent:" + launchIntent);
+ }
+
return launchIntent;
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/Timeline.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/Timeline.java
index 34cfe6d05..75229b9cf 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/Timeline.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/Timeline.java
@@ -7,6 +7,7 @@ import android.support.annotation.ColorInt;
import android.support.annotation.NonNull;
import android.text.TextUtils;
import android.util.Log;
+import android.util.Pair;
import android.util.TypedValue;
import org.jsoup.Jsoup;
@@ -14,6 +15,7 @@ import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
+import java.util.ArrayList;
import java.util.Locale;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -68,7 +70,7 @@ public class Timeline {
private static final Pattern TIMECODE_LINK_REGEX = Pattern.compile("antennapod://timecode/((\\d+))");
private static final String TIMECODE_LINK = "<a class=\"timecode\" href=\"antennapod://timecode/%d\">%s</a>";
- private static final Pattern TIMECODE_REGEX = Pattern.compile("\\b(?:(?:(([0-9][0-9])):))?(([0-9][0-9])):(([0-9][0-9]))\\b");
+ private static final Pattern TIMECODE_REGEX = Pattern.compile("\\b((\\d+):)?(\\d+):(\\d{2})\\b");
private static final Pattern LINE_BREAK_REGEX = Pattern.compile("<br */?>");
@@ -81,6 +83,7 @@ public class Timeline {
* @param addTimecodes True if this method should add timecode links
* @return The processed HTML string.
*/
+ @NonNull
public String processShownotes(final boolean addTimecodes) {
final Playable playable = (shownotesProvider instanceof Playable) ? (Playable) shownotesProvider : null;
@@ -90,8 +93,8 @@ public class Timeline {
try {
shownotes = shownotesProvider.loadShownotes().call();
} catch (Exception e) {
- e.printStackTrace();
- return null;
+ Log.e(TAG, "processShownotes() - encounters exceptions unexpectedly in load, treat as if no shownotes.", e);
+ shownotes = "";
}
if (TextUtils.isEmpty(shownotes)) {
@@ -127,35 +130,12 @@ public class Timeline {
// apply timecode links
if (addTimecodes) {
- Elements elementsWithTimeCodes = document.body().getElementsMatchingOwnText(TIMECODE_REGEX);
- Log.d(TAG, "Recognized " + elementsWithTimeCodes.size() + " timecodes");
- for (Element element : elementsWithTimeCodes) {
- Matcher matcherLong = TIMECODE_REGEX.matcher(element.html());
- StringBuffer buffer = new StringBuffer();
- while (matcherLong.find()) {
- String h = matcherLong.group(1);
- String group = matcherLong.group(0);
- int time = (h != null) ? Converter.durationStringLongToMs(group) :
- Converter.durationStringShortToMs(group);
-
- String rep;
- if (playable == null || playable.getDuration() > time) {
- rep = String.format(Locale.getDefault(), TIMECODE_LINK, time, group);
- } else {
- rep = group;
- }
- matcherLong.appendReplacement(buffer, rep);
- }
- matcherLong.appendTail(buffer);
-
- element.html(buffer.toString());
- }
+ addTimecodes(document, playable);
}
return document.toString();
}
-
/**
* Returns true if the given link is a timecode link.
*/
@@ -186,4 +166,69 @@ public class Timeline {
public void setShownotesProvider(@NonNull ShownotesProvider shownotesProvider) {
this.shownotesProvider = shownotesProvider;
}
+
+ private void addTimecodes(Document document, final Playable playable) {
+ Elements elementsWithTimeCodes = document.body().getElementsMatchingOwnText(TIMECODE_REGEX);
+ Log.d(TAG, "Recognized " + elementsWithTimeCodes.size() + " timecodes");
+
+ if (elementsWithTimeCodes.size() == 0) {
+ // No elements with timecodes
+ return;
+ }
+
+ int playableDuration = playable == null ? Integer.MAX_VALUE : playable.getDuration();
+ boolean useHourFormat = true;
+
+ if (playableDuration != Integer.MAX_VALUE) {
+
+ // We need to decide if we are going to treat short timecodes as HH:MM or MM:SS. To do
+ // so we will parse all the short timecodes and see if they fit in the duration. If one
+ // does not we will use MM:SS, otherwise all will be parsed as HH:MM.
+ for (Element element : elementsWithTimeCodes) {
+ Matcher matcherForElement = TIMECODE_REGEX.matcher(element.html());
+ while (matcherForElement.find()) {
+
+ // We only want short timecodes right now.
+ if (matcherForElement.group(1) == null) {
+ int time = Converter.durationStringShortToMs(matcherForElement.group(0), true);
+
+ // If the parsed timecode is greater then the duration then we know we need to
+ // use the minute format so we are done.
+ if (time > playableDuration) {
+ useHourFormat = false;
+ break;
+ }
+ }
+ }
+
+ if (!useHourFormat) {
+ break;
+ }
+ }
+ }
+
+ for (Element element : elementsWithTimeCodes) {
+
+ Matcher matcherForElement = TIMECODE_REGEX.matcher(element.html());
+ StringBuffer buffer = new StringBuffer();
+
+ while (matcherForElement.find()) {
+ String group = matcherForElement.group(0);
+
+ int time = matcherForElement.group(1) != null
+ ? Converter.durationStringLongToMs(group)
+ : Converter.durationStringShortToMs(group, useHourFormat);
+
+ String replacementText = group;
+ if (time < playableDuration) {
+ replacementText = String.format(Locale.getDefault(), TIMECODE_LINK, time, group);
+ }
+
+ matcherForElement.appendReplacement(buffer, replacementText);
+ }
+
+ matcherForElement.appendTail(buffer);
+ element.html(buffer.toString());
+ }
+ }
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/VideoPlayer.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/VideoPlayer.java
index 368379509..f3c1c4f59 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/VideoPlayer.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/VideoPlayer.java
@@ -7,11 +7,6 @@ public class VideoPlayer extends MediaPlayer implements IPlayer {
private static final String TAG = "VideoPlayer";
@Override
- public boolean canSetPitch() {
- return false;
- }
-
- @Override
public boolean canSetSpeed() {
return false;
}
@@ -22,47 +17,13 @@ public class VideoPlayer extends MediaPlayer implements IPlayer {
}
@Override
- public float getCurrentPitchStepsAdjustment() {
- return 1;
- }
-
- @Override
public float getCurrentSpeedMultiplier() {
return 1;
}
@Override
- public float getMaxSpeedMultiplier() {
- return 1;
- }
-
- @Override
- public float getMinSpeedMultiplier() {
- return 1;
- }
-
- @Override
- public void setEnableSpeedAdjustment(boolean enableSpeedAdjustment) throws UnsupportedOperationException {
- Log.e(TAG, "Setting enable speed adjustment unsupported in video player");
- throw new UnsupportedOperationException("Setting enable speed adjustment unsupported in video player");
- }
-
- @Override
- public void setPitchStepsAdjustment(float pitchSteps) {
- Log.e(TAG, "Setting pitch steps adjustment unsupported in video player");
- throw new UnsupportedOperationException("Setting pitch steps adjustment unsupported in video player");
- }
-
- @Override
- public void setPlaybackPitch(float f) {
- Log.e(TAG, "Setting playback pitch unsupported in video player");
- throw new UnsupportedOperationException("Setting playback pitch unsupported in video player");
- }
-
- @Override
- public void setPlaybackSpeed(float f) {
- Log.e(TAG, "Setting playback speed unsupported in video player");
- throw new UnsupportedOperationException("Setting playback speed unsupported in video player");
+ public void setPlaybackParams(float speed, boolean skipSilence) {
+ //Ignore this for non ExoPlayer implementations
}
@Override
diff --git a/core/src/main/res/drawable-hdpi/ic_av_fast_forward_80dp.png b/core/src/main/res/drawable-hdpi/ic_av_fast_forward_80dp.png
deleted file mode 100755
index 43783fbce..000000000
--- a/core/src/main/res/drawable-hdpi/ic_av_fast_forward_80dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-hdpi/ic_av_pause_circle_outline_80dp.png b/core/src/main/res/drawable-hdpi/ic_av_pause_circle_outline_80dp.png
deleted file mode 100644
index 115f7ebef..000000000
--- a/core/src/main/res/drawable-hdpi/ic_av_pause_circle_outline_80dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-hdpi/ic_av_play_circle_outline_80dp.png b/core/src/main/res/drawable-hdpi/ic_av_play_circle_outline_80dp.png
deleted file mode 100644
index 392c87bd2..000000000
--- a/core/src/main/res/drawable-hdpi/ic_av_play_circle_outline_80dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-hdpi/ic_av_rewind_80dp.png b/core/src/main/res/drawable-hdpi/ic_av_rewind_80dp.png
deleted file mode 100755
index 41052af65..000000000
--- a/core/src/main/res/drawable-hdpi/ic_av_rewind_80dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-hdpi/ic_baseline_question_answer_white_24dp.png b/core/src/main/res/drawable-hdpi/ic_baseline_question_answer_white_24dp.png
new file mode 100755
index 000000000..67924a5a2
--- /dev/null
+++ b/core/src/main/res/drawable-hdpi/ic_baseline_question_answer_white_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-hdpi/ic_bug_grey600_24dp.png b/core/src/main/res/drawable-hdpi/ic_bug_grey600_24dp.png
new file mode 100644
index 000000000..daadfb35f
--- /dev/null
+++ b/core/src/main/res/drawable-hdpi/ic_bug_grey600_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-hdpi/ic_bug_white_24dp.png b/core/src/main/res/drawable-hdpi/ic_bug_white_24dp.png
new file mode 100644
index 000000000..549f67bf4
--- /dev/null
+++ b/core/src/main/res/drawable-hdpi/ic_bug_white_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-hdpi/ic_cellphone_text_grey600_24dp.png b/core/src/main/res/drawable-hdpi/ic_cellphone_text_grey600_24dp.png
new file mode 100644
index 000000000..71ccc26ea
--- /dev/null
+++ b/core/src/main/res/drawable-hdpi/ic_cellphone_text_grey600_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-hdpi/ic_cellphone_text_white_24dp.png b/core/src/main/res/drawable-hdpi/ic_cellphone_text_white_24dp.png
new file mode 100644
index 000000000..70e52c60b
--- /dev/null
+++ b/core/src/main/res/drawable-hdpi/ic_cellphone_text_white_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-hdpi/ic_check_box_grey600_24dp.png b/core/src/main/res/drawable-hdpi/ic_check_box_grey600_24dp.png
deleted file mode 100644
index 187a426a8..000000000
--- a/core/src/main/res/drawable-hdpi/ic_check_box_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-hdpi/ic_check_box_outline_blank_grey600_24dp.png b/core/src/main/res/drawable-hdpi/ic_check_box_outline_blank_grey600_24dp.png
deleted file mode 100644
index 076773bca..000000000
--- a/core/src/main/res/drawable-hdpi/ic_check_box_outline_blank_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-hdpi/ic_check_box_outline_blank_white_24dp.png b/core/src/main/res/drawable-hdpi/ic_check_box_outline_blank_white_24dp.png
deleted file mode 100644
index ecaf0d5be..000000000
--- a/core/src/main/res/drawable-hdpi/ic_check_box_outline_blank_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-hdpi/ic_check_box_white_24dp.png b/core/src/main/res/drawable-hdpi/ic_check_box_white_24dp.png
deleted file mode 100644
index 5ce64cc5f..000000000
--- a/core/src/main/res/drawable-hdpi/ic_check_box_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-hdpi/ic_format_list_bulleted_grey600_24dp.png b/core/src/main/res/drawable-hdpi/ic_format_list_bulleted_grey600_24dp.png
new file mode 100644
index 000000000..3668c9a00
--- /dev/null
+++ b/core/src/main/res/drawable-hdpi/ic_format_list_bulleted_grey600_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-hdpi/ic_format_list_bulleted_white_24dp.png b/core/src/main/res/drawable-hdpi/ic_format_list_bulleted_white_24dp.png
new file mode 100644
index 000000000..a1a2c5b68
--- /dev/null
+++ b/core/src/main/res/drawable-hdpi/ic_format_list_bulleted_white_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-hdpi/ic_forum_grey600_24dp.png b/core/src/main/res/drawable-hdpi/ic_forum_grey600_24dp.png
new file mode 100644
index 000000000..da5398d15
--- /dev/null
+++ b/core/src/main/res/drawable-hdpi/ic_forum_grey600_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-hdpi/ic_indeterminate_check_box_grey600_24dp.png b/core/src/main/res/drawable-hdpi/ic_indeterminate_check_box_grey600_24dp.png
deleted file mode 100644
index e56fbf224..000000000
--- a/core/src/main/res/drawable-hdpi/ic_indeterminate_check_box_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-hdpi/ic_indeterminate_check_box_white_24dp.png b/core/src/main/res/drawable-hdpi/ic_indeterminate_check_box_white_24dp.png
deleted file mode 100644
index dccf44930..000000000
--- a/core/src/main/res/drawable-hdpi/ic_indeterminate_check_box_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-mdpi/ic_av_fast_forward_80dp.png b/core/src/main/res/drawable-mdpi/ic_av_fast_forward_80dp.png
deleted file mode 100755
index 0bf060d89..000000000
--- a/core/src/main/res/drawable-mdpi/ic_av_fast_forward_80dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-mdpi/ic_av_pause_circle_outline_80dp.png b/core/src/main/res/drawable-mdpi/ic_av_pause_circle_outline_80dp.png
deleted file mode 100644
index 1e71c271f..000000000
--- a/core/src/main/res/drawable-mdpi/ic_av_pause_circle_outline_80dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-mdpi/ic_av_play_circle_outline_80dp.png b/core/src/main/res/drawable-mdpi/ic_av_play_circle_outline_80dp.png
deleted file mode 100644
index d305f0c69..000000000
--- a/core/src/main/res/drawable-mdpi/ic_av_play_circle_outline_80dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-mdpi/ic_av_rewind_80dp.png b/core/src/main/res/drawable-mdpi/ic_av_rewind_80dp.png
deleted file mode 100755
index 99ac9f3c9..000000000
--- a/core/src/main/res/drawable-mdpi/ic_av_rewind_80dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-mdpi/ic_baseline_question_answer_white_24dp.png b/core/src/main/res/drawable-mdpi/ic_baseline_question_answer_white_24dp.png
new file mode 100755
index 000000000..e87df752e
--- /dev/null
+++ b/core/src/main/res/drawable-mdpi/ic_baseline_question_answer_white_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-mdpi/ic_bug_grey600_24dp.png b/core/src/main/res/drawable-mdpi/ic_bug_grey600_24dp.png
new file mode 100644
index 000000000..4b372a4e3
--- /dev/null
+++ b/core/src/main/res/drawable-mdpi/ic_bug_grey600_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-mdpi/ic_bug_white_24dp.png b/core/src/main/res/drawable-mdpi/ic_bug_white_24dp.png
new file mode 100644
index 000000000..9d7603552
--- /dev/null
+++ b/core/src/main/res/drawable-mdpi/ic_bug_white_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-mdpi/ic_cellphone_text_grey600_24dp.png b/core/src/main/res/drawable-mdpi/ic_cellphone_text_grey600_24dp.png
new file mode 100644
index 000000000..c26da2ce2
--- /dev/null
+++ b/core/src/main/res/drawable-mdpi/ic_cellphone_text_grey600_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-mdpi/ic_cellphone_text_white_24dp.png b/core/src/main/res/drawable-mdpi/ic_cellphone_text_white_24dp.png
new file mode 100644
index 000000000..8569a642d
--- /dev/null
+++ b/core/src/main/res/drawable-mdpi/ic_cellphone_text_white_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-mdpi/ic_check_box_grey600_24dp.png b/core/src/main/res/drawable-mdpi/ic_check_box_grey600_24dp.png
deleted file mode 100644
index d5bdfa433..000000000
--- a/core/src/main/res/drawable-mdpi/ic_check_box_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-mdpi/ic_check_box_outline_blank_grey600_24dp.png b/core/src/main/res/drawable-mdpi/ic_check_box_outline_blank_grey600_24dp.png
deleted file mode 100644
index aefe5b6c1..000000000
--- a/core/src/main/res/drawable-mdpi/ic_check_box_outline_blank_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-mdpi/ic_check_box_outline_blank_white_24dp.png b/core/src/main/res/drawable-mdpi/ic_check_box_outline_blank_white_24dp.png
deleted file mode 100644
index a3a588c64..000000000
--- a/core/src/main/res/drawable-mdpi/ic_check_box_outline_blank_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-mdpi/ic_check_box_white_24dp.png b/core/src/main/res/drawable-mdpi/ic_check_box_white_24dp.png
deleted file mode 100644
index dc94cdbf4..000000000
--- a/core/src/main/res/drawable-mdpi/ic_check_box_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-mdpi/ic_format_list_bulleted_grey600_24dp.png b/core/src/main/res/drawable-mdpi/ic_format_list_bulleted_grey600_24dp.png
new file mode 100644
index 000000000..726eae499
--- /dev/null
+++ b/core/src/main/res/drawable-mdpi/ic_format_list_bulleted_grey600_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-mdpi/ic_format_list_bulleted_white_24dp.png b/core/src/main/res/drawable-mdpi/ic_format_list_bulleted_white_24dp.png
new file mode 100644
index 000000000..0cc401dff
--- /dev/null
+++ b/core/src/main/res/drawable-mdpi/ic_format_list_bulleted_white_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-mdpi/ic_forum_grey600_24dp.png b/core/src/main/res/drawable-mdpi/ic_forum_grey600_24dp.png
new file mode 100644
index 000000000..d3bcfe7b6
--- /dev/null
+++ b/core/src/main/res/drawable-mdpi/ic_forum_grey600_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-mdpi/ic_indeterminate_check_box_grey600_24dp.png b/core/src/main/res/drawable-mdpi/ic_indeterminate_check_box_grey600_24dp.png
deleted file mode 100644
index 0e6ce58e3..000000000
--- a/core/src/main/res/drawable-mdpi/ic_indeterminate_check_box_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-mdpi/ic_indeterminate_check_box_white_24dp.png b/core/src/main/res/drawable-mdpi/ic_indeterminate_check_box_white_24dp.png
deleted file mode 100644
index c496b4648..000000000
--- a/core/src/main/res/drawable-mdpi/ic_indeterminate_check_box_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-v21/overlay_button_circle_background.xml b/core/src/main/res/drawable-v21/overlay_button_circle_background.xml
deleted file mode 100644
index c121690df..000000000
--- a/core/src/main/res/drawable-v21/overlay_button_circle_background.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<shape xmlns:android="http://schemas.android.com/apk/res/android"
- android:shape="rectangle">
- <gradient
- android:type="radial"
- android:gradientRadius="37.5%p"
- android:startColor="#000000"
- android:endColor="@android:color/transparent"/>
-</shape> \ No newline at end of file
diff --git a/core/src/main/res/drawable-xhdpi/ic_av_fast_forward_80dp.png b/core/src/main/res/drawable-xhdpi/ic_av_fast_forward_80dp.png
deleted file mode 100755
index 270dc9bf8..000000000
--- a/core/src/main/res/drawable-xhdpi/ic_av_fast_forward_80dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xhdpi/ic_av_pause_circle_outline_80dp.png b/core/src/main/res/drawable-xhdpi/ic_av_pause_circle_outline_80dp.png
deleted file mode 100644
index 2e0b8ff6f..000000000
--- a/core/src/main/res/drawable-xhdpi/ic_av_pause_circle_outline_80dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xhdpi/ic_av_play_circle_outline_80dp.png b/core/src/main/res/drawable-xhdpi/ic_av_play_circle_outline_80dp.png
deleted file mode 100644
index 990ae524a..000000000
--- a/core/src/main/res/drawable-xhdpi/ic_av_play_circle_outline_80dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xhdpi/ic_av_rewind_80dp.png b/core/src/main/res/drawable-xhdpi/ic_av_rewind_80dp.png
deleted file mode 100755
index d94a40811..000000000
--- a/core/src/main/res/drawable-xhdpi/ic_av_rewind_80dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xhdpi/ic_baseline_question_answer_white_24dp.png b/core/src/main/res/drawable-xhdpi/ic_baseline_question_answer_white_24dp.png
new file mode 100755
index 000000000..731f89c83
--- /dev/null
+++ b/core/src/main/res/drawable-xhdpi/ic_baseline_question_answer_white_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-xhdpi/ic_bug_grey600_24dp.png b/core/src/main/res/drawable-xhdpi/ic_bug_grey600_24dp.png
new file mode 100644
index 000000000..49e5deaa9
--- /dev/null
+++ b/core/src/main/res/drawable-xhdpi/ic_bug_grey600_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-xhdpi/ic_bug_white_24dp.png b/core/src/main/res/drawable-xhdpi/ic_bug_white_24dp.png
new file mode 100644
index 000000000..7416bde03
--- /dev/null
+++ b/core/src/main/res/drawable-xhdpi/ic_bug_white_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-xhdpi/ic_cellphone_text_grey600_24dp.png b/core/src/main/res/drawable-xhdpi/ic_cellphone_text_grey600_24dp.png
new file mode 100644
index 000000000..fc8219fa9
--- /dev/null
+++ b/core/src/main/res/drawable-xhdpi/ic_cellphone_text_grey600_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-xhdpi/ic_cellphone_text_white_24dp.png b/core/src/main/res/drawable-xhdpi/ic_cellphone_text_white_24dp.png
new file mode 100644
index 000000000..9468fa9a9
--- /dev/null
+++ b/core/src/main/res/drawable-xhdpi/ic_cellphone_text_white_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-xhdpi/ic_check_box_grey600_24dp.png b/core/src/main/res/drawable-xhdpi/ic_check_box_grey600_24dp.png
deleted file mode 100644
index e46ab71b4..000000000
--- a/core/src/main/res/drawable-xhdpi/ic_check_box_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xhdpi/ic_check_box_outline_blank_grey600_24dp.png b/core/src/main/res/drawable-xhdpi/ic_check_box_outline_blank_grey600_24dp.png
deleted file mode 100644
index bb15a903a..000000000
--- a/core/src/main/res/drawable-xhdpi/ic_check_box_outline_blank_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xhdpi/ic_check_box_outline_blank_white_24dp.png b/core/src/main/res/drawable-xhdpi/ic_check_box_outline_blank_white_24dp.png
deleted file mode 100644
index 336682497..000000000
--- a/core/src/main/res/drawable-xhdpi/ic_check_box_outline_blank_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xhdpi/ic_check_box_white_24dp.png b/core/src/main/res/drawable-xhdpi/ic_check_box_white_24dp.png
deleted file mode 100644
index cdb4a3181..000000000
--- a/core/src/main/res/drawable-xhdpi/ic_check_box_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xhdpi/ic_format_list_bulleted_grey600_24dp.png b/core/src/main/res/drawable-xhdpi/ic_format_list_bulleted_grey600_24dp.png
new file mode 100644
index 000000000..322adb6e0
--- /dev/null
+++ b/core/src/main/res/drawable-xhdpi/ic_format_list_bulleted_grey600_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-xhdpi/ic_format_list_bulleted_white_24dp.png b/core/src/main/res/drawable-xhdpi/ic_format_list_bulleted_white_24dp.png
new file mode 100644
index 000000000..c25860017
--- /dev/null
+++ b/core/src/main/res/drawable-xhdpi/ic_format_list_bulleted_white_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-xhdpi/ic_forum_grey600_24dp.png b/core/src/main/res/drawable-xhdpi/ic_forum_grey600_24dp.png
new file mode 100644
index 000000000..ac6876140
--- /dev/null
+++ b/core/src/main/res/drawable-xhdpi/ic_forum_grey600_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-xhdpi/ic_indeterminate_check_box_grey600_24dp.png b/core/src/main/res/drawable-xhdpi/ic_indeterminate_check_box_grey600_24dp.png
deleted file mode 100644
index 3b0d3aa1a..000000000
--- a/core/src/main/res/drawable-xhdpi/ic_indeterminate_check_box_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xhdpi/ic_indeterminate_check_box_white_24dp.png b/core/src/main/res/drawable-xhdpi/ic_indeterminate_check_box_white_24dp.png
deleted file mode 100644
index 57e478e9f..000000000
--- a/core/src/main/res/drawable-xhdpi/ic_indeterminate_check_box_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xxhdpi/ic_av_fast_forward_80dp.png b/core/src/main/res/drawable-xxhdpi/ic_av_fast_forward_80dp.png
deleted file mode 100755
index 3b55c5d55..000000000
--- a/core/src/main/res/drawable-xxhdpi/ic_av_fast_forward_80dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xxhdpi/ic_av_pause_circle_outline_80dp.png b/core/src/main/res/drawable-xxhdpi/ic_av_pause_circle_outline_80dp.png
deleted file mode 100644
index 76cc4db32..000000000
--- a/core/src/main/res/drawable-xxhdpi/ic_av_pause_circle_outline_80dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xxhdpi/ic_av_play_circle_outline_80dp.png b/core/src/main/res/drawable-xxhdpi/ic_av_play_circle_outline_80dp.png
deleted file mode 100644
index eebf0110c..000000000
--- a/core/src/main/res/drawable-xxhdpi/ic_av_play_circle_outline_80dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xxhdpi/ic_av_rewind_80dp.png b/core/src/main/res/drawable-xxhdpi/ic_av_rewind_80dp.png
deleted file mode 100755
index 38a5fc264..000000000
--- a/core/src/main/res/drawable-xxhdpi/ic_av_rewind_80dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xxhdpi/ic_baseline_question_answer_white_24dp.png b/core/src/main/res/drawable-xxhdpi/ic_baseline_question_answer_white_24dp.png
new file mode 100755
index 000000000..255b82707
--- /dev/null
+++ b/core/src/main/res/drawable-xxhdpi/ic_baseline_question_answer_white_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-xxhdpi/ic_bug_grey600_24dp.png b/core/src/main/res/drawable-xxhdpi/ic_bug_grey600_24dp.png
new file mode 100644
index 000000000..7bbf31c6b
--- /dev/null
+++ b/core/src/main/res/drawable-xxhdpi/ic_bug_grey600_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-xxhdpi/ic_bug_white_24dp.png b/core/src/main/res/drawable-xxhdpi/ic_bug_white_24dp.png
new file mode 100644
index 000000000..fe2c2bee3
--- /dev/null
+++ b/core/src/main/res/drawable-xxhdpi/ic_bug_white_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-xxhdpi/ic_cellphone_text_grey600_24dp.png b/core/src/main/res/drawable-xxhdpi/ic_cellphone_text_grey600_24dp.png
new file mode 100644
index 000000000..82a453f05
--- /dev/null
+++ b/core/src/main/res/drawable-xxhdpi/ic_cellphone_text_grey600_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-xxhdpi/ic_cellphone_text_white_24dp.png b/core/src/main/res/drawable-xxhdpi/ic_cellphone_text_white_24dp.png
new file mode 100644
index 000000000..d1f990a65
--- /dev/null
+++ b/core/src/main/res/drawable-xxhdpi/ic_cellphone_text_white_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-xxhdpi/ic_check_box_grey600_24dp.png b/core/src/main/res/drawable-xxhdpi/ic_check_box_grey600_24dp.png
deleted file mode 100644
index 7093f28d5..000000000
--- a/core/src/main/res/drawable-xxhdpi/ic_check_box_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xxhdpi/ic_check_box_outline_blank_grey600_24dp.png b/core/src/main/res/drawable-xxhdpi/ic_check_box_outline_blank_grey600_24dp.png
deleted file mode 100644
index 050e6cd6c..000000000
--- a/core/src/main/res/drawable-xxhdpi/ic_check_box_outline_blank_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xxhdpi/ic_check_box_outline_blank_white_24dp.png b/core/src/main/res/drawable-xxhdpi/ic_check_box_outline_blank_white_24dp.png
deleted file mode 100644
index 56d380575..000000000
--- a/core/src/main/res/drawable-xxhdpi/ic_check_box_outline_blank_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xxhdpi/ic_check_box_white_24dp.png b/core/src/main/res/drawable-xxhdpi/ic_check_box_white_24dp.png
deleted file mode 100644
index ba9af5265..000000000
--- a/core/src/main/res/drawable-xxhdpi/ic_check_box_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xxhdpi/ic_format_list_bulleted_grey600_24dp.png b/core/src/main/res/drawable-xxhdpi/ic_format_list_bulleted_grey600_24dp.png
new file mode 100644
index 000000000..87f8073ea
--- /dev/null
+++ b/core/src/main/res/drawable-xxhdpi/ic_format_list_bulleted_grey600_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-xxhdpi/ic_format_list_bulleted_white_24dp.png b/core/src/main/res/drawable-xxhdpi/ic_format_list_bulleted_white_24dp.png
new file mode 100644
index 000000000..da3433c61
--- /dev/null
+++ b/core/src/main/res/drawable-xxhdpi/ic_format_list_bulleted_white_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-xxhdpi/ic_forum_grey600_24dp.png b/core/src/main/res/drawable-xxhdpi/ic_forum_grey600_24dp.png
new file mode 100644
index 000000000..7a3204693
--- /dev/null
+++ b/core/src/main/res/drawable-xxhdpi/ic_forum_grey600_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-xxhdpi/ic_indeterminate_check_box_grey600_24dp.png b/core/src/main/res/drawable-xxhdpi/ic_indeterminate_check_box_grey600_24dp.png
deleted file mode 100644
index 2e7d39a5a..000000000
--- a/core/src/main/res/drawable-xxhdpi/ic_indeterminate_check_box_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xxhdpi/ic_indeterminate_check_box_white_24dp.png b/core/src/main/res/drawable-xxhdpi/ic_indeterminate_check_box_white_24dp.png
deleted file mode 100644
index ec4981f5c..000000000
--- a/core/src/main/res/drawable-xxhdpi/ic_indeterminate_check_box_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xxxhdpi/ic_av_fast_forward_80dp.png b/core/src/main/res/drawable-xxxhdpi/ic_av_fast_forward_80dp.png
deleted file mode 100755
index 1c915d9dd..000000000
--- a/core/src/main/res/drawable-xxxhdpi/ic_av_fast_forward_80dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xxxhdpi/ic_av_rewind_80dp.png b/core/src/main/res/drawable-xxxhdpi/ic_av_rewind_80dp.png
deleted file mode 100755
index 190bb0f4c..000000000
--- a/core/src/main/res/drawable-xxxhdpi/ic_av_rewind_80dp.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xxxhdpi/ic_baseline_question_answer_white_24db.png b/core/src/main/res/drawable-xxxhdpi/ic_baseline_question_answer_white_24db.png
new file mode 100755
index 000000000..0d697e0f9
--- /dev/null
+++ b/core/src/main/res/drawable-xxxhdpi/ic_baseline_question_answer_white_24db.png
Binary files differ
diff --git a/core/src/main/res/drawable-xxxhdpi/ic_bug_grey600_24dp.png b/core/src/main/res/drawable-xxxhdpi/ic_bug_grey600_24dp.png
new file mode 100644
index 000000000..b612b2aa9
--- /dev/null
+++ b/core/src/main/res/drawable-xxxhdpi/ic_bug_grey600_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-xxxhdpi/ic_bug_white_24dp.png b/core/src/main/res/drawable-xxxhdpi/ic_bug_white_24dp.png
new file mode 100644
index 000000000..32a3f5511
--- /dev/null
+++ b/core/src/main/res/drawable-xxxhdpi/ic_bug_white_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-xxxhdpi/ic_cellphone_text_grey600_24dp.png b/core/src/main/res/drawable-xxxhdpi/ic_cellphone_text_grey600_24dp.png
new file mode 100644
index 000000000..829b15396
--- /dev/null
+++ b/core/src/main/res/drawable-xxxhdpi/ic_cellphone_text_grey600_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-xxxhdpi/ic_cellphone_text_white_24dp.png b/core/src/main/res/drawable-xxxhdpi/ic_cellphone_text_white_24dp.png
new file mode 100644
index 000000000..baa783a92
--- /dev/null
+++ b/core/src/main/res/drawable-xxxhdpi/ic_cellphone_text_white_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-xxxhdpi/ic_format_list_bulleted_grey600_24dp.png b/core/src/main/res/drawable-xxxhdpi/ic_format_list_bulleted_grey600_24dp.png
new file mode 100644
index 000000000..c56590fe0
--- /dev/null
+++ b/core/src/main/res/drawable-xxxhdpi/ic_format_list_bulleted_grey600_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-xxxhdpi/ic_format_list_bulleted_white_24dp.png b/core/src/main/res/drawable-xxxhdpi/ic_format_list_bulleted_white_24dp.png
new file mode 100644
index 000000000..5deea3286
--- /dev/null
+++ b/core/src/main/res/drawable-xxxhdpi/ic_format_list_bulleted_white_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-xxxhdpi/ic_forum_grey600_24dp.png b/core/src/main/res/drawable-xxxhdpi/ic_forum_grey600_24dp.png
new file mode 100644
index 000000000..0ae33696b
--- /dev/null
+++ b/core/src/main/res/drawable-xxxhdpi/ic_forum_grey600_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable/ic_av_fast_forward_white_80dp.xml b/core/src/main/res/drawable/ic_av_fast_forward_white_80dp.xml
new file mode 100644
index 000000000..a60145f1d
--- /dev/null
+++ b/core/src/main/res/drawable/ic_av_fast_forward_white_80dp.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:height="80dp"
+ android:width="80dp"
+ android:viewportHeight="24.0"
+ android:viewportWidth="24.0">
+ <path android:pathData="M4,18l8.5,-6L4,6v12zM13,6v12l8.5,-6L13,6z"
+ android:fillColor="#FFFFFFFF"
+ android:strokeColor="#505050"
+ android:strokeWidth="0.75"/>
+</vector>
diff --git a/core/src/main/res/drawable/ic_av_fast_rewind_white_80dp.xml b/core/src/main/res/drawable/ic_av_fast_rewind_white_80dp.xml
new file mode 100644
index 000000000..4609e0c3e
--- /dev/null
+++ b/core/src/main/res/drawable/ic_av_fast_rewind_white_80dp.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:viewportHeight="24.0"
+ android:viewportWidth="24.0"
+ android:width="80dp"
+ android:height="80dp">
+ <path android:pathData="M11,18L11,6l-8.5,6 8.5,6zM11.5,12l8.5,6L20,6l-8.5,6z"
+ android:fillColor="#FFFFFFFF"
+ android:strokeColor="#505050"
+ android:strokeWidth="0.75"/>
+</vector>
diff --git a/core/src/main/res/drawable/ic_av_pause_white_80dp.xml b/core/src/main/res/drawable/ic_av_pause_white_80dp.xml
new file mode 100644
index 000000000..ad8847cb7
--- /dev/null
+++ b/core/src/main/res/drawable/ic_av_pause_white_80dp.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:height="80dp"
+ android:width="80dp"
+ android:viewportHeight="24.0"
+ android:viewportWidth="24.0">
+ <path android:pathData="M6,19h4L10,5L6,5v14zM14,5v14h4L18,5h-4z"
+ android:fillColor="#FFFFFFFF"
+ android:strokeColor="#505050"
+ android:strokeWidth="0.75"/>
+</vector>
diff --git a/core/src/main/res/drawable/ic_av_play_white_80dp.xml b/core/src/main/res/drawable/ic_av_play_white_80dp.xml
new file mode 100644
index 000000000..9f9dbb1b1
--- /dev/null
+++ b/core/src/main/res/drawable/ic_av_play_white_80dp.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:height="80dp"
+ android:width="80dp"
+ android:viewportHeight="24.0"
+ android:viewportWidth="24.0">
+ <path android:pathData="M8,5v14l11,-7z"
+ android:fillColor="#FFFFFFFF"
+ android:strokeColor="#505050"
+ android:strokeWidth="0.75"/>
+</vector>
diff --git a/core/src/main/res/drawable/ic_fab_edit.xml b/core/src/main/res/drawable/ic_fab_edit.xml
new file mode 100644
index 000000000..cb2e394b0
--- /dev/null
+++ b/core/src/main/res/drawable/ic_fab_edit.xml
@@ -0,0 +1,5 @@
+<vector android:height="24dp"
+ android:viewportHeight="24.0" android:viewportWidth="24.0"
+ android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+ <path android:fillColor="#FFFFFFFF" android:pathData="M3,17.25V21h3.75L17.81,9.94l-3.75,-3.75L3,17.25zM20.71,7.04c0.39,-0.39 0.39,-1.02 0,-1.41l-2.34,-2.34c-0.39,-0.39 -1.02,-0.39 -1.41,0l-1.83,1.83 3.75,3.75 1.83,-1.83z"/>
+</vector>
diff --git a/core/src/main/res/drawable/ic_remove_grey600.xml b/core/src/main/res/drawable/ic_remove_grey600.xml
new file mode 100644
index 000000000..5a6b2af6b
--- /dev/null
+++ b/core/src/main/res/drawable/ic_remove_grey600.xml
@@ -0,0 +1,5 @@
+<vector android:height="24dp"
+ android:viewportHeight="24.0" android:viewportWidth="24.0"
+ android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+ <path android:fillColor="#FF757575" android:pathData="M19,13H5v-2h14v2z"/>
+</vector>
diff --git a/core/src/main/res/drawable/ic_remove_white.xml b/core/src/main/res/drawable/ic_remove_white.xml
new file mode 100644
index 000000000..d812091fb
--- /dev/null
+++ b/core/src/main/res/drawable/ic_remove_white.xml
@@ -0,0 +1,5 @@
+<vector android:height="24dp"
+ android:viewportHeight="24.0" android:viewportWidth="24.0"
+ android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+ <path android:fillColor="#FFFFFFFF" android:pathData="M19,13H5v-2h14v2z"/>
+</vector>
diff --git a/core/src/main/res/drawable/ic_select_all_grey600.xml b/core/src/main/res/drawable/ic_select_all_grey600.xml
new file mode 100644
index 000000000..96e9a2de5
--- /dev/null
+++ b/core/src/main/res/drawable/ic_select_all_grey600.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0">
+ <path
+ android:fillColor="#FF757575"
+ android:pathData="M3,5h2L5,3c-1.1,0 -2,0.9 -2,2zM3,13h2v-2L3,11v2zM7,21h2v-2L7,19v2zM3,9h2L5,7L3,7v2zM13,3h-2v2h2L13,3zM19,3v2h2c0,-1.1 -0.9,-2 -2,-2zM5,21v-2L3,19c0,1.1 0.9,2 2,2zM3,17h2v-2L3,15v2zM9,3L7,3v2h2L9,3zM11,21h2v-2h-2v2zM19,13h2v-2h-2v2zM19,21c1.1,0 2,-0.9 2,-2h-2v2zM19,9h2L21,7h-2v2zM19,17h2v-2h-2v2zM15,21h2v-2h-2v2zM15,5h2L17,3h-2v2zM7,17h10L17,7L7,7v10zM9,9h6v6L9,15L9,9z"/>
+</vector>
diff --git a/core/src/main/res/drawable/ic_select_all_white.xml b/core/src/main/res/drawable/ic_select_all_white.xml
new file mode 100644
index 000000000..0fc49c923
--- /dev/null
+++ b/core/src/main/res/drawable/ic_select_all_white.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0">
+ <path
+ android:fillColor="#FFFFFFFF"
+ android:pathData="M3,5h2L5,3c-1.1,0 -2,0.9 -2,2zM3,13h2v-2L3,11v2zM7,21h2v-2L7,19v2zM3,9h2L5,7L3,7v2zM13,3h-2v2h2L13,3zM19,3v2h2c0,-1.1 -0.9,-2 -2,-2zM5,21v-2L3,19c0,1.1 0.9,2 2,2zM3,17h2v-2L3,15v2zM9,3L7,3v2h2L9,3zM11,21h2v-2h-2v2zM19,13h2v-2h-2v2zM19,21c1.1,0 2,-0.9 2,-2h-2v2zM19,9h2L21,7h-2v2zM19,17h2v-2h-2v2zM15,21h2v-2h-2v2zM15,5h2L17,3h-2v2zM7,17h10L17,7L7,7v10zM9,9h6v6L9,15L9,9z"/>
+</vector>
diff --git a/core/src/main/res/drawable/ic_select_none_grey600.xml b/core/src/main/res/drawable/ic_select_none_grey600.xml
new file mode 100644
index 000000000..8057f73ca
--- /dev/null
+++ b/core/src/main/res/drawable/ic_select_none_grey600.xml
@@ -0,0 +1,11 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0">
+ <path
+ android:fillColor="#FF757575"
+ android:pathData="m3,5l2,0l0,-2c-1.1,0 -2,0.9 -2,2zm0,8l2,0l0,-2l-2,0l0,2zm4,8l2,0l0,-2l-2,0l0,2zm-4,-12l2,0l0,-2l-2,0l0,2zm10,-6l-2,0l0,2l2,0l0,-2zm6,0l0,2l2,0c0,-1.1 -0.9,-2 -2,-2zm-14,18l0,-2l-2,0c0,1.1 0.9,2 2,2zm-2,-4l2,0l0,-2l-2,0l0,2zm6,-14l-2,0l0,2l2,0l0,-2zm2,18l2,0l0,-2l-2,0l0,2zm8,-8l2,0l0,-2l-2,0l0,2zm0,8c1.1,0 2,-0.9 2,-2l-2,0l0,2zm0,-12l2,0l0,-2l-2,0l0,2zm0,8l2,0l0,-2l-2,0l0,2zm-4,4l2,0l0,-2l-2,0l0,2zm0,-16l2,0l0,-2l-2,0l0,2z"/>
+ <path android:fillColor="#FF757575"
+ android:pathData="M17,8.41L15.59,7 12,10.59 8.41,7 7,8.41 10.59,12 7,15.59 8.41,17 12,13.41 15.59,17 17,15.59 13.41,12z"/>
+</vector>
diff --git a/core/src/main/res/drawable/ic_select_none_white.xml b/core/src/main/res/drawable/ic_select_none_white.xml
new file mode 100644
index 000000000..3e1f6b884
--- /dev/null
+++ b/core/src/main/res/drawable/ic_select_none_white.xml
@@ -0,0 +1,11 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0">
+ <path
+ android:fillColor="#FFFFFFFF"
+ android:pathData="m3,5l2,0l0,-2c-1.1,0 -2,0.9 -2,2zm0,8l2,0l0,-2l-2,0l0,2zm4,8l2,0l0,-2l-2,0l0,2zm-4,-12l2,0l0,-2l-2,0l0,2zm10,-6l-2,0l0,2l2,0l0,-2zm6,0l0,2l2,0c0,-1.1 -0.9,-2 -2,-2zm-14,18l0,-2l-2,0c0,1.1 0.9,2 2,2zm-2,-4l2,0l0,-2l-2,0l0,2zm6,-14l-2,0l0,2l2,0l0,-2zm2,18l2,0l0,-2l-2,0l0,2zm8,-8l2,0l0,-2l-2,0l0,2zm0,8c1.1,0 2,-0.9 2,-2l-2,0l0,2zm0,-12l2,0l0,-2l-2,0l0,2zm0,8l2,0l0,-2l-2,0l0,2zm-4,4l2,0l0,-2l-2,0l0,2zm0,-16l2,0l0,-2l-2,0l0,2z"/>
+ <path android:fillColor="#FFFFFFFF"
+ android:pathData="M17,8.41L15.59,7 12,10.59 8.41,7 7,8.41 10.59,12 7,15.59 8.41,17 12,13.41 15.59,17 17,15.59 13.41,12z"/>
+</vector>
diff --git a/core/src/main/res/drawable/overlay_button_circle_background.xml b/core/src/main/res/drawable/overlay_button_circle_background.xml
deleted file mode 100644
index 90c51472c..000000000
--- a/core/src/main/res/drawable/overlay_button_circle_background.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<shape xmlns:android="http://schemas.android.com/apk/res/android"
- android:shape="rectangle">
- <gradient
- android:type="radial"
- android:gradientRadius="60"
- android:startColor="#000000"
- android:endColor="@android:color/transparent"/>
-</shape> \ No newline at end of file
diff --git a/core/src/main/res/drawable/overlay_drawable_dark_trueblack.xml b/core/src/main/res/drawable/overlay_drawable_dark_trueblack.xml
new file mode 100644
index 000000000..5f58e8421
--- /dev/null
+++ b/core/src/main/res/drawable/overlay_drawable_dark_trueblack.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
+
+ <item>
+ <shape android:shape="rectangle" >
+ <solid android:color="#45B3E1" />
+ </shape>
+ </item>
+ <item android:top="1dp">
+ <shape android:shape="rectangle" >
+ <solid android:color="@color/black" />
+ </shape>
+ </item>
+
+</layer-list> \ No newline at end of file
diff --git a/core/src/main/res/drawable/progress_bar_horizontal_trueblack.xml b/core/src/main/res/drawable/progress_bar_horizontal_trueblack.xml
new file mode 100644
index 000000000..604bb2655
--- /dev/null
+++ b/core/src/main/res/drawable/progress_bar_horizontal_trueblack.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:id="@android:id/background">
+ <shape>
+ <solid android:color="#000000"/>
+ </shape>
+ </item>
+ <item android:id="@android:id/progress">
+ <clip>
+ <shape>
+ <solid android:color="@color/holo_blue_dark"/>
+ </shape>
+ </clip>
+ </item>
+</layer-list>
diff --git a/core/src/main/res/values-ar/strings.xml b/core/src/main/res/values-ar/strings.xml
index fe932e959..5c29b5119 100644
--- a/core/src/main/res/values-ar/strings.xml
+++ b/core/src/main/res/values-ar/strings.xml
@@ -1,16 +1,34 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources xmlns:tools="http://schemas.android.com/tools">
<!--Activitiy and fragment titles-->
+ <string name="feed_update_receiver_name">ŲŖŲ­ŲÆŁŠŲ« Ų§Ł„ŲŖŲ³Ų¬ŁŠŁ„</string>
+ <string name="feeds_label">Ł…ŲŗŲ°ŁŠŲ§ŲŖ</string>
+ <string name="statistics_label">Ų„Ų­ŲµŲ§Ų¦ŁŠŲ§ŲŖ</string>
+ <string name="add_feed_label">Ų„Ų¶Ų§ŁŲ© ŲØŁˆŲÆŁƒŲ§Ų³ŲŖ</string>
+ <string name="episodes_label">Ų­Ł„Ł‚Ų§ŲŖ</string>
<string name="all_episodes_short_label">Ų§Ł„ŁƒŁ„</string>
+ <string name="new_episodes_label">Ų¬ŲÆŁŠŲÆ</string>
<string name="favorite_episodes_label">Ų§Ł„Ł…ŁŲ¶Ł„Ų§ŲŖ</string>
<string name="new_label">Ų¬ŲÆŁŠŲÆ</string>
- <string name="settings_label">Ų§Ų¹ŲÆŲ§ŲÆŲ§ŲŖ</string>
+ <string name="settings_label">Ų„Ų¹ŲÆŲ§ŲÆŲ§ŲŖ</string>
<string name="downloads_label">ŲŖŁ†Ų²ŁŠŁ„</string>
<string name="downloads_running_label">Ų¬Ų§Ų±Ł‰ Ų§Ł„ŲŖŲ“ŲŗŁŠŁ„</string>
<string name="downloads_completed_label">Ų§ŁƒŲŖŁ…Ł„</string>
<string name="downloads_log_label">Ų³Ų¬Ł„</string>
+ <string name="subscriptions_label">ŲŖŲ³Ų¬ŁŠŁ„Ų§ŲŖ</string>
+ <string name="subscriptions_list_label">Ł„Ų§Ų¦Ų­Ų© Ų§Ł„ŲŖŲ³Ų¬ŁŠŁ„Ų§ŲŖ</string>
<string name="cancel_download_label">Ų§Ł„ŲŗŲ§Ų” Ų§Ł„ŲŖŁ†Ų²ŁŠŁ„</string>
+ <string name="playback_history_label">Ų£Ų±Ų“ŁŠŁ Ų§Ł„ŲŖŲ“ŲŗŁŠŁ„</string>
+ <string name="gpodnet_main_label">gpodder.net</string>
+ <string name="gpodnet_summary">ŲŖŲ²Ų§Ł…Ł† Ł…Ų¹ Ų£Ų¬Ł‡Ų²Ų© Ų£Ų®Ų±Ł‰</string>
+ <string name="gpodnet_auth_label">ŲŖŲ³Ų¬ŁŠŁ„ Ų§Ł„ŲÆŲ®ŁˆŁ„ Ł„Ł…ŁˆŁ‚Ų¹ gpodder</string>
+ <string name="free_space_label"> %1$s Ł…Ų¬Ų§Ł†Ų§</string>
+ <string name="episode_cache_full_title">Ų°Ų§ŁƒŲ±Ų© ŲŖŲ®Ų²ŁŠŁ† Ų§Ł„Ų­Ł„Ł‚Ų§ŲŖ Ł…Ł…ŲŖŁ„Ų¦Ų©</string>
+ <string name="episode_cache_full_message">Ł„Ł‚ŲÆ ŲŖŁ… ŲŖŲ¬Ų§ŁˆŲ² Ų§Ł„Ų­ŲÆ Ų§Ł„Ų£Ł‚ŲµŁ‰ Ł„ŲŖŲ®Ų²ŁŠŁ† Ų§Ł„Ų­Ł„Ł‚Ų§ŲŖ. Ų§Ł„Ł…Ų±Ų¬Łˆ Ų§Ł„Ų±ŁŲ¹ Ł…Ł† Ł‚ŁŠŁ…Ų© Ų§Ł„ŲŖŲ®Ų²ŁŠŁ† ŁŁŠ Ł‚Ų§Ų¦Ł…Ų© Ų§Ł„Ų„Ų¹ŲÆŲ§ŲÆŲ§ŲŖ.</string>
+ <string name="synchronizing">Ų§Ł„Ł…Ų²Ų§Ł…Ł†Ų©...</string>
<!--Statistics fragment-->
+ <string name="total_time_listened_to_podcasts">Ł…Ų¬Ł…ŁˆŲ¹ ŁˆŁ‚ŲŖ ŲŖŲ“ŲŗŁŠŁ„ Ų§Ł„ŲØŁˆŲÆŁƒŲ§Ų³ŲŖŲ§ŲŖ:</string>
+ <string name="statistics_mode">Ł†Ł…Ų· Ų§Ł„Ų„Ų­ŲµŲ§Ų¦ŁŠŲ§ŲŖ</string>
<!--Main activity-->
<string name="drawer_open">Ł‚Ų§Ų¦Ł…Ų© Ų§Ł„ŁŲŖŲ­</string>
<string name="drawer_close">Ł‚Ų§Ų¦Ł…Ų© Ų§Ł„Ų§ŲŗŁ„Ų§Ł</string>
@@ -26,11 +44,13 @@
<string name="copied_url_msg">ŲŖŁ… Ł†Ų³Ų® Ų§Ł„Ų±Ų§ŲØŲ· Ł„Ł„Ų­Ų§ŁŲøŲ©</string>
<string name="go_to_position_label">Ų§Ų°Ł‡ŲØ Ł„Ł‡Ų°Ų§ Ų§Ł„Ł…ŁˆŁ‚Ų¹</string>
<!--Playback history-->
+ <string name="clear_history_label">Ł…Ų³Ų­ Ų§Ł„Ų£Ų±Ų“ŁŠŁ</string>
<!--Other-->
<string name="confirm_label">ŲŖŲ£ŁƒŁŠŲÆ</string>
<string name="cancel_label">Ų§Ł„ŲŗŲ§Ų”</string>
<string name="yes">Ł†Ų¹Ł…</string>
<string name="no">Ł„Ų§</string>
+ <string name="reset">Ų„Ų¹Ų§ŲÆŲ© Ų§Ł„ŲŖŲ¹ŁŠŁŠŁ†</string>
<string name="author_label">Ų§Ł„Ł…Ų¤Ł„Ł</string>
<string name="language_label">Ł„ŲŗŲ©</string>
<string name="url_label">Ų¹Ł†ŁˆŲ§Ł† Ų§Ł„Ł…ŁˆŁ‚Ų¹</string>
@@ -60,7 +80,6 @@
<string name="show_info_label">Ų§ŲøŁ‡Ų§Ų± Ų§Ł„Ł…Ų¹Ł„ŁˆŁ…Ų§ŲŖ</string>
<string name="share_label">Ł…Ų“Ų§Ų±ŁƒŲ©</string>
<string name="share_link_label">Ł…Ų“Ų§Ų±ŁƒŲ© Ų§Ł„Ų±Ų§ŲØŲ·</string>
- <string name="episode_actions">ŲŖŲ·ŲØŁŠŁ‚ Ų§Ł„Ų§Ų¬Ų±Ų§Ų”</string>
<string name="hide_unplayed_episodes_label">Ł„Ł… ŁŠŲŖŁ… ŲŖŲ“ŲŗŁŠŁ„Ł‡</string>
<string name="hide_paused_episodes_label">Ų§ŁŠŁ‚Ų§Ł Ł…Ų¤Ł‚ŲŖ</string>
<string name="hide_downloaded_episodes_label">ŲŖŁ… Ų§Ł„ŲŖŁ†Ų²ŁŠŁ„</string>
@@ -105,24 +124,73 @@
<!--Auto-Flattr dialog-->
<!--Search-->
<!--OPML import and export-->
+ <string name="opml_import_error_no_file">Ł„Ł… ŁŠŲŖŁ… Ų§Ų®ŲŖŁŠŲ§Ų± Ų£ŁŠ Ł…Ł„Ł</string>
+ <string name="select_all_label">Ų§Ų®ŲŖŲ± Ų§Ł„ŁƒŁ„</string>
+ <string name="deselect_all_label">Ų£Ł„Ųŗ Ų§Ų®ŲŖŁŠŲ§Ų± Ų§Ł„ŁƒŁ„</string>
+ <string name="select_options_label">Ų§Ų®ŲŖŲ±...</string>
+ <string name="choose_file_from_filesystem">Ų¹ŲØŲ± Ł…Ł„Ł Ł†ŲøŲ§Ł… ŲÆŲ§Ų®Ł„ŁŠ </string>
+ <string name="choose_file_from_external_application">Ų„Ų³ŲŖŲ®ŲÆŲ§Ł… ŲŖŲ·ŲØŁŠŁ‚ Ų®Ų§Ų±Ų¬ŁŠ</string>
+ <string name="opml_export_label">ŲŖŲµŲÆŁŠŲ± ŲØŲµŁŠŲŗŲ© OPML</string>
+ <string name="html_export_label">ŲŖŲµŲÆŁŠŲ± ŲØŲµŁŠŲŗŲ© HTML</string>
+ <string name="exporting_label">Ų¬Ų§Ų± Ų§Ł„ŲŖŲµŲÆŁŠŲ± ...</string>
+ <string name="export_error_label">Ų­ŲÆŲ« Ų®Ų·Ų£ Ų£Ų«Ł†Ų§Ų” Ų§Ł„ŲŖŲµŲÆŁŠŲ±</string>
+ <string name="export_success_title">ŲŖŁ… Ų§Ł„ŲŖŲµŲÆŁŠŲ± ŲØŁ†Ų¬Ų§Ų­</string>
<!--Sleep timer-->
+ <string name="enter_time_here_label">Ų£ŲÆŲ®Ł„ Ų§Ł„ŲŖŁˆŁ‚ŁŠŲŖ</string>
+ <string name="timer_vibration_label">ŲŖŲ“ŲŗŁŠŁ„ Ų§Ł„Ł‡Ų²Ų§Ų²</string>
+ <string name="time_seconds">Ų«ŁˆŲ§Ł†ŁŠ</string>
+ <string name="time_minutes">ŲÆŁ‚Ų§Ų¦Ł‚</string>
+ <string name="time_hours">Ų³Ų§Ų¹Ų§ŲŖ</string>
<!--gpodder.net-->
+ <string name="gpodnet_taglist_header">Ų§Ł„ŁŲ¦Ų§ŲŖ</string>
+ <string name="gpodnet_toplist_header">Ų£Ł‚ŁˆŁ‰ Ų§Ł„ŲØŁˆŲÆŁƒŲ§Ų³ŲŖŲ§ŲŖ</string>
+ <string name="gpodnet_suggestions_header">Ų„Ł‚ŲŖŲ±Ų§Ų­Ų§ŲŖ</string>
+ <string name="gpodnetauth_login_title">ŲŖŲ³Ų¬ŁŠŁ„ Ų§Ł„ŲÆŲ®ŁˆŁ„</string>
+ <string name="gpodnetauth_login_butLabel">ŲŖŲ³Ų¬ŁŠŁ„ Ų§Ł„ŲÆŲ®ŁˆŁ„</string>
+ <string name="username_label">Ų„Ų³Ł… Ų§Ł„Ł…Ų³ŲŖŲ®ŲÆŁ…</string>
+ <string name="password_label">ŁƒŁ„Ł…Ų© Ų§Ł„Ł…Ų±ŁˆŲ±</string>
+ <string name="gpodnetauth_device_title">Ų§Ų®ŲŖŁŠŲ§Ų± Ų§Ł„Ų£Ų¬Ł‡Ų²Ų©:</string>
+ <string name="gpodnetauth_device_butCreateNewDevice">Ų£ŲÆŲ®Ł„ Ų¬Ł‡Ų§Ų²Ų§ Ų¬ŲÆŁŠŲÆŲ§</string>
+ <string name="gpodnetauth_device_chooseExistingDevice">Ų§Ų®ŲŖŲ± Ų¬Ł‡Ų§Ų²Ų§ Ł…Ł† Ų§Ł„Ł‚Ų§Ų¦Ł…Ų©: </string>
+ <string name="gpodnetauth_device_butChoose">Ų„Ų®ŲŖŲ±</string>
+ <string name="gpodnetauth_finish_title">Ł„Ł‚ŲÆ ŲŖŁ… ŲŖŲ³Ų¬ŁŠŁ„ Ų§Ł„ŲÆŲ®ŁˆŁ„ ŲØŁ†Ų¬Ų§Ų­!</string>
+ <string name="gpodnetauth_finish_butgomainscreen">Ų„Ų°Ł‡ŲØ Ų„Ł„Ł‰ Ų§Ł„ŲµŁŲ­Ų© Ų§Ł„Ų±Ų¦ŁŠŲ³ŁŠŲ©</string>
+ <string name="gpodnetsync_auth_error_descr">Ų®Ų·Ų£ ŁŁŠ Ų„Ų³Ł… Ų§Ł„Ł…Ų³ŲŖŲ®ŲÆŁ… Ų£Łˆ ŁƒŁ„Ł…Ų© Ų§Ł„Ł…Ų±ŁˆŲ±</string>
+ <string name="gpodnetsync_pref_report_successful">ŲŖŁ… ŲØŁ†Ų¬Ų§Ų­</string>
<!--Directory chooser-->
+ <string name="selected_folder_label">Ų„Ų®ŲŖŁŠŲ§Ų± Ų§Ł„Ł…Ų³ŲŖŁ†ŲÆ:</string>
+ <string name="create_folder_label">Ų£Ł†Ų“Ų£ Ł…Ų³ŲŖŁ†ŲÆŲ§ Ų¬ŲÆŁŠŲÆŲ§</string>
+ <string name="choose_data_directory">Ų„Ų®ŲŖŁŠŲ§Ų± Ł…Ų³ŲŖŁ†ŲÆ Ų§Ł„ŲØŁŠŲ§Ł†Ų§ŲŖ</string>
<!--Online feed view-->
+ <string name="downloading_label">ŲŖŲ­Ł…ŁŠŁ„ ...</string>
<!--Content descriptions for image buttons-->
+ <string name="media_type_audio_label">ŲµŁˆŲŖ</string>
+ <string name="media_type_video_label">ŁŁŠŲÆŁŠŁˆ</string>
+ <string name="load_next_page_label">ŲŖŲ­Ł…ŁŠŁ„ Ų§Ł„ŲµŁŲ­Ų© Ų§Ł„ŲŖŲ§Ł„ŁŠŲ©</string>
<!--Feed information screen-->
+ <string name="authentication_label">ŲŖŲ³Ų¬ŁŠŁ„ Ų§Ł„ŲÆŲ®ŁˆŁ„</string>
<!--Progress information-->
<!--AntennaPodSP-->
<!--Episodes apply actions-->
<string name="all_label">Ų§Ł„ŁƒŁ„</string>
+ <string name="selected_all_label">Ų„Ų®ŲŖŁŠŲ§Ų± ŁƒŁ„ Ų§Ł„Ų­Ł„Ł‚Ų§ŲŖ</string>
<string name="unplayed_label">Ł„Ł… ŁŠŲŖŁ… ŲŖŲ“ŲŗŁŠŁ„Ł‡</string>
<string name="downloaded_label">ŲŖŁ… Ų§Ł„ŲŖŁ†Ų²ŁŠŁ„</string>
<string name="not_downloaded_label">Ł„Ł… ŁŠŲŖŁ… Ų§Ł„ŲŖŁ†Ų²ŁŠŁ„</string>
<!--Sort-->
<!--Rating dialog-->
<!--Audio controls-->
+ <string name="volume">Ł…Ų³ŲŖŁˆŁ‰ Ų§Ł„ŲµŁˆŲŖ</string>
<!--proxy settings-->
+ <string name="proxy_type_label">Ų§Ł„Ł†ŁˆŲ¹</string>
<!--Database import/export-->
+ <string name="label_import">Ų§Ų³ŲŖŁŠŲ±Ų§ŲÆ</string>
+ <string name="label_export">ŲŖŲµŲÆŁŠŲ±</string>
+ <string name="export_ok">ŲŖŁ… Ų§Ł„ŲŖŲµŲÆŁŠŲ± ŲØŁ†Ų¬Ų§Ų­</string>
<!--Casting-->
<!--<string name="cast_failed_to_connect">Could not connect to the device</string>-->
+ <!--Notification channels-->
+ <string name="notification_channel_downloading">ŲŖŲ­Ł…ŁŠŁ„</string>
+ <string name="notification_channel_playing">ŁŠŲ“ŲŗŁ„ Ų­Ų§Ł„ŁŠŲ§</string>
+ <string name="notification_channel_error">Ų§Ł„Ų£Ų®Ų·Ų§Ų”</string>
</resources>
diff --git a/core/src/main/res/values-az/strings.xml b/core/src/main/res/values-az/strings.xml
index c27aa54d2..92bfb7f44 100644
--- a/core/src/main/res/values-az/strings.xml
+++ b/core/src/main/res/values-az/strings.xml
@@ -165,7 +165,6 @@
<string name="deselect_all_label">SeƧimi ləğv et</string>
<string name="opml_export_label">OPML ixraƧı</string>
<string name="export_error_label">İxracın xətası</string>
- <string name="opml_export_success_sum">OPML fayl:\u0020 yazılıb</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">Yuxu taymerini qoy</string>
<string name="disable_sleeptimer_label">Yuxu taymerini keƧir</string>
@@ -200,4 +199,5 @@
<!--Database import/export-->
<!--Casting-->
<!--<string name="cast_failed_to_connect">Could not connect to the device</string>-->
+ <!--Notification channels-->
</resources>
diff --git a/core/src/main/res/values-b+ast/strings.xml b/core/src/main/res/values-b+ast/strings.xml
index 5113a895e..421896086 100644
--- a/core/src/main/res/values-b+ast/strings.xml
+++ b/core/src/main/res/values-b+ast/strings.xml
@@ -109,7 +109,6 @@
<string name="feed_remover_msg">Desaniciando fees</string>
<string name="load_complete_feed">CompletĆ³se\'l refrescu\'l feed</string>
<string name="hide_episodes_title">Anubrir episodios</string>
- <string name="episode_actions">Aplicar aiciones</string>
<string name="hide_unplayed_episodes_label">Ensin reproducir</string>
<string name="hide_paused_episodes_label">PosĆ³se</string>
<string name="hide_played_episodes_label">ReprodĆŗxose</string>
@@ -243,7 +242,6 @@
<!--Preferences-->
<string name="storage_pref">Almacenamientu</string>
<string name="project_pref">Proyeutu</string>
- <string name="services_label">Servicios</string>
<string name="flattr_label">Flattr</string>
<string name="pref_episode_cleanup_title">Llimpieza d\'episodios</string>
<string name="pref_pauseOnDisconnect_sum">Posa la reproducciĆ³n al desconeutase los auriculares o Bluetooth</string>
@@ -378,4 +376,5 @@
<!--Database import/export-->
<!--Casting-->
<!--<string name="cast_failed_to_connect">Could not connect to the device</string>-->
+ <!--Notification channels-->
</resources>
diff --git a/core/src/main/res/values-bg/strings.xml b/core/src/main/res/values-bg/strings.xml
index 286c9a3eb..19dc2a971 100644
--- a/core/src/main/res/values-bg/strings.xml
+++ b/core/src/main/res/values-bg/strings.xml
@@ -30,6 +30,7 @@
<string name="drawer_feed_counter_downloaded">Š‘Ń€Š¾Š¹ ŠøŠ·Ń‚ŠµŠ³Š»ŠµŠ½Šø ŠµŠæŠøŠ·Š¾Š“Šø</string>
<string name="drawer_feed_counter_none">ŠŠøŠŗŠ°ŠŗŠ²Šø</string>
<!--Webview actions-->
+ <string name="open_in_browser_label">ŠžŃ‚Š²Š¾Ń€Šø Š² Š±Ń€Š°ŃƒŠ·ŃŠŃ€Š°</string>
<string name="copy_url_label">ŠšŠ¾ŠæŠøрŠ°Š¹ URL Š°Š“рŠµŃ</string>
<string name="share_url_label">Š”ŠæŠ¾Š“ŠµŠ»Šø URL Š°Š“рŠµŃ</string>
<string name="copied_url_msg">ŠŠ“рŠµŃŃŠŃ‚ Šµ ŠŗŠ¾ŠæŠøрŠ°Š½</string>
@@ -40,6 +41,7 @@
<string name="cancel_label">ŠžŃ‚ŠŗŠ°Š·</string>
<string name="yes">Š”Š°</string>
<string name="no">ŠŠµ</string>
+ <string name="reset">ŠŃƒŠ»ŠøрŠ°Š½Šµ</string>
<string name="author_label">ŠŠ²Ń‚Š¾Ń€</string>
<string name="language_label">Š•Š·ŠøŠŗ</string>
<string name="url_label">URL</string>
@@ -47,7 +49,9 @@
<string name="cover_label">Š”Š½ŠøŠ¼ŠŗŠ°</string>
<string name="error_label">Š“Ń€ŠµŃˆŠŗŠ°</string>
<string name="error_msg_prefix">Š’ŃŠŠ·Š½ŠøŠŗŠ½Š° Š³Ń€ŠµŃˆŠŗŠ°:</string>
+ <string name="refresh_label">ŠžŠ±Š½Š¾Š²Šø</string>
<string name="external_storage_error_msg">ŠŃŠ¼Š° Š½Š°Š»ŠøчŠ½Š° Š²ŃŠŠ½ŃˆŠ½Š° ŠæŠ°Š¼ŠµŃ‚. Š£Š²ŠµŃ€ŠµŃ‚Šµ сŠµ, чŠµ Š²ŃŠŠ½ŃˆŠ½Š°Ń‚Š° ŠæŠ°Š¼ŠµŃ‚ Šµ Š¼Š¾Š½Ń‚ŠøрŠ°Š½Š°, Š·Š° Š“Š° Š¼Š¾Š¶Šµ ŠæрŠøŠ»Š¾Š¶ŠµŠ½ŠøŠµŃ‚Š¾ Š“Š° рŠ°Š±Š¾Ń‚Šø ŠæрŠ°Š²ŠøŠ»Š½Š¾.</string>
+ <string name="chapter_duration">Š’Ń€ŠµŠ¼ŠµŃ‚Ń€Š°ŠµŠ½Šµ: %1$s</string>
<string name="description_label">ŠžŠæŠøсŠ°Š½ŠøŠµ</string>
<string name="most_recent_prefix">ŠŠ°Š¹-Š½Š¾Š² ŠµŠæŠøŠ·Š¾Š“:\u0020</string>
<string name="size_prefix">Š Š°Š·Š¼ŠµŃ€:\u0020</string>
@@ -60,6 +64,7 @@
<string name="etxtFeedurlHint">www.primer.com/emisiq</string>
<string name="txtvfeedurl_label">Š”Š¾Š±Š°Š²ŃŠ½Šµ Š½Š° ŠæŠ¾Š“ŠŗŠ°ŃŃ‚ ŠæŠ¾ URL Š°Š“рŠµŃ</string>
<string name="podcastdirectories_label">ŠŠ°Š¼ŠøрŠ°Š½Šµ Š½Š° ŠæŠ¾Š“ŠŗŠ°ŃŃ‚ Š² Š“ŠøрŠµŠŗтŠ¾Ń€Šøя</string>
+ <string name="podcastdirectories_descr">ŠœŠ¾Š¶ŠµŃ‚Šµ Š“Š° търсŠøтŠµ Š½Š¾Š²Šø ŠæŠ¾Š“ŠŗŠ°ŃŃ‚Šø Š² iTunes ŠøŠ»Šø fyyd, ŠøŠ»Šø Š“Š° ŠæрŠµŠ³Š»ŠµŠ“Š°Ń‚Šµ gpodder.net сŠæŠ¾Ń€ŠµŠ“ ŠøŠ¼Šµ, ŠŗŠ°Ń‚ŠµŠ³Š¾Ń€Šøя Šø ŠæŠ¾ŠæуŠ»ŃŃ€Š½Š¾ŃŃ‚.</string>
<!--Actions on feeds-->
<string name="mark_all_read_label">ŠœŠ°Ń€ŠŗŠøрŠ°Š¹ Š²ŃŠøчŠŗŠø ŠŗŠ°Ń‚Š¾ сŠ»ŃƒŃˆŠ°Š½Šø</string>
<string name="mark_all_read_msg">Š’сŠøчŠŗŠø ŠµŠæŠøŠ·Š¾Š“Šø сŠ° Š¼Š°Ń€ŠŗŠøрŠ°Š½Šø ŠŗŠ°Ń‚Š¾ сŠ»ŃƒŃˆŠ°Š½Šø</string>
@@ -79,6 +84,8 @@
<string name="share_item_url_label">Š”ŠæŠ¾Š“ŠµŠ»Šø URL Š°Š“рŠµŃ Š½Š° ŠµŠæŠøŠ·Š¾Š“Š°</string>
<string name="share_item_url_with_position_label">Š”ŠæŠ¾Š“ŠµŠ»Šø URL Š°Š“рŠµŃ Š½Š° ŠµŠæŠøŠ·Š¾Š“Š° с ŠæŠ¾Š·ŠøцŠøя</string>
<string name="feed_remover_msg">ŠŸŃ€ŠµŠ¼Š°Ń…Š²Š°Š½Šµ Š½Š° ŠµŠ¼ŠøсŠøятŠ°</string>
+ <string name="hide_downloaded_episodes_label">Š˜Š·Ń‚ŠµŠ³Š»ŠµŠ½Šø</string>
+ <string name="hide_not_downloaded_episodes_label">ŠŠµŠøŠ·Ń‚ŠµŠ³Š»ŠµŠ½Šø</string>
<!--actions on feeditems-->
<string name="stream_label">Š”трŠøŠ¹Š¼</string>
<string name="marked_as_seen_label">ŠœŠ°Ń€ŠŗŠøрŠ°Š½ ŠŗŠ°Ń‚Š¾ ŠæрŠµŠ³Š»ŠµŠ“Š°Š½</string>
@@ -111,7 +118,6 @@
<string name="other_pref">Š”Ń€ŃƒŠ³Šø</string>
<string name="about_pref">ŠžŃ‚Š½Š¾ŃŠ½Š¾</string>
<string name="queue_label">ŠžŠæŠ°ŃˆŠŗŠ°</string>
- <string name="services_label">Š£ŃŠ»ŃƒŠ³Šø</string>
<string name="flattr_label">Flattr</string>
<string name="pref_episode_cleanup_title">ŠŸŠ¾Ń‡ŠøстŠ²Š°Š½Šµ Š½Š° ŠµŠæŠøŠ·Š¾Š“ŠøтŠµ</string>
<string name="pref_episode_cleanup_summary">Š•ŠæŠøŠ·Š¾Š“ŠøтŠµ, ŠŗŠ¾ŠøтŠ¾ Š½Šµ сŠ° Š² Š¾ŠæŠ°ŃˆŠŗŠ°Ń‚Š° Šø Š½Šµ сŠ° Š² Š»ŃŽŠ±ŠøŠ¼Šø, Š¾Ń‚Š³Š¾Š²Š°Ń€ŃŃ‚ Š½Š° усŠ»Š¾Š²ŠøятŠ° Š·Š° ŠæрŠµŠ¼Š°Ń…Š²Š°Š½Šµ, Š°ŠŗŠ¾ Š°Š²Ń‚Š¾Š¼Š°Ń‚ŠøчŠ½Š¾Ń‚Š¾ ŠøŠ·Ń‚ŠµŠ³Š»ŃŠ½Šµ сŠµ Š½ŃƒŠ¶Š“Š°Šµ Š¾Ń‚ Š¼ŃŃŃ‚Š¾ Š·Š° Š½Š¾Š²Šø ŠµŠæŠøŠ·Š¾Š“Šø</string>
@@ -175,6 +181,7 @@
<string name="crash_report_sum">Š˜Š·ŠæрŠ°Ń‚ŠµŃ‚Šµ Š½Š°Š¹-Š½Š¾Š²Šøя Š“Š¾ŠŗŠ»Š°Š“ Š·Š° срŠøŠ² чрŠµŠ· ŠøŠ¼ŠµŠ¹Š»</string>
<string name="send_email">Š˜Š·ŠæрŠ°Ń‰Š°Š½Šµ Š½Š° ŠøŠ¼ŠµŠ¹Š»</string>
<string name="experimental_pref">Š•ŠŗсŠæŠµŃ€ŠøŠ¼ŠµŠ½Ń‚Š°Š»Š½Šø</string>
+ <string name="pref_current_value">Š¢ŠµŠŗущŠ° стŠ¾Š¹Š½Š¾ŃŃ‚: %1$s</string>
<string name="pref_proxy_title">ŠŸŃ€Š¾ŠŗсŠø</string>
<string name="pref_faq">Š§ŠµŃŃ‚Š¾ Š·Š°Š“Š°Š²Š°Š½Šø Š²ŃŠŠæрŠ¾ŃŠø</string>
<string name="pref_known_issues">Š˜Š·Š²ŠµŃŃ‚Š½Šø ŠæрŠ¾Š±Š»ŠµŠ¼Šø</string>
@@ -193,10 +200,9 @@
<string name="html_export_label">HTML ŠµŠŗсŠæŠ¾Ń€Ń‚ŠøрŠ°Š½Šµ</string>
<string name="exporting_label">Š•ŠŗсŠæŠ¾Ń€Ń‚ŠøрŠ°Š½Šµ...</string>
<string name="export_error_label">Š“Ń€ŠµŃˆŠŗŠ° ŠæрŠø ŠµŠŗсŠæŠ¾Ń€Ń‚ŠøрŠ°Š½Šµ</string>
- <string name="opml_export_success_title">Š£ŃŠæŠµŃˆŠ½Š¾ OPML ŠµŠŗсŠæŠ¾Ń€Ń‚ŠøрŠ°Š½Šµ.</string>
- <string name="opml_export_success_sum">.opml фŠ°Š¹Š»ŃŠŃ‚ Š±ŠµŃˆŠµ Š·Š°ŠæŠøсŠ°Š½ Š²:\u0020</string>
<string name="opml_import_ask_read_permission">ŠŠµŠ¾Š±Ń…Š¾Š“ŠøŠ¼ Šµ Š“Š¾ŃŃ‚ŃŠŠæ Š“Š¾ Š²ŃŠŠ½ŃˆŠ½Š°Ń‚Š° ŠæŠ°Š¼ŠµŃ‚ Š·Š° ŠæрŠ¾Ń‡ŠøтŠ°Š½Šµ Š½Š° OPML фŠ°Š¹Š»Š°</string>
<!--Sleep timer-->
+ <string name="timer_vibration_label">Š’ŠøŠ±Ń€Š°Ń†Šøя</string>
<string name="time_seconds">сŠµŠŗуŠ½Š“Šø</string>
<string name="time_minutes">Š¼ŠøŠ½ŃƒŃ‚Šø</string>
<string name="time_hours">чŠ°ŃŠ°</string>
@@ -216,6 +222,7 @@
<string name="gpodnet_taglist_header">ŠšŠŠ¢Š•Š“ŠžŠ Š˜Š˜</string>
<string name="gpodnet_toplist_header">Š¢ŠžŠŸ ŠŸŠžŠ”ŠšŠŠ”Š¢Š˜</string>
<string name="gpodnet_suggestions_header">ŠŸŠ Š•Š”Š›ŠžŠ–Š•ŠŠ˜ŠÆ</string>
+ <string name="gpodnet_search_hint">Š¢ŃŠŃ€ŃŠµŠ½Šµ Š² gpodder.net</string>
<string name="gpodnetauth_login_title">Š’Ń…Š¾Š“</string>
<string name="gpodnetauth_login_butLabel">Š’Ń…Š¾Š“</string>
<string name="username_label">ŠŸŠ¾Ń‚Ń€ŠµŠ±ŠøтŠµŠ»ŃŠŗŠ¾ ŠøŠ¼Šµ</string>
@@ -229,11 +236,21 @@
<!--Progress information-->
<!--AntennaPodSP-->
<string name="filter">Š¤ŠøŠ»Ń‚ŃŠŃ€</string>
+ <string name="search_fyyd_label">Š¢ŃŠŃ€ŃŠµŠ½Šµ Š²ŃŠŠ² fyyd</string>
<!--Episodes apply actions-->
<!--Sort-->
<!--Rating dialog-->
<!--Audio controls-->
<!--proxy settings-->
+ <string name="proxy_type_label">Š¢ŠøŠæ</string>
+ <string name="host_label">Š„Š¾ŃŃ‚</string>
+ <string name="port_label">ŠŸŠ¾Ń€Ń‚</string>
+ <string name="proxy_test_label">Š¢ŠµŃŃ‚</string>
+ <string name="proxy_test_successful">Š¢ŠµŃŃ‚ŃŠŃ‚ Šµ усŠæŠµŃˆŠµŠ½</string>
+ <string name="proxy_test_failed">Š¢ŠµŃŃ‚ŃŠŃ‚ Šµ Š½ŠµŃƒŃŠæŠµŃˆŠµŠ½</string>
+ <string name="proxy_port_invalid_error">ŠŸŠ¾Ń€Ń‚ŃŠŃ‚ Š½Šµ Šµ Š²Š°Š»ŠøŠ“ŠµŠ½</string>
+ <!--Database import/export-->
<!--Casting-->
<!--<string name="cast_failed_to_connect">Could not connect to the device</string>-->
+ <!--Notification channels-->
</resources>
diff --git a/core/src/main/res/values-ca-rES/strings.xml b/core/src/main/res/values-ca-rES/strings.xml
index fe20ff5da..d9f216268 100644
--- a/core/src/main/res/values-ca-rES/strings.xml
+++ b/core/src/main/res/values-ca-rES/strings.xml
@@ -58,4 +58,5 @@
<!--Database import/export-->
<!--Casting-->
<!--<string name="cast_failed_to_connect">Could not connect to the device</string>-->
+ <!--Notification channels-->
</resources>
diff --git a/core/src/main/res/values-ca/strings.xml b/core/src/main/res/values-ca/strings.xml
index 86fac02a5..ecf51f704 100644
--- a/core/src/main/res/values-ca/strings.xml
+++ b/core/src/main/res/values-ca/strings.xml
@@ -1,12 +1,14 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources xmlns:tools="http://schemas.android.com/tools">
<!--Activitiy and fragment titles-->
+ <string name="feed_update_receiver_name">Actualitzar subscripcions</string>
<string name="feeds_label">Canals</string>
<string name="statistics_label">EstadĆ­stiques</string>
<string name="add_feed_label">Afegeix podcast</string>
<string name="episodes_label">Episodis</string>
<string name="all_episodes_short_label">Tot</string>
- <string name="favorite_episodes_label">Favorits</string>
+ <string name="new_episodes_label">Nou</string>
+ <string name="favorite_episodes_label">Preferits</string>
<string name="new_label">Nous</string>
<string name="settings_label">ConfiguraciĆ³</string>
<string name="downloads_label">Baixades</string>
@@ -15,13 +17,15 @@
<string name="downloads_log_label">Registre</string>
<string name="subscriptions_label">Subscripcions</string>
<string name="subscriptions_list_label">Llista de subscripcions</string>
- <string name="cancel_download_label">CancelĀ·la la baixada</string>
+ <string name="cancel_download_label">CancelĀ·la\nBaixada</string>
<string name="playback_history_label">Historial de reproducciĆ³</string>
<string name="gpodnet_main_label">gpodder.net</string>
+ <string name="gpodnet_summary">Sincronitzar amb altres dispositius</string>
<string name="gpodnet_auth_label">Inici de sessiĆ³ a gpodder.net</string>
<string name="free_space_label">%1$s lliure</string>
- <string name="episode_cache_full_title">CachƩ d\'episodi completa</string>
- <string name="episode_cache_full_message">S\'ha arribat al lƭmit de la cachƩ. Pots incrementar la capacitat de la cachƩ a les Opcions</string>
+ <string name="episode_cache_full_title">La memĆ²ria cau d\'episodis Ć©s plena</string>
+ <string name="episode_cache_full_message">S\'ha arribat al lĆ­mit de la memĆ²ria cau d\'episodis. Pots incrementar-ne la capacitat a la configuraciĆ³.</string>
+ <string name="synchronizing">Sincronitzant...</string>
<!--Statistics fragment-->
<string name="total_time_listened_to_podcasts">Temps total de podcasts reproduĆÆts</string>
<string name="statistics_details_dialog">%1$d de %2$depisodis comenƧats.\n\nReproduĆÆts %3$s de %4$s.</string>
@@ -33,7 +37,7 @@
<string name="drawer_open">Obre menĆŗ</string>
<string name="drawer_close">Tanca menĆŗ</string>
<string name="drawer_preferences">Calaix de preferĆØncies</string>
- <string name="drawer_feed_order_unplayed_episodes">Ordre per durada</string>
+ <string name="drawer_feed_order_unplayed_episodes">Ordre per comptador</string>
<string name="drawer_feed_order_alphabetical">Ordre alfabĆØtic</string>
<string name="drawer_feed_order_last_update">Ordre per data de publicaciĆ³</string>
<string name="drawer_feed_order_most_played">Ordre per nĆŗmero d\'episodis reproduĆÆts</string>
@@ -56,13 +60,14 @@
<string name="yes">SĆ­</string>
<string name="no">No</string>
<string name="reset">Reiniciar</string>
- <string name="author_label">Autor</string>
+ <string name="author_label">Autor/s</string>
<string name="language_label">Llengua</string>
<string name="url_label">AdreƧa web</string>
<string name="podcast_settings_label">ConfiguraciĆ³</string>
<string name="cover_label">Imatge</string>
<string name="error_label">Error</string>
<string name="error_msg_prefix">S\'ha produĆÆt un error:</string>
+ <string name="needs_storage_permission">Calen permisos d\'emmagatzematge per a aquesta operaciĆ³</string>
<string name="refresh_label">Actualitza</string>
<string name="external_storage_error_msg">L\'emmagatzemament extern no estĆ  disponible. Assegureu-vos que estĆ  muntat per quĆØ l\'aplicaciĆ³ funcioni correctament.</string>
<string name="chapters_label">CapĆ­tols</string>
@@ -82,7 +87,7 @@
<string name="auto_download_apply_to_items_title">Aplica als episodis previs</string>
<string name="auto_download_apply_to_items_message">El nou ajustament de <i>baixada automĆ tica</i> s\'aplicarĆ  als nous episodis.\nVols que tambĆ© sigui aplicat als episodis publicats prĆØviament?</string>
<string name="auto_delete_label">Esborra episodi automĆ ticament</string>
- <string name="parallel_downloads_suffix">\u0020baixades paralĀ·leles</string>
+ <string name="parallel_downloads_suffix">\u0020baixades en paralĀ·lel</string>
<string name="feed_auto_download_global">Valor predeterminat global</string>
<string name="feed_auto_download_always">Sempre</string>
<string name="feed_auto_download_never">Mai</string>
@@ -105,25 +110,28 @@
<string name="mark_all_read_label">Marca-ho tot com a llegit</string>
<string name="mark_all_read_msg">S\'han marcat tots els episodis com a llegits</string>
<string name="mark_all_read_confirmation_msg">Si us plau confirma que vols marcar tots els episodis com reproduits.</string>
- <string name="mark_all_read_feed_confirmation_msg">Si us plau confirma que vols marcar tots els episodis d\'aquest canal com reproduits.</string>
+ <string name="mark_all_read_feed_confirmation_msg">Si us plau, confirmeu que voleu marcar tots els episodis d\'aquest podcast com a reproduĆÆts.</string>
<string name="mark_all_seen_label">Marca tot com a llegit</string>
- <string name="mark_all_seen_msg">S\'han marcat tots els episodis com a vistos</string>
+ <string name="mark_all_seen_msg">Marcar tots episodis com a visualitzats</string>
<string name="mark_all_seen_confirmation_msg">Si us plau confirma que vols marcar tots els episodis com vistos.</string>
<string name="show_info_label">Mostra informaciĆ³</string>
- <string name="rename_feed_label">Renombra podcast</string>
- <string name="remove_feed_label">Esborra podcast</string>
- <string name="share_label">Compartir...</string>
- <string name="share_link_label">Comparteix l\'enllaƧ</string>
- <string name="share_file_label">Comparteix un fitxer</string>
- <string name="share_link_with_position_label">Comparteix enllaƧ amb posiciĆ³</string>
- <string name="share_feed_url_label">Comparteix adreƧa del canal</string>
- <string name="share_item_url_label">Comparteix adreƧa del fitxer del canal</string>
- <string name="share_item_url_with_position_label">Comparteix adreƧa del fitxer del canal amb posiciĆ³</string>
- <string name="feed_delete_confirmation_msg">Confirmeu que voleu suprimir el canal \"%1$s\" i TOTS els episodis que n\'heu descarregat.</string>
- <string name="feed_remover_msg">S\'estĆ  esborrant el canal</string>
- <string name="load_complete_feed">S\'ha actualitzat el canal</string>
+ <string name="show_feed_settings_label">Mostrar configuraciĆ³ del podcast</string>
+ <string name="feed_info_label">InformaciĆ³ del podcast</string>
+ <string name="feed_settings_label">ConfiguraciĆ³ del podcast</string>
+ <string name="rename_feed_label">Canvia el nom al podcast</string>
+ <string name="remove_feed_label">Suprimeix podcast</string>
+ <string name="share_label">Comparteix...</string>
+ <string name="share_link_label">Comparteix l\'adreƧa de l\'episodi</string>
+ <string name="share_link_with_position_label">Comparteix l\'adreƧa de l\'episodi i la posiciĆ³</string>
+ <string name="share_file_label">Comparteix el fitxer</string>
+ <string name="share_feed_url_label">Comparteix l\'adreƧa del canal</string>
+ <string name="share_item_url_label">Comparteix l\'adreƧa del fitxer multimĆØdia</string>
+ <string name="share_item_url_with_position_label">Comparteix l\'adreƧa del fitxer multimĆØdia i la posiciĆ³</string>
+ <string name="feed_delete_confirmation_msg">Si us plau, confirmeu que voleu eliminar el podcast \"%1$s\" i tots els seus episodis (fins i tot els ja baixats).</string>
+ <string name="feed_remover_msg">Eliminant podcast</string>
+ <string name="load_complete_feed">Refrescar tot el podcast</string>
<string name="hide_episodes_title">Amaga Episodis</string>
- <string name="episode_actions">Aplica accions</string>
+ <string name="batch_edit">Editar lot</string>
<string name="hide_unplayed_episodes_label">Per reproduir</string>
<string name="hide_paused_episodes_label">Pausat</string>
<string name="hide_played_episodes_label">Reproduit</string>
@@ -132,6 +140,7 @@
<string name="hide_downloaded_episodes_label">Baixat</string>
<string name="hide_not_downloaded_episodes_label">No baixat</string>
<string name="hide_has_media_label">ContƩ medis</string>
+ <string name="hide_is_favorite_label">Ɖs preferint</string>
<string name="filtered_label">Filtrat</string>
<string name="refresh_failed_msg">{fa-exclamation-circle} Darrera actualitzaciĆ³ fallida</string>
<string name="open_podcast">Obrir podcast</string>
@@ -144,7 +153,8 @@
<string name="remove_label">Suprimeix</string>
<string name="delete_label">Esborrar</string>
<string name="delete_failed">No s\'ha pogut esborrar el fitxer. Reiniciar el dispositiu pot ajudar.</string>
- <string name="remove_episode_lable">Esborra episodi</string>
+ <string name="remove_episode_lable">Suprimeix episodi</string>
+ <string name="mark_as_seen_label">Marcar com a visualitzat</string>
<string name="marked_as_seen_label">Marcat com a vist</string>
<string name="mark_read_label">Marca com a llegit</string>
<string name="marked_as_read_label">Marcats com llegits</string>
@@ -152,22 +162,24 @@
<string name="add_to_queue_label">Afegeix a la cua</string>
<string name="added_to_queue_label">Afegit a la cua</string>
<string name="remove_from_queue_label">Suprimeix de la cua</string>
- <string name="add_to_favorite_label">Afegit a Favorits</string>
- <string name="added_to_favorites">Afegit a favorits</string>
- <string name="remove_from_favorite_label">Suprimeix de Favorits</string>
- <string name="removed_from_favorites">Tret de favorits</string>
+ <string name="add_to_favorite_label">Afegit a preferits</string>
+ <string name="added_to_favorites">Afegit a preferits</string>
+ <string name="remove_from_favorite_label">Suprimeix de preferits</string>
+ <string name="removed_from_favorites">S\'ha suprimit de preferits</string>
<string name="visit_website_label">Visita el lloc web</string>
<string name="support_label">Comparteix amb Flattr</string>
<string name="skip_episode_label">Omet l\'episodi</string>
<string name="activate_auto_download">Activa baixades automĆ tiques</string>
<string name="deactivate_auto_download">Desactiva les baixades automĆ tiques</string>
<string name="reset_position">Restablir posiciĆ³ de reproducciĆ³</string>
- <string name="removed_item">Element eliminat</string>
+ <string name="removed_item">S\'ha suprimit l\'element</string>
<!--Download messages and labels-->
<string name="download_successful">ha funcionat</string>
<string name="download_failed">ha fallat</string>
<string name="download_pending">Baixada pendent</string>
<string name="download_running">Baixada en procƩs</string>
+ <string name="download_error_details">Detalls</string>
+ <string name="download_error_details_message">%1$s \n\nURL del fitxer:\n%2$s</string>
<string name="download_error_device_not_found">No s\'ha trobat cap dispositiu d\'emmagatzemament</string>
<string name="download_error_insufficient_space">No hi ha prou espai</string>
<string name="download_error_file_error">Error de fitxer</string>
@@ -218,6 +230,7 @@
<string name="playback_error_unknown">Error desconegut</string>
<string name="no_media_playing_label">No s\'estĆ  reproduint res</string>
<string name="player_buffering_msg">S\'estĆ  carregant</string>
+ <string name="player_go_to_picture_in_picture">Mode Picture-in-picture</string>
<string name="playbackservice_notification_title">Podcast en reproducciĆ³</string>
<string name="unknown_media_key">AntennaPod - Control desconegut: %1$d</string>
<!--Queue operations-->
@@ -234,7 +247,9 @@
<string name="date">Data</string>
<string name="duration">Durada</string>
<string name="episode_title">TĆ­tol de l\'episodi</string>
- <string name="feed_title">TĆ­tol del feed</string>
+ <string name="feed_title">TĆ­tol del podcast</string>
+ <string name="random">Aleatori</string>
+ <string name="smart_shuffle">Mescla intelĀ·ligent</string>
<string name="ascending">Ascendent</string>
<string name="descending">Descendent</string>
<string name="clear_queue_confirmation_msg">Si us plau, confirma que vols suprimir tots els episodis de la cua</string>
@@ -272,7 +287,7 @@
<string name="enable_sonic">Activa Sonic</string>
<!--Empty list labels-->
<string name="no_items_label">No hi ha elements a la llista.</string>
- <string name="no_feeds_label">No us heu subscrit a cap canal.</string>
+ <string name="no_feeds_label">Encara no us heu subscrit a cap podcast.</string>
<string name="no_chapters_label">Aquest episodi no tƩ capƭtols</string>
<string name="no_shownotes_label">Aquest episodi no tƩ notes.</string>
<!--Preferences-->
@@ -281,15 +296,23 @@
<string name="other_pref">Altres</string>
<string name="about_pref">Quant a</string>
<string name="queue_label">Cua</string>
- <string name="services_label">Serveis</string>
+ <string name="integrations_label">Integracions</string>
<string name="flattr_label">Flattr</string>
+ <string name="flattr_summary">Servei de micropagaments</string>
+ <string name="automation">AutomatitzaciĆ³</string>
+ <string name="download_pref_details">Detalls</string>
+ <string name="import_export_pref">Importa/Exporta</string>
+ <string name="appearance">AparenƧa</string>
+ <string name="external_elements">Elements externs</string>
+ <string name="interruptions">Interrupcions</string>
+ <string name="buttons">Botons de control de reproducciĆ³</string>
+ <string name="media_player">Reproductor multimĆØdia</string>
<string name="pref_episode_cleanup_title">Neteja l\'episodi</string>
- <string name="pref_episode_cleanup_summary">Els episodis que no es troben a la cua i no sĆ³n favorits haurien de ser candidats a ser esborrats si l\'Auto DescĆ rrega necessita espai per a nous episodis</string>
+ <string name="pref_episode_cleanup_summary">Els episodis que no es troben a la cua i no sĆ³n preferits seran candidats a ser suprimits si l\'Auto DescĆ rrega necessita espai per a nous episodis</string>
<string name="pref_pauseOnDisconnect_sum">Pausa la reproducciĆ³ en desconnectar els auriculars o el bluetooth</string>
<string name="pref_unpauseOnHeadsetReconnect_sum">Continua la reproducciĆ³ en connectar novament els auriculars</string>
<string name="pref_unpauseOnBluetoothReconnect_sum">Continua la reproducciĆ³ en connectar novament el bluetooth</string>
<string name="pref_hardwareForwardButtonSkips_title">Endavant per saltar</string>
- <string name="pref_hardwareForwardButtonSkips_sum">En prĆ©mer el botĆ³ fĆ­sic d\'Endavant, passar al segĆ¼ent episodi en comptes d\'avanƧar a la reproducciĆ³</string>
<string name="pref_hardwarePreviousButtonRestarts_title">Endarrere per reiniciar</string>
<string name="pref_hardwarePreviousButtonRestarts_sum">En prĆ©mer un botĆ³ fĆ­sic, reinicieu l\'episodi actual en lloc de rebobinar-lo</string>
<string name="pref_followQueue_sum">Salta al segĆ¼ent element de la cua en acabar la reproducciĆ³</string>
@@ -299,8 +322,8 @@
<string name="pref_smart_mark_as_played_title">Marca intelĀ·ligent com a reproduĆÆt</string>
<string name="pref_skip_keeps_episodes_sum">Mantenir episodis quan sĆ³n passats de llarg</string>
<string name="pref_skip_keeps_episodes_title">Mantenir els episodis passats de llarg</string>
- <string name="pref_favorite_keeps_episodes_sum">Conserva els episodis marcats com a favorits.</string>
- <string name="pref_favorite_keeps_episodes_title">Conserva els episodis favorits.</string>
+ <string name="pref_favorite_keeps_episodes_sum">Conserva els episodis marcats com a preferits.</string>
+ <string name="pref_favorite_keeps_episodes_title">Conserva els episodis preferits.</string>
<string name="playback_pref">ReproducciĆ³</string>
<string name="network_pref">Xarxa</string>
<string name="pref_autoUpdateIntervallOrTime_title">Actualitza interval o horari del dia</string>
@@ -338,7 +361,7 @@
<string name="pref_nav_drawer_feed_order_title">Estableix l\'ordre de les subscripcions</string>
<string name="pref_nav_drawer_feed_order_sum">Canvia l\'ordre de les subscripcions</string>
<string name="pref_nav_drawer_feed_counter_title">Estableix el comptador de les subscripcions</string>
- <string name="pref_nav_drawer_feed_counter_sum">Canvia la informaciĆ³ mostrada pel comptador de les subscripcions</string>
+ <string name="pref_nav_drawer_feed_counter_sum">Canvia la informaciĆ³ mostrada pel comptador de les subscripcions. TambĆ© afecta l\'ordre de les subscripcions si a l\'opciĆ³ \'Ordre de les subscripcions\' s\'ha indicat \'Comptador\'.</string>
<string name="pref_set_theme_sum">Canvieu l\'aparenƧa d\'AntennaPod.</string>
<string name="pref_automatic_download_title">Baixada automĆ tica</string>
<string name="pref_automatic_download_sum">Configureu la baixada automĆ tica d\'episodis.</string>
@@ -349,9 +372,10 @@
<string name="pref_automatic_download_on_battery_title">Baixa mentre no es carrega</string>
<string name="pref_automatic_download_on_battery_sum">Permet les baixades automĆ tiques mentre la bateria no es carrega</string>
<string name="pref_parallel_downloads_title">Baixades paralĀ·leles</string>
- <string name="pref_episode_cache_title">MemĆ²ria d\'episodis</string>
+ <string name="pref_episode_cache_title">MemĆ²ria cau d\'episodis</string>
<string name="pref_theme_title_light">Clar</string>
<string name="pref_theme_title_dark">Fosc</string>
+ <string name="pref_theme_title_trueblack">Negra (per AMOLED)</string>
<string name="pref_episode_cache_unlimited">Sense lĆ­mits</string>
<string name="pref_update_interval_hours_plural">hores</string>
<string name="pref_update_interval_hours_singular">hora</string>
@@ -380,8 +404,6 @@
<string name="pref_rewind_sum">Personalitza el nombre de segons del salt endarrere quan es prem el botĆ³ de Rebobinat</string>
<string name="pref_gpodnet_sethostname_title">Definex nom del servidor</string>
<string name="pref_gpodnet_sethostname_use_default_host">Utilitza el servidor per defecte</string>
- <string name="pref_expandNotify_title">Amplia la notificaciĆ³</string>
- <string name="pref_expandNotify_sum">Amplia sempre les notificacions per mostrar els botons de reproducciĆ³.</string>
<string name="pref_persistNotify_title">Botons de reproducciĆ³ persistents</string>
<string name="pref_persistNotify_sum">MantĆ© els controls a l\'Ć rea de notificacions i pantalla de bloqueig quan la reproducciĆ³ estigui aturada</string>
<string name="pref_compact_notification_buttons_title">Estableix els botons del bloqueig de pantalla</string>
@@ -402,8 +424,7 @@
<string name="crash_report_sum">Envia l\'Ćŗltim informe de tancament abrupte per e-mail</string>
<string name="send_email">Envia e-mail</string>
<string name="experimental_pref">Experimental</string>
- <string name="pref_sonic_title">Reproductor Sonic Media Player</string>
- <string name="pref_sonic_message">Fes servir el reproductor Sonic Media Player integrat en comptes del reproductor natiu d\'Android i Prestissimo</string>
+ <string name="pref_media_player_message">Seleccioneu el reproductor multimĆØdia per a reproduir fitxers</string>
<string name="pref_current_value">Valor actual: %1$s</string>
<string name="pref_proxy_title">Servidor intermediari</string>
<string name="pref_proxy_sum">Estableix un servidor intermediari</string>
@@ -415,6 +436,11 @@
<string name="pref_cast_message_free_flavor">Chromecast requereix de llibreries propietĆ ries de terceres parts que estan inhabilitades en aquesta versiĆ³ d\'AntennaPod</string>
<string name="pref_enqueue_downloaded_title">Afegeix les baixades a la cua</string>
<string name="pref_enqueue_downloaded_summary">Afegeix els episodis descarregats a la cua</string>
+ <string name="media_player_builtin">Reproductor Android estĆ ndard</string>
+ <string name="pref_videoBehavior_title">En sortir d\'un vĆ­deo</string>
+ <string name="pref_videoBehavior_sum">Comportament a l\'abandonar la reproducciĆ³ d\'un vĆ­deo</string>
+ <string name="stop_playback">Atura reproducciĆ³</string>
+ <string name="continue_playback">Continuar reproducciĆ³ d\'audio</string>
<!--Auto-Flattr dialog-->
<string name="auto_flattr_enable">Activa la comparticiĆ³ automĆ tica per Flattr</string>
<string name="auto_flattr_after_percent">Comparteix per Flattr l\'episodi en haver-ne reproduĆÆt el %d per cent</string>
@@ -424,8 +450,8 @@
<string name="search_hint">Cerca episodis</string>
<string name="found_in_shownotes_label">Troba a les notes dels canals</string>
<string name="found_in_chapters_label">Trobat als capĆ­tols</string>
- <string name="found_in_authors_label">Troba als autors</string>
- <string name="found_in_feeds_label">Troba als canals</string>
+ <string name="found_in_authors_label">Trobat a autor/s</string>
+ <string name="found_in_feeds_label">Trobat a un podcast</string>
<string name="search_status_no_results">No s\'ha trobat cap resultat</string>
<string name="search_label">Cerca</string>
<string name="found_in_title_label">Trobat al tĆ­tol</string>
@@ -451,8 +477,8 @@
<string name="html_export_label">Exporta HTML</string>
<string name="exporting_label">Exportant...</string>
<string name="export_error_label">Error d\'exportaciĆ³</string>
- <string name="opml_export_success_title">S\'ha exportat l\'OPML correctament.</string>
- <string name="opml_export_success_sum">El fitxer OPML s\'ha escrit a:\u0020</string>
+ <string name="export_success_title">ExportaciĆ³ correcta</string>
+ <string name="export_success_sum">S\'ha exportat el fitxer a:\n\n%1$s</string>
<string name="opml_import_ask_read_permission">Per llegir arxius OPML Ć©s necessari accĆ©s a la memĆ²ria externa</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">Defineix un temporitzador</string>
@@ -625,7 +651,7 @@
<string name="label_import">Importa</string>
<string name="label_export">Exporta</string>
<string name="import_select_file">Tria un fitxer per a importar</string>
- <string name="export_ok">S\'ha exportat amb ĆØxit. S\'ha escrit la base de dades a la targeta SD.</string>
+ <string name="export_ok">ExportaciĆ³ correcta.</string>
<string name="import_ok">S\'ha importat amb ĆØxit.\n\nPremeu D\'acord per a reiniciar l\'AntennaPod.</string>
<!--Casting-->
<string name="cast_media_route_menu_title">Reproduir a...</string>
@@ -643,4 +669,13 @@
<string name="cast_failed_seek">No s\'ha pogut cercar la nova posiciĆ³ al dispositiu de difusiĆ³</string>
<string name="cast_failed_receiver_player_error">El reproductor receptor ha trobat un error greu</string>
<string name="cast_failed_media_error_skipping">Error en la reproducciĆ³. Saltant...</string>
+ <!--Notification channels-->
+ <string name="notification_channel_user_action">AcciĆ³ necessĆ ria</string>
+ <string name="notification_channel_user_action_description">Mostrar si es requereix la vostra acciĆ³, per exemple si heu d\'entrar una contrasenya.</string>
+ <string name="notification_channel_downloading">Baixant</string>
+ <string name="notification_channel_downloading_description">Mostrar durant baixades.</string>
+ <string name="notification_channel_playing">ReproducciĆ³ actual</string>
+ <string name="notification_channel_playing_description">Permet controlar la reproducciĆ³. Aquesta Ć©s la notificaciĆ³ principal que veureu durant la reproducciĆ³ d\'un podcast.</string>
+ <string name="notification_channel_error">Errors</string>
+ <string name="notification_channel_error_description">Mostrar si quelcom va malament, per exemple si una baixada o sincronitzaciĆ³ fallen.</string>
</resources>
diff --git a/core/src/main/res/values-cs-rCZ/strings.xml b/core/src/main/res/values-cs-rCZ/strings.xml
index f7b1156de..1d9868b2c 100644
--- a/core/src/main/res/values-cs-rCZ/strings.xml
+++ b/core/src/main/res/values-cs-rCZ/strings.xml
@@ -1,11 +1,13 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources xmlns:tools="http://schemas.android.com/tools">
<!--Activitiy and fragment titles-->
+ <string name="feed_update_receiver_name">Aktualizovat sbĆ­rky</string>
<string name="feeds_label">KanƔly</string>
<string name="statistics_label">Statistiky</string>
<string name="add_feed_label">Přidat podcast</string>
<string name="episodes_label">Epizody</string>
<string name="all_episodes_short_label">VŔe</string>
+ <string name="new_episodes_label">NovĆ½</string>
<string name="favorite_episodes_label">OblƭbenƩ</string>
<string name="new_label">NovĆ½</string>
<string name="settings_label">NastavenĆ­</string>
@@ -18,10 +20,12 @@
<string name="cancel_download_label">ZruÅ”it stahovĆ”nĆ­</string>
<string name="playback_history_label">Historie přehrĆ”vĆ”nĆ­</string>
<string name="gpodnet_main_label">gpodder.net</string>
+ <string name="gpodnet_summary">Synchronizovat s ostatnĆ­mi pÅ™Ć­stroji</string>
<string name="gpodnet_auth_label">Login pro gpodder.net</string>
<string name="free_space_label">%1$s volnƩ</string>
<string name="episode_cache_full_title">OdklĆ”dacĆ­ prostor pro epizody je plnĆ½</string>
<string name="episode_cache_full_message">DoÅ”lo k zaplněnĆ­ limitu odklĆ”dacĆ­ho prostoru pro epizody. MÅÆžete navĆ½Å”it vyhrazenĆ½ prostor v NastavenĆ­.</string>
+ <string name="synchronizing">Synchronizace...</string>
<!--Statistics fragment-->
<string name="total_time_listened_to_podcasts">CelkovĆ½ čas poslechnutĆ½ch podcastÅÆ:</string>
<string name="statistics_details_dialog">%1$d z %2$d započatĆ½ch epizod.\n\nPřehranĆ½ch %3$s z %4$s.</string>
@@ -52,7 +56,7 @@
<string name="no">Ne
</string>
<string name="reset">Reset</string>
- <string name="author_label">Autor</string>
+ <string name="author_label">Přispěvatel(Ć©)</string>
<string name="language_label">Jazyk</string>
<string name="url_label">URL</string>
<string name="podcast_settings_label">NastavenĆ­</string>
@@ -88,6 +92,7 @@
<plurals name="episode_cleanup_days_after_listening">
<item quantity="one">1 den po dokončenƭ</item>
<item quantity="few">%d dny po dokončenƭ</item>
+ <item quantity="many">%d dnÅÆ po dokončenĆ­</item>
<item quantity="other">%d dnÅÆ po dokončenĆ­</item>
</plurals>
<!--'Add Feed' Activity labels-->
@@ -101,23 +106,12 @@
<string name="mark_all_read_label">Označit vÅ”e jako poslechnutĆ©</string>
<string name="mark_all_read_msg">VÅ”echny epizody označeny jako poslechnutĆ©</string>
<string name="mark_all_read_confirmation_msg">Potvrďte prosĆ­m, že chcete označit vÅ”echny vybranĆ© epizody jako poslechnutĆ©.</string>
- <string name="mark_all_read_feed_confirmation_msg">Potvrďte prosĆ­m, že chcete označit vÅ”echny epizody z tohoto zdroje jako poslechnutĆ©.</string>
<string name="mark_all_seen_label">Označit vÅ”e jako zobrazenĆ©</string>
- <string name="mark_all_seen_msg">Označit vÅ”echny epizody jako shlĆ©dnutĆ©</string>
<string name="mark_all_seen_confirmation_msg">Potvrďte prosĆ­m, že chcete označit vÅ”echny epizody jako shlĆ©dnutĆ©.</string>
<string name="show_info_label">Informace o zdroji</string>
- <string name="rename_feed_label">Přejmenovat podcast</string>
- <string name="remove_feed_label">Odstranit podcast</string>
<string name="share_label">SdĆ­let</string>
- <string name="share_link_label">SdĆ­let odkaz</string>
- <string name="share_link_with_position_label">SdĆ­let odkaz s pozicĆ­</string>
<string name="share_feed_url_label">Sdƭlet URL kanƔlu</string>
- <string name="share_item_url_label">SdĆ­let URL souboru epizody</string>
- <string name="share_item_url_with_position_label">SdĆ­let URL souboru epizody s pozicĆ­</string>
- <string name="feed_remover_msg">Odstranit kanƔl</string>
- <string name="load_complete_feed">Obnovit kompletnƭ kanƔl</string>
<string name="hide_episodes_title">SkrĆ½t epizody</string>
- <string name="episode_actions">ProvƩst akce</string>
<string name="hide_unplayed_episodes_label">NeposlechnutƩ</string>
<string name="hide_paused_episodes_label">PozastavenƩ</string>
<string name="hide_played_episodes_label">PoslechnutƩ</string>
@@ -185,6 +179,7 @@
<plurals name="downloads_left">
<item quantity="one">%d čekajĆ­cĆ­ na staženĆ­</item>
<item quantity="few">%d čekajĆ­cĆ­ na staženĆ­</item>
+ <item quantity="many">%d čekajĆ­cĆ­ch na staženĆ­</item>
<item quantity="other">%d čekajĆ­cĆ­ch na staženĆ­</item>
</plurals>
<string name="downloads_processing">ProbƭhƔ stahovƔnƭ</string>
@@ -228,7 +223,6 @@
<string name="date">Datum</string>
<string name="duration">DĆ©lka</string>
<string name="episode_title">NƔzev epizody</string>
- <string name="feed_title">NƔzev kanƔlu</string>
<string name="ascending">Vzestupně</string>
<string name="descending">Sestupně</string>
<string name="clear_queue_confirmation_msg">Potvrďte prosĆ­m, že chcete vyčistit tuto frontu a VÅ ECHNY v nĆ­ obsaženĆ© epizody</string>
@@ -266,7 +260,6 @@
<string name="enable_sonic">Povolit Sonic</string>
<!--Empty list labels-->
<string name="no_items_label">Å½Ć”dnĆ© položky v seznamu.</string>
- <string name="no_feeds_label">ZatĆ­m nebyly přidĆ”ny Å¾Ć”dnĆ© kanĆ”ly.</string>
<string name="no_chapters_label">Tato epizoda nemĆ” Å¾Ć”dnĆ© kapitoly.</string>
<string name="no_shownotes_label">Tato epizoda neobsahuje Å¾Ć”dnĆ© poznĆ”mky.</string>
<!--Preferences-->
@@ -275,14 +268,12 @@
<string name="other_pref">OstatnĆ­</string>
<string name="about_pref">O aplikaci</string>
<string name="queue_label">Fronta</string>
- <string name="services_label">Služby</string>
<string name="flattr_label">Flattr</string>
<string name="pref_episode_cleanup_title">Vyčistit epizody</string>
<string name="pref_episode_cleanup_summary">Epizody, kterĆ© nejsou ve frontě a nejsou označeny za oblĆ­benĆ© by mělo bĆ½t možnĆ© smazat, pokud bude funkce automatickĆ©ho stahovĆ”nĆ­ potřebovat mĆ­sto pro novĆ© epizody</string>
<string name="pref_pauseOnDisconnect_sum">Při odpojenĆ­ sluchĆ”tek nebo bluetooth připojenĆ­ pozastavit přehrĆ”vĆ”nĆ­.</string>
<string name="pref_unpauseOnHeadsetReconnect_sum">Pokračovat v přehrĆ”vĆ”nĆ­ po připojenĆ­ sluchĆ”tek</string>
<string name="pref_unpauseOnBluetoothReconnect_sum">Pokračovat v přehrĆ”vĆ”nĆ­ po připojenĆ­ bluetooth</string>
- <string name="pref_hardwareForwardButtonSkips_sum">Po stlačenĆ­ hardwarovĆ©ho tlačƭtka pro posun vpřed mĆ­sto přetočenĆ­ vpřed přeskočit na dalÅ”Ć­ epizodu</string>
<string name="pref_hardwarePreviousButtonRestarts_title">Tlačƭtko zpět restartuje</string>
<string name="pref_hardwarePreviousButtonRestarts_sum">Po stlačenĆ­ hardwarovĆ©ho tlačƭtka pro posun zpět mĆ­sto přetočenĆ­ vpřed restartovat přehrĆ”vĆ”nĆ­ aktuĆ”lnĆ­ epizody</string>
<string name="pref_followQueue_sum">Po přehrĆ”nĆ­ položky z fronty přejĆ­t automaticky na dalÅ”Ć­</string>
@@ -328,7 +319,6 @@
<string name="pref_nav_drawer_feed_order_title">Nastavit pořadĆ­ sbĆ­rek</string>
<string name="pref_nav_drawer_feed_order_sum">Upravit pořadĆ­ vaÅ”ich sbĆ­rek</string>
<string name="pref_nav_drawer_feed_counter_title">Nastavit počƭtadlo sbƭrek</string>
- <string name="pref_nav_drawer_feed_counter_sum">Upravit informaci zobrazovanou počƭtadlem sbƭrek</string>
<string name="pref_set_theme_sum">Změnit vzhled AntennaPod.</string>
<string name="pref_automatic_download_title">AutomatickƩ stahovƔnƭ</string>
<string name="pref_automatic_download_sum">Nastavenƭ automatickƩho stahovƔnƭ epizod.</string>
@@ -364,8 +354,6 @@
<string name="pref_playback_speed_sum">PřizpÅÆsobenĆ­ rychlosti je dostupnĆ© pro přehrĆ”vĆ”nĆ­ zvuku rÅÆznĆ½mi rychlostmi</string>
<string name="pref_gpodnet_sethostname_title">Nastavit hostname</string>
<string name="pref_gpodnet_sethostname_use_default_host">PouÅ¾Ć­t přednastavenĆ©ho hosta</string>
- <string name="pref_expandNotify_title">RozÅ”Ć­Å™enĆ© upozorněnĆ­</string>
- <string name="pref_expandNotify_sum">Vždy zobrazovat tlačƭtka pro přehrĆ”vĆ”nĆ­ v upozorněnĆ­.</string>
<string name="pref_persistNotify_title">PevnĆ© ovlĆ”dĆ”nĆ­ přehrĆ”vĆ”nĆ­</string>
<string name="pref_persistNotify_sum">Zachovat upozorněnĆ­ a ovlĆ”dĆ”nĆ­ na obrazovce uzamčenĆ­ i při pozastavenĆ©m přehrĆ”vĆ”nĆ­.</string>
<string name="pref_compact_notification_buttons_title">NastavenĆ­ tlačƭtek uzamčenĆ© obrazovky</string>
@@ -386,7 +374,6 @@
<string name="crash_report_sum">OdesĆ­lat hlĆ”Å”enĆ­ o poslednĆ­m pĆ”du aplikace emailem</string>
<string name="send_email">Poslat email</string>
<string name="experimental_pref">ExperimentƔlnƭ</string>
- <string name="pref_sonic_message">PouÅ¾Ć­t připojenĆ½ sonic media player jako nĆ”hradu za vĆ½chozĆ­ přehrĆ”vač mĆ©diĆ­ pro Android a Prestissimo</string>
<string name="pref_current_value">AktuƔlnƭ hodnota: %1$s</string>
<string name="pref_proxy_title">Proxy</string>
<string name="pref_proxy_sum">Nastavit sĆ­Å„ovou proxy</string>
@@ -430,8 +417,6 @@
<string name="html_export_label">HTML export</string>
<string name="exporting_label">Export</string>
<string name="export_error_label">Chyba exportu</string>
- <string name="opml_export_success_title">OPML export byl ĆŗspěŔnĆ½.</string>
- <string name="opml_export_success_sum">OPML soubor byl zapsƔn do:\u0020</string>
<string name="opml_import_ask_read_permission">Pro přečtenĆ­ OPML souboru je vyžadovĆ”n pÅ™Ć­stup k externĆ­mu ĆŗložiÅ”ti</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">Nastavit časovač vypnutƭ</string>
@@ -449,16 +434,19 @@
<plurals name="time_seconds_quantified">
<item quantity="one">1 sekunda</item>
<item quantity="few">%d sekundy</item>
+ <item quantity="many">%d sekund</item>
<item quantity="other">%d sekund</item>
</plurals>
<plurals name="time_minutes_quantified">
<item quantity="one">1 minuta</item>
<item quantity="few">%d minuty</item>
+ <item quantity="many">%d minut</item>
<item quantity="other">%d minut</item>
</plurals>
<plurals name="time_hours_quantified">
<item quantity="one">1 hodina</item>
<item quantity="few">%d hodiny</item>
+ <item quantity="many">%d hodin</item>
<item quantity="other">%d hodin</item>
</plurals>
<string name="auto_enable_label">Automaticky zapnout</string>
@@ -618,4 +606,5 @@
<string name="cast_failed_seek">Selhal posun na novou pozici na vysƭlači</string>
<string name="cast_failed_receiver_player_error">PřijĆ­mač zaznamenal zĆ”važnou chybu</string>
<string name="cast_failed_media_error_skipping">Chyba přehrĆ”vĆ”nĆ­ mĆ©diĆ­. Přeskakuji...</string>
+ <!--Notification channels-->
</resources>
diff --git a/core/src/main/res/values-da/strings.xml b/core/src/main/res/values-da/strings.xml
index 6364ef099..a094cdacf 100644
--- a/core/src/main/res/values-da/strings.xml
+++ b/core/src/main/res/values-da/strings.xml
@@ -56,7 +56,6 @@
<string name="yes">Ja</string>
<string name="no">Nej</string>
<string name="reset">Nulstil</string>
- <string name="author_label">Forfatter</string>
<string name="language_label">Sprog</string>
<string name="url_label">Webadresse</string>
<string name="podcast_settings_label">Indstillinger </string>
@@ -105,25 +104,13 @@
<string name="mark_all_read_label">Marker alle som afspillet</string>
<string name="mark_all_read_msg">Marker alle udsendelser som afspillet</string>
<string name="mark_all_read_confirmation_msg">BekrƦft venligst at du Ćønsker at markere alle udsendelser som vƦrende afspillet.</string>
- <string name="mark_all_read_feed_confirmation_msg">BekrƦft venligst at du Ćønsker at markere alle udsendelser i denne feed som vƦrende afspillet.</string>
<string name="mark_all_seen_label">Marker alle som set</string>
- <string name="mark_all_seen_msg">Markerede alle udsendelser som set</string>
<string name="mark_all_seen_confirmation_msg">BekrƦft venligst at du Ćønsker at markere alle udsendelser som set.</string>
<string name="show_info_label">Vis information</string>
- <string name="rename_feed_label">OmdĆøb podcast</string>
- <string name="remove_feed_label">Fjern podcast</string>
<string name="share_label">Delā€¦</string>
- <string name="share_link_label">Del link</string>
<string name="share_file_label">Del fil</string>
- <string name="share_link_with_position_label">Del link med position</string>
<string name="share_feed_url_label">Del webadresse for feedet</string>
- <string name="share_item_url_label">Del webadresse for udsendelsen</string>
- <string name="share_item_url_with_position_label">Del webadresse for udsendelsen med position</string>
- <string name="feed_delete_confirmation_msg">BekrƦft venligst at du Ćønsker at slette feedet \"%1$s\" og ALLE overfĆørte udsendelser i dette feed.</string>
- <string name="feed_remover_msg">Fjerner feed</string>
- <string name="load_complete_feed">Opdater hele feedet</string>
<string name="hide_episodes_title">Skjul udsendelser</string>
- <string name="episode_actions">Anvend handlinger</string>
<string name="hide_unplayed_episodes_label">Uafspillede</string>
<string name="hide_paused_episodes_label">Sat pƄ pause</string>
<string name="hide_played_episodes_label">Afspillede</string>
@@ -234,7 +221,6 @@
<string name="date">Dato</string>
<string name="duration">Varighed</string>
<string name="episode_title">Titel pƄ udsendelse</string>
- <string name="feed_title">Titel pƄ feed</string>
<string name="ascending">Stigende</string>
<string name="descending">Faldende</string>
<string name="clear_queue_confirmation_msg">BekrƦft venligst at du vil rydde ALLE udsendelser fra kĆøen</string>
@@ -272,7 +258,6 @@
<string name="enable_sonic">SlƄ Sonic til</string>
<!--Empty list labels-->
<string name="no_items_label">Der er ingen elementer i denne liste.</string>
- <string name="no_feeds_label">Du har endnu ikke abonneret pƄ nogen feeds.</string>
<string name="no_chapters_label">Denne udsendelse har ingen kapitler.</string>
<string name="no_shownotes_label">Denne udsendelse har ingen beskrivelse.</string>
<!--Preferences-->
@@ -281,7 +266,6 @@
<string name="other_pref">Andre</string>
<string name="about_pref">Om</string>
<string name="queue_label">KĆø</string>
- <string name="services_label">Tjenester</string>
<string name="flattr_label">Flattr</string>
<string name="pref_episode_cleanup_title">Oprydning i udsendelser</string>
<string name="pref_episode_cleanup_summary">Tillad at udsendelser, som ikke er i kĆøen og som ikke er markeret som foretrukne, kan fjernes, hvis Automatisk overfĆørsel har brug for plads til nye udsendelser</string>
@@ -289,7 +273,6 @@
<string name="pref_unpauseOnHeadsetReconnect_sum">Genoptag afspilning nƄr hovedtelefonerne tilsluttes igen</string>
<string name="pref_unpauseOnBluetoothReconnect_sum">Genoptag afspilning nƄr bluetooth forbinder igen</string>
<string name="pref_hardwareForwardButtonSkips_title">Fremadknap springer over</string>
- <string name="pref_hardwareForwardButtonSkips_sum">NƄr der trykkes pƄ en fysisk fremadknap, skal der springes til den nƦste udsendelse i stedet for at spoles fremad.</string>
<string name="pref_hardwarePreviousButtonRestarts_title">Tilbageknap genstarter</string>
<string name="pref_hardwarePreviousButtonRestarts_sum">NƄr der trykkes pƄ en fysisk tilbageknap, skal den aktuelle udsendelse afspilles forfra i stedet for at der spoles tilbage.</string>
<string name="pref_followQueue_sum">Spring til nƦste element i kĆøen nĆ„r afspilningen er fƦrdig</string>
@@ -338,7 +321,6 @@
<string name="pref_nav_drawer_feed_order_title">VƦlg abonnementsorden</string>
<string name="pref_nav_drawer_feed_order_sum">Ɔndr rƦkkefĆølgen af dine abonnementer</string>
<string name="pref_nav_drawer_feed_counter_title">Indstil abonnementstƦller</string>
- <string name="pref_nav_drawer_feed_counter_sum">VƦlg den information, som abonnementstƦlleren viser</string>
<string name="pref_set_theme_sum">Ɔndr AntennaPods udseende.</string>
<string name="pref_automatic_download_title">Automatisk overfĆørsel</string>
<string name="pref_automatic_download_sum">Konfigurer automatisk overfĆørsel af udsendelser</string>
@@ -380,8 +362,6 @@
<string name="pref_rewind_sum">Indstil antallet af sekunder, der skal springes tilbage, nƄr der trykkes pƄ tilbagespolingsknappen</string>
<string name="pref_gpodnet_sethostname_title">Indstil vƦrtsnavn</string>
<string name="pref_gpodnet_sethostname_use_default_host">Brug standard vƦrt</string>
- <string name="pref_expandNotify_title">Udvidelse af notifikation</string>
- <string name="pref_expandNotify_sum">Udvid altid notifikationen for at vise afspilningsknapper.</string>
<string name="pref_persistNotify_title">Vedholdende afspilningsknapper</string>
<string name="pref_persistNotify_sum">Behold notifikation og knapper pƄ lƄseskƦrmen, nƄr afspilningen sƦttes pƄ pause.</string>
<string name="pref_compact_notification_buttons_title">Indstil knapper pƄ lƄseskƦrm</string>
@@ -402,8 +382,6 @@
<string name="crash_report_sum">Send den seneste nedbrudsrapport via e-mail</string>
<string name="send_email">Send e-mail</string>
<string name="experimental_pref">Eksperimentelt</string>
- <string name="pref_sonic_title">Sonic-medieafspiller</string>
- <string name="pref_sonic_message">Brug indbygget Sonic-medieafspiller i stedet for Androids indbyggede medieafspiller og Prestissimo</string>
<string name="pref_current_value">NuvƦrende vƦrdi: %1$s</string>
<string name="pref_proxy_title">Proxy</string>
<string name="pref_proxy_sum">Indstil en netvƦrksproxy</string>
@@ -424,8 +402,6 @@
<string name="search_hint">SĆøg efter udsendelser</string>
<string name="found_in_shownotes_label">Fundet i beskrivelse</string>
<string name="found_in_chapters_label">Fundet i kapitler</string>
- <string name="found_in_authors_label">Fundet i forfattere</string>
- <string name="found_in_feeds_label">Fundet i feeds</string>
<string name="search_status_no_results">Fandt ingen resultater</string>
<string name="search_label">SĆøg</string>
<string name="found_in_title_label">Fundet i titel</string>
@@ -451,8 +427,6 @@
<string name="html_export_label">HTML-eksport</string>
<string name="exporting_label">Eksportererā€¦</string>
<string name="export_error_label">Eksportfejl</string>
- <string name="opml_export_success_title">OPML-eksport lykkedes.</string>
- <string name="opml_export_success_sum">.opml-filen blev skrevet til:\u0020</string>
<string name="opml_import_ask_read_permission">Adgang til eksternt lager er pƄkrƦvet for at lƦse OPML-filen</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">Indstil sĆøvntimer</string>
@@ -637,4 +611,5 @@
<string name="cast_failed_seek">Det lykkedes ikke at sĆøge til den nye position pĆ„ cast-enheden</string>
<string name="cast_failed_receiver_player_error">Modtagerafspilleren er stĆødt pĆ„ en alvorlig fejl</string>
<string name="cast_failed_media_error_skipping">Fejl ved afspilning af medie. Springer overā€¦</string>
+ <!--Notification channels-->
</resources>
diff --git a/core/src/main/res/values-de/strings.xml b/core/src/main/res/values-de/strings.xml
index c1faf9b5b..3c736f1b0 100644
--- a/core/src/main/res/values-de/strings.xml
+++ b/core/src/main/res/values-de/strings.xml
@@ -1,11 +1,13 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources xmlns:tools="http://schemas.android.com/tools">
<!--Activitiy and fragment titles-->
+ <string name="feed_update_receiver_name">Abonnements aktualisieren</string>
<string name="feeds_label">Feeds</string>
<string name="statistics_label">Statistiken</string>
<string name="add_feed_label">Podcast hinzufĆ¼gen</string>
<string name="episodes_label">Episoden</string>
<string name="all_episodes_short_label">Alle</string>
+ <string name="new_episodes_label">Neu</string>
<string name="favorite_episodes_label">Favoriten</string>
<string name="new_label">Neu</string>
<string name="settings_label">Einstellungen</string>
@@ -18,10 +20,12 @@
<string name="cancel_download_label">Download abbrechen</string>
<string name="playback_history_label">Zuletzt gespielt</string>
<string name="gpodnet_main_label">gpodder.net</string>
+ <string name="gpodnet_summary">Mit anderen GerƤten synchronisieren</string>
<string name="gpodnet_auth_label">gpodder.net Anmeldung</string>
<string name="free_space_label">%1$s frei</string>
<string name="episode_cache_full_title">Episodenspeicher voll</string>
<string name="episode_cache_full_message">Der Episodenspeicher ist voll. Du kannst die GrĆ¶ĆŸe des Episodenspeichers in den Einstellungen erhƶhen.</string>
+ <string name="synchronizing">Synchronisiere...</string>
<!--Statistics fragment-->
<string name="total_time_listened_to_podcasts">Gesamtzeit gespielter Podcasts:</string>
<string name="statistics_details_dialog">%1$d von %2$d Episoden gestartet.\n\n%3$s von %4$s Episoden gespielt.</string>
@@ -56,15 +60,16 @@
<string name="yes">Ja</string>
<string name="no">Nein</string>
<string name="reset">Reset</string>
- <string name="author_label">Autor</string>
+ <string name="author_label">Autor(en)</string>
<string name="language_label">Sprache</string>
<string name="url_label">URL</string>
<string name="podcast_settings_label">Einstellungen</string>
<string name="cover_label">Bild</string>
<string name="error_label">Fehler</string>
<string name="error_msg_prefix">Ein Fehler ist aufgetreten:</string>
+ <string name="needs_storage_permission">FĆ¼r diese Funktion wird die Speicher-Berechtigung benƶtigt</string>
<string name="refresh_label">Aktualisieren</string>
- <string name="external_storage_error_msg">Der externe Speicher ist nicht verfĆ¼gbar. Bitte stelle sicher, dass das externe Speichermedium eingelegt ist, damit die Anwendung funktioniert.</string>
+ <string name="external_storage_error_msg">Der externe Speicher ist nicht verfĆ¼gbar. Bitte stelle sicher, dass das externe Speichermedium eingelegt ist, damit die App funktioniert.</string>
<string name="chapters_label">Kapitel</string>
<string name="chapter_duration">Dauer: %1$s</string>
<string name="shownotes_label">Shownotizen</string>
@@ -110,20 +115,23 @@
<string name="mark_all_seen_msg">Alle Episoden als gesehen markiert</string>
<string name="mark_all_seen_confirmation_msg">Bitte bestƤtige, dass alle Episoden als gesehen markiert werden sollen.</string>
<string name="show_info_label">Informationen anzeigen</string>
- <string name="rename_feed_label">Podcast umbenennen</string>
+ <string name="show_feed_settings_label">Zeige Feed-Einstellungen</string>
+ <string name="feed_info_label">Feed-Informationen</string>
+ <string name="feed_settings_label">Feed-Einstellungen</string>
+ <string name="rename_feed_label">Feed umbenennen</string>
<string name="remove_feed_label">Podcast entfernen</string>
<string name="share_label">Teilenā€¦</string>
- <string name="share_link_label">Teile Link</string>
- <string name="share_file_label">Teile Datei</string>
+ <string name="share_link_label">Episoden URL Teilen</string>
<string name="share_link_with_position_label">Teile Link mit Zeitmarke</string>
+ <string name="share_file_label">Teile Datei</string>
<string name="share_feed_url_label">Teile URL des Podcasts</string>
- <string name="share_item_url_label">Teile URL der Episode</string>
- <string name="share_item_url_with_position_label">Teile URL der Episode mit Zeitmarke</string>
- <string name="feed_delete_confirmation_msg">Bitte bestƤtige, dass du den Feed \"%1$s\" und ALLE heruntergeladenen Episoden lƶschen mƶchtest.</string>
- <string name="feed_remover_msg">Entferne Feed</string>
+ <string name="share_item_url_label">Teile URL der Episodendatei</string>
+ <string name="share_item_url_with_position_label">Teile URL der Episodendatei mit Zeitmarke</string>
+ <string name="feed_delete_confirmation_msg">Bitte bestƤtige, dass du den Podcast \"%1$s\" und ALLE heruntergeladenen Episoden dieses Feeds entfernen mƶchtest.</string>
+ <string name="feed_remover_msg">Entferne Podcast</string>
<string name="load_complete_feed">Kompletten Feed aktualisieren</string>
<string name="hide_episodes_title">Episoden verbergen</string>
- <string name="episode_actions">Aktionen anwenden</string>
+ <string name="batch_edit">Stapelbearbeitung</string>
<string name="hide_unplayed_episodes_label">Ungespielt</string>
<string name="hide_paused_episodes_label">Pausiert</string>
<string name="hide_played_episodes_label">Gespielt</string>
@@ -132,6 +140,7 @@
<string name="hide_downloaded_episodes_label">Heruntergeladen</string>
<string name="hide_not_downloaded_episodes_label">Nicht heruntergeladen</string>
<string name="hide_has_media_label">Hat Medien</string>
+ <string name="hide_is_favorite_label">Favorit</string>
<string name="filtered_label">Gefiltert</string>
<string name="refresh_failed_msg">{fa-exclamation-circle} Aktualisierung fehlgeschlagen</string>
<string name="open_podcast">Podcast ƶffnen</string>
@@ -145,6 +154,7 @@
<string name="delete_label">Lƶschen</string>
<string name="delete_failed">Die Datei kann nicht gelƶscht werden. Eventuell hilft es, das GerƤt neu zu starten.</string>
<string name="remove_episode_lable">Episode entfernen</string>
+ <string name="mark_as_seen_label">Als gelesen markieren</string>
<string name="marked_as_seen_label">Als gesehen markiert</string>
<string name="mark_read_label">Als gespielt markieren</string>
<string name="marked_as_read_label">Als gespielt markiert</string>
@@ -168,6 +178,8 @@
<string name="download_failed">fehlgeschlagen</string>
<string name="download_pending">Download anstehend</string>
<string name="download_running">Download lƤuft</string>
+ <string name="download_error_details">Details</string>
+ <string name="download_error_details_message">%1$s \n\nDatei-URL:\n%2$s</string>
<string name="download_error_device_not_found">Speichermedium nicht gefunden</string>
<string name="download_error_insufficient_space">Zu wenig Speicherplatz</string>
<string name="download_error_file_error">Dateifehler</string>
@@ -218,6 +230,7 @@
<string name="playback_error_unknown">Unbekannter Fehler</string>
<string name="no_media_playing_label">Keine Medienwiedergabe</string>
<string name="player_buffering_msg">Puffert</string>
+ <string name="player_go_to_picture_in_picture">Bild-in-Bild-Modus</string>
<string name="playbackservice_notification_title">Spiele Podcast ab</string>
<string name="unknown_media_key">AntennaPod - Unbekannte Medientaste: %1$d</string>
<!--Queue operations-->
@@ -234,7 +247,9 @@
<string name="date">Datum</string>
<string name="duration">Dauer</string>
<string name="episode_title">Episodentitel</string>
- <string name="feed_title">Podcastname</string>
+ <string name="feed_title">Feedname</string>
+ <string name="random">ZufƤllig</string>
+ <string name="smart_shuffle">Schlaues Mischen</string>
<string name="ascending">Aufsteigend</string>
<string name="descending">Absteigend</string>
<string name="clear_queue_confirmation_msg">Bitte bestƤtige, dass ALLE Episoden aus der Abspielliste entfernt werden sollen</string>
@@ -281,15 +296,23 @@
<string name="other_pref">Anderes</string>
<string name="about_pref">Ɯber</string>
<string name="queue_label">Abspielliste</string>
- <string name="services_label">Dienste</string>
+ <string name="integrations_label">Einbindungen</string>
<string name="flattr_label">Flattr</string>
+ <string name="flattr_summary">Micropayment-Dienst</string>
+ <string name="automation">Automatisierung</string>
+ <string name="download_pref_details">Details</string>
+ <string name="import_export_pref">Import/Export</string>
+ <string name="appearance">Erscheinungsbild</string>
+ <string name="external_elements">Externe Elemente</string>
+ <string name="interruptions">Unterbrechungen</string>
+ <string name="buttons">Buttons zur Steuerung der Wiedergabe</string>
+ <string name="media_player">Medienabspieler</string>
<string name="pref_episode_cleanup_title">Automatisches Lƶschen</string>
<string name="pref_episode_cleanup_summary">Episoden, die weder in der Abspielliste noch Favoriten sind, kƶnnen gelƶscht werden, wenn beim automatischen Herunterladen Speicherplatz fĆ¼r neue Episoden gebraucht wird</string>
<string name="pref_pauseOnDisconnect_sum">Wiedergabe pausieren, wenn Kopfhƶrer ausgesteckt oder Bluetooth getrennt wird</string>
<string name="pref_unpauseOnHeadsetReconnect_sum">Wiedergabe fortsetzen, wenn Kopfhƶrer wieder eingesteckt werden</string>
<string name="pref_unpauseOnBluetoothReconnect_sum">Wiedergabe fortsetzen, wenn Bluetooth wieder verbunden ist</string>
<string name="pref_hardwareForwardButtonSkips_title">\"NƤchster\"-Taste springt zur nƤchsten Episode</string>
- <string name="pref_hardwareForwardButtonSkips_sum">Zur nƤchsten Episode springen, wenn die \"NƤchster\"-Taste gedrĆ¼ckt wird (statt vorzuspulen)</string>
<string name="pref_hardwarePreviousButtonRestarts_title">Vorheriger-Taste startet neu</string>
<string name="pref_hardwarePreviousButtonRestarts_sum">Die Wiedergabe der aktuellen Episode neu starten, wenn die \"Vorheriger\"-Taste gedrĆ¼ckt wird (statt zurĆ¼ckzuspulen)</string>
<string name="pref_followQueue_sum">Springe zur nƤchsten Episode in der Abspielliste, wenn die Wiedergabe endet</string>
@@ -338,7 +361,7 @@
<string name="pref_nav_drawer_feed_order_title">Reihenfolge der Abonnements einstellen</string>
<string name="pref_nav_drawer_feed_order_sum">Ƅndere die Reihenfolge deiner Abonnements</string>
<string name="pref_nav_drawer_feed_counter_title">Abonnement-ZƤhler einstellen</string>
- <string name="pref_nav_drawer_feed_counter_sum">Ƅndere, welche Information der Abonnement-ZƤhler anzeigt</string>
+ <string name="pref_nav_drawer_feed_counter_sum">Ƅndere die durch den AbonnementszƤhler angezeigten Informationen. Betrifft auch die Sortierung der Abonnements wenn \"Reihenfolge der Abonnements\" auf \"ZƤhler\" gesetzt ist.</string>
<string name="pref_set_theme_sum">Ƅndere das Aussehen von AntennaPod.</string>
<string name="pref_automatic_download_title">Automatisches Herunterladen</string>
<string name="pref_automatic_download_sum">Konfiguriere das automatische Herunterladen von Episoden.</string>
@@ -352,6 +375,7 @@
<string name="pref_episode_cache_title">Episodenspeicher</string>
<string name="pref_theme_title_light">Hell</string>
<string name="pref_theme_title_dark">Dunkel</string>
+ <string name="pref_theme_title_trueblack">Schwarz (fĆ¼r AMOLED)</string>
<string name="pref_episode_cache_unlimited">Unbegrenzt</string>
<string name="pref_update_interval_hours_plural">Stunden</string>
<string name="pref_update_interval_hours_singular">Stunde</string>
@@ -380,8 +404,6 @@
<string name="pref_rewind_sum">Passe an, wie viele Sekunden zurĆ¼ckgespult wird, wenn die entsprechende Hardware-Taste gedrĆ¼ckt wird</string>
<string name="pref_gpodnet_sethostname_title">Hostname Ƥndern</string>
<string name="pref_gpodnet_sethostname_use_default_host">Standard-Host verwenden</string>
- <string name="pref_expandNotify_title">Benachrichtigung erweitern</string>
- <string name="pref_expandNotify_sum">Erweiterte Wiedergabebenachrichtigung mit Abspiel-, Pause- und Stop-Knƶpfen anzeigen.</string>
<string name="pref_persistNotify_title">Persistente Wiedergabesteuerung</string>
<string name="pref_persistNotify_sum">Zeige Wiedergabebedienelemente in der Benachrichtigung und im Lockscreen an, wƤhrend die Wiedergabe pausiert ist.</string>
<string name="pref_compact_notification_buttons_title">Lockscreen-Wiedergabetasten festlegen</string>
@@ -402,8 +424,7 @@
<string name="crash_report_sum">Sende den aktuellen Absturzbericht per E-Mail</string>
<string name="send_email">E-Mail senden</string>
<string name="experimental_pref">Experimentell</string>
- <string name="pref_sonic_title">Sonic Media Player</string>
- <string name="pref_sonic_message">Benutze den integrierten Sonic Mediaplayer als Ersatz fĆ¼r Androids eigenen Mediaplayer und Prestissimo</string>
+ <string name="pref_media_player_message">WƤhle, welcher Medienabspieler benutzt werden soll, um Dateien abzuspielen</string>
<string name="pref_current_value">Aktueller Wert: %1$s</string>
<string name="pref_proxy_title">Proxy</string>
<string name="pref_proxy_sum">Richte einen Netzwerk-Proxy ein</string>
@@ -415,6 +436,11 @@
<string name="pref_cast_message_free_flavor">Chromecast benƶtigt proprietƤre Bibliotheken von Drittanbietern, die in dieser Version von AntennaPod deaktiviert sind</string>
<string name="pref_enqueue_downloaded_title">Downloads einreihen</string>
<string name="pref_enqueue_downloaded_summary">FĆ¼ge heruntergeladene Episoden zur Abspielliste hinzu</string>
+ <string name="media_player_builtin">Androids eingebauter Abspieler</string>
+ <string name="pref_videoBehavior_title">Beim Beenden des Videos</string>
+ <string name="pref_videoBehavior_sum">Verhalten beim Verlassen der Video-Wiedergabe</string>
+ <string name="stop_playback">Wiedergabe anhalten</string>
+ <string name="continue_playback">Audiowiedergabe fortsetzen</string>
<!--Auto-Flattr dialog-->
<string name="auto_flattr_enable">Automatisches Flattrn aktivieren</string>
<string name="auto_flattr_after_percent">Flattr eine Episode, sobald %d Prozent gespielt worden sind</string>
@@ -424,8 +450,8 @@
<string name="search_hint">Suche nach Episoden</string>
<string name="found_in_shownotes_label">In Shownotizen gefunden</string>
<string name="found_in_chapters_label">In Kapiteln gefunden</string>
- <string name="found_in_authors_label">In Autoren gefunden</string>
- <string name="found_in_feeds_label">In Feeds gefunden</string>
+ <string name="found_in_authors_label">Gefunden in Autor(en)</string>
+ <string name="found_in_feeds_label">Gefunden in Podcast</string>
<string name="search_status_no_results">Keine Ergebnisse gefunden</string>
<string name="search_label">Suchen</string>
<string name="found_in_title_label">In Titel gefunden</string>
@@ -451,8 +477,8 @@
<string name="html_export_label">HTML Export</string>
<string name="exporting_label">Exportiereā€¦</string>
<string name="export_error_label">Exportfehler</string>
- <string name="opml_export_success_title">OPML Export erfolgreich</string>
- <string name="opml_export_success_sum">Die OPML Datei wurde unter dem folgenden Pfad gespeichert:\u0020</string>
+ <string name="export_success_title">Export erfolgreich</string>
+ <string name="export_success_sum">Die exportierte Datei wurde geschrieben nach:\n\n%1$s</string>
<string name="opml_import_ask_read_permission">Zugriff auf externen Speicher wird benƶtigt, um die OPML Datei zu lesen</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">Timer einstellen</string>
@@ -625,7 +651,7 @@
<string name="label_import">Import</string>
<string name="label_export">Export</string>
<string name="import_select_file">Zu importierende Datei auswƤhlen</string>
- <string name="export_ok">Export erfolgreich. Die Datenbank wurde auf die SD-Karte geschrieben.</string>
+ <string name="export_ok">Export erfolgreich.</string>
<string name="import_ok">Import erfolgreich.\n\nBitte OK drĆ¼cken, um AntennaPod neuzustarten</string>
<!--Casting-->
<string name="cast_media_route_menu_title">Abspielen auf...</string>
@@ -643,4 +669,13 @@
<string name="cast_failed_seek">Spulen zur neuen Position fehlgeschlagen</string>
<string name="cast_failed_receiver_player_error">Es wurde ein schwerer Fehler beim EmpfangsgerƤt festgestellt</string>
<string name="cast_failed_media_error_skipping">Fehler bei Wiedergabe. Ɯberspringe...</string>
+ <!--Notification channels-->
+ <string name="notification_channel_user_action">Handlung notwendig</string>
+ <string name="notification_channel_user_action_description">Wird gezeigt, wenn deine Handlung notwendig ist, zum Beispiel wenn du ein Passwort eingeben musst.</string>
+ <string name="notification_channel_downloading">LƤdt herunter</string>
+ <string name="notification_channel_downloading_description">Wird gezeigt beim Herunterladen.</string>
+ <string name="notification_channel_playing">Jetzt spielt</string>
+ <string name="notification_channel_playing_description">Erlaubt es, die Wiedergabe zu steuern. Dies ist die Hauptbenachrichtigung, die du siehst, wƤhrend ein Podcast abgespielt wird.</string>
+ <string name="notification_channel_error">Fehler</string>
+ <string name="notification_channel_error_description">Wird gezeigt, wenn etwas schief gegangen ist, etwa wenn das Herunterladen oder die gpodder-Synchronisierung fehlschlƤgt.</string>
</resources>
diff --git a/core/src/main/res/values-el/strings.xml b/core/src/main/res/values-el/strings.xml
index 152e73426..f72115bb2 100644
--- a/core/src/main/res/values-el/strings.xml
+++ b/core/src/main/res/values-el/strings.xml
@@ -1,16 +1,18 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources xmlns:tools="http://schemas.android.com/tools">
<!--Activitiy and fragment titles-->
+ <string name="feed_update_receiver_name">Ī‘Ī½Ī±Ī½Ī­Ļ‰ĻƒĪ· Ī£Ļ…Ī½Ī“ĻĪæĪ¼ĻŽĪ½</string>
<string name="feeds_label">Ī”ĪæĪ­Ļ‚</string>
<string name="statistics_label">Ī£Ļ„Ī±Ļ„Ī¹ĻƒĻ„Ī¹ĪŗĪ¬</string>
<string name="add_feed_label">Ī ĻĪæĻƒĪøĪ®ĪŗĪ· Podcast</string>
<string name="episodes_label">Ī•Ļ€ĪµĪ¹ĻƒĻŒĪ“Ī¹Ī±</string>
<string name="all_episodes_short_label">ĪŒĪ»Ī±</string>
+ <string name="new_episodes_label">ĪĪ­Ī±</string>
<string name="favorite_episodes_label">Ī‘Ī³Ī±Ļ€Ī·Ī¼Ī­Ī½Ī±</string>
<string name="new_label">ĪĪ­Ī±</string>
<string name="settings_label">Ī”Ļ…ĪøĪ¼ĪÆĻƒĪµĪ¹Ļ‚</string>
<string name="downloads_label">Ī›Ī®ĻˆĪµĪ¹Ļ‚</string>
- <string name="downloads_running_label">Ī•ĪŗĻ„Ī­Ī»ĪµĻƒĪ·</string>
+ <string name="downloads_running_label">Ī•ĪŗĻ„Ī­Ī»ĪµĪÆĻ„Ī±Ī¹</string>
<string name="downloads_completed_label">ĪŸĪ»ĪæĪŗĪ»Ī·ĻĻŽĪøĪ·ĪŗĪµ</string>
<string name="downloads_log_label">Ī•ĪÆĻƒĪæĪ“ĪæĻ‚</string>
<string name="subscriptions_label">Ī£Ļ…Ī½Ī“ĻĪæĪ¼Ī­Ļ‚</string>
@@ -18,55 +20,71 @@
<string name="cancel_download_label">Ī‘ĪŗĻĻĻ‰ĻƒĪ·\nĪ›Ī®ĻˆĪ·Ļ‚</string>
<string name="playback_history_label">Ī™ĻƒĻ„ĪæĻĪ¹ĪŗĻŒ Ī‘Ī½Ī±Ļ€Ī±ĻĪ±Ī³Ļ‰Ī³Ī®Ļ‚</string>
<string name="gpodnet_main_label">gpodder.net</string>
+ <string name="gpodnet_summary">Ī£Ļ…Ī³Ļ‡ĻĪæĪ½Ī¹ĻƒĪ¼ĻŒĻ‚ Ī¼Īµ Ī¬Ī»Ī»ĪµĻ‚ ĻƒĻ…ĻƒĪŗĪµĻ…Ī­Ļ‚</string>
<string name="gpodnet_auth_label">gpodder.net Ī£ĻĪ½Ī“ĪµĻƒĪ·</string>
+ <string name="synchronizing">Ī•ĪŗĻ„ĪµĪ»ĪµĪÆĻ„Ī±Ī¹ ĻƒĻ…Ī³Ļ‡ĻĪæĪ½Ī¹ĻƒĪ¼ĻŒĻ‚</string>
<!--Statistics fragment-->
+ <string name="total_time_listened_to_podcasts">Ī£Ļ…Ī½ĪæĪ»Ī¹ĪŗĻŒĻ‚ Ļ‡ĻĻŒĪ½ĪæĻ‚ ĪµĪŗĻ„ĪµĪ»ĪµĻƒĪ¼Ī­Ī½Ļ‰Ī½ podcasts:</string>
<!--Main activity-->
<string name="drawer_open">Ī†Ī½ĪæĪ¹Ī³Ī¼Ī± Ī¼ĪµĪ½ĪæĻ</string>
<string name="drawer_close">ĪšĪ»ĪµĪÆĻƒĪ¹Ī¼Īæ Ī¼ĪµĪ½ĪæĻ</string>
<string name="drawer_feed_order_alphabetical">Ī¤Ī±Ī¾Ī¹Ī½ĻŒĪ¼Ī·ĻƒĪ· Ī±Ī»Ļ†Ī±Ī²Ī·Ļ„Ī¹ĪŗĪ¬</string>
<string name="drawer_feed_order_last_update">Ī¤Ī±Ī¾Ī¹Ī½ĻŒĪ¼Ī·ĻƒĪ· ĪŗĪ±Ļ„Ī¬ Ī·Ī¼ĪµĻĪæĪ¼Ī·Ī½ĪÆĪ± Ī“Ī·Ī¼ĪæĻƒĪÆĪµĻ…ĻƒĪ·Ļ‚</string>
+ <string name="drawer_feed_order_most_played">Ī¤Ī±Ī¾Ī¹Ī½ĻŒĪ¼Ī·ĻƒĪ· ĪŗĪ±Ļ„Ī¬ Ī±ĻĪ¹ĪøĪ¼ĻŒ ĪµĪŗĻ„ĪµĪ»ĪµĻƒĪ¼Ī­Ī½Ļ‰Ī½ ĪµĻ€ĪµĪ¹ĻƒĪæĪ“ĪÆĻ‰Ī½</string>
+ <string name="drawer_feed_counter_new_unplayed">Ī‘ĻĪ¹ĪøĪ¼ĻŒĻ‚ Ī½Ī­Ļ‰Ī½ ĪµĻ€ĪµĪ¹ĻƒĪæĪ“ĪÆĻ‰Ī½ ĪŗĪ±Ī¹ Ī±ĻĪ¹ĪøĪ¼ĻŒĻ‚ Ī¼Ī· ĪµĪŗĻ„ĪµĪ»ĪµĻƒĪ¼Ī­Ī½Ļ‰Ī½ ĪµĻ€ĪµĪ¹ĻƒĪæĪ“ĪÆĻ‰Ī½</string>
<string name="drawer_feed_counter_new">Ī‘ĻĪ¹ĪøĪ¼ĻŒĻ‚ Ī½Ī­Ļ‰Ī½ ĪµĻ€ĪµĪ¹ĻƒĪæĪ“ĪÆĻ‰Ī½</string>
+ <string name="drawer_feed_counter_unplayed">Ī‘ĻĪ¹ĪøĪ¼ĻŒĻ‚ Ī¼Ī· ĪµĪŗĻ„ĪµĪ»ĪµĻƒĪ¼Ī­Ī½Ļ‰Ī½ ĪµĻ€ĪµĪ¹ĻƒĪæĪ“ĪÆĻ‰Ī½</string>
+ <string name="drawer_feed_counter_downloaded">Ī‘ĻĪ¹ĪøĪ¼ĻŒĻ‚ Ī»Ī·Ļ†ĪøĪ­Ī½Ļ„Ļ‰Ī½ ĪµĻ€ĪµĪ¹ĻƒĪæĪ“ĪÆĻ‰Ī½</string>
+ <string name="drawer_feed_counter_none">ĪšĪµĪ½ĻŒ</string>
<!--Webview actions-->
<string name="open_in_browser_label">Ī†Ī½ĪæĪ¹Ī³Ī¼Ī± ĻƒĻ„ĪæĪ½ Ī ĪµĻĪ¹Ī·Ī³Ī·Ļ„Ī®</string>
<string name="copy_url_label">Ī‘Ī½Ļ„Ī¹Ī³ĻĪ±Ļ†Ī® Ī“Ī¹ĪµĻĪøĻ…Ī½ĻƒĪ·Ļ‚ URL</string>
- <string name="share_url_label">ĪœĪæĪ¹ĻĪ±ĻƒĪ¼Ī± URL</string>
+ <string name="share_url_label">ĪœĪæĪÆĻĪ±ĻƒĪ¼Ī± URL</string>
<string name="copied_url_msg">Ī‘Ī½Ļ„Ī¹Ī³ĻĪ±Ļ†Ī® URL ĻƒĻ„Īæ Ī ĻĻŒĻ‡ĪµĪ¹ĻĪæ</string>
+ <string name="go_to_position_label">ĪœĪµĻ„Ī¬Ī²Ī±ĻƒĪ· ĻƒĪµ Ī±Ļ…Ļ„Ī® Ļ„Ī· ĪøĪ­ĻƒĪ·</string>
<!--Playback history-->
<string name="clear_history_label">Ī•ĪŗĪŗĪ±ĪøĪ¬ĻĪ¹ĻƒĪ· Ī™ĻƒĻ„ĪæĻĪ¹ĪŗĪæĻ</string>
<!--Other-->
<string name="confirm_label">Ī•Ļ€Ī¹Ī²ĪµĪ²Ī±ĪÆĻ‰ĻƒĪ·</string>
<string name="cancel_label">Ī‘ĪŗĻĻĻ‰ĻƒĪ·</string>
- <string name="author_label">Ī”Ī·Ī¼Ī¹ĪæĻ…ĻĪ³ĪæĻ‚</string>
- <string name="language_label">Ī“Ī»Ļ‰ĻƒĻƒĪ±</string>
- <string name="podcast_settings_label">Ī”Ļ…ĪøĪ¼Ī¹ĻƒĪµĪ¹Ļ‚</string>
- <string name="cover_label">Ī•Ī¹ĪŗĪæĪ½Ī±</string>
- <string name="error_label">Ī£Ļ†Ī±Ī»Ī¼Ī±</string>
+ <string name="yes">ĪĪ±Ī¹</string>
+ <string name="no">ĪŒĻ‡Ī¹</string>
+ <string name="language_label">Ī“Ī»ĻŽĻƒĻƒĪ±</string>
+ <string name="url_label">URL</string>
+ <string name="podcast_settings_label">Ī”Ļ…ĪøĪ¼ĪÆĻƒĪµĪ¹Ļ‚</string>
+ <string name="cover_label">Ī•Ī¹ĪŗĻŒĪ½Ī±</string>
+ <string name="error_label">Ī£Ļ†Ī¬Ī»Ī¼Ī±</string>
<string name="error_msg_prefix">Ī Ī±ĻĪæĻ…ĻƒĪ¹Ī¬ĻƒĻ„Ī·ĪŗĪµ Ī­Ī½Ī± ĻƒĻ†Ī¬Ī»Ī¼Ī±:</string>
<string name="refresh_label">Ī‘Ī½Ī±Ī½Ī­Ļ‰ĻƒĪ·</string>
<string name="external_storage_error_msg">ĪšĪ±Ī¼ĪÆĪ± ĪµĪ¾Ļ‰Ļ„ĪµĻĪ¹ĪŗĪ® Ī±Ļ€ĪæĪøĪ®ĪŗĪµĻ…ĻƒĪ· ĪµĪÆĪ½Ī±Ī¹ Ī“Ī¹Ī±ĪøĪ­ĻƒĪ¹Ī¼Ī·. Ī Ī±ĻĪ±ĪŗĪ±Ī»ĻŽ Ī²ĪµĪ²Ī±Ī¹Ļ‰ĪøĪµĪÆĻ„Īµ ĻŒĻ„Ī¹ Ī· ĪµĪ¾Ļ‰Ļ„ĪµĻĪ¹ĪŗĪ® Ī±Ļ€ĪæĪøĪ®ĪŗĪµĻ…ĻƒĪ· Ī­Ļ‡ĪµĪ¹ Ļ„ĪæĻ€ĪæĪøĪµĻ„Ī·ĪøĪµĪÆ Ī­Ļ„ĻƒĪ¹ ĻŽĻƒĻ„Īµ Ī· ĪµĻ†Ī±ĻĪ¼ĪæĪ³Ī® Ī½Ī± Ī¼Ļ€ĪæĻĪµĪÆ Ī½Ī± Ī»ĪµĪ¹Ļ„ĪæĻ…ĻĪ³Ī®ĻƒĪµĪ¹ ĻƒĻ‰ĻƒĻ„Ī¬.</string>
<string name="chapters_label">ĪšĪµĻ†Ī¬Ī»Ī±Ī¹Ī±</string>
+ <string name="chapter_duration">Ī”Ī¹Ī¬ĻĪŗĪµĪ¹Ī±: %1$s</string>
<string name="shownotes_label">Ī•Ī¼Ļ†Ī¬Ī½Ī¹ĻƒĪ· Ī£Ī·Ī¼ĪµĪ¹ĻŽĻƒĪµĻ‰Ī½</string>
<string name="description_label">Ī ĪµĻĪ¹Ī³ĻĪ±Ļ†Ī®</string>
- <string name="episodes_suffix">\u0020ĪµĻ€ĪµĪ¹ĻƒĪæĪ“Ī¹Ī±</string>
+ <string name="most_recent_prefix">Ī Ī¹Īæ Ļ€ĻĻŒĻƒĻ†Ī±Ļ„Īæ ĪµĻ€ĪµĪ¹ĻƒĻŒĪ“Ī¹Īæ:\u0020</string>
+ <string name="episodes_suffix">\u0020ĪµĻ€ĪµĪ¹ĻƒĻŒĪ“Ī¹Ī±</string>
<string name="length_prefix">ĪœĪ®ĪŗĪæĻ‚:\u0020</string>
<string name="size_prefix">ĪœĪ­Ī³ĪµĪøĪæĻ‚:\u0020</string>
<string name="processing_label">Ī•Ļ€ĪµĪ¾ĪµĻĪ³Ī±ĻƒĪÆĪ±</string>
- <string name="save_username_password_label">Ī‘Ļ€ĪæĪøĪ®ĪŗĪµĻ…ĻƒĪ· Ļ„ĪæĻ… ĻŒĪ½ĪæĪ¼Ī±Ļ„ĪæĻ‚ Ļ‡ĻĪ®ĻƒĻ„Ī· ĪŗĪ±Ī¹ Ļ„ĪæĻ… ĪŗĻ‰Ī“Ī¹ĪŗĻŒĻ… Ļ€ĻĻŒĻƒĪ²Ī±ĻƒĪ·Ļ‚</string>
+ <string name="save_username_password_label">Ī‘Ļ€ĪæĪøĪ®ĪŗĪµĻ…ĻƒĪ· Ļ„ĪæĻ… ĪæĪ½ĻŒĪ¼Ī±Ļ„ĪæĻ‚ Ļ‡ĻĪ®ĻƒĻ„Ī· ĪŗĪ±Ī¹ Ļ„ĪæĻ… ĪŗĻ‰Ī“Ī¹ĪŗĪæĻ Ļ€ĻĻŒĻƒĪ²Ī±ĻƒĪ·Ļ‚</string>
<string name="close_label">ĪšĪ»ĪµĪÆĻƒĪ¹Ī¼Īæ</string>
- <string name="retry_label">Ī•Ļ€Ī±Ī½Ī¬Ī»Ī·ĻˆĪ·</string>
+ <string name="retry_label">Ī•Ļ€Ī±Ī½Ī±Ļ€ĻĪæĻƒĻ€Ī¬ĪøĪµĪ¹Ī±</string>
<string name="auto_download_label">Ī£Ļ…Ī¼Ļ€ĪµĻĪÆĪ»Ī·ĻˆĪ· ĻƒĻ„Ī·Ī½ Ī±Ļ…Ļ„ĻŒĪ¼Ī±Ļ„Ī· Ī»Ī®ĻˆĪ·</string>
+ <string name="auto_download_apply_to_items_title">Ī•Ļ†Ī±ĻĪ¼ĪæĪ³Ī® ĻƒĪµ Ļ€ĻĪæĪ·Ī³ĪæĻĪ¼ĪµĪ½Ī± ĪµĻ€ĪµĪ¹ĻƒĻŒĪ“Ī¹Ī±</string>
+ <string name="auto_delete_label">Ī‘Ļ…Ļ„ĻŒĪ¼Ī±Ļ„Ī· Ī“Ī¹Ī±Ī³ĻĪ±Ļ†Ī® ĪµĻ€ĪµĪ¹ĻƒĪæĪ“ĪÆĪæĻ…</string>
<string name="parallel_downloads_suffix">\u0020Ļ€Ī±ĻĪ¬Ī»Ī»Ī·Ī»ĪµĻ‚ Ī»Ī®ĻˆĪµĪ¹Ļ‚</string>
<string name="feed_auto_download_always">Ī Ī¬Ī½Ļ„Ī±</string>
<string name="feed_auto_download_never">Ī ĪæĻ„Ī­</string>
+ <string name="send_label">Ī‘Ļ€ĪæĻƒĻ„ĪæĪ»Ī®...</string>
<string name="episode_cleanup_never">Ī ĪæĻ„Ī­</string>
<!--'Add Feed' Activity labels-->
<string name="feedurl_label">URL Ļ„Ī·Ļ‚ Ī”ĪæĪ®Ļ‚</string>
<string name="etxtFeedurlHint">www.example.com/feed</string>
<string name="txtvfeedurl_label">Ī ĻĪæĻƒĪøĪ®ĪŗĪ· Podcast Ī¼Īµ Ļ„Ī· Ī“Ī¹ĪµĻĪøĻ…Ī½ĻƒĪ· URL</string>
+ <string name="podcastdirectories_label">Ī•ĻĻĪµĻƒĪ· Podcast ĻƒĻ„Īæ Ī¦Ī¬ĪŗĪµĪ»Īæ</string>
<string name="browse_gpoddernet_label">Ī ĪµĻĪ¹Ī®Ī³Ī·ĻƒĪ· ĻƒĻ„Īæ gpodder.net</string>
<!--Actions on feeds-->
<string name="show_info_label">Ī•Ī¼Ļ†Ī¬Ī½Ī¹ĻƒĪ· Ļ€Ī»Ī·ĻĪæĻ†ĪæĻĪ¹ĻŽĪ½</string>
- <string name="remove_feed_label">ĪšĪ±Ļ„Ī¬ĻĪ³Ī·ĻƒĪ· Podcast</string>
<string name="hide_episodes_title">Ī‘Ļ€ĻŒĪŗĻĻ…ĻˆĪ· Ī•Ļ€ĪµĪ¹ĻƒĪæĪ“ĪÆĻ‰Ī½</string>
<string name="hide_downloaded_episodes_label">Ī•Ī¹Ī»Ī·Ī¼Ī¼Ī­Ī½Ī±</string>
<string name="refresh_failed_msg">{fa-exclamation-circle} Ī— Ī¤ĪµĪ»ĪµĻ…Ļ„Ī±ĪÆĪ± Ī‘Ī½Ī±Ī½Ī­Ļ‰ĻƒĪ· Ī‘Ļ€Ī­Ļ„Ļ…Ļ‡Īµ</string>
@@ -175,12 +193,10 @@
<string name="set_playback_speed_label">Ī¤Ī±Ļ‡ĻĻ„Ī·Ļ„ĪµĻ‚ Ī±Ī½Ī±Ļ€Ī±ĻĪ±Ī³Ļ‰Ī³Ī®Ļ‚</string>
<!--Empty list labels-->
<string name="no_items_label">Ī”ĪµĪ½ Ļ…Ļ€Ī¬ĻĻ‡ĪæĻ…Ī½ ĻƒĻ„ĪæĪ¹Ļ‡ĪµĪÆĪ± ĻƒĪµ Ī±Ļ…Ļ„Ī® Ļ„Ī· Ī»ĪÆĻƒĻ„Ī±.</string>
- <string name="no_feeds_label">Ī”ĪµĪ½ Ī­Ļ‡ĪµĻ„Īµ ĪµĪ³Ī³ĻĪ±Ļ†ĪµĪÆ ĻƒĪµ ĪæĻ€ĪæĪ¹ĪµĻƒĪ“Ī®Ļ€ĪæĻ„Īµ Ļ„ĻĪæĻ†ĪæĪ“ĪæĻƒĪÆĪµĻ‚ Ī±ĪŗĻŒĪ¼Ī±</string>
<!--Preferences-->
<string name="other_pref">Ī†Ī»Ī»Ī±</string>
<string name="about_pref">Ī£Ļ‡ĪµĻ„Ī¹ĪŗĪ¬ Ī¼Īµ</string>
<string name="queue_label">Ī£ĪµĪ¹ĻĪ¬ Ī±Ī½Ī±Ī¼ĪæĪ½Ī®Ļ‚</string>
- <string name="services_label">Ī„Ļ€Ī·ĻĪµĻƒĪÆĪµĻ‚</string>
<string name="flattr_label">Flattr</string>
<string name="pref_unpauseOnHeadsetReconnect_sum">Ī£Ļ…Ī½Ī­Ļ‡Ī¹ĻƒĪ· Ļ„Ī·Ļ‚ Ī±Ī½Ī±Ļ€Ī±ĻĪ±Ī³Ļ‰Ī³Ī®Ļ‚, ĻŒĻ„Ī±Ī½ Ļ„Ī± Ī±ĪŗĪæĻ…ĻƒĻ„Ī¹ĪŗĪ¬ ĪµĻ€Ī±Ī½Ī±ĻƒĻ…Ī½Ī“Ī­ĪæĪ½Ļ„Ī±Ī¹</string>
<string name="pref_followQueue_sum">ĪœĪµĻ„Ī¬Ī²Ī±ĻƒĪ· ĻƒĻ„Īæ ĪµĻ€ĻŒĪ¼ĪµĪ½Īæ ĻƒĻ„ĪæĪ¹Ļ‡ĪµĪÆĪæ ĻƒĪµĪ¹ĻĪ¬Ļ‚ Ī±Ī½Ī±Ī¼ĪæĪ½Ī®Ļ‚ ĻŒĻ„Ī±Ī½ Ī· Ī±Ī½Ī±Ļ€Ī±ĻĪ±Ī³Ļ‰Ī³Ī® ĪæĪ»ĪæĪŗĪ»Ī·ĻĻ‰ĪøĪµĪÆ</string>
@@ -223,8 +239,6 @@
<string name="pref_playback_speed_sum">Ī ĻĪæĻƒĪ±ĻĪ¼ĻŒĻƒĻ„Īµ Ļ„Ī¹Ļ‚ Ī“Ī¹Ī±ĪøĪ­ĻƒĪ¹Ī¼ĪµĻ‚ Ļ„Ī±Ļ‡ĻĻ„Ī·Ļ„ĪµĻ‚ Ī³Ī¹Ī± Ī±Ī½Ī±Ļ€Ī±ĻĪ±Ī³Ļ‰Ī³Ī® Ī®Ļ‡ĪæĻ… Ī¼ĪµĻ„Ī±Ī²Ī»Ī·Ļ„Ī®Ļ‚ Ļ„Ī±Ļ‡ĻĻ„Ī·Ļ„Ī±Ļ‚</string>
<string name="pref_gpodnet_sethostname_title">ĪŸĻĪ¹ĻƒĪ¼ĻŒĻ‚ ĪŗĪµĪ½Ļ„ĻĪ¹ĪŗĪæĻ Ļ…Ļ€ĪæĪ»ĪæĪ³Ī¹ĻƒĻ„Ī®</string>
<string name="pref_gpodnet_sethostname_use_default_host">Ī§ĻĪ®ĻƒĪ· Ļ€ĻĪæĪµĻ€Ī¹Ī»ĪµĪ³Ī¼Ī­Ī½Ī·Ļ‚ Ļ…Ļ€ĪæĪ“ĪæĻ‡Ī®Ļ‚</string>
- <string name="pref_expandNotify_title">Ī‘Ī½Ī¬Ļ€Ļ„Ļ…Ī¾Ī· ĪŗĪæĪ¹Ī½ĪæĻ€ĪæĪÆĪ·ĻƒĪ·Ļ‚</string>
- <string name="pref_expandNotify_sum">Ī Ī¬Ī½Ļ„Ī± ĪµĻ€Ī­ĪŗĻ„Ī±ĻƒĪ· Ļ„Ī·Ļ‚ ĪµĪ¹Ī“ĪæĻ€ĪæĪÆĪ·ĻƒĪ·Ļ‚ Ī³Ī¹Ī± ĪµĪ¼Ļ†Ī±Ī½Ī¹ĻƒĪ· ĪŗĪæĻ…Ī¼Ļ€Ī¹Ļ‰Ī½ Ī±Ī½Ī±Ļ€Ī±ĻĪ±Ī³Ļ‰Ī³Ī®Ļ‚.</string>
<string name="pref_persistNotify_sum">Ī”Ī¹Ī±Ļ„Ī·ĻĪ·ĻƒĪ· Ļ„Ļ‰Ī½ ĪµĪ»Ī­Ī³Ļ‡Ļ‰Ī½ ĪŗĪæĪ¹Ī½ĪæĻ€ĪæĪÆĪ·ĻƒĪ·Ļ‚ ĪŗĪ±Ī¹ lockscreen ĻŒĻ„Ī±Ī½ Ī³ĪÆĪ½ĪµĻ„Ī±Ī¹ Ļ€Ī±ĻĻƒĪ· Ļ„Ī·Ļ‚ Ī±Ī½Ī±Ļ€Ī±ĻĪ±Ī³Ļ‰Ī³Ī®Ļ‚.</string>
<string name="pref_expand_notify_unsupport_toast">Ī•ĪŗĪ“ĻŒĻƒĪµĪ¹Ļ‚ Ļ„ĪæĻ… Android Ļ€ĻĪ¹Ī½ Ī±Ļ€ĻŒ Ļ„Īæ 4.1 Ī“ĪµĪ½ Ļ…Ļ€ĪæĻƒĻ„Ī·ĻĪÆĪ¶ĪæĻ…Ī½ ĪµĪŗĻ„ĪµĻ„Ī±Ī¼Ī­Ī½ĪµĻ‚ ĪŗĪæĪ¹Ī½ĪæĻ€ĪæĪ¹Ī®ĻƒĪµĪ¹Ļ‚.</string>
<string name="pref_queueAddToFront_sum">Ī ĻĪæĻƒĪøĪ®ĪŗĪ· Ī½Ī­Ļ‰Ī½ ĪµĻ€ĪµĪ¹ĻƒĪæĪ“ĪÆĻ‰Ī½ ĻƒĻ„Īæ Ī¼Ļ€ĻĪæĻƒĻ„Ī¹Ī½ĻŒ Ī¼Ī­ĻĪæĻ‚ Ļ„Ī·Ļ‚ ĪæĻ…ĻĪ¬Ļ‚.</string>
@@ -255,8 +269,6 @@
<string name="choose_file_from_external_application">Ī§ĻĪ·ĻƒĪ¹Ī¼ĪæĻ€ĪæĪ¹Ī®ĻƒĻ„Īµ ĪµĪ¾Ļ‰Ļ„ĪµĻĪ¹ĪŗĪ® ĪµĻ†Ī±ĻĪ¼ĪæĪ³Ī®</string>
<string name="opml_export_label">OPML ĪµĪ¾Ī±Ī³Ļ‰Ī³Ī®</string>
<string name="export_error_label">Ī£Ļ†Ī¬Ī»Ī¼Ī± ĪŗĪ±Ļ„Ī¬ Ļ„Ī·Ī½ ĪµĪ¾Ī±Ī³Ļ‰Ī³Ī®</string>
- <string name="opml_export_success_title">Ī— Ī•Ī¾Ī±Ī³Ļ‰Ī³Ī® OPML ĪµĪÆĪ½Ī±Ī¹ ĪµĻ€Ī¹Ļ„Ļ…Ļ‡Ī®Ļ‚</string>
- <string name="opml_export_success_sum">Ī¤Īæ Ī±ĻĻ‡ĪµĪÆĪæ .opml ĻƒĻ…Ī½Ļ„Ī¬Ļ‡ĪøĪ·ĪŗĪµ Ī³Ī¹Ī±:\u0020</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">Ī”ĻĪøĪ¼Ī¹ĻƒĪ· Ļ„ĪæĻ… Ļ‡ĻĪæĪ½ĪæĪ“Ī¹Ī±ĪŗĻŒĻ€Ļ„Ī· ĻĻ€Ī½ĪæĻ…</string>
<string name="disable_sleeptimer_label">Ī‘Ļ€ĪµĪ½ĪµĻĪ³ĪæĻ€ĪæĪÆĪ·ĻƒĪ· Ļ‡ĻĪæĪ½ĪæĪ“Ī¹Ī±ĪŗĻŒĻ€Ļ„Ī· ĻĻ€Ī½ĪæĻ…</string>
@@ -341,4 +353,7 @@
<!--Database import/export-->
<!--Casting-->
<!--<string name="cast_failed_to_connect">Could not connect to the device</string>-->
+ <!--Notification channels-->
+ <string name="notification_channel_downloading">Ī›Ī®ĻˆĪ·</string>
+ <string name="notification_channel_error">Ī£Ļ†Ī¬Ī»Ī¼Ī±Ļ„Ī±</string>
</resources>
diff --git a/core/src/main/res/values-es-rES/strings.xml b/core/src/main/res/values-es-rES/strings.xml
index 8aa30231b..024989498 100644
--- a/core/src/main/res/values-es-rES/strings.xml
+++ b/core/src/main/res/values-es-rES/strings.xml
@@ -193,7 +193,6 @@
<string name="deselect_all_label">Deseleccionar todo</string>
<string name="opml_export_label">Exportar a OPML</string>
<string name="export_error_label">Error en la exportaciĆ³n</string>
- <string name="opml_export_success_sum">El archivo OPML se ha escrito en:\u0020</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">Establecer un temporizador</string>
<string name="disable_sleeptimer_label">Desactivar el temporizador</string>
@@ -229,4 +228,5 @@
<!--Database import/export-->
<!--Casting-->
<!--<string name="cast_failed_to_connect">Could not connect to the device</string>-->
+ <!--Notification channels-->
</resources>
diff --git a/core/src/main/res/values-es/strings.xml b/core/src/main/res/values-es/strings.xml
index 7c6341a06..73eabec89 100644
--- a/core/src/main/res/values-es/strings.xml
+++ b/core/src/main/res/values-es/strings.xml
@@ -1,11 +1,13 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources xmlns:tools="http://schemas.android.com/tools">
<!--Activitiy and fragment titles-->
+ <string name="feed_update_receiver_name">Actualizar suscripciones</string>
<string name="feeds_label">Canales</string>
<string name="statistics_label">EstadĆ­sticas</string>
- <string name="add_feed_label">AƱadir podcast</string>
+ <string name="add_feed_label">AƱadir pĆ³dcast</string>
<string name="episodes_label">Episodios</string>
<string name="all_episodes_short_label">Todos</string>
+ <string name="new_episodes_label">Nuevos</string>
<string name="favorite_episodes_label">Favoritos</string>
<string name="new_label">Nuevos</string>
<string name="settings_label">Ajustes</string>
@@ -13,41 +15,43 @@
<string name="downloads_running_label">En curso</string>
<string name="downloads_completed_label">Completadas</string>
<string name="downloads_log_label">Registro</string>
- <string name="subscriptions_label">Subscripciones</string>
- <string name="subscriptions_list_label">Lista de subscripciones</string>
+ <string name="subscriptions_label">Suscripciones</string>
+ <string name="subscriptions_list_label">Lista de suscripciones</string>
<string name="cancel_download_label">Cancelar\ndescarga</string>
<string name="playback_history_label">Historial de reproducciones</string>
<string name="gpodnet_main_label">gpodder.net</string>
+ <string name="gpodnet_summary">Sincronizar con otros dispositivos</string>
<string name="gpodnet_auth_label">Iniciar sesiĆ³n en gpodder.net</string>
<string name="free_space_label">%1$s libre</string>
- <string name="episode_cache_full_title">CachƩ de episodios completa</string>
- <string name="episode_cache_full_message">Se ha alcanzado el lƭmite de cachƩ de episodios. Puedes aumentar el tamaƱo de la cachƩ en las Opciones.</string>
+ <string name="episode_cache_full_title">Almacenamiento de episodios completo</string>
+ <string name="episode_cache_full_message">Se ha alcanzado el lƭmite de almacenamiento de episodios. Puedes aumentar el tamaƱo en opciones.</string>
+ <string name="synchronizing">Sincronizandoā€¦</string>
<!--Statistics fragment-->
- <string name="total_time_listened_to_podcasts">Tiempo total reproducido:</string>
- <string name="statistics_details_dialog">Empezados %1$d episodios de %2$d.\n\nReproducidos %3$s de %4$s.</string>
+ <string name="total_time_listened_to_podcasts">Tiempo total de reproducciĆ³n de pĆ³dcast:</string>
+ <string name="statistics_details_dialog">%1$d episodios iniciados de %2$d.\n\nReproducidos %3$s de %4$s.</string>
<string name="statistics_mode">Modo de estadĆ­sticas</string>
<string name="statistics_mode_normal">Calcula la duraciĆ³n real reproducida. Reproducir dos veces cuenta doble, y marcar como leĆ­do no cuenta como reproducido</string>
- <string name="statistics_mode_count_all">Resumir todos los podcasts marcados como reproducidos</string>
+ <string name="statistics_mode_count_all">Suma de todos los pĆ³dcast marcados como reproducidos</string>
<string name="statistics_speed_not_counted">Aviso: La velocidad de reproducciĆ³n nunca se tiene en cuenta.</string>
<!--Main activity-->
<string name="drawer_open">Abrir menĆŗ</string>
<string name="drawer_close">Cerrar menĆŗ</string>
<string name="drawer_preferences">Preferencias del cajĆ³n</string>
- <string name="drawer_feed_order_unplayed_episodes">Ordenar por cuenta</string>
+ <string name="drawer_feed_order_unplayed_episodes">Ordenar por contador</string>
<string name="drawer_feed_order_alphabetical">Ordenar alfabƩticamente</string>
<string name="drawer_feed_order_last_update">Ordenar por fecha de publicaciĆ³n</string>
<string name="drawer_feed_order_most_played">Ordenar por nĆŗmero de episodios reproducidos</string>
- <string name="drawer_feed_counter_new_unplayed">Cantidad de episodios nuevos y no escuchados</string>
- <string name="drawer_feed_counter_new">Cantidad de episodios nuevos</string>
- <string name="drawer_feed_counter_unplayed">Cantidad de episodios no escuchados</string>
- <string name="drawer_feed_counter_downloaded">Cantidad de episodios descargados</string>
+ <string name="drawer_feed_counter_new_unplayed">NĆŗmero de episodios nuevos y no reproducidos</string>
+ <string name="drawer_feed_counter_new">NĆŗmero de episodios nuevos</string>
+ <string name="drawer_feed_counter_unplayed">NĆŗmero de episodios no reproducidos</string>
+ <string name="drawer_feed_counter_downloaded">NĆŗmero de episodios descargados</string>
<string name="drawer_feed_counter_none">Ninguno</string>
<!--Webview actions-->
<string name="open_in_browser_label">Abrir en el navegador</string>
<string name="copy_url_label">Copiar URL</string>
<string name="share_url_label">Compartir URL</string>
- <string name="copied_url_msg">URL copiado en el portapapeles</string>
- <string name="go_to_position_label">Ir a esta posiciĆ³n</string>
+ <string name="copied_url_msg">URL copiada al portapapeles</string>
+ <string name="go_to_position_label">Ir a esa posiciĆ³n</string>
<!--Playback history-->
<string name="clear_history_label">Vaciar el historial</string>
<!--Other-->
@@ -55,14 +59,15 @@
<string name="cancel_label">Cancelar</string>
<string name="yes">SĆ­</string>
<string name="no">No</string>
- <string name="reset">Resetear</string>
- <string name="author_label">Autor</string>
+ <string name="reset">Restablecer</string>
+ <string name="author_label">Autor(es)</string>
<string name="language_label">Idioma</string>
<string name="url_label">URL</string>
<string name="podcast_settings_label">Ajustes</string>
<string name="cover_label">Imagen</string>
<string name="error_label">Error</string>
<string name="error_msg_prefix">Se produjo un error:</string>
+ <string name="needs_storage_permission">Se necesitan permisos de almacenamiento para esta operaciĆ³n</string>
<string name="refresh_label">Actualizar</string>
<string name="external_storage_error_msg">No se encuentra un almacenamiento externo. AsegĆŗrese de que su almacenamiento externo estĆ© montado para que la aplicaciĆ³n funcione correctamente.</string>
<string name="chapters_label">CapĆ­tulos</string>
@@ -80,15 +85,15 @@
<string name="retry_label">Reintentar</string>
<string name="auto_download_label">Incluir en descargas automƔticas</string>
<string name="auto_download_apply_to_items_title">Aplicar a episodios anteriores</string>
- <string name="auto_download_apply_to_items_message">La nueva opciĆ³n <i>Auto Descarga</i> se aplicarĆ” automĆ”ticamente a episodios nuevos.\nĀæTambiĆ©n desea aplicarlo a episodios anteriores?</string>
- <string name="auto_delete_label">Borrar Episodio AutomƔticamente</string>
+ <string name="auto_download_apply_to_items_message">La nueva opciĆ³n <i>descarga automĆ”tica</i> se aplicarĆ” automĆ”ticamente a episodios nuevos.\nĀæTambiĆ©n desea aplicarlo a episodios anteriores?</string>
+ <string name="auto_delete_label">Borrar episodio automƔticamente</string>
<string name="parallel_downloads_suffix">\u0020descargas paralelas</string>
<string name="feed_auto_download_global">Global por defecto</string>
<string name="feed_auto_download_always">Siempre</string>
<string name="feed_auto_download_never">Nunca</string>
<string name="send_label">Enviarā€¦</string>
<string name="episode_cleanup_never">Nunca</string>
- <string name="episode_cleanup_queue_removal">Cuando no estƩ en cola</string>
+ <string name="episode_cleanup_queue_removal">Cuando no estƩ en la cola</string>
<string name="episode_cleanup_after_listening">DespuƩs de acabar</string>
<plurals name="episode_cleanup_days_after_listening">
<item quantity="one">1 dƭa despuƩs de acabar</item>
@@ -97,77 +102,84 @@
<!--'Add Feed' Activity labels-->
<string name="feedurl_label">URL del canal</string>
<string name="etxtFeedurlHint">www.ejemplo.com/feed</string>
- <string name="txtvfeedurl_label">AƱadir podcast por URL</string>
- <string name="podcastdirectories_label">Buscar podcast en directorio</string>
- <string name="podcastdirectories_descr">Para podcasts nuevos, puedes buscar en iTunes o fyyd, o explorar gpodder.net por nombre, categorĆ­a o popularidad.</string>
- <string name="browse_gpoddernet_label">Explorar gpodder.net</string>
+ <string name="txtvfeedurl_label">AƱadir pĆ³dcast por URL</string>
+ <string name="podcastdirectories_label">Buscar pĆ³dcast en el directorio</string>
+ <string name="podcastdirectories_descr">Para nuevos pĆ³dcast, puedes buscar en iTunes o fyyd, o explorar en gpodder.net por nombre, categorĆ­a o popularidad.</string>
+ <string name="browse_gpoddernet_label">Explorar en gpodder.net</string>
<!--Actions on feeds-->
- <string name="mark_all_read_label">Marcar todos como escuchado</string>
- <string name="mark_all_read_msg">Se marcaron todos los episodios como escuchados</string>
- <string name="mark_all_read_confirmation_msg">Confirme que quiere marcar todos los episodios como escuchados.</string>
- <string name="mark_all_read_feed_confirmation_msg">Confirme que quiere marcar todos los episodios de este canal como escuchados.</string>
+ <string name="mark_all_read_label">Marcar todos como reproducidos</string>
+ <string name="mark_all_read_msg">Marcados todos los episodios como reproducidos</string>
+ <string name="mark_all_read_confirmation_msg">Confirme que quiere marcar todos los episodios como reproducidos.</string>
+ <string name="mark_all_read_feed_confirmation_msg">Confirme que quiere marcar todos los episodios de este pĆ³dcast como reproducidos.</string>
<string name="mark_all_seen_label">Marcar todos como vistos</string>
- <string name="mark_all_seen_msg">Marcar todos los episodios como vistos</string>
- <string name="mark_all_seen_confirmation_msg">Por favor confirma que quieres marcar todos los episodios como vistos.</string>
+ <string name="mark_all_seen_msg">Marcados todos los episodios como vistos</string>
+ <string name="mark_all_seen_confirmation_msg">Confirme que quiere marcar todos los episodios como vistos.</string>
<string name="show_info_label">InformaciĆ³n del programa</string>
- <string name="rename_feed_label">Renombrar Podcast</string>
- <string name="remove_feed_label">Eliminar podcast</string>
+ <string name="show_feed_settings_label">Mostrar ajustes del pĆ³dcast</string>
+ <string name="feed_info_label">InformaciĆ³n del pĆ³dcast</string>
+ <string name="feed_settings_label">Ajustes del pĆ³dcast</string>
+ <string name="rename_feed_label">Renombrar el pĆ³dcast</string>
+ <string name="remove_feed_label">Eliminar el pĆ³dcast</string>
<string name="share_label">Compartirā€¦</string>
- <string name="share_link_label">Compartir el enlace de la web</string>
- <string name="share_file_label">Compartir archivo</string>
- <string name="share_link_with_position_label">Compartir enlace con posiciĆ³n</string>
+ <string name="share_link_label">Compartir URL del episodio</string>
+ <string name="share_link_with_position_label">Compartir URL del episodio con posiciĆ³n</string>
+ <string name="share_file_label">Compartir el archivo</string>
<string name="share_feed_url_label">Compartir URL del canal</string>
- <string name="share_item_url_label">Compartir URL del archivo del episodio</string>
- <string name="share_item_url_with_position_label">Compartir URL del episodio con posiciĆ³n</string>
- <string name="feed_delete_confirmation_msg">Por favor, confirma que quieres borrar el feed \"%1$s\" y TODOS los episodios descargados de dicho feed.</string>
- <string name="feed_remover_msg">Quitando el canal</string>
- <string name="load_complete_feed">Actualizar el canal completo</string>
+ <string name="share_item_url_label">Compartir URL del archivo</string>
+ <string name="share_item_url_with_position_label">Compartir URL del archivo con posiciĆ³n</string>
+ <string name="feed_delete_confirmation_msg">Confirme que quiere borrar el pĆ³dcast \"%1$s\" y TODOS los episodios (incluidos los descargados).</string>
+ <string name="feed_remover_msg">Eliminando el pĆ³dcast</string>
+ <string name="load_complete_feed">Actualizar el pĆ³dcast completo</string>
<string name="hide_episodes_title">Ocultar episodios</string>
- <string name="episode_actions">Aplicar acciones</string>
- <string name="hide_unplayed_episodes_label">No escuchados</string>
+ <string name="batch_edit">EdiciĆ³n por lotes</string>
+ <string name="hide_unplayed_episodes_label">No reproducidos</string>
<string name="hide_paused_episodes_label">Pausados</string>
- <string name="hide_played_episodes_label">Escuchados</string>
+ <string name="hide_played_episodes_label">Reproducidos</string>
<string name="hide_queued_episodes_label">En cola</string>
<string name="hide_not_queued_episodes_label">No en cola</string>
<string name="hide_downloaded_episodes_label">Descargados</string>
<string name="hide_not_downloaded_episodes_label">No descargados</string>
<string name="hide_has_media_label">Tiene multimedia</string>
+ <string name="hide_is_favorite_label">Es favorito</string>
<string name="filtered_label">Filtrados</string>
<string name="refresh_failed_msg">{fa-exclamation-circle} Error en Ćŗltima actualizaciĆ³n</string>
- <string name="open_podcast">Abrir Podcast</string>
+ <string name="open_podcast">Abrir pĆ³dcast</string>
<!--actions on feeditems-->
<string name="download_label">Descargar</string>
<string name="play_label">Reproducir</string>
<string name="pause_label">Pausar</string>
<string name="stop_label">Detener</string>
- <string name="stream_label">Transmitir</string>
- <string name="remove_label">Quitar</string>
+ <string name="stream_label">Escuchar en directo</string>
+ <string name="remove_label">Eliminar</string>
<string name="delete_label">Borrar</string>
<string name="delete_failed">No se puede borrar el fichero. Reiniciar el dispositivo podrĆ­a ayudar.</string>
- <string name="remove_episode_lable">Quitar episodio</string>
- <string name="marked_as_seen_label">Marcar como visto</string>
- <string name="mark_read_label">Marcar como escuchado</string>
- <string name="marked_as_read_label">Marcado como escuchado</string>
- <string name="mark_unread_label">Marcar como no escuchado</string>
+ <string name="remove_episode_lable">Eliminar episodio</string>
+ <string name="mark_as_seen_label">Marcar como visto</string>
+ <string name="marked_as_seen_label">Marcado como visto</string>
+ <string name="mark_read_label">Marcar como reproducido</string>
+ <string name="marked_as_read_label">Marcado como reproducido</string>
+ <string name="mark_unread_label">Marcar como no reproducido</string>
<string name="add_to_queue_label">AƱadir a la cola</string>
<string name="added_to_queue_label">AƱadido a la cola</string>
- <string name="remove_from_queue_label">Quitar de la cola</string>
- <string name="add_to_favorite_label">AƱadir a Favoritos</string>
- <string name="added_to_favorites">AƱadido a Favoritos</string>
- <string name="remove_from_favorite_label">Eliminar de Favoritos</string>
- <string name="removed_from_favorites">Quitado de Favoritos</string>
+ <string name="remove_from_queue_label">Eliminar de la cola</string>
+ <string name="add_to_favorite_label">AƱadir a favoritos</string>
+ <string name="added_to_favorites">AƱadido a favoritos</string>
+ <string name="remove_from_favorite_label">Eliminar de favoritos</string>
+ <string name="removed_from_favorites">Eliminado de favoritos</string>
<string name="visit_website_label">Visitar el sitio web</string>
<string name="support_label">AƱadir a Flattr</string>
<string name="skip_episode_label">Omitir episodio</string>
<string name="activate_auto_download">Activar descarga automƔtica</string>
<string name="deactivate_auto_download">Desactivar descarga automƔtica</string>
- <string name="reset_position">Resetear posiciĆ³n de reproducciĆ³n</string>
+ <string name="reset_position">Restablecer la posiciĆ³n de reproducciĆ³n</string>
<string name="removed_item">Elemento elminado</string>
<!--Download messages and labels-->
- <string name="download_successful">exitoso</string>
- <string name="download_failed">fallido</string>
+ <string name="download_successful">exitosa</string>
+ <string name="download_failed">fallida</string>
<string name="download_pending">Descarga pendiente</string>
<string name="download_running">Descarga en curso</string>
+ <string name="download_error_details">Detalles</string>
+ <string name="download_error_details_message">%1$s \n\nURL de archivo:\n%2$s</string>
<string name="download_error_device_not_found">No se ha encontrado un dispositivo de almacenamiento</string>
<string name="download_error_insufficient_space">Espacio insuficiente</string>
<string name="download_error_file_error">Error de archivo</string>
@@ -182,9 +194,9 @@
<string name="download_error_forbidden">Prohibido</string>
<string name="cancel_all_downloads_label">Cancelar todas las descargas</string>
<string name="download_canceled_msg">Descarga cancelada</string>
- <string name="download_canceled_autodownload_enabled_msg">Descarga cancelada\nSe desactivĆ³ <i>Descarga automĆ”tica</i> en este elemento</string>
+ <string name="download_canceled_autodownload_enabled_msg">Descarga cancelada\nSe desactivĆ³ la <i>descarga automĆ”tica</i> en este elemento</string>
<string name="download_report_title">Descargas completadas con error(es)</string>
- <string name="download_report_content_title">Informe de descarga</string>
+ <string name="download_report_content_title">Informe de descargas</string>
<string name="download_error_malformed_url">URL con formato incorrecto</string>
<string name="download_error_io_error">Error de E/S</string>
<string name="download_error_request_error">Error de solicitud</string>
@@ -194,22 +206,22 @@
<item quantity="other">Quedan %d descargas</item>
</plurals>
<string name="downloads_processing">Procesando descargas</string>
- <string name="download_notification_title">Descargando datos del podcast</string>
+ <string name="download_notification_title">Descargando datos del pĆ³dcast</string>
<string name="download_report_content">%1$d descargas exitosas, %2$d fallidas</string>
<string name="download_log_title_unknown">TĆ­tulo desconocido</string>
<string name="download_type_feed">Canal</string>
- <string name="download_type_media">Archivo de medios</string>
+ <string name="download_type_media">Archivo multimedia</string>
<string name="download_type_image">Imagen</string>
<string name="download_request_error_dialog_message_prefix">Ha ocurrido un error al intentar descargar el archivo:\u0020</string>
- <string name="authentication_notification_title">Se necesita autenticaciĆ³n</string>
- <string name="authentication_notification_msg">Para acceder al recurso solicitado debe proporcionar un usuario y contraseƱa</string>
+ <string name="authentication_notification_title">AutenticaciĆ³n requerida</string>
+ <string name="authentication_notification_msg">El recurso solicitado requiere un usuario y contraseƱa</string>
<string name="confirm_mobile_download_dialog_title">Confirmar descarga por red mĆ³vil</string>
- <string name="confirm_mobile_download_dialog_message_not_in_queue">Se desactivaron las descargas por red de datos mĆ³viles en la configuraciĆ³n.\n\nPuede elegir entre aƱadir el episodio a la cola o permitir las descargas temporalmente.\n\n<small>Se recordarĆ” la elecciĆ³n por 10 minutos.</small></string>
- <string name="confirm_mobile_download_dialog_message">Se desactivaron las descargas por red de datos mĆ³viles en la configuraciĆ³n.\n\nĀæQuiere permitir las descargas temporalmente?\n\n<small>Se recordarĆ” la elecciĆ³n por 10 minutos.</small></string>
+ <string name="confirm_mobile_download_dialog_message_not_in_queue">Se desactivaron las descargas por red de datos mĆ³viles en la configuraciĆ³n.\n\nPuede elegir entre aƱadir el episodio a la cola o permitir las descargas temporalmente.\n\n<small>Se recordarĆ” su elecciĆ³n durante 10 minutos.</small></string>
+ <string name="confirm_mobile_download_dialog_message">Se desactivaron las descargas por red de datos mĆ³viles en la configuraciĆ³n.\n\nĀæQuiere permitir las descargas temporalmente?\n\n<small>Se recordarĆ” su elecciĆ³n durante 10 minutos.</small></string>
<string name="confirm_mobile_download_dialog_only_add_to_queue">AƱadir a la cola</string>
<string name="confirm_mobile_download_dialog_enable_temporarily">Permitir temporalmente</string>
<!--Mediaplayer messages-->
- <string name="player_error_msg">Error</string>
+ <string name="player_error_msg">Ā”Error!</string>
<string name="player_stopped_msg">No hay medios en reproducciĆ³n</string>
<string name="player_preparing_msg">Preparando</string>
<string name="player_ready_msg">Listo</string>
@@ -218,7 +230,8 @@
<string name="playback_error_unknown">Error desconocido</string>
<string name="no_media_playing_label">No hay medios en reproducciĆ³n</string>
<string name="player_buffering_msg">Almacenando</string>
- <string name="playbackservice_notification_title">Reproduciendo el podcast</string>
+ <string name="player_go_to_picture_in_picture">Modo picture-in-picture</string>
+ <string name="playbackservice_notification_title">Reproduciendo el pĆ³dcast</string>
<string name="unknown_media_key">AntennaPod - Tecla multimedia desconocida: %1$d</string>
<!--Queue operations-->
<string name="lock_queue">Bloquear cola</string>
@@ -227,108 +240,118 @@
<string name="queue_unlocked">Cola desbloqueada</string>
<string name="clear_queue_label">Vaciar la cola</string>
<string name="undo">Deshacer</string>
- <string name="removed_from_queue">Se quitĆ³ el elemento</string>
+ <string name="removed_from_queue">Elemento eliminado</string>
<string name="move_to_top_label">Mover al principio</string>
<string name="move_to_bottom_label">Mover al final</string>
<string name="sort">Ordenar</string>
<string name="date">Fecha</string>
<string name="duration">DuraciĆ³n</string>
<string name="episode_title">TĆ­tulo del episodio</string>
- <string name="feed_title">TĆ­tulo del feed</string>
+ <string name="feed_title">TĆ­tulo del pĆ³dcast</string>
+ <string name="random">Aleatorio</string>
+ <string name="smart_shuffle">ReproducciĆ³n inteligente</string>
<string name="ascending">Ascendente</string>
<string name="descending">Descendente</string>
<string name="clear_queue_confirmation_msg">Confirme que quiere borrar TODOS los episodios de la cola</string>
<!--Flattr-->
<string name="flattr_auth_label">Identificarse en Flattr</string>
- <string name="flattr_auth_explanation">Pulse el botĆ³n inferior para comenzar la autenticaciĆ³n. Su navegador abrirĆ” la pantalla de identificaciĆ³n de Flattr y le preguntarĆ” si quiere conceder permiso a AntennaPod para valorar cosas. Tras concederlo, volverĆ” a esta pantalla automĆ”ticamente.</string>
+ <string name="flattr_auth_explanation">Pulse el botĆ³n inferior para iniciar el proceso de autenticaciĆ³n. Su navegador abrirĆ” la pantalla de inicio de sesiĆ³n en Flattr y le preguntarĆ” si quiere conceder permiso a AntennaPod para valorar. Tras concederlo, volverĆ” a esta pantalla automĆ”ticamente.</string>
<string name="authenticate_label">Autenticarse</string>
- <string name="return_home_label">Volver a la pantalla principal</string>
- <string name="flattr_auth_success">AutentificaciĆ³n exitosa. Ya puede valorar cosas en Flattr desde la aplicaciĆ³n.</string>
- <string name="no_flattr_token_title">No se ha encontrado un token de Flattr</string>
+ <string name="return_home_label">Volver al inicio</string>
+ <string name="flattr_auth_success">AutenticaciĆ³n exitosa. Ya puede valorar en Flattr desde la aplicaciĆ³n.</string>
+ <string name="no_flattr_token_title">No se ha encontrado el token de Flattr</string>
<string name="no_flattr_token_notification_msg">Parece que su cuenta de Flattr no estĆ” conectada con AntennaPod. Toque aquĆ­ para autenticarse.</string>
- <string name="no_flattr_token_msg">Su cuenta de Flattr no estƔ conectada con AntennaPod. Puede conectarla o puede visitar la pƔgina web de cada cosa para valorarla desde allƭ.</string>
+ <string name="no_flattr_token_msg">Su cuenta de Flattr no estĆ” conectada con AntennaPod. Puede conectarla con AntennaPod para valorar dentro de la aplicaciĆ³n o puede visitar la pĆ”gina web de Flattr para valorar desde allĆ­.</string>
<string name="authenticate_now_label">Autenticarse</string>
<string name="action_forbidden_title">AcciĆ³n prohibida</string>
- <string name="action_forbidden_msg">AntennaPod no tiene permiso para realizar esta acciĆ³n. La razĆ³n puede ser que se haya revocado el token de acceso de AntennaPod para su cuenta. Puede re-autenticarse o visitar la pĆ”gina web de la cosa.</string>
+ <string name="action_forbidden_msg">AntennaPod no tiene permiso para realizar esta acciĆ³n. La razĆ³n puede ser que se haya revocado el token de acceso de AntennaPod en su cuenta. Puede reautenticarse o visitar la pĆ”gina web.</string>
<string name="access_revoked_title">Acceso revocado</string>
- <string name="access_revoked_info">Ha revocado el token de acceso de AntennaPod a su cuenta. Para completar el proceso debe eliminar esta aplicaciĆ³n de la lista de aplicaciones aprobadas, en los ajustes de Flattr.</string>
+ <string name="access_revoked_info">Ha revocado el token de acceso de AntennaPod a su cuenta. Para completar el proceso debe eliminar esta aplicaciĆ³n de la lista de aplicaciones aprobadas en los ajustes de la web de Flattr.</string>
<!--Flattr-->
- <string name="flattr_click_success">Ha hecho Flattr en un elemento.</string>
- <string name="flattr_click_success_count">Ha hecho Flattr en %d elementos.</string>
- <string name="flattr_click_success_queue">Flattr: %s.</string>
- <string name="flattr_click_failure_count">No se pudo hacer Flattr en %d elementos.</string>
- <string name="flattr_click_failure">No se hizo Flattr: %s.</string>
- <string name="flattr_click_enqueued">Se harƔ Flattr de esta cosa mƔs tarde</string>
- <string name="flattring_thing">Haciendo Flattr de %s</string>
- <string name="flattring_label">AntennaPod haciendo Flattr</string>
- <string name="flattrd_label">AntennaPod hizo Flattr</string>
- <string name="flattrd_failed_label">AntennaPod Flattr fallĆ³</string>
- <string name="flattr_retrieving_status">Obteniendo lista de Flattr</string>
+ <string name="flattr_click_success">Ha valorado con Flattr un elemento.</string>
+ <string name="flattr_click_success_count">Ha valorado con Flattr %d elementos.</string>
+ <string name="flattr_click_success_queue">valorado con Flattr: %s.</string>
+ <string name="flattr_click_failure_count">No se pudieron valorar con Flattr %d elementos.</string>
+ <string name="flattr_click_failure">No se ha valorado con Flattr: %s.</string>
+ <string name="flattr_click_enqueued">Se valorarƔ con Flattr mƔs tarde</string>
+ <string name="flattring_thing">Valorando con Flattr a %s</string>
+ <string name="flattring_label">AntennaPod estĆ” valorando con Flattr</string>
+ <string name="flattrd_label">AntennaPod ha valorado con Flattr</string>
+ <string name="flattrd_failed_label">AntennaPod fallĆ³ al valorar con Flattr</string>
+ <string name="flattr_retrieving_status">Obteniendo lista de valoraciones con Flattr</string>
<!--Variable Speed-->
<string name="download_plugin_label">Descargar complemento</string>
<string name="no_playback_plugin_title">Complemento no instalado</string>
- <string name="no_playback_plugin_or_sonic_msg">Para que funciona la velocidad de reproducciĆ³n variable, recomendamos habilitar el reproductor Sonic Media [Android 4.1+].\n\nPor otro lado, puedes descargar el plugin de terceros <i>Prestissimo</i> de la Play Store.\nCualquier problema con Prestissimo no es reponsabilidad de AntennaPod y no deberĆ­a ser reportado al propietario del plugin.</string>
+ <string name="no_playback_plugin_or_sonic_msg">Para que funcione la velocidad de reproducciĆ³n variable, recomendamos habilitar el reproductor Sonic [Android 4.1+].\n\nTambiĆ©n puede descargar el plugin <i>Prestissimo</i> de la Play Store.\nNingĆŗn problema con Prestissimo es reponsabilidad de AntennaPod y deberĆ­a ser reportado al propietario del plugin.</string>
<string name="set_playback_speed_label">Velocidades de reproducciĆ³n</string>
<string name="enable_sonic">Activar Sonic</string>
<!--Empty list labels-->
<string name="no_items_label">Esta lista no tiene elementos.</string>
- <string name="no_feeds_label">No se ha suscrito a ningĆŗn canal.</string>
+ <string name="no_feeds_label">No se ha suscrito a ningĆŗn pĆ³dcast.</string>
<string name="no_chapters_label">Este episodio no tiene capĆ­tulos.</string>
- <string name="no_shownotes_label">Este episodio no tiene anotaciones.</string>
+ <string name="no_shownotes_label">Este episodio no tiene notas del programa.</string>
<!--Preferences-->
<string name="storage_pref">Almacenamiento</string>
<string name="project_pref">Proyecto</string>
<string name="other_pref">Otros</string>
<string name="about_pref">Acerca de</string>
<string name="queue_label">Cola</string>
- <string name="services_label">Servicios</string>
+ <string name="integrations_label">Integraciones</string>
<string name="flattr_label">Flattr</string>
+ <string name="flattr_summary">Servicio de micropagos</string>
+ <string name="automation">AutomatizaciĆ³n</string>
+ <string name="download_pref_details">Detalles</string>
+ <string name="import_export_pref">Importar/Exportar</string>
+ <string name="appearance">Apariencia</string>
+ <string name="external_elements">Elementos externos</string>
+ <string name="interruptions">Interrupciones</string>
+ <string name="buttons">Botones de control</string>
+ <string name="media_player">Reproductor multimedia</string>
<string name="pref_episode_cleanup_title">Limpieza de episodios</string>
- <string name="pref_episode_cleanup_summary">Los episodios que no estƩn en la cola ni en Favoritos pueden eliminarse si Descarga automƔtica necesita espacio para episodios nuevos</string>
+ <string name="pref_episode_cleanup_summary">Los episodios que no estƩn en la cola ni en favoritos pueden eliminarse si la descarga automƔtica necesita espacio para nuevos episodios</string>
<string name="pref_pauseOnDisconnect_sum">Pausar la reproducciĆ³n al desconectar los auriculares o el bluetooth</string>
- <string name="pref_unpauseOnHeadsetReconnect_sum">Reanudar reproducciĆ³n cuando se reconecten los auriculares</string>
- <string name="pref_unpauseOnBluetoothReconnect_sum">Reanudar reproducciĆ³n cuando se reconecte el bluetooth</string>
- <string name="pref_hardwareForwardButtonSkips_title">Saltar episodio con botĆ³n avance</string>
- <string name="pref_hardwareForwardButtonSkips_sum">Al pulsar el botĆ³n fĆ­sico de avanzar se saltarĆ” al siguiente episodio en lugar de sĆ³lo avanzar</string>
- <string name="pref_hardwarePreviousButtonRestarts_title">BotĆ³n anterior reinicia</string>
- <string name="pref_hardwarePreviousButtonRestarts_sum">Al pulsar el botĆ³n fĆ­sico de retroceder se comenzarĆ” el episodio de nuevo, en lugar de rebobinar</string>
+ <string name="pref_unpauseOnHeadsetReconnect_sum">Reanudar la reproducciĆ³n cuando se reconecten los auriculares</string>
+ <string name="pref_unpauseOnBluetoothReconnect_sum">Reanudar la reproducciĆ³n cuando se reconecte el bluetooth</string>
+ <string name="pref_hardwareForwardButtonSkips_title">BotĆ³n avance: Saltar</string>
+ <string name="pref_hardwarePreviousButtonRestarts_title">BotĆ³n retroceso: Reiniciar</string>
+ <string name="pref_hardwarePreviousButtonRestarts_sum">Al pulsar el botĆ³n fĆ­sico de retroceso se comenzarĆ” el episodio de nuevo en lugar de retroceder</string>
<string name="pref_followQueue_sum">Saltar al siguiente elemento de la cola al acabar la reproducciĆ³n</string>
- <string name="pref_auto_delete_sum">Borrar episodio cuando finalice la reproducciĆ³n</string>
+ <string name="pref_auto_delete_sum">Borrar el episodio cuando finalice la reproducciĆ³n</string>
<string name="pref_auto_delete_title">Eliminar automƔticamente</string>
- <string name="pref_smart_mark_as_played_sum">Marcar episodios como escuchados incluso si todavĆ­a quedan unos segundos por escuchar</string>
- <string name="pref_smart_mark_as_played_title">Marcar como terminado inteligente</string>
- <string name="pref_skip_keeps_episodes_sum">Conservar episodios al saltarlos</string>
+ <string name="pref_smart_mark_as_played_sum">Marca los episodios como reproducidos incluso si todavĆ­a quedan unos segundos por escuchar</string>
+ <string name="pref_smart_mark_as_played_title">Marcado inteligente como reproducido</string>
+ <string name="pref_skip_keeps_episodes_sum">Conservar los episodios cuando son saltados</string>
<string name="pref_skip_keeps_episodes_title">Conservar episodios saltados</string>
<string name="pref_favorite_keeps_episodes_sum">Conservar los episodios cuando se marcan como favoritos</string>
- <string name="pref_favorite_keeps_episodes_title">Conservar los episodios favoritos</string>
+ <string name="pref_favorite_keeps_episodes_title">Conservar episodios favoritos</string>
<string name="playback_pref">ReproducciĆ³n</string>
<string name="network_pref">Red</string>
<string name="pref_autoUpdateIntervallOrTime_title">Intervalo de actualizaciĆ³n u hora del dĆ­a</string>
- <string name="pref_autoUpdateIntervallOrTime_sum">Especificar el intervalo o la hora del dƭa en que se actualizarƔn automƔticamente los canales</string>
- <string name="pref_autoUpdateIntervallOrTime_message">Se puede ajustar un <i>intervalo</i> como \"cada 2 horas\", especificar una <i>hora del dĆ­a</i> como \"7:00 AM\" o <i>deshabilitar</i> las actualizaciones automĆ”ticas.\n\n<small>Nota: Las horas de actualizaciĆ³n no son exactas. Puede haber un ligero retraso.</small></string>
+ <string name="pref_autoUpdateIntervallOrTime_sum">Especifique un intervalo o una hora especƭfica del dƭa para actualizar automƔticamente los canales</string>
+ <string name="pref_autoUpdateIntervallOrTime_message">Se puede ajustar un <i>intervalo</i> como \"cada 2 horas\", especificar una <i>hora del dĆ­a</i> como las \"7:00 AM\" o <i>deshabilitar</i> las actualizaciones automĆ”ticas.\n\n<small>Nota: Las horas de actualizaciĆ³n no son exactas. Puede haber un ligero retraso.</small></string>
<string name="pref_autoUpdateIntervallOrTime_Disable">Deshabilitar</string>
<string name="pref_autoUpdateIntervallOrTime_Interval">Ajustar intervalo</string>
<string name="pref_autoUpdateIntervallOrTime_TimeOfDay">Ajustar hora del dĆ­a</string>
<string name="pref_autoUpdateIntervallOrTime_every">todos los %1$s</string>
<string name="pref_autoUpdateIntervallOrTime_at">a las %1$s</string>
- <string name="pref_downloadMediaOnWifiOnly_sum">Solo descargar los contenidos por WiFi</string>
+ <string name="pref_downloadMediaOnWifiOnly_sum">Descargar los contenidos solo por wifi</string>
<string name="pref_followQueue_title">ReproducciĆ³n continua</string>
- <string name="pref_downloadMediaOnWifiOnly_title">Descarga de contenidos por WiFi</string>
- <string name="pref_pauseOnHeadsetDisconnect_title">DesconexiĆ³n de los cascos</string>
- <string name="pref_unpauseOnHeadsetReconnect_title">Reconectar auriculares</string>
- <string name="pref_unpauseOnBluetoothReconnect_title">Reconectar Bluetooth</string>
+ <string name="pref_downloadMediaOnWifiOnly_title">Descarga de contenidos por wifi</string>
+ <string name="pref_pauseOnHeadsetDisconnect_title">Desconectar sin los auriculares</string>
+ <string name="pref_unpauseOnHeadsetReconnect_title">Reconectar con los auriculares</string>
+ <string name="pref_unpauseOnBluetoothReconnect_title">Reconectar con Bluetooth</string>
<string name="pref_mobileUpdate_title">Actualizaciones por red mĆ³vil</string>
- <string name="pref_mobileUpdate_sum">Permitir actualizaciones por red de datos mĆ³vil</string>
+ <string name="pref_mobileUpdate_sum">Permitir actualizaciones por la red de datos mĆ³vil</string>
<string name="refreshing_label">Actualizando</string>
<string name="flattr_settings_label">Ajustes de Flattr</string>
- <string name="pref_flattr_auth_title">IdentificaciĆ³n en Flattr</string>
+ <string name="pref_flattr_auth_title">Identificarse en Flattr</string>
<string name="pref_flattr_auth_sum">IdentifĆ­quese en Flattr para valorar cosas directamente desde la aplicaciĆ³n</string>
- <string name="pref_flattr_this_app_title">Valorar esta aplicaciĆ³n en Flattr</string>
+ <string name="pref_flattr_this_app_title">Valorar en Flattr esta aplicaciĆ³n</string>
<string name="pref_flattr_this_app_sum">Apoye el desarrollo de AntennaPod valorĆ”ndola en Flattr. Ā”Gracias!</string>
- <string name="pref_revokeAccess_title">Revocar el acceso</string>
- <string name="pref_revokeAccess_sum">Rescindir el permiso de acceso de esta aplicaciĆ³n a su cuenta de Flattr.</string>
- <string name="pref_auto_flattr_title">Uso de Flattr automƔtico</string>
- <string name="pref_auto_flattr_sum">Configurar flattr automƔtico</string>
+ <string name="pref_revokeAccess_title">Revocar acceso</string>
+ <string name="pref_revokeAccess_sum">Revocar el acceso de esta aplicaciĆ³n en su cuenta de Flattr.</string>
+ <string name="pref_auto_flattr_title">Flattr automƔtico</string>
+ <string name="pref_auto_flattr_sum">Configurar Flattr automƔtico</string>
<string name="user_interface_label">Interfaz de usuario</string>
<string name="pref_set_theme_title">Elegir un tema</string>
<string name="pref_nav_drawer_title">Personalizar el cajĆ³n de navegaciĆ³n</string>
@@ -338,131 +361,134 @@
<string name="pref_nav_drawer_feed_order_title">Ajustar orden de suscripciĆ³n</string>
<string name="pref_nav_drawer_feed_order_sum">Cambiar el orden de las suscripciones</string>
<string name="pref_nav_drawer_feed_counter_title">Ajustar contador de suscripciĆ³n</string>
- <string name="pref_nav_drawer_feed_counter_sum">Cambiar la informaciĆ³n mostrada en el contador de suscripciĆ³n</string>
+ <string name="pref_nav_drawer_feed_counter_sum">Cambiar la informaciĆ³n mostrada en el contador de las suscripciones. TambiĆ©n afecta al orden de las suscripciones si el \'orden de la suscripciĆ³n\' estĆ” en modo \'Contador\'.</string>
<string name="pref_set_theme_sum">Cambiar la apariencia de AntennaPod.</string>
<string name="pref_automatic_download_title">Descarga automƔtica</string>
<string name="pref_automatic_download_sum">Configurar la descarga automƔtica de episodios.</string>
- <string name="pref_autodl_wifi_filter_title">Activar el filtro WiFi</string>
- <string name="pref_autodl_wifi_filter_sum">Permitir la descarga automĆ”tica sĆ³lo para las redes WiFi marcadas.</string>
+ <string name="pref_autodl_wifi_filter_title">Activar el filtro wifi</string>
+ <string name="pref_autodl_wifi_filter_sum">Permitir la descarga automĆ”tica sĆ³lo desde las redes wifi seleccionadas.</string>
<string name="pref_autodl_allow_on_mobile_title">Descargar bajo conexiĆ³n mĆ³vil</string>
- <string name="pref_autodl_allow_on_mobile_sum">Permite descarga automĆ”tica sobre la red de Internet del mĆ³vil.</string>
+ <string name="pref_autodl_allow_on_mobile_sum">Permitir la descarga automĆ”tica a travĆ©s de la conexiĆ³n de datos mĆ³viles.</string>
<string name="pref_automatic_download_on_battery_title">Descargar cuando no se estĆ” cargando</string>
- <string name="pref_automatic_download_on_battery_sum">Permitir la descarga automƔtica cuando la baterƭa no estƔ cargando</string>
+ <string name="pref_automatic_download_on_battery_sum">Permitir la descarga automƔtica cuando la baterƭa no se estƩ cargando</string>
<string name="pref_parallel_downloads_title">Descargas paralelas</string>
- <string name="pref_episode_cache_title">CachƩ de episodios</string>
+ <string name="pref_episode_cache_title">Almacenamiento de episodios</string>
<string name="pref_theme_title_light">Claro</string>
<string name="pref_theme_title_dark">Oscuro</string>
+ <string name="pref_theme_title_trueblack">Negro (para AMOLED)</string>
<string name="pref_episode_cache_unlimited">Ilimitado</string>
<string name="pref_update_interval_hours_plural">horas</string>
<string name="pref_update_interval_hours_singular">hora</string>
<string name="pref_update_interval_hours_manual">Manual</string>
<string name="pref_gpodnet_authenticate_title">Iniciar sesiĆ³n</string>
- <string name="pref_gpodnet_authenticate_sum">Inicie sesiĆ³n con su cuenta de gpodder.net para sincronizar sus suscripciones.</string>
+ <string name="pref_gpodnet_authenticate_sum">Iniciar sesiĆ³n en su cuenta de gpodder.net para sincronizar sus suscripciones.</string>
<string name="pref_gpodnet_logout_title">Cerrar sesiĆ³n</string>
- <string name="pref_gpodnet_logout_toast">Ha cerrado la sesiĆ³n correctamente.</string>
- <string name="pref_gpodnet_setlogin_information_title">Cambiar informaciĆ³n de acceso</string>
+ <string name="pref_gpodnet_logout_toast">Ha cerrado la sesiĆ³n correctamente</string>
+ <string name="pref_gpodnet_setlogin_information_title">Cambiar informaciĆ³n de inicio de sesiĆ³n</string>
<string name="pref_gpodnet_setlogin_information_sum">Modificar datos de inicio de sesiĆ³n en gpodder.net.</string>
<string name="pref_gpodnet_sync_changes_title">Sincronizar cambios ahora</string>
- <string name="pref_gpodnet_sync_changes_sum">Sincronizar cambios del estado de subscripciĆ³n y episodio con gpodder.net.</string>
- <string name="pref_gpodnet_full_sync_title">SincronizaciĆ³n completa ahora</string>
- <string name="pref_gpodnet_full_sync_sum">Sincronizar el estado de todas las suscripciones y estados de episodio con gpodder.net.</string>
+ <string name="pref_gpodnet_sync_changes_sum">Sincronizar cambios de suscripciĆ³n y episodios con gpodder.net.</string>
+ <string name="pref_gpodnet_full_sync_title">SincronizaciĆ³n completa</string>
+ <string name="pref_gpodnet_full_sync_sum">Sincronizar todas las suscripciones y episodios con gpodder.net.</string>
<string name="pref_gpodnet_sync_sum_last_sync_line">ƚltimo intento de sincronizaciĆ³n: %1$s (%2$s)</string>
- <string name="pref_gpodnet_sync_started">ComenzĆ³ sincronizaciĆ³n</string>
- <string name="pref_gpodnet_full_sync_started">ComenzĆ³ sincronizaciĆ³n completa</string>
- <string name="pref_gpodnet_login_status"><![CDATA[Autenticado como <i>%1$s</i> con dispositivo <i>%2$s</i>]]></string>
- <string name="pref_gpodnet_notifications_title">Mostrar notificaciones de errores de sincronizaciĆ³n</string>
- <string name="pref_gpodnet_notifications_sum">Este ajuste no afecta a errores de autenticaciĆ³n.</string>
+ <string name="pref_gpodnet_sync_started">SincronizaciĆ³n iniciada</string>
+ <string name="pref_gpodnet_full_sync_started">SincronizaciĆ³n completa iniciada</string>
+ <string name="pref_gpodnet_login_status"><![CDATA[Identificado como <i>%1$s</i> con dispositivo <i>%2$s</i>]]></string>
+ <string name="pref_gpodnet_notifications_title">Mostrar errores de sincronizaciĆ³n</string>
+ <string name="pref_gpodnet_notifications_sum">Este ajuste no afecta a los errores de autenticaciĆ³n.</string>
<string name="pref_playback_speed_title">Velocidades de reproducciĆ³n</string>
- <string name="pref_playback_speed_sum">Personalice las velocidades disponibles para la reproducciĆ³n de audio a velocidad variable</string>
+ <string name="pref_playback_speed_sum">Personalice las velocidades disponibles en la reproducciĆ³n de audio a velocidad variable</string>
<string name="pref_fast_forward">Intervalo de avance</string>
- <string name="pref_fast_forward_sum">Personaliza el nĆŗmero de segundos a avanzar cuando se pulsa el botĆ³n de avance rĆ”pido</string>
+ <string name="pref_fast_forward_sum">Personalice el nĆŗmero de segundos que avanzarĆ” cuando se pulsa el botĆ³n de avance</string>
<string name="pref_rewind">Intervalo de retroceso</string>
- <string name="pref_rewind_sum">Personaliza el nĆŗmero de segundos a retroceder cuando se pulsa el botĆ³n de retroceder</string>
- <string name="pref_gpodnet_sethostname_title">Definir nombre de equipo</string>
- <string name="pref_gpodnet_sethostname_use_default_host">Usar nombre de equipo por defecto</string>
- <string name="pref_expandNotify_title">Expandir NotificaciĆ³n</string>
- <string name="pref_expandNotify_sum">Expandir siempre la notificaciĆ³n para mostrar los botones de reproducciĆ³n</string>
+ <string name="pref_rewind_sum">Personalice el nĆŗmero de segundos que retrocederĆ” cuando se pulsa el botĆ³n de retrocedeso</string>
+ <string name="pref_gpodnet_sethostname_title">Establecer nombre del dispositivo</string>
+ <string name="pref_gpodnet_sethostname_use_default_host">Usar el nombre por defecto</string>
<string name="pref_persistNotify_title">Controles de reproducciĆ³n persistentes</string>
- <string name="pref_persistNotify_sum">Mantener la notificaciĆ³n y controles en pantalla de bloqueo cuando se pausa.</string>
- <string name="pref_compact_notification_buttons_title">Configurar botones de la pantalla de bloqueo</string>
- <string name="pref_compact_notification_buttons_sum">Cambiar los botones de la pantalla de bloqueo. El botĆ³n play/pausa siempre estĆ” incluido.</string>
- <string name="pref_compact_notification_buttons_dialog_title">Seleccionar un mƔximo de %1$d elementos</string>
+ <string name="pref_persistNotify_sum">Mantener las notificaciones y los controles en pantalla de bloqueo cuando se pausa la reproducciĆ³n.</string>
+ <string name="pref_compact_notification_buttons_title">Configurar botones en la pantalla de bloqueo</string>
+ <string name="pref_compact_notification_buttons_sum">Cambiar los botones en la pantalla de bloqueo. El botĆ³n reproducir/pausar siempre estĆ” incluido.</string>
+ <string name="pref_compact_notification_buttons_dialog_title">Seleccionar mƔximo %1$d elementos</string>
<string name="pref_compact_notification_buttons_dialog_error">SĆ³lo puedes seleccionar un mĆ”ximo de %1$d elementos.</string>
<string name="pref_lockscreen_background_title">Establecer fondo de pantalla de bloqueo</string>
- <string name="pref_lockscreen_background_sum">Establecer el fondo de pantalla de bloqueo desde la imagen del episodio. Como efecto lateral, esto tambiƩn mostrarƔ la imagen en aplicaciones de terceros.</string>
+ <string name="pref_lockscreen_background_sum">Establecer el fondo de pantalla de bloqueo desde la imagen del episodio. Como efecto secundario, esto tambiƩn mostrarƔn las imagen de aplicaciones de terceros.</string>
<string name="pref_showDownloadReport_title">Mostrar informe de descarga</string>
<string name="pref_showDownloadReport_sum">Si la descarga falla, generar un informe con los detalles del fallo</string>
<string name="pref_expand_notify_unsupport_toast">Las versiones de Android anteriores a la 4.1 no soportan notificaciones expandidas</string>
<string name="pref_queueAddToFront_sum">Agregar nuevos episodios al principio de la cola.</string>
<string name="pref_queueAddToFront_title">Poner al principio de la cola.</string>
<string name="pref_smart_mark_as_played_disabled">Deshabilitado</string>
- <string name="pref_image_cache_size_title">TamaƱo de la cachƩ de imƔgenes</string>
- <string name="pref_image_cache_size_sum">TamaƱo de la cachƩ en disco para imƔgenes.</string>
- <string name="crash_report_title">Informe de fallo</string>
- <string name="crash_report_sum">Enviar el Ćŗltimo informe de fallo por e-mail</string>
- <string name="send_email">Enviar e-mail</string>
+ <string name="pref_image_cache_size_title">TamaƱo del almacenamiento de imƔgenes</string>
+ <string name="pref_image_cache_size_sum">TamaƱo del almacenamiento de imƔgenes en disco.</string>
+ <string name="crash_report_title">Informe de fallos</string>
+ <string name="crash_report_sum">Enviar el Ćŗltimo informe de fallo por correo electrĆ³nico</string>
+ <string name="send_email">Enviar correo electrĆ³nico</string>
<string name="experimental_pref">Experimental</string>
- <string name="pref_sonic_title">Sonic media player</string>
- <string name="pref_sonic_message">Usar el reproductor Sonic Media incorporado en lugar del reproductor multimedia de Android y Prestissimo</string>
+ <string name="pref_media_player_message">Seleccione quƩ reproductor multimedia usar para reproducir archivos</string>
<string name="pref_current_value">Valor actual: %1$s</string>
<string name="pref_proxy_title">Proxy</string>
<string name="pref_proxy_sum">Configurar proxy de red</string>
<string name="pref_faq">Preguntas frecuentes</string>
<string name="pref_known_issues">Problemas conocidos</string>
- <string name="pref_no_browser_found">No se ha encontrado navegador web.</string>
+ <string name="pref_no_browser_found">No se ha encontrado un navegador web.</string>
<string name="pref_cast_title">Soporte para Chromecast</string>
<string name="pref_cast_message_play_flavor">Habilitar soporte para reproducciĆ³n remota en dispositivos Cast (como Chromecast, altavoces o Android TV)</string>
<string name="pref_cast_message_free_flavor">Chromecast requiere librerĆ­as propietarias de terceros que estĆ”n deshabilitadas en esta versiĆ³n de AntennaPod</string>
- <string name="pref_enqueue_downloaded_title">Poner descargados en cola</string>
+ <string name="pref_enqueue_downloaded_title">Agregar descargados a la cola</string>
<string name="pref_enqueue_downloaded_summary">Agregar episodios descargados a la cola</string>
+ <string name="media_player_builtin">Reproductor Android integrado</string>
+ <string name="pref_videoBehavior_title">Al salir del vĆ­deo</string>
+ <string name="pref_videoBehavior_sum">Comportamiento al salir de la reproducciĆ³n de video</string>
+ <string name="stop_playback">Parar reproducciĆ³n</string>
+ <string name="continue_playback">Continuar la reproducciĆ³n de audio</string>
<!--Auto-Flattr dialog-->
<string name="auto_flattr_enable">Habilitar Flattr automƔtico</string>
- <string name="auto_flattr_after_percent">Hacer Flattr del episodio en cuanto se haya reproducido el %d por ciento</string>
- <string name="auto_flattr_ater_beginning">Hacer Flattr del episodio al comenzar la reproducciĆ³n</string>
- <string name="auto_flattr_ater_end">Hacer Flattr del episodio al terminar la reproducciĆ³n</string>
+ <string name="auto_flattr_after_percent">Valorar con Flattr el episodio cuando se haya reproducido el %d por ciento</string>
+ <string name="auto_flattr_ater_beginning">Valorar con Flattr el episodio al comenzar la reproducciĆ³n</string>
+ <string name="auto_flattr_ater_end">Valorar con Flattr el episodio al terminar la reproducciĆ³n</string>
<!--Search-->
<string name="search_hint">Buscar episodios</string>
- <string name="found_in_shownotes_label">Encontrado en las notas del show</string>
+ <string name="found_in_shownotes_label">Encontrado en las notas del programa</string>
<string name="found_in_chapters_label">Encontrado en los capĆ­tulos</string>
- <string name="found_in_authors_label">Encontrado en los autores</string>
- <string name="found_in_feeds_label">Encontrado en los feeds</string>
+ <string name="found_in_authors_label">Encontrado en autor(es)</string>
+ <string name="found_in_feeds_label">Encontrado en pĆ³dcast</string>
<string name="search_status_no_results">No se han encontrado resultados</string>
<string name="search_label">Buscar</string>
<string name="found_in_title_label">Encontrado en el tĆ­tulo</string>
- <string name="no_results_for_query">No se han encontrado resultados para \"%1$s\"</string>
+ <string name="no_results_for_query">No se han encontrado resultados de \"%1$s\"</string>
<!--OPML import and export-->
- <string name="opml_import_txtv_button_lable">Los archivos OPML le permiten migrar sus podcasts de una aplicaciĆ³n a otra.</string>
+ <string name="opml_import_txtv_button_lable">Los archivos OPML le permiten migrar sus pĆ³dcast de una aplicaciĆ³n a otra.</string>
<string name="opml_import_option">OpciĆ³n %1$d</string>
<string name="opml_import_explanation_1">Elegir un una ruta del sistema de ficheros local.</string>
- <string name="opml_import_explanation_2">Usar una aplicaciĆ³n externa tipo Dropbox, Google Drive or su gestor de ficheros favorito para abrir un archivo OPML.</string>
- <string name="opml_import_explanation_3">Muchas aplicaciones como Google Mail, Dropbox, Google Drive y la mayorĆ­a de gestores de ficheros pueden <i>abrir</i> archivos OPML <i>con</i> AntennaPod.</string>
+ <string name="opml_import_explanation_2">Usar una aplicaciĆ³n externa tipo Dropbox, Google Drive o su gestor de ficheros favorito para abrir un archivo OPML.</string>
+ <string name="opml_import_explanation_3">Muchas aplicaciones como Google Mail, Dropbox, Google Drive y la mayorĆ­a de gestores de ficheros pueden <i>abrir</i> archivos OPML <i>de</i> AntennaPod.</string>
<string name="start_import_label">Comenzar la importaciĆ³n</string>
- <string name="opml_import_label">ImportaciĆ³n de OPML</string>
+ <string name="opml_import_label">Importar de OPML</string>
<string name="opml_directory_error">Ā”ERROR!</string>
<string name="reading_opml_label">Leyendo el archivo OPML</string>
- <string name="opml_reader_error">Error al leer el documento OPML</string>
+ <string name="opml_reader_error">Error al leer el documento OPML:</string>
<string name="opml_import_error_no_file">Ā”Debes seleccionar un archivo!</string>
<string name="select_all_label">Seleccionar todo</string>
<string name="deselect_all_label">Deseleccionar todo</string>
<string name="select_options_label">Seleccionarā€¦</string>
<string name="choose_file_from_filesystem">Desde el sistema de ficheros local</string>
- <string name="choose_file_from_external_application">Usar aplicaciĆ³n externa</string>
+ <string name="choose_file_from_external_application">Usar una aplicaciĆ³n externa</string>
<string name="opml_export_label">Exportar a OPML</string>
<string name="html_export_label">Exportar a HTML</string>
<string name="exporting_label">Exportandoā€¦</string>
<string name="export_error_label">Error en la exportaciĆ³n</string>
- <string name="opml_export_success_title">ExportaciĆ³n a OPML exitosa</string>
- <string name="opml_export_success_sum">El archivo OPML se ha escrito en:\u0020</string>
- <string name="opml_import_ask_read_permission">Es necesario el acceso al almacenamiento externo para leer archivos OPML</string>
+ <string name="export_success_title">ExportaciĆ³n exitosa</string>
+ <string name="export_success_sum">El archivo exportado fue guardado en:\n\n%1$s</string>
+ <string name="opml_import_ask_read_permission">Necesita acceso al almacenamiento externo para leer archivos OPML</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">Establecer un temporizador</string>
<string name="disable_sleeptimer_label">Desactivar el temporizador</string>
<string name="enter_time_here_label">Introducir hora</string>
<string name="sleep_timer_label">Temporizador</string>
<string name="time_left_label">Tiempo restante:\u0020</string>
- <string name="time_dialog_invalid_input">Entrada no vƔlida, el tiempo debe ser un entero</string>
- <string name="timer_about_to_expire_label"><b>Cuando el temporizador vaya a expirara:</b></string>
- <string name="shake_to_reset_label">Agitar para reiniciar temporizador</string>
+ <string name="time_dialog_invalid_input">Entrada no vĆ”lida, el tiempo debe ser un nĆŗmero entero</string>
+ <string name="timer_about_to_expire_label"><b>Cuando el temporizador vaya a expirar:</b></string>
+ <string name="shake_to_reset_label">Agitar para reiniciar el temporizador</string>
<string name="timer_vibration_label">Vibrar</string>
<string name="time_seconds">segundos</string>
<string name="time_minutes">minutos</string>
@@ -479,22 +505,22 @@
<item quantity="one">1 hora</item>
<item quantity="other">%d horas</item>
</plurals>
- <string name="auto_enable_label">Auto-habilitar</string>
- <string name="sleep_timer_enabled_label">Temporizador de sueƱo habilitado</string>
- <string name="sleep_timer_disabled_label">Temporizador de sueƱo deshabilitado</string>
+ <string name="auto_enable_label">Autohabilitar</string>
+ <string name="sleep_timer_enabled_label">Temporizador habilitado</string>
+ <string name="sleep_timer_disabled_label">Temporizador deshabilitado</string>
<!--gpodder.net-->
<string name="gpodnet_taglist_header">CATEGORƍAS</string>
- <string name="gpodnet_toplist_header">MEJORES PODCASTS</string>
+ <string name="gpodnet_toplist_header">MEJORES PƓDCAST</string>
<string name="gpodnet_suggestions_header">SUGERENCIAS</string>
<string name="gpodnet_search_hint">Buscar en gpodder.net</string>
<string name="gpodnetauth_login_title">Iniciar sesiĆ³n</string>
- <string name="gpodnetauth_login_descr">Bienvenido al proceso de autenticaciĆ³n de gpodder.net. Primero, escriba sus datos de inicio de sesiĆ³n:</string>
+ <string name="gpodnetauth_login_descr">Bienvenidoinicio de sesiĆ³n de gpodder.net. Primero, escriba sus datos de inicio de sesiĆ³n:</string>
<string name="gpodnetauth_login_butLabel">Iniciar sesiĆ³n</string>
- <string name="gpodnetauth_login_register">Si no tienes una cuenta aĆŗn, puedes crearla en:\nhttps://gpodder.net/register/</string>
- <string name="username_label">Nombre de usuario</string>
+ <string name="gpodnetauth_login_register">Si aĆŗn no tienes una cuenta, puedes crearla en:\nhttps://gpodder.net/register/</string>
+ <string name="username_label">Usuario</string>
<string name="password_label">ContraseƱa</string>
<string name="gpodnetauth_device_title">SelecciĆ³n del dispositivo</string>
- <string name="gpodnetauth_device_descr">Cree un nuevo dispositivo para usar con su cuenta de gpodder.net o elija uno existente:</string>
+ <string name="gpodnetauth_device_descr">Cree un nuevo dispositivo para usar en su cuenta de gpodder.net o elija uno existente:</string>
<string name="gpodnetauth_device_deviceID">Id. de dispositivo:\u0020</string>
<string name="gpodnetauth_device_caption">DescripciĆ³n</string>
<string name="gpodnetauth_device_butCreateNewDevice">Crear dispositivo nuevo</string>
@@ -507,7 +533,7 @@
<string name="gpodnetauth_finish_descr">Ā”Enhorabuena! Su cuenta de gpodder.net estĆ” ahora asociada con su dispositivo. A partir de ahora AntennaPod sincronizarĆ” automĆ”ticamente las suscripciones de su dispositivo con su cuenta de gpodder.net.</string>
<string name="gpodnetauth_finish_butsyncnow">Comenzar sincronizaciĆ³n ahora</string>
<string name="gpodnetauth_finish_butgomainscreen">Ir a la pantalla principal</string>
- <string name="gpodnetsync_auth_error_title">Error de autenticaciĆ³n de gpodder.net</string>
+ <string name="gpodnetsync_auth_error_title">Error de autenticaciĆ³n en gpodder.net</string>
<string name="gpodnetsync_auth_error_descr">Usuario o contraseƱa incorrectos</string>
<string name="gpodnetsync_error_title">Error de sincronizaciĆ³n de gpodder.net</string>
<string name="gpodnetsync_error_descr">OcurriĆ³ un error de sincronizaciĆ³n:\u0020</string>
@@ -518,10 +544,10 @@
<string name="create_folder_label">Crear carpeta</string>
<string name="choose_data_directory">Elegir carpeta de datos</string>
<string name="choose_data_directory_message">Por favor elige la raĆ­z de la carpeta de datos. AntennaPod crearĆ” los subdirectorios apropiados.</string>
- <string name="choose_data_directory_permission_rationale">Se necesita acceso a almacenamiento externo para cambiar la carpeta de datos</string>
- <string name="create_folder_msg">ĀæCrear carpeta con nombre Ā«%1$sĀ»?</string>
+ <string name="choose_data_directory_permission_rationale">Necesita acceso al almacenamiento externo para cambiar la carpeta de datos</string>
+ <string name="create_folder_msg">ĀæCrear carpeta con nombre \"%1$s\"?</string>
<string name="create_folder_success">Carpeta creada</string>
- <string name="create_folder_error_no_write_access">No se puede escribir a esta carpeta</string>
+ <string name="create_folder_error_no_write_access">No se puede escribir en esta carpeta</string>
<string name="create_folder_error_already_exists">Ya existe la carpeta</string>
<string name="create_folder_error">No se ha podido crear la carpeta</string>
<string name="folder_does_not_exist_error">\"%1$s\" no existe</string>
@@ -532,7 +558,7 @@
<string name="set_to_default_folder">Elegir carpeta predeterminada</string>
<string name="pref_pausePlaybackForFocusLoss_sum">Pausar la reproducciĆ³n en lugar de bajar el volumen cuando otra aplicaciĆ³n reproduzca sonidos</string>
<string name="pref_pausePlaybackForFocusLoss_title">Pausar durante las interrupciones</string>
- <string name="pref_resumeAfterCall_sum">Reanudar reproducciĆ³n tras una llamada</string>
+ <string name="pref_resumeAfterCall_sum">Reanudar la reproducciĆ³n tras una llamada</string>
<string name="pref_resumeAfterCall_title">Reanudar tras una llamada</string>
<string name="pref_restart_required">Es necesario reiniciar AntennaPod para aplicar los cambios.</string>
<!--Online feed view-->
@@ -540,8 +566,8 @@
<string name="subscribed_label">Suscrito</string>
<string name="downloading_label">Descargandoā€¦</string>
<!--Content descriptions for image buttons-->
- <string name="rewind_label">Rebobinar</string>
- <string name="fast_forward_label">Avance rƔpido</string>
+ <string name="rewind_label">Retroceso</string>
+ <string name="fast_forward_label">Avance</string>
<string name="media_type_audio_label">Audio</string>
<string name="media_type_video_label">VĆ­deo</string>
<string name="navigate_upwards_label">Navegar hacia arriba</string>
@@ -551,40 +577,40 @@
<string name="load_next_page_label">Cargar la pƔgina siguiente</string>
<!--Feed information screen-->
<string name="authentication_label">AutenticaciĆ³n</string>
- <string name="authentication_descr">Cambiar nombre y contraseƱa de este podcast y sus episodios</string>
- <string name="auto_download_settings_label">Opciones de Auto Descarga</string>
- <string name="episode_filters_label">Filtro de Episodios</string>
- <string name="episode_filters_description">Listado de tƩrminos para decidir si un episodio debe ser incluƭdo o excluƭdo al auto descargar</string>
+ <string name="authentication_descr">Cambiar nombre y contraseƱa de este pĆ³dcast y sus episodios</string>
+ <string name="auto_download_settings_label">Opciones de descarga automƔtica</string>
+ <string name="episode_filters_label">Filtro de episodios</string>
+ <string name="episode_filters_description">Lista de tƩrminos usados para decidir si un episodio debe ser incluƭdo o excluƭdo de la descarga automƔtica</string>
<string name="episode_filters_include">Incluir</string>
<string name="episode_filters_exclude">Excluir</string>
- <string name="episode_filters_hint">Palabras sueltas \n\"MĆŗltiples palabras\"</string>
+ <string name="episode_filters_hint">Palabras sueltas \n\"mĆŗltiples palabras\"</string>
<string name="keep_updated">Mantener actualizado</string>
<!--Progress information-->
<string name="progress_upgrading_database">Actualizando la base de datos</string>
<!--AntennaPodSP-->
- <string name="sp_apps_importing_feeds_msg">Importando subscripciones de aplicaciones de uso especĆ­fico...</string>
+ <string name="sp_apps_importing_feeds_msg">Importando suscripciones de aplicaciones de uso especĆ­ficoā€¦</string>
<string name="search_itunes_label">Buscar en iTunes</string>
<string name="filter">Filtro</string>
- <string name="search_fyyd_label">Buscar fyyd</string>
+ <string name="search_fyyd_label">Buscar en fyyd</string>
<!--Episodes apply actions-->
- <string name="all_label">Todo</string>
- <string name="selected_all_label">Seleccionados todos los episodios</string>
+ <string name="all_label">Todos</string>
+ <string name="selected_all_label">Todos los episodios seleccionados</string>
<string name="none_label">Ninguno</string>
- <string name="deselected_all_label">Deseleccionados todos los episodios</string>
- <string name="played_label">Reproducido</string>
- <string name="selected_played_label">Seleccionados episodios reproducidos</string>
+ <string name="deselected_all_label">NingĆŗn episodio seleccionado</string>
+ <string name="played_label">Reproducidos</string>
+ <string name="selected_played_label">Episodios reproducidos seleccionados</string>
<string name="unplayed_label">No reproducidos</string>
- <string name="selected_unplayed_label">Seleccionados episodios no reproducidos</string>
- <string name="downloaded_label">Descargado</string>
- <string name="selected_downloaded_label">Seleccionados episodios descargados</string>
+ <string name="selected_unplayed_label">Episodios no reproducidos seleccionados</string>
+ <string name="downloaded_label">Descargados</string>
+ <string name="selected_downloaded_label">Episodios descargados seleccionados</string>
<string name="not_downloaded_label">No descargado</string>
- <string name="selected_not_downloaded_label">Seleccionados episodios no descargados</string>
+ <string name="selected_not_downloaded_label">Episodios no descargados seleccionados</string>
<string name="queued_label">En cola</string>
- <string name="selected_queued_label">Seleccionados episodios en cola</string>
- <string name="not_queued_label">No en cola</string>
- <string name="selected_not_queued_label">Seleccionados episodios no en cola</string>
+ <string name="selected_queued_label">Episodios en cola seleccionados</string>
+ <string name="not_queued_label">No estƔn en cola</string>
+ <string name="selected_not_queued_label">Episodios que no estƔn en cola seleccionados</string>
<string name="has_media">Tiene multimedia</string>
- <string name="selected_has_media_label">Seleccionar episodios con multimedia</string>
+ <string name="selected_has_media_label">Episodios con multimedia seleccionados</string>
<!--Sort-->
<string name="sort_title_a_z">TĆ­tulo (A \u2192 Z)</string>
<string name="sort_title_z_a">TĆ­tulo (Z \u2192 A)</string>
@@ -594,9 +620,9 @@
<string name="sort_duration_long_short">DuraciĆ³n (Largo \u2192 Corto)</string>
<!--Rating dialog-->
<string name="rating_title">ĀæTe gusta AntennaPod?</string>
- <string name="rating_message">EstarĆ­amos muy agradecidos si nos dedicas un tiempo para puntuar AntennaPod</string>
+ <string name="rating_message">EstarĆ­amos muy agradecidos si nos dedicas un poco de tiempo para valorar AntennaPod.</string>
<string name="rating_never_label">DĆ©jame en paz</string>
- <string name="rating_later_label">RecuƩrdamelo despuƩs</string>
+ <string name="rating_later_label">RecuƩrdamelo mƔs tarde</string>
<string name="rating_now_label">Ā”Venga, hagĆ”moslo!</string>
<!--Audio controls-->
<string name="audio_controls">Controles de audio</string>
@@ -605,42 +631,51 @@
<string name="left_short">I</string>
<string name="right_short">D</string>
<string name="audio_effects">Efectos de audio</string>
- <string name="stereo_to_mono">Downmix: De estereo a mono</string>
- <string name="sonic_only">SĆ³lo Sonic</string>
+ <string name="stereo_to_mono">Mezclar: de estƩreo a mono</string>
+ <string name="sonic_only">Solo Sonic</string>
<!--proxy settings-->
<string name="proxy_type_label">Tipo</string>
<string name="host_label">Host</string>
<string name="port_label">Puerto</string>
<string name="optional_hint">(Opcional)</string>
- <string name="proxy_test_label">Probar</string>
- <string name="proxy_checking">Comprobando...</string>
+ <string name="proxy_test_label">Test</string>
+ <string name="proxy_checking">Comprobandoā€¦</string>
<string name="proxy_test_successful">Test correcto</string>
<string name="proxy_test_failed">Test fallido</string>
<string name="proxy_host_empty_error">El host no puede estar en blanco</string>
- <string name="proxy_host_invalid_error">El host no es una IP ni un host vƔlido</string>
- <string name="proxy_port_invalid_error">Puerto invƔlido</string>
+ <string name="proxy_host_invalid_error">El host no es una direcciĆ³n IP o dominio vĆ”lido</string>
+ <string name="proxy_port_invalid_error">Puerto no vƔlido</string>
<!--Database import/export-->
<string name="import_export">Importar/Exportar base de datos</string>
- <string name="import_export_warning">Esta funciĆ³n experimental se puede usar para transferir tus suscripciones y episodios reproducidos a otro dispositivo.\n\nLas base de datos exportadas solo se pueden importar cuando se usa la misma versiĆ³n de AntennaPod. En otro caso, esta funciĆ³n podrĆ­a provocar comportamiento inesperado.\n\nDespuĆ©s de importar, los episodios podrĆ­an mostrarse como descargados cuando no lo estĆ”n. Reproduce estos episodios para que AntennaPod lo detecte.</string>
+ <string name="import_export_warning">Esta funciĆ³n experimental se puede usar para transferir sus suscripciones y episodios reproducidos a otro dispositivo.\n\nLas bases de datos exportadas solo se pueden importar cuando se usa la misma versiĆ³n de AntennaPod. En otro caso, esta funciĆ³n podrĆ­a provocar un comportamiento inesperado.\n\nDespuĆ©s de la importaciĆ³n, los episodios podrĆ­an mostrarse como descargados cuando no lo estĆ”n. Presione el botĆ³n de reproducciĆ³n de los episodios para que AntennaPod lo detecte.</string>
<string name="label_import">Importar</string>
<string name="label_export">Exportar</string>
- <string name="import_select_file">Seleccionar firchero a importar</string>
- <string name="export_ok">ExportaciĆ³n exitosa. La base de datos se guardĆ³ en la tarjeta SD.</string>
- <string name="import_ok">ImportaciĆ³n exitosa.\n\nPor favor, pulse OK para reiniciar AntennaPod</string>
+ <string name="import_select_file">Seleccionar archivo a importar</string>
+ <string name="export_ok">ExportaciĆ³n exitosa.</string>
+ <string name="import_ok">ImportaciĆ³n exitosa.\n\nPulse OK para reiniciar AntennaPod</string>
<!--Casting-->
- <string name="cast_media_route_menu_title">Reproducir en...</string>
- <string name="cast_disconnect_label">Desconectar la sesiĆ³n Cast</string>
- <string name="cast_not_castable">El medio seleccionado no es compatible con el dispositivo Cast</string>
- <string name="cast_failed_to_play">Fallo al iniciar la reproducciĆ³n del medio</string>
- <string name="cast_failed_to_stop">Fallo al detener la reproducciĆ³n del medio</string>
- <string name="cast_failed_to_pause">Fallo al pausar la reproducciĆ³n del medio</string>
+ <string name="cast_media_route_menu_title">Reproducir enā€¦</string>
+ <string name="cast_disconnect_label">Desconectar la sesiĆ³n de cast</string>
+ <string name="cast_not_castable">El medio seleccionado no es compatible con el dispositivo de cast</string>
+ <string name="cast_failed_to_play">Error al iniciar la reproducciĆ³n del medio</string>
+ <string name="cast_failed_to_stop">Error al detener la reproducciĆ³n del medio</string>
+ <string name="cast_failed_to_pause">Error al pausar la reproducciĆ³n del medio</string>
<!--<string name="cast_failed_to_connect">Could not connect to the device</string>-->
- <string name="cast_failed_setting_volume">Fallo al ajustar el volumen</string>
- <string name="cast_failed_no_connection">No hay conexiĆ³n con el dispositivo Cast</string>
- <string name="cast_failed_no_connection_trans">Se ha perdido la conexiĆ³n con el dispositivo Cast. La aplicaciĆ³n estĆ” intentando reconectar. Por favor, espera unos segundos e intenta de nuevo.</string>
- <string name="cast_failed_perform_action">Fallo en la acciĆ³n</string>
- <string name="cast_failed_status_request">Fallo al sincronizar con el dispositivo Cast</string>
- <string name="cast_failed_seek">Fallo al cambiar de posiciĆ³n en el dispositivo Cast</string>
+ <string name="cast_failed_setting_volume">Error al ajustar el volumen</string>
+ <string name="cast_failed_no_connection">No hay ninguna conexiĆ³n con el dispositivo de cast</string>
+ <string name="cast_failed_no_connection_trans">Se ha perdido la conexiĆ³n con dispositivo de cast. La aplicaciĆ³n estĆ” intentando restablecer la conexiĆ³n. Espere unos segundos y vuelva a intentarlo.</string>
+ <string name="cast_failed_perform_action">Error al realizar la acciĆ³n</string>
+ <string name="cast_failed_status_request">Error al sincronizar con el dispositivo de cast</string>
+ <string name="cast_failed_seek">Error al buscar la nueva posiciĆ³n en el dispositivo de cast</string>
<string name="cast_failed_receiver_player_error">El reproductor ha encontrado un error grave</string>
- <string name="cast_failed_media_error_skipping">Error reproduciendo medio. Saltando...</string>
+ <string name="cast_failed_media_error_skipping">Error reproduciendo medio. Saltandoā€¦</string>
+ <!--Notification channels-->
+ <string name="notification_channel_user_action">AcciĆ³n necesaria</string>
+ <string name="notification_channel_user_action_description">Se muestra si su acciĆ³n es necesaria, por ejemplo, si necesita introducir una contraseƱa.</string>
+ <string name="notification_channel_downloading">Descargando</string>
+ <string name="notification_channel_downloading_description">Se muestra mientras se estĆ” descargando.</string>
+ <string name="notification_channel_playing">Reproduciendo</string>
+ <string name="notification_channel_playing_description">Permite controlar la reproducciĆ³n. Es la notificaciĆ³n principal que se ve mientras se reproduce un pĆ³dcast.</string>
+ <string name="notification_channel_error">Errores</string>
+ <string name="notification_channel_error_description">Muestra si algo saliĆ³ mal, por ejemplo, si falla la descarga o la sincronizaciĆ³n de gpodder</string>
</resources>
diff --git a/core/src/main/res/values-et/strings.xml b/core/src/main/res/values-et/strings.xml
index d7afdf834..9d5673751 100644
--- a/core/src/main/res/values-et/strings.xml
+++ b/core/src/main/res/values-et/strings.xml
@@ -48,7 +48,6 @@
<string name="yes">Jah</string>
<string name="no">Ei</string>
<string name="reset">Nulli</string>
- <string name="author_label">Autor</string>
<string name="language_label">Keel</string>
<string name="url_label">URL</string>
<string name="podcast_settings_label">Seaded</string>
@@ -93,18 +92,11 @@
<string name="mark_all_read_label">MƤrgi kuulatuks</string>
<string name="mark_all_read_msg">MƤrgi kƵik saated esitatuks</string>
<string name="mark_all_seen_label">MƤrgi kƵik nƤhtuks</string>
- <string name="mark_all_seen_msg">MƤrgi kƵik saated nƤhtuks</string>
<string name="show_info_label">NƤita infot</string>
- <string name="rename_feed_label">Nimeta taskuhƤƤling Ć¼mber</string>
- <string name="remove_feed_label">Eemalda taskuhƤƤling</string>
<string name="share_label">Jaga...</string>
- <string name="share_link_label">Jaga linki</string>
- <string name="share_link_with_position_label">Jaga linki koos asukohaga</string>
+ <string name="share_file_label">Jaga faili</string>
<string name="share_feed_url_label">Jaga uudisvoo URL-i</string>
- <string name="feed_remover_msg">Uudisvoo eemaldamine</string>
- <string name="load_complete_feed">VƤrskenda kogu uudisvoogu</string>
<string name="hide_episodes_title">Peida saated</string>
- <string name="episode_actions">Rakenda tegevused</string>
<string name="hide_unplayed_episodes_label">Esitamata</string>
<string name="hide_paused_episodes_label">Peatatud</string>
<string name="hide_played_episodes_label">Esitatud</string>
@@ -147,6 +139,7 @@
<string name="download_failed">ebaƵnnestus</string>
<string name="download_pending">Ootel allalaadimine</string>
<string name="download_running">Allalaadimine on kƤimas</string>
+ <string name="download_error_details">Ɯksikasjad</string>
<string name="download_error_device_not_found">Salvestuskohta ei leitud</string>
<string name="download_error_insufficient_space">Pole piisavalt ruumi</string>
<string name="download_error_file_error">Faili viga</string>
@@ -207,7 +200,6 @@
<string name="date">KuupƤeva jƤrgi</string>
<string name="duration">Kestuse jƤrgi</string>
<string name="episode_title">Saate pealkiri</string>
- <string name="feed_title">Uudisvoo pealkiri</string>
<string name="ascending">Kasvavalt</string>
<string name="descending">Kahanevalt</string>
<!--Flattr-->
@@ -224,7 +216,6 @@
<string name="enable_sonic">Luba Sonicu kasutamine</string>
<!--Empty list labels-->
<string name="no_items_label">Selles nimekirjas pole midagi.</string>
- <string name="no_feeds_label">Sa pole veel Ć¼htegi uusidvoogi tellinud.</string>
<string name="no_chapters_label">Saatel pole peatĆ¼kke.</string>
<string name="no_shownotes_label">Sellel saatel pole mingeid mƤrkusi.</string>
<!--Preferences-->
@@ -233,7 +224,6 @@
<string name="other_pref">Muud</string>
<string name="about_pref">Info</string>
<string name="queue_label">JƤrjekord</string>
- <string name="services_label">Teenused</string>
<string name="flattr_label">Flattr</string>
<string name="pref_episode_cleanup_title">Saadete kustutamien</string>
<string name="pref_followQueue_sum">Kui saade lƵpeb, siis esita kohe jƤrgmine jƤrjekorras olev saade.</string>
@@ -241,6 +231,7 @@
<string name="pref_auto_delete_title">Automaatne kustutamine</string>
<string name="pref_skip_keeps_episodes_sum">Hoia saated alles, kui need jƤetakse vahele</string>
<string name="pref_skip_keeps_episodes_title">Hoia vahelejƤetud osad alles</string>
+ <string name="pref_favorite_keeps_episodes_title">SƤilita lemmikosad</string>
<string name="playback_pref">Esitamine</string>
<string name="network_pref">VƵrk</string>
<string name="pref_autoUpdateIntervallOrTime_title">Uuendamise intervall vƵi kellaaeg</string>
@@ -293,8 +284,6 @@
<string name="pref_playback_speed_title">Esitamise kiirused</string>
<string name="pref_gpodnet_sethostname_title">MƤƤra hostinimi</string>
<string name="pref_gpodnet_sethostname_use_default_host">Kasuta vaikimisi hosti</string>
- <string name="pref_expandNotify_title">Teavituste laiendamine</string>
- <string name="pref_expandNotify_sum">NƤita alati teavitustes pleieri nuppe.</string>
<string name="pref_persistNotify_title">PĆ¼sivad taasesitamise nupud</string>
<string name="pref_compact_notification_buttons_title">MƤƤra lukustutekraani nupud</string>
<string name="pref_lockscreen_background_title">MƤƤra lukustusekraani taustapilt</string>
@@ -342,8 +331,6 @@
<string name="html_export_label">HTML eksport</string>
<string name="exporting_label">Eksportimine...</string>
<string name="export_error_label">Viga eksportimisel</string>
- <string name="opml_export_success_title">OPML eksport oli edukas.</string>
- <string name="opml_export_success_sum">.opml fail kirjutati kausta:\u0020</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">MƤƤra unetaimer</string>
<string name="disable_sleeptimer_label">Keela unetaimer</string>
@@ -368,6 +355,9 @@
<item quantity="one">1 tund</item>
<item quantity="other">%d tundi</item>
</plurals>
+ <string name="auto_enable_label">Automaatne kustutamine</string>
+ <string name="sleep_timer_enabled_label">Unetaimer on sisse lĆ¼litatud</string>
+ <string name="sleep_timer_disabled_label">Unetaimer on vƤlja lĆ¼litatud</string>
<!--gpodder.net-->
<string name="gpodnet_taglist_header">KATEGOORIAD</string>
<string name="gpodnet_toplist_header">POPIMAD TASKUHƄƄLINGUD</string>
@@ -385,6 +375,7 @@
<string name="gpodnetauth_device_chooseExistingDevice">Vali olemasolev seade:</string>
<string name="gpodnetauth_device_errorEmpty">Seadme ID ei tohi olla tĆ¼hi</string>
<string name="gpodnetauth_device_errorAlreadyUsed">Seadme ID on juba kasutuses</string>
+ <string name="gpodnetauth_device_caption_errorEmpty">Pealkiri ei tohi olla tĆ¼hi</string>
<string name="gpodnetauth_device_butChoose">Vali</string>
<string name="gpodnetauth_finish_title">Sisse logitud!</string>
<string name="gpodnetauth_finish_butsyncnow">Alusta kohe sĆ¼nkroonimist</string>
@@ -490,9 +481,17 @@
<string name="proxy_test_successful">Kontroll oli edukas</string>
<string name="proxy_test_failed">Kontroll ebaƵnnestus</string>
<string name="proxy_host_empty_error">Hostinimi ei saa olla tĆ¼hi</string>
+ <string name="proxy_host_invalid_error">Se pole korrektne IP aadress vƵi domeen</string>
<string name="proxy_port_invalid_error">Port pole korrektne</string>
<!--Database import/export-->
+ <string name="import_export">Andmebaasi importimine/eksportimine</string>
+ <string name="label_import">Impordi</string>
+ <string name="label_export">Ekspordi</string>
+ <string name="import_select_file">Vali fail, mida importida</string>
+ <string name="export_ok">Eksportimine on sooritatud.</string>
<!--Casting-->
<string name="cast_media_route_menu_title">Esita...</string>
<!--<string name="cast_failed_to_connect">Could not connect to the device</string>-->
+ <string name="cast_failed_media_error_skipping">TƵrge meedia esitamisel. JƤtame vahele...</string>
+ <!--Notification channels-->
</resources>
diff --git a/core/src/main/res/values-fa/strings.xml b/core/src/main/res/values-fa/strings.xml
index fb8bb5e7c..dc6e7cb2e 100644
--- a/core/src/main/res/values-fa/strings.xml
+++ b/core/src/main/res/values-fa/strings.xml
@@ -1,15 +1,17 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources xmlns:tools="http://schemas.android.com/tools">
<!--Activitiy and fragment titles-->
+ <string name="feed_update_receiver_name">ŲØŁ‡ā€ŒŲ±ŁˆŲ² Ų±Ų³Ų§Ł†ŪŒ Ų§Ų“ŲŖŲ±Ų§Ś©ā€ŒŁ‡Ų§</string>
<string name="feeds_label">Ų®ŁˆŲ±Ų§Ś©</string>
<string name="statistics_label">Ų¢Ł…Ų§Ų±</string>
<string name="add_feed_label">Ų§Ų¶Ų§ŁŁ‡ Ś©Ų±ŲÆŁ† Ł¾Ų§ŲÆŚ©Ų³ŲŖ</string>
- <string name="episodes_label">Ł‚Ų³Ł…ŲŖ Ł‡Ų§</string>
+ <string name="episodes_label">Ł‚Ų³Ł…ŲŖā€ŒŁ‡Ų§</string>
<string name="all_episodes_short_label">Ł‡Ł…Ł‡</string>
+ <string name="new_episodes_label">Ų¬ŲÆŪŒŲÆ</string>
<string name="favorite_episodes_label">Ų¹Ł„Ų§Ł‚Ł‡ Ł…Ł†ŲÆŪŒ Ł‡Ų§</string>
<string name="new_label">Ų¬ŲÆŪŒŲÆ</string>
<string name="settings_label">ŲŖŁ†ŲøŪŒŁ…Ų§ŲŖ</string>
- <string name="downloads_label">ŲÆŲ§Ł†Ł„ŁˆŲÆŁ‡Ų§</string>
+ <string name="downloads_label">ŲØŲ§Ų±ŚÆŪŒŲ±ŪŒā€ŒŁ‡Ų§</string>
<string name="downloads_running_label">ŲÆŲ± Ų­Ų§Ł„ Ų§Ų¬Ų±Ų§</string>
<string name="downloads_completed_label">ŲŖŚ©Ł…ŪŒŁ„ Ų“ŲÆŁ‡</string>
<string name="downloads_log_label">log</string>
@@ -18,10 +20,12 @@
<string name="cancel_download_label">ŲØŲ§Ų±ŚÆŪŒŲ±ŪŒ n\ Ł„ŲŗŁˆ</string>
<string name="playback_history_label">ŲŖŲ§Ų±ŪŒŲ®Ś†Ł‡ Ł¾Ų®Ų“</string>
<string name="gpodnet_main_label">gpodder.net</string>
+ <string name="gpodnet_summary">Ł‡Ł…ā€ŒŚÆŲ§Ł…ā€ŒŲ³Ų§Ų²ŪŒ ŲØŲ§ ŲÆŪŒŚÆŲ± ŲÆŲ³ŲŖŚÆŲ§Ł‡ā€ŒŁ‡Ų§</string>
<string name="gpodnet_auth_label">gpodder.net Login</string>
<string name="free_space_label">%1$s free </string>
<string name="episode_cache_full_title">ŲøŲ±ŁŪŒŲŖ Ų­Ų§ŁŲøŁ‡ Ł¾Ł†Ł‡Ų§Ł† ŲŖŚ©Ł…ŪŒŁ„ Ų“ŲÆŁ‡ Ų§Ų³ŲŖ</string>
<string name="episode_cache_full_message">Ų­ŲÆ Ł…Ų¬Ų§Ų² ŲŖŚ©Ł…ŪŒŁ„ Ų“ŲÆŁ‡ Ų§Ų³ŲŖ . Ų“Ł…Ų§ Ł…ŪŒ ŲŖŁˆŲ§Ł†ŪŒŲÆ Ų§Ł†ŲÆŲ§Ų²Ł‡ Ų­Ų§ŁŲøŁ‡ Ł¾Ł†Ł‡Ų§Ł† Ų±Ų§ ŲÆŲ± ŲŖŁ†ŲøŪŒŁ…Ų§ŲŖ Ų§ŁŲ²Ų§ŪŒŲ“ ŲÆŁ‡ŪŒŲÆ.</string>
+ <string name="synchronizing">ŲÆŲ± Ų­Ų§Ł„ Ł‡Ł…ā€ŒŚÆŲ§Ł…ā€ŒŲ³Ų§Ų²ŪŒ</string>
<!--Statistics fragment-->
<string name="total_time_listened_to_podcasts">Ł…Ų¬Ł…ŁˆŲ¹ Ų²Ł…Ų§Ł† Ł¾Ų®Ų“ Ł¾Ų§ŲÆŚ©Ų³ŲŖ Ł‡Ų§:</string>
<string name="statistics_mode">Ų­Ų§Ł„ŲŖ Ų¢Ł…Ų§Ų±</string>
@@ -35,11 +39,11 @@
<string name="drawer_feed_order_unplayed_episodes">Ł…Ų±ŲŖŲØ Ų³Ų§Ų²ŪŒ ŲØŲ± Ų§Ų³Ų§Ų³ Ų“Ł…Ų§Ų±Ł†ŲÆŁ‡</string>
<string name="drawer_feed_order_alphabetical">Ł…Ų±ŲŖŲØ Ų³Ų§Ų²ŪŒ ŲØŲ± Ų§Ų³Ų§Ų³ Ų­Ų±ŁˆŁ Ų§Ł„ŁŲØŲ§</string>
<string name="drawer_feed_order_last_update">Ł…Ų±ŲŖŲØ Ų³Ų§Ų²ŪŒ ŲØŲ± Ų§Ų³Ų§Ų³ ŲŖŲ§Ų±ŪŒŲ® Ų§Ł†ŲŖŲ“Ų§Ų±</string>
- <string name="drawer_feed_order_most_played">Ł…Ų±ŲŖŲØ Ų³Ų§Ų²ŪŒ ŲØŲ± Ų§Ų³Ų§Ų³ ŲŖŲ¹ŲÆŲ§ŲÆ Ł‚Ų³Ł…ŲŖ Ł¾Ų®Ų“ Ų“ŲÆŁ‡</string>
- <string name="drawer_feed_counter_new_unplayed">ŲŖŲ¹ŲÆŲ§ŲÆ Ł‚Ų³Ł…ŲŖ Ł‡Ų§ŪŒ Ų¬ŲÆŪŒŲÆ Łˆ Ł¾Ų®Ų“ Ł†Ų“ŲÆŁ‡</string>
- <string name="drawer_feed_counter_new">ŲŖŲ¹ŲÆŲ§ŲÆ Ł‚Ų³Ł…ŲŖ Ł‡Ų§ŪŒ Ų¬ŲÆŪŒŲÆ</string>
- <string name="drawer_feed_counter_unplayed">ŲŖŲ¹ŲÆŲ§ŲÆ Ł‚Ų³Ł…ŲŖ Ł‡Ų§ŪŒ Ł¾Ų®Ų“ Ł†Ų“ŲÆŁ‡</string>
- <string name="drawer_feed_counter_downloaded">ŲŖŲ¹ŲÆŲ§ŲÆ Ł‚Ų³Ł…ŲŖ Ł‡Ų§ŪŒ ŲÆŲ§Ł†Ł„ŁˆŲÆ Ų“ŲÆŁ‡</string>
+ <string name="drawer_feed_order_most_played">Ł…Ų±ŲŖŲØā€ŒŲ³Ų§Ų²ŪŒ ŲØŲ± Ų§Ų³Ų§Ų³ ŲŖŲ¹ŲÆŲ§ŲÆ Ł‚Ų³Ł…ŲŖ Ł¾Ų®Ų“ Ų“ŲÆŁ‡</string>
+ <string name="drawer_feed_counter_new_unplayed">ŲŖŲ¹ŲÆŲ§ŲÆ Ł‚Ų³Ł…ŲŖā€ŒŁ‡Ų§ŪŒ Ų¬ŲÆŪŒŲÆ Łˆ Ł¾Ų®Ų“ Ł†Ų“ŲÆŁ‡</string>
+ <string name="drawer_feed_counter_new">ŲŖŲ¹ŲÆŲ§ŲÆ Ł‚Ų³Ł…ŲŖā€ŒŁ‡Ų§ŪŒ Ų¬ŲÆŪŒŲÆ</string>
+ <string name="drawer_feed_counter_unplayed">ŲŖŲ¹ŲÆŲ§ŲÆ Ł‚Ų³Ł…ŲŖā€ŒŁ‡Ų§ŪŒ Ł¾Ų®Ų“ Ł†Ų“ŲÆŁ‡</string>
+ <string name="drawer_feed_counter_downloaded">ŲŖŲ¹ŲÆŲ§ŲÆ Ł‚Ų³Ł…ŲŖā€ŒŁ‡Ų§ŪŒ ŲØŲ§Ų±ŚÆŪŒŲ±ŪŒ Ų“ŲÆŁ‡</string>
<string name="drawer_feed_counter_none">Ł‡ŪŒŚ† ŪŒŚ©</string>
<!--Webview actions-->
<string name="open_in_browser_label">ŲØŲ§Ų² Ś©Ų±ŲÆŁ† ŲÆŲ± Ł…Ų±ŁˆŲ± ŚÆŲ±</string>
@@ -55,7 +59,7 @@
<string name="yes">ŲØŁ„Ł‡</string>
<string name="no">Ų®ŪŒŲ±</string>
<string name="reset">ŲØŲ§Ų²Ł†Ų“Ų§Ł†ŪŒ</string>
- <string name="author_label">Ł†ŁˆŪŒŲ³Ł†ŲÆŁ‡</string>
+ <string name="author_label">Ł…Ų¤Ł„Ł(Ł‡Ų§)</string>
<string name="language_label">Ų²ŲØŲ§Ł†</string>
<string name="url_label">URL</string>
<string name="podcast_settings_label">ŲŖŁ†ŲøŪŒŁ…Ų§ŲŖ</string>
@@ -69,7 +73,7 @@
<string name="shownotes_label">Shownotes</string>
<string name="description_label">Ų“Ų±Ų­</string>
<string name="most_recent_prefix">Ų¢Ų®Ų±ŪŒŁ† Ł‚Ų³Ł…ŲŖ: \u0020</string>
- <string name="episodes_suffix">\u0020Ł‚Ų³Ł…ŲŖ Ł‡Ų§</string>
+ <string name="episodes_suffix">\u0020Ł‚Ų³Ł…ŲŖ</string>
<string name="length_prefix">Ų·ŁˆŁ„:\u0020</string>
<string name="size_prefix">Ų­Ų¬Ł…:\u0020</string>
<string name="processing_label">ŲÆŲ± Ų­Ų§Ł„ Ł¾Ų±ŲÆŲ§Ų²Ų“</string>
@@ -78,10 +82,10 @@
<string name="close_label">ŲØŲ³ŲŖŁ†</string>
<string name="retry_label">ŲŖŁ„Ų§Ų“ Ł…Ų¬ŲÆŲÆ</string>
<string name="auto_download_label">Ų“Ų§Ł…Ł„ ŲÆŲ± ŲÆŲ±ŪŒŲ§ŁŲŖ Ų®ŁˆŲÆŚ©Ų§Ų± Ų§Ų³ŲŖ</string>
- <string name="auto_download_apply_to_items_title">Ų§Ų¹Ł…Ų§Ł„ ŲØŁ‡ Ł‚Ų³Ł…ŲŖ Ł‡Ų§ŪŒ Ł‚ŲØŁ„ŪŒ</string>
- <string name="auto_download_apply_to_items_message">ŲŖŁ†ŲøŪŒŁ…Ų§ŲŖ Ų¬ŲÆŪŒŲÆ<i>ŲÆŲ§Ł†Ł„ŁˆŲÆ Ų®ŁˆŲÆŚ©Ų§Ų±</i> ŲØŁ‡ Ų·ŁˆŲ± Ų§ŲŖŁˆŁ…Ų§ŲŖŪŒŚ© ŲØŁ‡ Ł‚Ų³Ł…ŲŖ Ł‡Ų§ŪŒ Ų¬ŲÆŪŒŲÆ Ų§Ų¹Ł…Ų§Ł„ Ų®ŁˆŲ§Ł‡ŲÆ Ų“ŲÆ. \ n Ų¢ŪŒŲ§ Ų“Ł…Ų§ Ł‡Ł…Ś†Ł†ŪŒŁ† Ł…ŪŒ Ų®ŁˆŲ§Ł‡ŪŒŲÆ Ų¢Ł† Ų±Ų§ ŲØŁ‡ Ł‚Ų³Ł…ŲŖ Ł‡Ų§ŪŒŪŒ Ś©Ł‡ Ł‚ŲØŁ„Ų§ Ł…Ł†ŲŖŲ“Ų± Ų“ŲÆŁ‡ Ų§Ų¹Ł…Ų§Ł„ Ś©Ł†ŪŒŲÆŲŸ</string>
- <string name="auto_delete_label">Ų­Ų°Ł Ų®ŁˆŲÆŚ©Ų§Ų± Ł‚Ų³Ł…ŲŖ Ł‡Ų§ </string>
- <string name="parallel_downloads_suffix">\u0020ŲÆŲ§Ł†Ł„ŁˆŲÆ Ł‡Ł…Ų²Ł…Ų§Ł†</string>
+ <string name="auto_download_apply_to_items_title">Ų§Ų¹Ł…Ų§Ł„ ŲØŲ± Ł‚Ų³Ł…ŲŖā€ŒŁ‡Ų§ŪŒ Ł‚ŲØŁ„ŪŒ</string>
+ <string name="auto_download_apply_to_items_message">ŲŖŁ†ŲøŪŒŁ…Ų§ŲŖ Ų¬ŲÆŪŒŲÆ<i>ŲØŲ§Ų±ŚÆŪŒŲ±ŪŒ Ų®ŁˆŲÆŚ©Ų§Ų±</i> ŲØŁ‡ Ų·ŁˆŲ± Ų®ŁˆŲÆŚ©Ų§Ų± ŲØŲ± Ł‚Ų³Ł…ŲŖā€ŒŁ‡Ų§ŪŒ Ų¬ŲÆŪŒŲÆ Ų§Ų¹Ł…Ų§Ł„ Ų®ŁˆŲ§Ł‡ŲÆ Ų“ŲÆ.\n Ų¢ŪŒŲ§ Ł…ŪŒā€ŒŲ®ŁˆŲ§Ł‡ŪŒŲÆ Ų¢Ł† Ų±Ų§ ŲØŲ± Ł‚Ų³Ł…ŲŖā€ŒŁ‡Ų§ŪŒŪŒ Ś©Ł‡ Ł‚ŲØŁ„Ų§ Ł…Ł†ŲŖŲ“Ų± Ų“ŲÆŁ‡ Ł†ŪŒŲ² Ų§Ų¹Ł…Ų§Ł„ Ś©Ł†ŪŒŲÆŲŸ</string>
+ <string name="auto_delete_label">Ų­Ų°Ł Ų®ŁˆŲÆŚ©Ų§Ų± Ł‚Ų³Ł…ŲŖ</string>
+ <string name="parallel_downloads_suffix">\u0020ŲØŲ§Ų±ŚÆŪŒŲ±ŪŒ Ł‡Ł…ā€ŒŲ²Ł…Ų§Ł†</string>
<string name="feed_auto_download_global">Ł¾ŪŒŲ“ ŁŲ±Ų¶ Ų¬Ł‡Ų§Ł†ŪŒ</string>
<string name="feed_auto_download_always">Ł‡Ł…ŪŒŲ“Ł‡</string>
<string name="feed_auto_download_never">Never</string>
@@ -90,6 +94,7 @@
<string name="episode_cleanup_queue_removal">ŁˆŁ‚ŲŖŪŒ Ś©Ł‡ ŲÆŲ± ŲµŁ Ł†ŪŒŲ³ŲŖ</string>
<string name="episode_cleanup_after_listening">ŲØŲ¹ŲÆ Ų§Ų² ŲŖŁ…Ų§Ł… Ų“ŲÆŁ†</string>
<plurals name="episode_cleanup_days_after_listening">
+ <item quantity="one">%dŲ±ŁˆŲ² ŲØŲ¹ŲÆ Ų§Ų² Ų§ŲŖŁ…Ų§Ł…</item>
<item quantity="other">%dŲ±ŁˆŲ² ŲØŲ¹ŲÆ Ų§Ų² Ų§ŲŖŁ…Ų§Ł…</item>
</plurals>
<!--'Add Feed' Activity labels-->
@@ -101,46 +106,45 @@
<string name="browse_gpoddernet_label">Browse gpodder.net</string>
<!--Actions on feeds-->
<string name="mark_all_read_label">Ų¹Ł„Ų§Ł…ŲŖ ŚÆŲ°Ų§Ų±ŪŒ Ł‡Ł…Ł‡ ŲØŁ‡ Ų¹Ł†ŁˆŲ§Ł† Ł¾Ų®Ų“ Ų“ŲÆŁ‡</string>
- <string name="mark_all_read_msg">Ł‡Ł…Ł‡ Ł‚Ų³Ł…ŲŖ Ł‡Ų§ ŲØŁ‡ Ų¹Ł†ŁˆŲ§Ł† Ł¾Ų®Ų“ Ų“ŲÆŁ‡ Ų¹Ł„Ų§Ł…ŲŖ ŚÆŲ°Ų§Ų±ŪŒ Ų“ŲÆ.</string>
- <string name="mark_all_read_confirmation_msg">Ł„Ų·ŁŲ§ ŲŖŲ£ŪŒŪŒŲÆ Ś©Ł†ŪŒŲÆ Ś©Ł‡ Ł…ŪŒŲ®ŁˆŲ§Ł‡ŪŒŲÆ ŲŖŁ…Ų§Ł… Ł‚Ų³Ł…ŲŖŁ‡Ų§ Ų±Ų§ ŲØŲ¹Ł†ŁˆŲ§Ł† Ł¾Ų®Ų“ Ų“ŲÆŁ‡ Ų¹Ł„Ų§Ł…ŲŖ ŲØŲ²Ł†ŪŒŲÆ.</string>
- <string name="mark_all_read_feed_confirmation_msg">Ł„Ų·ŁŲ§ ŲŖŲ£ŪŒŪŒŲÆ Ś©Ł†ŪŒŲÆ Ś©Ł‡ Ł…ŪŒŲ®ŁˆŲ§Ł‡ŪŒŲÆ ŲŖŁ…Ų§Ł… Ł‚Ų³Ł…ŲŖŁ‡Ų§ŪŒ Ų§ŪŒŁ† Ų®ŁˆŲ±Ų§Ś© Ų±Ų§ ŲØŲ¹Ł†ŁˆŲ§Ł† Ł¾Ų®Ų“ Ų“ŲÆŁ‡ Ų¹Ł„Ų§Ł…ŲŖ ŲØŲ²Ł†ŪŒŲÆ.</string>
+ <string name="mark_all_read_msg">Ł‡Ł…Ł‡ Ł‚Ų³Ł…ŲŖā€ŒŁ‡Ų§ ŲØŁ‡ Ų¹Ł†ŁˆŲ§Ł† Ł¾Ų®Ų“ Ų“ŲÆŁ‡ Ų¹Ł„Ų§Ł…ŲŖā€ŒŚÆŲ°Ų§Ų±ŪŒ Ų“ŲÆ</string>
+ <string name="mark_all_read_confirmation_msg">Ł„Ų·ŁŲ§ ŲŖŲ£ŪŒŪŒŲÆ Ś©Ł†ŪŒŲÆ Ś©Ł‡ Ł…ŪŒā€ŒŲ®ŁˆŲ§Ł‡ŪŒŲÆ ŲŖŁ…Ų§Ł… Ł‚Ų³Ł…ŲŖā€ŒŁ‡Ų§ Ų±Ų§ ŲØŁ‡ Ų¹Ł†ŁˆŲ§Ł† Ł¾Ų®Ų“ Ų“ŲÆŁ‡ Ų¹Ł„Ų§Ł…ŲŖ ŲØŲ²Ł†ŪŒŲÆ.</string>
<string name="mark_all_seen_label">Ų¹Ł„Ų§Ł…ŲŖ ŚÆŲ°Ų§Ų±ŪŒ Ł‡Ł…Ł‡ ŲØŁ‡ Ų¹Ł†ŁˆŲ§Ł† ŲÆŪŒŲÆŁ‡ Ų“ŲÆŁ‡</string>
- <string name="mark_all_seen_msg">Ł‡Ł…Ł‡ Ł‚Ų³Ł…ŲŖ Ł‡Ų§ ŲØŲ¹Ł†ŁˆŲ§Ł† ŲÆŪŒŲÆŁ‡ Ų“ŲÆŁ‡ Ų¹Ł„Ų§Ł…ŲŖ ŚÆŲ°Ų§Ų±ŪŒ Ų“ŲÆ.</string>
- <string name="mark_all_seen_confirmation_msg">Ł„Ų·ŁŲ§ ŲŖŲ£ŪŒŪŒŲÆ Ś©Ł†ŪŒŲÆ Ś©Ł‡ Ł…ŪŒŲ®ŁˆŲ§Ł‡ŪŒŲÆ ŲŖŁ…Ų§Ł… Ł‚Ų³Ł…ŲŖŁ‡Ų§ Ų±Ų§ ŲØŲ¹Ł†ŁˆŲ§Ł† ŲÆŪŒŲÆŁ‡ Ų“ŲÆŁ‡ Ų¹Ł„Ų§Ł…ŲŖ ŲØŲ²Ł†ŪŒŲÆ.</string>
+ <string name="mark_all_seen_confirmation_msg">Ł„Ų·ŁŲ§ ŲŖŲ£ŪŒŪŒŲÆ Ś©Ł†ŪŒŲÆ Ś©Ł‡ Ł…ŪŒā€ŒŲ®ŁˆŲ§Ł‡ŪŒŲÆ ŲŖŁ…Ų§Ł… Ł‚Ų³Ł…ŲŖā€ŒŁ‡Ų§ Ų±Ų§ ŲØŁ‡ Ų¹Ł†ŁˆŲ§Ł† ŲÆŪŒŲÆŁ‡ Ų“ŲÆŁ‡ Ų¹Ł„Ų§Ł…ŲŖ ŲØŲ²Ł†ŪŒŲÆ.</string>
<string name="show_info_label">Ł†Ł…Ų§ŪŒŲ“ Ų§Ų·Ł„Ų§Ų¹Ų§ŲŖ</string>
- <string name="rename_feed_label">Ā ŲŖŲŗŪŒŪŒŲ± Ł†Ų§Ł… Ł¾Ų§ŲÆŚ©Ų³ŲŖ</string>
- <string name="remove_feed_label">Ų­Ų°Ł Ł¾Ų§ŲÆŚ©Ų³ŲŖ</string>
+ <string name="show_feed_settings_label">Ł†Ł…Ų§ŪŒŲ“ ŲŖŁ†ŲøŪŒŁ…Ų§ŲŖ Ł¾Ų§ŲÆŚ©Ų³ŲŖ</string>
+ <string name="feed_info_label">Ų§Ų·Ł„Ų§Ų¹Ų§ŲŖ Ł¾Ų§ŲÆŚ©Ų³ŲŖ</string>
+ <string name="feed_settings_label">ŲŖŁ†ŲøŪŒŁ…Ų§ŲŖ Ł¾Ų§ŲÆŚ©Ų³ŲŖ</string>
+ <string name="rename_feed_label">ŲŖŲŗŪŒŪŒŲ± Ł†Ų§Ł… Ł¾Ų§ŲÆŚ©Ų³ŲŖ</string>
+ <string name="remove_feed_label">Ł¾Ų§Ś©ā€ŒŚ©Ų±ŲÆŁ† Ł¾Ų§ŲÆŚ©Ų³ŲŖ</string>
<string name="share_label">Ų§Ų“ŲŖŲ±Ų§Ś© ŚÆŲ°Ų§Ų±ŪŒ...</string>
- <string name="share_link_label">Ų§Ų“ŲŖŲ±Ų§Ś© ŚÆŲ°Ų§Ų±ŪŒ Ł„ŪŒŁ†Ś©</string>
+ <string name="share_link_label">Ł‡Ł…ā€ŒŲ±Ų³Ų§Ł†ŪŒ Ł†Ų“Ų§Ł†ŪŒ Ł¾Ų§ŲÆŚ©Ų³ŲŖ</string>
<string name="share_file_label">Ų§Ų“ŲŖŲ±Ų§Ś© ŚÆŲ°Ų§Ų±ŪŒ ŁŲ§ŪŒŁ„</string>
- <string name="share_link_with_position_label">Ų§Ų“ŲŖŲ±Ų§Ś© ŚÆŲ°Ų§Ų±ŪŒ Ł„ŪŒŁ†Ś© ŲØŲ§ Ł…ŁˆŁ‚Ų¹ŪŒŲŖ Ł¾Ų®Ų“</string>
<string name="share_feed_url_label">Ų§Ų“ŲŖŲ±Ų§Ś© ŚÆŲ°Ų§Ų±ŪŒ URL Ų®ŁˆŲ±Ų§Ś© </string>
- <string name="share_item_url_label">Ų§Ų“ŲŖŲ±Ų§Ś© ŚÆŲ°Ų§Ų±ŪŒ ŁŲ§ŪŒŁ„ URL Ł‚Ų³Ł…ŲŖ</string>
- <string name="share_item_url_with_position_label">Ų§Ų“ŲŖŲ±Ų§Ś© ŚÆŲ°Ų§Ų±ŪŒ ŁŲ§ŪŒŁ„ URL Ł‚Ų³Ł…ŲŖ ŲØŲ§ Ł…ŁˆŁ‚Ų¹ŪŒŲŖ Ł¾Ų®Ų“</string>
- <string name="feed_delete_confirmation_msg">Ł„Ų·ŁŲ§ ŲŖŲ£ŪŒŪŒŲÆ Ś©Ł†ŪŒŲÆ Ś©Ł‡ Ł…ŪŒŲ®ŁˆŲ§Ł‡ŪŒŲÆ Ų®ŁˆŲ±Ų§Ś© \"%1$s\" Łˆ ŲŖŁ…Ų§Ł… Ł‚Ų³Ł…ŲŖŁ‡Ų§ŪŒ Ų¢Ł† Ś©Ł‡ ŲÆŲ§Ł†Ł„ŁˆŲÆ Ś©Ų±ŲÆŁ‡ Ų§ŪŒŲÆ Ų±Ų§ Ų­Ų°Ł Ś©Ł†ŪŒŲÆ.</string>
- <string name="feed_remover_msg">Ų­Ų°Ł Ų®ŁˆŲ±Ų§Ś©</string>
- <string name="load_complete_feed">ŲŖŲ§Ų²Ł‡ Ś©Ų±ŲÆŁ† Ś©Ų§Ł…Ł„ Ų®ŁˆŲ±Ų§Ś©</string>
- <string name="hide_episodes_title">Ł¾Ł†Ł‡Ų§Ł† Ś©Ų±ŲÆŁ† Ł‚Ų³Ł…ŲŖ Ł‡Ų§</string>
- <string name="episode_actions">ŲÆŲ±Ų®ŁˆŲ§Ų³ŲŖ Ų§Ų¹Ł…Ų§Ł„</string>
+ <string name="share_item_url_label">Ł‡Ł…ā€ŒŲ±Ų³Ų§Ł†ŪŒ Ł†Ų“Ų§Ł†ŪŒ Ł¾Ų±ŁˆŁ†ŲÆŁ‡ Ų±Ų³Ų§Ł†Ł‡</string>
+ <string name="feed_remover_msg">ŲÆŲ± Ų­Ų§Ł„ Ł¾Ų§Ś©ā€ŒŚ©Ų±ŲÆŁ† Ł¾Ų§ŲÆŚ©Ų³ŲŖ</string>
+ <string name="load_complete_feed">ŲŖŲ§Ų²Ł‡ā€ŒŲ³Ų§Ų²ŪŒ ŲŖŁ…Ų§Ł… Ł¾Ų§ŲÆŚ©Ų³ŲŖ</string>
+ <string name="hide_episodes_title">Ł¾Ł†Ł‡Ų§Ł† Ś©Ų±ŲÆŁ† Ł‚Ų³Ł…ŲŖā€ŒŁ‡Ų§</string>
+ <string name="batch_edit">ŁˆŪŒŲ±Ų§ŪŒŲ“ ŚÆŲ±ŁˆŁ‡ŪŒ</string>
<string name="hide_unplayed_episodes_label">Ł¾Ų®Ų“ Ł†Ų“ŲÆŁ‡</string>
<string name="hide_paused_episodes_label">Ł…ŲŖŁˆŁ‚Ł Ų“ŲÆ</string>
<string name="hide_played_episodes_label">Ł¾Ų®Ų“ Ų“ŲÆ</string>
<string name="hide_queued_episodes_label">ŲÆŲ± ŲµŁ</string>
<string name="hide_not_queued_episodes_label">Ų®Ų§Ų±Ų¬ Ų§Ų² ŲµŁ</string>
- <string name="hide_downloaded_episodes_label">ŲÆŲ§Ł†Ł„ŁˆŲÆ Ų“ŲÆŁ‡</string>
- <string name="hide_not_downloaded_episodes_label">ŲÆŲ§Ł†Ł„ŁˆŲÆ Ł†Ų“ŲÆŁ‡</string>
+ <string name="hide_downloaded_episodes_label">ŲØŲ§Ų±ŚÆŪŒŲ±ŪŒ Ų“ŲÆŁ‡</string>
+ <string name="hide_not_downloaded_episodes_label">ŲØŲ§Ų±ŚÆŪŒŲ±ŪŒ Ł†Ų“ŲÆŁ‡</string>
<string name="hide_has_media_label">ŲÆŲ§Ų±Ų§ŪŒ Ų±Ų³Ų§Ł†Ł‡</string>
<string name="filtered_label">ŁŪŒŁ„ŲŖŲ± Ų“ŲÆŁ‡</string>
<string name="open_podcast">ŲØŲ§Ų² Ś©Ų±ŲÆŁ† Ł¾Ų§ŲÆŚ©Ų³ŲŖ</string>
<!--actions on feeditems-->
- <string name="download_label">ŲÆŲ§Ł†Ł„ŁˆŲÆ</string>
+ <string name="download_label">ŲØŲ§Ų±ŚÆŪŒŲ±ŪŒ</string>
<string name="play_label">Ł¾Ų®Ų“</string>
<string name="pause_label">Ł…Ś©Ų«</string>
<string name="stop_label">ŲŖŁˆŁ‚Ł</string>
+ <string name="stream_label">Ų¬Ų±ŪŒŲ§Ł†</string>
<string name="remove_label">Ų­Ų°Ł</string>
<string name="delete_label">Ų­Ų°Ł</string>
<string name="delete_failed">ŁŲ§ŪŒŁ„ Ų­Ų°Ł Ł†Ų“ŲÆ.! Ų±Ų§Ł‡ Ų§Ł†ŲÆŲ§Ų²ŪŒ Ł…Ų¬ŲÆŲÆ ŲÆŲ³ŲŖŚÆŲ§Ł‡ Ł…ŪŒ ŲŖŁˆŲ§Ł†ŲÆ Ś©Ł…Ś© Ś©Ł†ŲÆ.</string>
- <string name="remove_episode_lable">Ų­Ų°Ł Ł‚Ų³Ł…ŲŖ</string>
+ <string name="remove_episode_lable">Ł¾Ų§Ś© Ś©Ų±ŲÆŁ† Ł‚Ų³Ł…ŲŖ</string>
<string name="marked_as_seen_label">Ų¹Ł„Ų§Ł…ŲŖ ŚÆŲ°Ų§Ų±ŪŒ ŲØŁ‡ Ų¹Ł†ŁˆŲ§Ł† ŲÆŪŒŲÆŁ‡ Ų“ŲÆŁ‡</string>
<string name="mark_read_label">Ų¹Ł„Ų§Ł…ŲŖ ŚÆŲ°Ų§Ų±ŪŒ ŲØŁ‡ Ų¹Ł†ŁˆŲ§Ł† Ł¾Ų®Ų“ Ų“ŲÆŁ‡</string>
<string name="marked_as_read_label">ŲØŲ¹Ł†ŁˆŲ§Ł† Ł¾Ų®Ų“ Ų“ŲÆŁ‡ Ų¹Ł„Ų§Ł…ŲŖ ŚÆŲ°Ų§Ų±ŪŒ Ų“ŲÆ</string>
@@ -152,16 +156,19 @@
<string name="added_to_favorites">ŲØŁ‡ Ł…ŁˆŲ§Ų±ŲÆ ŲÆŁ„Ų®ŁˆŲ§Ł‡ Ų§Ų¶Ų§ŁŁ‡ Ų“ŲÆ.</string>
<string name="remove_from_favorite_label">Ų§Ų² Ų¹Ł„Ų§Ł‚Ł‡ Ł…Ł†ŲÆŪŒ Ł‡Ų§ Ų­Ų°Ł Ų“ŁˆŲÆ</string>
<string name="removed_from_favorites">Ų§Ų² Ł…ŁˆŲ§Ų±ŲÆ ŲÆŁ„Ų®ŁˆŲ§Ł‡ Ų­Ų°Ł Ų“ŲÆ.</string>
+ <string name="visit_website_label">Ł…Ų“Ų§Ł‡ŲÆŁ‡ ŁˆŲØā€ŒŲ³Ų§ŪŒŲŖ</string>
<string name="skip_episode_label">Ų±ŲÆ Ų“ŲÆŁ† Ų§Ų² Ł‚Ų³Ł…ŲŖ</string>
- <string name="activate_auto_download">ŁŲ¹Ų§Ł„ Ś©Ų±ŲÆŁ† ŲÆŲ§Ł†Ł„ŁˆŲÆ Ų®ŁˆŲÆŚ©Ų§Ų±</string>
- <string name="deactivate_auto_download">ŲŗŪŒŲ± ŁŲ¹Ų§Ł„ Ś©Ų±ŲÆŁ† ŲÆŲ§Ł†Ł„ŁˆŲÆ Ų®ŁˆŲÆŚ©Ų§Ų±</string>
+ <string name="activate_auto_download">ŁŲ¹Ų§Ł„ Ś©Ų±ŲÆŁ† ŲØŲ§Ų±ŚÆŪŒŲ±ŪŒ Ų®ŁˆŲÆŚ©Ų§Ų±</string>
+ <string name="deactivate_auto_download">ŲŗŪŒŲ± ŁŲ¹Ų§Ł„ Ś©Ų±ŲÆŁ† ŲØŲ§Ų±ŚÆŪŒŲ±ŪŒ Ų®ŁˆŲÆŚ©Ų§Ų±</string>
<string name="reset_position">ŲŖŁ†ŲøŪŒŁ… Ł…Ų¬ŲÆŲÆ Ł…ŁˆŁ‚Ų¹ŪŒŲŖ Ł¾Ų®Ų“</string>
<string name="removed_item">Ł…ŁˆŲ±ŲÆ Ų­Ų°Ł Ų“ŲÆŁ‡ Ų§Ų³ŲŖ</string>
<!--Download messages and labels-->
<string name="download_successful">Ł…ŁˆŁŁ‚ŪŒŲŖ Ų¢Ł…ŪŒŲ²</string>
<string name="download_failed">Ł†Ų§Ł…ŁˆŁŁ‚</string>
- <string name="download_pending">ŲÆŲ§Ł†Ł„ŁˆŲÆ ŲÆŲ± Ų­Ų§Ł„ Ų§Ł†ŲŖŲøŲ§Ų±</string>
- <string name="download_running">ŲÆŲ§Ł†Ł„ŁˆŲÆ ŲÆŲ± Ų­Ų§Ł„ Ų§Ų¬Ų±Ų§</string>
+ <string name="download_pending">ŲØŲ§Ų±ŚÆŪŒŲ±ŪŒ Ł…Ų¹ŁˆŁ‚</string>
+ <string name="download_running">ŲØŲ§Ų±ŚÆŪŒŲ±ŪŒ ŲÆŲ± Ų­Ų§Ł„ Ų§Ų¬Ų±Ų§</string>
+ <string name="download_error_details">Ų¬Ų²Ų¦ŪŒŲ§ŲŖ</string>
+ <string name="download_error_details_message">%1$s\n\nŁ†Ų“Ų§Ł†ŪŒ Ł¾Ų±ŁˆŁ†ŲÆŁ‡:\n%2$s</string>
<string name="download_error_device_not_found">Ų­Ų§ŁŲøŁ‡ Ų®Ų§Ų±Ų¬ŪŒ ŪŒŲ§ŁŲŖ Ł†Ų“ŲÆ.</string>
<string name="download_error_insufficient_space">ŁŲ¶Ų§ŪŒ Ł†Ų§Ś©Ų§ŁŪŒ</string>
<string name="download_error_file_error">Ų®Ų·Ų§ŪŒ ŁŲ§ŪŒŁ„</string>
@@ -171,24 +178,121 @@
<string name="download_error_connection_error">Ų®Ų·Ų§ŪŒ Ų§ŲŖŲµŲ§Ł„</string>
<string name="download_error_unknown_host">Ł…ŪŒŲ²ŲØŲ§Ł† Ł†Ų§Ų“Ł†Ų§Ų³</string>
<string name="download_error_unauthorized">Ų®Ų·Ų§ŪŒ Ų§Ų­Ų±Ų§Ų² Ł‡ŁˆŪŒŲŖ</string>
- <string name="cancel_all_downloads_label">Ł„ŲŗŁˆ Ł‡Ł…Ł‡ ŲÆŲ§Ł†Ł„ŁˆŲÆŁ‡Ų§</string>
- <string name="download_canceled_msg">ŲÆŲ§Ł†Ł„ŁˆŲÆ Ł„ŲŗŁˆ Ų“ŲÆ.</string>
+ <string name="download_error_file_type_type">Ų®Ų·Ų§ŪŒ Ł†ŁˆŲ¹ Ł¾Ų±ŁˆŁ†ŲÆŁ‡</string>
+ <string name="download_error_forbidden">Ł…Ł…Ł†ŁˆŲ¹</string>
+ <string name="cancel_all_downloads_label">Ł„ŲŗŁˆ Ł‡Ł…Ł‡ ŲØŲ§Ų±ŚÆŪŒŲ±ŪŒā€ŒŁ‡Ų§</string>
+ <string name="download_canceled_msg">ŲØŲ§Ų±ŚÆŪŒŲ±ŪŒ Ł„ŲŗŁˆ Ų“ŲÆ.</string>
<string name="download_canceled_autodownload_enabled_msg">Ā ŲÆŲ§Ł†Ł„ŁˆŲÆ Ł„ŲŗŁˆ \n ŲŗŪŒŲ±ŁŲ¹Ų§Ł„ Ś©Ų±ŲÆŁ† <i> ŲÆŲ§Ł†Ł„ŁˆŲÆ Ų®ŁˆŲÆŚ©Ų§Ų± </i> ŲØŲ±Ų§ŪŒ Ų§ŪŒŁ† Ł…ŁˆŲ±ŲÆ </string>
+ <string name="download_report_title">ŲØŲ§Ų±ŚÆŪŒŲ±ŪŒā€ŒŁ‡Ų§ ŲØŲ§ Ų®Ų·Ų§(Ł‡Ų§) Ś©Ų§Ł…Ł„ Ų“ŲÆ</string>
+ <string name="download_report_content_title">ŚÆŲ²Ų§Ų±Ų“ ŲØŲ§Ų±ŚÆŪŒŲ±ŪŒ</string>
+ <string name="download_error_io_error">Ų®Ų·Ų§ŪŒ ŁˆŲ±ŁˆŲÆŪŒ/Ų®Ų±ŁˆŲ¬ŪŒ</string>
+ <string name="download_error_request_error">Ų®Ų·Ų§ŪŒ ŲÆŲ±Ų®ŁˆŲ§Ų³ŲŖ</string>
+ <string name="download_error_db_access">Ų®Ų·Ų§ŪŒ ŲÆŲ³ŲŖŲ±Ų³ŪŒ ŲØŁ‡ Ł¾Ų§ŪŒŚÆŲ§Ł‡ā€ŒŲÆŲ§ŲÆŁ‡</string>
+ <string name="downloads_processing">Ł¾Ų±ŲÆŲ§Ų²Ų“ ŲØŲ§Ų±ŚÆŪŒŲ±ŪŒā€ŒŁ‡Ų§</string>
+ <string name="download_notification_title">ŲØŲ§Ų±ŚÆŪŒŲ±ŪŒ ŲÆŲ§ŲÆŁ‡ Ł¾Ų§ŲÆŚ©Ų³ŲŖ</string>
+ <string name="download_log_title_unknown">Ų¹Ł†ŁˆŲ§Ł† Ł†Ų§Ų“Ł†Ų§Ų®ŲŖŁ‡</string>
<string name="download_type_feed">Ų®ŁˆŲ±Ų§Ś©</string>
+ <string name="download_type_media">Ł¾Ų±ŁˆŁ†ŲÆŁ‡ Ų±Ų³Ų§Ł†Ł‡</string>
+ <string name="download_type_image">ŲŖŲµŁˆŪŒŲ±</string>
+ <string name="confirm_mobile_download_dialog_enable_temporarily">Ų§Ų¬Ų§Ų²Ł‡ Ł…ŁˆŁ‚ŲŖ</string>
<!--Mediaplayer messages-->
+ <string name="player_error_msg">Ų®Ų·Ų§!</string>
+ <string name="player_stopped_msg">Ų±Ų³Ų§Ł†Ł‡ā€ŒŲ§ŪŒ ŲÆŲ± Ų­Ų§Ł„ Ł¾Ų®Ų“ Ł†ŪŒŲ³ŲŖ</string>
+ <string name="player_preparing_msg">Ų¢Ł…Ų§ŲÆŁ‡ā€ŒŲ³Ų§Ų²ŪŒ</string>
+ <string name="player_ready_msg">Ų¢Ł…Ų§ŲÆŁ‡</string>
+ <string name="playback_error_unknown">Ų®Ų·Ų§ŪŒ Ł†Ų§Ų“Ł†Ų§Ų®ŲŖŁ‡</string>
+ <string name="no_media_playing_label">Ų±Ų³Ų§Ł†Ł‡ā€ŒŲ§ŪŒ ŲÆŲ± Ų­Ų§Ł„ Ł¾Ų®Ų“ Ł†ŪŒŲ³ŲŖ</string>
+ <string name="player_go_to_picture_in_picture">Ų­Ų§Ł„ŲŖ ŲŖŲµŁˆŪŒŲ± ŲÆŲ± ŲŖŲµŁˆŪŒŲ±</string>
+ <string name="playbackservice_notification_title">ŲÆŲ± Ų­Ų§Ł„ Ł¾Ų®Ų“ Ł¾Ų§ŲÆŚ©Ų³ŲŖ</string>
<!--Queue operations-->
+ <string name="clear_queue_label">Ł¾Ų§Ś©ā€ŒŚ©Ų±ŲÆŁ† ŲµŁ</string>
+ <string name="sort">Ł…Ų±ŲŖŲØā€ŒŲ³Ų§Ų²ŪŒ</string>
+ <string name="date">ŲŖŲ§Ų±ŪŒŲ®</string>
+ <string name="duration">Ł…ŲÆŲŖ</string>
+ <string name="episode_title">Ų¹Ł†ŁˆŲ§Ł† Ł‚Ų³Ł…ŲŖ</string>
+ <string name="feed_title">Ų¹Ł†ŁˆŲ§Ł† Ł¾Ų§ŲÆŚ©Ų³ŲŖ</string>
+ <string name="random">ŲŖŲµŲ§ŲÆŁŪŒ</string>
<!--Flattr-->
+ <string name="return_home_label">ŲØŲ§Ų²ŚÆŲ“ŲŖ ŲØŁ‡ Ų®Ų§Ł†Ł‡</string>
<!--Flattr-->
<!--Variable Speed-->
<!--Empty list labels-->
<!--Preferences-->
+ <string name="storage_pref">Ų­Ų§ŁŲøŁ‡</string>
+ <string name="project_pref">Ł¾Ų±ŁˆŚ˜Ł‡</string>
+ <string name="other_pref">ŲÆŪŒŚÆŲ±</string>
+ <string name="about_pref">ŲÆŲ±ŲØŲ§Ų±Ł‡</string>
+ <string name="queue_label">ŲµŁ</string>
+ <string name="download_pref_details">Ų¬Ų²Ų¦ŪŒŲ§ŲŖ</string>
+ <string name="import_export_pref">ŁˆŲ§Ų±ŲÆ/ŲµŲ§ŲÆŲ± Ś©Ų±ŲÆ</string>
+ <string name="appearance">Ł†Ł…Ų§ŪŒŲ“</string>
+ <string name="external_elements">Ų¹Ł†Ų§ŲµŲ± Ų®Ų§Ų±Ų¬ŪŒ</string>
+ <string name="buttons">ŲÆŚ©Ł…Ł‡ā€ŒŁ‡Ų§ŪŒ Ś©Ł†ŲŖŲ±Ł„ Ł¾Ų®Ų“</string>
+ <string name="media_player">Ł¾Ų®Ų“ā€ŒŚ©Ł†Ł†ŲÆŁ‡ Ų±Ų³Ų§Ł†Ł‡</string>
+ <string name="pref_auto_delete_title">Ų­Ų°Ł Ų®ŁˆŲÆŚ©Ų§Ų±</string>
+ <string name="playback_pref">Ł¾Ų®Ų“</string>
+ <string name="network_pref">Ų“ŲØŚ©Ł‡</string>
+ <string name="user_interface_label">Ų±Ų§ŲØŲ· Ś©Ų§Ų±ŲØŲ±ŪŒ</string>
+ <string name="pref_set_theme_title">Ų§Ł†ŲŖŲ®Ų§ŲØ Ł¾ŁˆŲ³ŲŖŁ‡</string>
+ <string name="pref_theme_title_light">Ų±ŁˆŲ“Ł†</string>
+ <string name="pref_theme_title_dark">ŲŖŲ§Ų±ŪŒŚ©</string>
+ <string name="pref_theme_title_trueblack">Ų³ŪŒŲ§Ł‡ (Ł…Ł†Ų§Ų³ŲØ AMOLED)</string>
+ <string name="pref_episode_cache_unlimited">Ł†Ų§Ł…Ų­ŲÆŁˆŲÆ</string>
+ <string name="pref_update_interval_hours_plural">Ų³Ų§Ų¹ŲŖ</string>
+ <string name="pref_update_interval_hours_singular">Ų³Ų§Ų¹ŲŖ</string>
+ <string name="pref_update_interval_hours_manual">ŲÆŲ³ŲŖŪŒ</string>
+ <string name="pref_gpodnet_authenticate_title">ŁˆŲ±ŁˆŲÆ</string>
+ <string name="pref_gpodnet_logout_title">Ų®Ų±ŁˆŲ¬</string>
+ <string name="pref_gpodnet_logout_toast">Ų®Ų±ŁˆŲ¬ Ł…ŁˆŁŁ‚ŪŒŲŖā€ŒŲ¢Ł…ŪŒŲ² ŲØŁˆŲÆ</string>
+ <string name="pref_gpodnet_setlogin_information_title">ŲŖŲŗŪŒŪŒŲ± Ų§Ų·Ł„Ų§Ų¹Ų§ŲŖ ŁˆŲ±ŁˆŲÆ</string>
+ <string name="pref_playback_speed_title">Ų³Ų±Ų¹ŲŖā€ŒŁ‡Ų§ŪŒ Ł¾Ų®Ų“</string>
+ <string name="pref_lockscreen_background_title">ŲŖŁ†ŲøŪŒŁ… Ł¾Ų³ā€ŒŲ²Ł…ŪŒŁ†Ł‡ ŲµŁŲ­Ł‡ Ł‚ŁŁ„</string>
+ <string name="pref_queueAddToFront_title">ŁŲ±Ų³ŲŖŲ§ŲÆŁ† ŲØŁ‡ Ų¬Ł„ŁˆŪŒ ŲµŁ</string>
+ <string name="pref_smart_mark_as_played_disabled">ŲŗŪŒŲ±ŁŲ¹Ų§Ł„</string>
+ <string name="crash_report_title">ŚÆŲ²Ų§Ų±Ų“ Ł…Ų“Ś©Ł„</string>
+ <string name="crash_report_sum">ŁŲ±Ų³ŲŖŲ§ŲÆŁ† ŚÆŲ²Ų§Ų±Ų“ Ų¢Ų®Ų±ŪŒŁ† Ł…Ų“Ś©Ł„ ŲØŲ§ Ų±Ų§ŪŒŲ§Ł†Ų§Ł…Ł‡</string>
+ <string name="send_email">ŁŲ±Ų³ŲŖŲ§ŲÆŁ† Ų±Ų§ŪŒŲ§Ł†Ų§Ł…Ł‡</string>
+ <string name="experimental_pref">Ų¢Ų²Ł…Ų§ŪŒŲ“ŪŒ</string>
+ <string name="pref_proxy_title">Ł¾Ų±ŁˆŚ©Ų³ŪŒ</string>
+ <string name="pref_proxy_sum">ŲŖŁ†ŲøŪŒŁ… Ł¾Ų±ŁˆŚ©Ų³ŪŒ Ų“ŲØŚ©Ł‡</string>
+ <string name="pref_faq">Ų³ŁˆŲ§Ł„Ų§ŲŖ Ł¾Ų±ŲŖŚ©Ų±Ų§Ų±</string>
+ <string name="pref_known_issues">Ł…Ų“Ś©Ł„Ų§ŲŖ Ų“Ł†Ų§Ų®ŲŖŁ‡ Ų“ŲÆŁ‡</string>
+ <string name="pref_no_browser_found">Ł…Ų±ŁˆŲ±ŚÆŲ± ŁˆŲØ Ł¾ŪŒŲÆŲ§ Ł†Ų“ŲÆ.</string>
+ <string name="pref_cast_title">Ł¾Ų“ŲŖŪŒŲØŲ§Ł†ŪŒ Ų§Ų² Ś©Ų±ŁˆŁ…ā€ŒŚ©Ų³ŲŖ</string>
+ <string name="pref_enqueue_downloaded_title">ŲÆŲ± ŲµŁ Ł†Ł‡Ų§ŲÆŁ† ŲØŲ§Ų±ŚÆŪŒŲ±ŪŒā€ŒŲ“ŲÆŁ‡ā€ŒŁ‡Ų§</string>
+ <string name="media_player_builtin">Ł¾Ų®Ų“ā€ŒŚ©Ł†Ł†ŲÆŁ‡ Ł¾ŪŒŲ“ā€ŒŁŲ±Ų¶ Ų§Ł†ŲÆŲ±ŁˆŪŒŲÆ</string>
+ <string name="stop_playback">ŲŖŁˆŁ‚Ł Ł¾Ų®Ų“</string>
+ <string name="continue_playback">Ų§ŲÆŲ§Ł…Ł‡ Ł¾Ų®Ų“ ŲµŲÆŲ§</string>
<!--Auto-Flattr dialog-->
<!--Search-->
+ <string name="search_hint">Ų¬Ų³ŲŖŲ¬Łˆ ŲØŲ±Ų§ŪŒ Ł‚Ų³Ł…ŲŖā€ŒŁ‡Ų§</string>
+ <string name="search_status_no_results">Ł†ŲŖŪŒŲ¬Ł‡ā€ŒŲ§ŪŒ ŪŒŲ§ŁŲŖ Ł†Ų“ŲÆ</string>
+ <string name="search_label">Ų¬Ų³ŲŖŲ¬Łˆ</string>
<!--OPML import and export-->
+ <string name="opml_directory_error">Ų®Ų·Ų§!</string>
+ <string name="select_all_label">Ų§Ł†ŲŖŲ®Ų§ŲØ Ł‡Ł…Ł‡</string>
+ <string name="deselect_all_label">Ų§Ł†ŲŖŲ®Ų§ŲØ Ł‡ŪŒŚ†</string>
+ <string name="select_options_label">Ų§Ł†ŲŖŲ®Ų§ŲØ...</string>
<!--Sleep timer-->
+ <string name="time_seconds">Ų«Ų§Ł†ŪŒŁ‡</string>
+ <string name="time_minutes">ŲÆŁ‚ŪŒŁ‚Ł‡</string>
+ <string name="time_hours">Ų³Ų§Ų¹ŲŖ</string>
<!--gpodder.net-->
+ <string name="gpodnetsync_pref_report_successful">Ł…ŁˆŁŁ‚</string>
+ <string name="gpodnetsync_pref_report_failed">Ł†Ų§Ł…ŁˆŁŁ‚</string>
<!--Directory chooser-->
+ <string name="selected_folder_label">Ł¾ŁˆŲ“Ł‡ Ų§Ł†ŲŖŲ®Ų§ŲØ Ų“ŲÆŁ‡:</string>
+ <string name="create_folder_label">Ų³Ų§Ų®ŲŖ Ł¾ŁˆŲ“Ł‡</string>
+ <string name="choose_data_directory">Ų§Ł†ŲŖŲ®Ų§ŲØ Ł¾ŁˆŲ“Ł‡ ŲÆŲ§ŲÆŁ‡</string>
+ <string name="create_folder_success">Ų³Ų§Ų®ŲŖ Ł¾ŁˆŲ“Ł‡ Ų¬ŲÆŪŒŲÆ</string>
+ <string name="create_folder_error_already_exists">Ų§ŪŒŁ† Ł¾ŁˆŲ“Ł‡ Ų§Ų² Ł‚ŲØŁ„ Ł…ŁˆŲ¬ŁˆŲÆ Ų§Ų³ŲŖ</string>
+ <string name="create_folder_error">Ł†Ų§ŲŖŁˆŲ§Ł†ŪŒ ŲÆŲ± Ų³Ų§Ų®ŲŖ Ł¾ŁˆŲ“Ł‡</string>
+ <string name="folder_not_empty_dialog_title">Ų§ŪŒŁ† Ł¾ŁˆŲ“Ł‡ŲŒ Ų®Ų§Ł„ŪŒ Ł†ŪŒŲ³ŲŖ</string>
+ <string name="set_to_default_folder">Ų§Ł†ŲŖŲ®Ų§ŲØ Ł¾ŁˆŲ“Ł‡ Ł¾ŪŒŲ“ā€ŒŁŲ±Ų¶</string>
<!--Online feed view-->
+ <string name="subscribe_label">Ų§Ų“ŲŖŲ±Ų§Ś©</string>
+ <string name="subscribed_label">Ł…Ų“ŲŖŲ±Ś©ā€ŒŲ“ŲÆŁ‡</string>
+ <string name="downloading_label">ŲÆŲ±Ų­Ų§Ł„ ŲØŲ§Ų±ŚÆŪŒŲ±ŪŒ...</string>
<!--Content descriptions for image buttons-->
<!--Feed information screen-->
<!--Progress information-->
@@ -201,4 +305,5 @@
<!--Database import/export-->
<!--Casting-->
<!--<string name="cast_failed_to_connect">Could not connect to the device</string>-->
+ <!--Notification channels-->
</resources>
diff --git a/core/src/main/res/values-fi/strings.xml b/core/src/main/res/values-fi/strings.xml
index acf3abe75..2d9481b84 100644
--- a/core/src/main/res/values-fi/strings.xml
+++ b/core/src/main/res/values-fi/strings.xml
@@ -36,4 +36,5 @@
<!--Database import/export-->
<!--Casting-->
<!--<string name="cast_failed_to_connect">Could not connect to the device</string>-->
+ <!--Notification channels-->
</resources>
diff --git a/core/src/main/res/values-fr/strings.xml b/core/src/main/res/values-fr/strings.xml
index dc4e356bf..11c41d415 100644
--- a/core/src/main/res/values-fr/strings.xml
+++ b/core/src/main/res/values-fr/strings.xml
@@ -1,11 +1,13 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources xmlns:tools="http://schemas.android.com/tools">
<!--Activitiy and fragment titles-->
+ <string name="feed_update_receiver_name">Mettre Ć  jour les abonnements</string>
<string name="feeds_label">Flux</string>
<string name="statistics_label">Statistiques</string>
<string name="add_feed_label">Ajouter un podcast</string>
- <string name="episodes_label">Ɖpisodes</string>
+ <string name="episodes_label">Episodes</string>
<string name="all_episodes_short_label">Tout</string>
+ <string name="new_episodes_label">Nouveaux</string>
<string name="favorite_episodes_label">Favoris</string>
<string name="new_label">Nouveau</string>
<string name="settings_label">PrƩfƩrences</string>
@@ -18,10 +20,12 @@
<string name="cancel_download_label">Annuler les tƩlƩchargements</string>
<string name="playback_history_label">Journal de lecture</string>
<string name="gpodnet_main_label">gpodder.net</string>
+ <string name="gpodnet_summary">Synchroniser avec d\'autres appareils</string>
<string name="gpodnet_auth_label">Identifiants gpodder.net</string>
<string name="free_space_label">%1$s d\'espace libre</string>
<string name="episode_cache_full_title">L\'emplacement pour stocker les Ć©pisodes est plein</string>
<string name="episode_cache_full_message">Le nombre maximal d\'Ć©pisodes tĆ©lĆ©chargĆ©s a Ć©tĆ© atteint. Vous pouvez changer ce nombre dans les paramĆØtres.</string>
+ <string name="synchronizing">Synchronisation...</string>
<!--Statistics fragment-->
<string name="total_time_listened_to_podcasts">Temps d\'Ć©coute total</string>
<string name="statistics_details_dialog">%1$d Ʃpisodes sur %2$d commencƩs.\n\nLu %3$s sur %4$s.</string>
@@ -44,9 +48,9 @@
<string name="drawer_feed_counter_none">Aucun</string>
<!--Webview actions-->
<string name="open_in_browser_label">Ouvrir dans le navigateur</string>
- <string name="copy_url_label">Copier l\'URL</string>
- <string name="share_url_label">Partager l\'URL</string>
- <string name="copied_url_msg">URL copiƩe dans le presse-papier</string>
+ <string name="copy_url_label">Copier le lien</string>
+ <string name="share_url_label">Partager le lien</string>
+ <string name="copied_url_msg">Lien copiƩ dans le presse-papier</string>
<string name="go_to_position_label">Aller Ć  cette position</string>
<!--Playback history-->
<string name="clear_history_label">Effacer le journal</string>
@@ -56,13 +60,14 @@
<string name="yes">Oui</string>
<string name="no">Non</string>
<string name="reset">RĆ©initialiser</string>
- <string name="author_label">Auteur</string>
+ <string name="author_label">Auteur(s)</string>
<string name="language_label">Langue</string>
- <string name="url_label">URL</string>
+ <string name="url_label">Lien</string>
<string name="podcast_settings_label">PrƩfƩrences</string>
<string name="cover_label">Image</string>
<string name="error_label">Erreur</string>
<string name="error_msg_prefix">Une erreur a eu lieu :</string>
+ <string name="needs_storage_permission">L\'autorisation d\'utiliser le stockage est requis pour cette opƩration</string>
<string name="refresh_label">RafraƮchir</string>
<string name="external_storage_error_msg">Aucun stockage externe n\'est disponible. Merci de connecter un volume de stockage externe pour que l\'application puisse fonctionner correctement.</string>
<string name="chapters_label">Chapitres</string>
@@ -83,7 +88,7 @@
<string name="auto_download_apply_to_items_message">Le nouveau paramĆØtre <i>TĆ©lĆ©chargement Automatique</i> sera automatiquement appliquĆ© sur chaque nouvel Ć©pisode.\nVoulez-vous faire de mĆŖme avec les Ć©pisodes prĆ©cĆ©dents ?</string>
<string name="auto_delete_label">Suppression automatique de l\'Ć©pisode</string>
<string name="parallel_downloads_suffix">\u0020tĆ©lĆ©chargements parallĆØles</string>
- <string name="feed_auto_download_global">Global dƩfaut</string>
+ <string name="feed_auto_download_global">Option par dƩfaut</string>
<string name="feed_auto_download_always">Toujours</string>
<string name="feed_auto_download_never">Jamais</string>
<string name="send_label">Envoyer...</string>
@@ -95,9 +100,9 @@
<item quantity="other">%d jours aprĆØs avoir Ć©tĆ© Ć©coutĆ©</item>
</plurals>
<!--'Add Feed' Activity labels-->
- <string name="feedurl_label">URL du flux</string>
- <string name="etxtFeedurlHint">URL du flux</string>
- <string name="txtvfeedurl_label">Ajouter un podcast par son URL</string>
+ <string name="feedurl_label">Lien du flux</string>
+ <string name="etxtFeedurlHint">www.example.com/feed</string>
+ <string name="txtvfeedurl_label">Ajouter un podcast Ć  partir de son lien</string>
<string name="podcastdirectories_label">Trouver le podcast dans la bibliothĆØque</string>
<string name="podcastdirectories_descr">Pour de nouveaux podcasts vous pouvez chercher iTunes ou fyyd ou parcourir gpodder.net par nom, catƩgorie ou popularitƩ.</string>
<string name="browse_gpoddernet_label">Chercher sur gpodder.net</string>
@@ -105,33 +110,37 @@
<string name="mark_all_read_label">Marquer tous les Ć©pisodes comme lus</string>
<string name="mark_all_read_msg">Tous les Ʃpisodes ont ƩtƩ marquƩs comme lus</string>
<string name="mark_all_read_confirmation_msg">Confirmer le marquage de tous les Ć©pisode comme lus</string>
- <string name="mark_all_read_feed_confirmation_msg">Confirmer le marquage de tous les Ć©pisode de ce flux comme lus</string>
+ <string name="mark_all_read_feed_confirmation_msg">Confirmer le marquage de tous les Ć©pisodes de ce podcast comme lus</string>
<string name="mark_all_seen_label">Marquer tous les Ć©pisodes comme vus</string>
<string name="mark_all_seen_msg">Tous les Ʃpisodes ont ƩtƩ marquƩs vus</string>
<string name="mark_all_seen_confirmation_msg">Merci de confirmer que vous voulez marquer tous les Ć©pisodes comme vus.</string>
<string name="show_info_label">Voir les dƩtails</string>
+ <string name="show_feed_settings_label">ParamĆØtres du podcast...</string>
+ <string name="feed_info_label">Infos du podcast</string>
+ <string name="feed_settings_label">ParamĆØtres du podcast</string>
<string name="rename_feed_label">Renommer le podcast</string>
<string name="remove_feed_label">Supprimer le podcast</string>
<string name="share_label">Partager...</string>
- <string name="share_link_label">Partager un lien vers le site</string>
+ <string name="share_link_label">Partager le lien</string>
+ <string name="share_link_with_position_label">Partager le lien avec la position</string>
<string name="share_file_label">Partager le fichier</string>
- <string name="share_link_with_position_label">Partager lien avec position</string>
- <string name="share_feed_url_label">Partager lien du flux</string>
- <string name="share_item_url_label">Partager le lien de l\'Ć©pisode</string>
- <string name="share_item_url_with_position_label">Partager le lien de l\'Ć©pisode avec la position</string>
- <string name="feed_delete_confirmation_msg">Confirmer que vous voulez supprimer le flux \"%1$s\" et TOUS les Ʃpisodes que vous avez tƩlƩchargƩs.</string>
- <string name="feed_remover_msg">Flux en cours de suppression</string>
- <string name="load_complete_feed">Mettre Ć  jour tout le flux</string>
+ <string name="share_feed_url_label">Partager le lien du flux</string>
+ <string name="share_item_url_label">Partager le lien du fichier</string>
+ <string name="share_item_url_with_position_label">Partager le lien du fichier avec la position</string>
+ <string name="feed_delete_confirmation_msg">Confirmer que vous voulez supprimer le podcast \"%1$s\" et TOUS ses Ʃpisodes tƩlƩchargƩs.</string>
+ <string name="feed_remover_msg">Podcast en cours de suppression</string>
+ <string name="load_complete_feed">Mettre Ć  jour tout le podcast</string>
<string name="hide_episodes_title">Cacher Ć©pisodes</string>
- <string name="episode_actions">Appliquer les actions</string>
- <string name="hide_unplayed_episodes_label">Non jouƩs</string>
+ <string name="batch_edit">Edition groupƩe</string>
+ <string name="hide_unplayed_episodes_label">Non lus</string>
<string name="hide_paused_episodes_label">En pause</string>
- <string name="hide_played_episodes_label">JouƩs</string>
- <string name="hide_queued_episodes_label">RajoutƩ Ơ la liste de lecture</string>
- <string name="hide_not_queued_episodes_label">Non rajoutƩ Ơ la liste de lecture</string>
+ <string name="hide_played_episodes_label">Lus</string>
+ <string name="hide_queued_episodes_label">Dans la liste de lecture</string>
+ <string name="hide_not_queued_episodes_label">Pas dans la liste de lecture</string>
<string name="hide_downloaded_episodes_label">TƩlƩchargƩ</string>
<string name="hide_not_downloaded_episodes_label">Non tƩlƩchargƩ</string>
- <string name="hide_has_media_label">ƀ des mĆ©dias</string>
+ <string name="hide_has_media_label">Avec mƩdia</string>
+ <string name="hide_is_favorite_label">Est un favori</string>
<string name="filtered_label">FiltrƩ</string>
<string name="refresh_failed_msg">{fa-exclamation-circle} La derniĆØre mise Ć  jour a Ć©chouĆ©</string>
<string name="open_podcast">Ouvrir Podcast</string>
@@ -144,7 +153,8 @@
<string name="remove_label">Supprimer</string>
<string name="delete_label">Effacer</string>
<string name="delete_failed">Suppression du fichier impossible. RedƩmarrer pourrait aider.</string>
- <string name="remove_episode_lable">Supprimer cet Ć©pisode</string>
+ <string name="remove_episode_lable">Supprimer</string>
+ <string name="mark_as_seen_label">Marquer comme vu</string>
<string name="marked_as_seen_label">MarquƩ comme vu</string>
<string name="mark_read_label">Marquer comme lu</string>
<string name="marked_as_read_label">Les Ʃpisodes ont ƩtƩ marquƩs comme lus</string>
@@ -168,6 +178,8 @@
<string name="download_failed">ƩchouƩ</string>
<string name="download_pending">TƩlƩchargement en attente</string>
<string name="download_running">TƩlƩchargement en cours</string>
+ <string name="download_error_details">DĆ©tails</string>
+ <string name="download_error_details_message">%1$s \n\nLien du fichier :\n%2$s</string>
<string name="download_error_device_not_found">Volume de stockage non trouvƩ</string>
<string name="download_error_insufficient_space">Espace insuffisant</string>
<string name="download_error_file_error">AccĆØs au fichier impossible</string>
@@ -185,7 +197,7 @@
<string name="download_canceled_autodownload_enabled_msg">TƩlƩchargement annulƩ\n <i>TƩlƩchargement Automatique</i> dƩsactivƩ pour cet ƩlƩment</string>
<string name="download_report_title">TƩlƩchargements terminƩs avec des erreurs</string>
<string name="download_report_content_title">Rapport des tƩlƩchargements</string>
- <string name="download_error_malformed_url">URL incorrecte</string>
+ <string name="download_error_malformed_url">Lien incorrecte</string>
<string name="download_error_io_error">Erreur d\'E/S</string>
<string name="download_error_request_error">Erreur de requĆŖte</string>
<string name="download_error_db_access">ProblĆØme d\'accĆØs Ć  la base de donnĆ©es</string>
@@ -218,6 +230,7 @@
<string name="playback_error_unknown">Erreur inconnue</string>
<string name="no_media_playing_label">Aucune lecture</string>
<string name="player_buffering_msg">Mise en mƩmoire</string>
+ <string name="player_go_to_picture_in_picture">Mode Picture-in-Picture</string>
<string name="playbackservice_notification_title">Lecture de podcast en cours</string>
<string name="unknown_media_key">AntennaPod - Touche mƩdia inconnue : %1$d</string>
<!--Queue operations-->
@@ -234,7 +247,9 @@
<string name="date">Date</string>
<string name="duration">DurƩe</string>
<string name="episode_title">Titre de l\'Ć©pisode</string>
- <string name="feed_title">Nom du flux</string>
+ <string name="feed_title">Nom du podcast</string>
+ <string name="random">AlƩatoire</string>
+ <string name="smart_shuffle">Tri intelligent</string>
<string name="ascending">Ordre croissant</string>
<string name="descending">Ordre dƩcroissant</string>
<string name="clear_queue_confirmation_msg">Veuillez confirmer que vous voulez bien supprimer TOUS les Ć©pisodes de la liste de lecture</string>
@@ -272,30 +287,38 @@
<string name="enable_sonic">Activer Sonic</string>
<!--Empty list labels-->
<string name="no_items_label">Cette liste est vide.</string>
- <string name="no_feeds_label">Vous n\'ĆŖtes encore abonnĆ© Ć  aucun flux.</string>
+ <string name="no_feeds_label">Vous n\'ĆŖtes encore abonnĆ© Ć  aucun podcast.</string>
<string name="no_chapters_label">Cet Ć©pisode n\'a pas de chapitres.</string>
- <string name="no_shownotes_label">Aucun descriptif pour cet Ć©pisode.</string>
+ <string name="no_shownotes_label">Aucune notes pour cet Ć©pisode.</string>
<!--Preferences-->
<string name="storage_pref">Stockage</string>
<string name="project_pref">Projet</string>
<string name="other_pref">Autres</string>
<string name="about_pref">ƀ propos</string>
- <string name="queue_label">Liste</string>
- <string name="services_label">Services</string>
+ <string name="queue_label">Liste de lecture</string>
+ <string name="integrations_label">IntƩgrations</string>
<string name="flattr_label">Flattr</string>
+ <string name="flattr_summary">Service de micropaiement</string>
+ <string name="automation">Automatisation</string>
+ <string name="download_pref_details">DĆ©tails</string>
+ <string name="import_export_pref">Importation / Exportation</string>
+ <string name="appearance">Apparence</string>
+ <string name="external_elements">ElƩments externes</string>
+ <string name="interruptions">Interruptions</string>
+ <string name="buttons">Boutons de lecture</string>
+ <string name="media_player">Lecteur multimƩdia</string>
<string name="pref_episode_cleanup_title">Nettoyage des Ć©pisodes</string>
<string name="pref_episode_cleanup_summary">Les Ć©pisodes qui ne sont pas dans la liste de lecture et qui ne sont pas marquĆ©s comme favoris peuvent ĆŖtre supprimĆ©s si l\'espace est insuffisant pour le tĆ©lĆ©chargement automatique de nouveaux Ć©pisodes</string>
<string name="pref_pauseOnDisconnect_sum">Interrompre la lecture lorsque le casque ou le bluetooth sont dƩconnectƩs</string>
- <string name="pref_unpauseOnHeadsetReconnect_sum">Reprendre la lecture quand les Ʃcouteurs sont reconnectƩs</string>
- <string name="pref_unpauseOnBluetoothReconnect_sum">Reprendre la lecture quand le Bluetooth se reconnecte</string>
+ <string name="pref_unpauseOnHeadsetReconnect_sum">Reprendre la lecture quand les Ʃcouteurs sont connectƩs</string>
+ <string name="pref_unpauseOnBluetoothReconnect_sum">Reprendre la lecture quand le Bluetooth se connecte</string>
<string name="pref_hardwareForwardButtonSkips_title">Le bouton \"saut avant\" saute l\'Ć©pisode</string>
- <string name="pref_hardwareForwardButtonSkips_sum">Passer Ơ l\'Ʃpisode suivant au lieu de faire un saut avant quand un bouton physique \"saut avant\" est pressƩ</string>
<string name="pref_hardwarePreviousButtonRestarts_title">Le bouton \"saut arriĆØre\" redĆ©marre l\'Ć©pisode</string>
<string name="pref_hardwarePreviousButtonRestarts_sum">Repartir de zĆ©ro au lieu de faire un saut arriĆØre quand un bouton physique \"saut arriĆØre\" est pressĆ©</string>
<string name="pref_followQueue_sum">AprĆØs la fin d\'un Ć©pisode, passer au suivant</string>
<string name="pref_auto_delete_sum">Supprimer l\'Ć©pisode quand la lecture est finie</string>
<string name="pref_auto_delete_title">Suppression automatique</string>
- <string name="pref_smart_mark_as_played_sum">Les Ć©pisodes seront marquĆ©s comme lus mĆŖme s\'il reste quelques secondes Ć  jouer</string>
+ <string name="pref_smart_mark_as_played_sum">Les Ć©pisodes seront marquĆ©s comme lus mĆŖme s\'il reste quelques secondes Ć  Ć©couter</string>
<string name="pref_smart_mark_as_played_title">Marquer comme lu intelligemment</string>
<string name="pref_skip_keeps_episodes_sum">Garder les Ʃpisodes quand ils sont passƩs</string>
<string name="pref_skip_keeps_episodes_title">Garder les Ʃpisodes passƩs</string>
@@ -303,20 +326,20 @@
<string name="pref_favorite_keeps_episodes_title">Garder les Ć©pisodes favoris</string>
<string name="playback_pref">Lecture</string>
<string name="network_pref">RĆ©seau</string>
- <string name="pref_autoUpdateIntervallOrTime_title">Mettre Ć  jour lā€™intervalle ou l\'heure</string>
+ <string name="pref_autoUpdateIntervallOrTime_title">Intervalle / Heure de mise Ć  jour</string>
<string name="pref_autoUpdateIntervallOrTime_sum">Indiquer un intervalle ou une heure spƩcifique de mise Ơ jour des flux</string>
- <string name="pref_autoUpdateIntervallOrTime_message">Vous pouvez mettre en place un <i>intervalle</i> comme \"toutes les 2 heures\", une <i>heure prĆ©cise</i> comme \"7:00\" ou dĆ©sactiver les mises Ć  jours automatique.\n\n<small>Note: Il est possible qu\'il y ait un dĆ©lai car l\'heure de mise Ć  jour peut ĆŖtre inexacte.</small></string>
+ <string name="pref_autoUpdateIntervallOrTime_message">Vous pouvez dƩfinir un <i>intervalle</i> comme \"toutes les 2 heures\" ou une <i>heure prƩcise</i> comme \"7:00\" ou dƩsactiver les mises Ơ jours automatique.\n\n<small>Note: les heures de mise Ơ jour ne sont pas prƩcises. Vous pouvez avoir un petit dƩlai.</small></string>
<string name="pref_autoUpdateIntervallOrTime_Disable">DĆ©sactiver</string>
- <string name="pref_autoUpdateIntervallOrTime_Interval">DĆ©finir intervalle</string>
- <string name="pref_autoUpdateIntervallOrTime_TimeOfDay">RĆ©gler l\'heure</string>
+ <string name="pref_autoUpdateIntervallOrTime_Interval">Intervalle</string>
+ <string name="pref_autoUpdateIntervallOrTime_TimeOfDay">Heure</string>
<string name="pref_autoUpdateIntervallOrTime_every">toutes les %1$s</string>
<string name="pref_autoUpdateIntervallOrTime_at">Ć  %1$s</string>
<string name="pref_downloadMediaOnWifiOnly_sum">Ne tƩlƩcharger les Ʃpisodes que par Wi-Fi</string>
<string name="pref_followQueue_title">Lecture continue</string>
<string name="pref_downloadMediaOnWifiOnly_title">TƩlƩchargement en Wi-Fi</string>
- <string name="pref_pauseOnHeadsetDisconnect_title">DĆ©connexion du casque</string>
- <string name="pref_unpauseOnHeadsetReconnect_title">Reconnexion du casque</string>
- <string name="pref_unpauseOnBluetoothReconnect_title">Reconnexion Bluetooth</string>
+ <string name="pref_pauseOnHeadsetDisconnect_title">DĆ©connexion des Ć©couteurs ou du Bluetooth</string>
+ <string name="pref_unpauseOnHeadsetReconnect_title">Connexion des Ć©couteurs</string>
+ <string name="pref_unpauseOnBluetoothReconnect_title">Connexion du Bluetooth</string>
<string name="pref_mobileUpdate_title">Mises Ć  jour mobile</string>
<string name="pref_mobileUpdate_sum">Autoriser les mises Ć  jour avec la connexion mobile</string>
<string name="refreshing_label">Mise Ć  jour en cours</string>
@@ -338,7 +361,7 @@
<string name="pref_nav_drawer_feed_order_title">DĆ©finir l\'ordre des abonnements</string>
<string name="pref_nav_drawer_feed_order_sum">Change l\'ordre de vos abonnements</string>
<string name="pref_nav_drawer_feed_counter_title">DĆ©finir le compteur d\'abonnements</string>
- <string name="pref_nav_drawer_feed_counter_sum">Changer l\'information affichƩe par le compteur d\'abonnements</string>
+ <string name="pref_nav_drawer_feed_counter_sum">Changer l\'information affichƩe par le compteur d\'abonnements. Cela change aussi l\'ordre des podcasts si ils sont triƩs par le compteur.</string>
<string name="pref_set_theme_sum">Modifier l\'apparence d\'AntennaPod.</string>
<string name="pref_automatic_download_title">TƩlƩchargement automatique</string>
<string name="pref_automatic_download_sum">Configurer le tƩlƩchargement automatique des Ʃpisodes.</string>
@@ -352,6 +375,7 @@
<string name="pref_episode_cache_title">Ɖpisodes stockĆ©s localement</string>
<string name="pref_theme_title_light">Clair</string>
<string name="pref_theme_title_dark">Sombre</string>
+ <string name="pref_theme_title_trueblack">Noir (pour Ć©cran AMOLED)</string>
<string name="pref_episode_cache_unlimited">IllimitƩ</string>
<string name="pref_update_interval_hours_plural">heures</string>
<string name="pref_update_interval_hours_singular">heure</string>
@@ -375,25 +399,23 @@
<string name="pref_playback_speed_title">Vitesses de lecture</string>
<string name="pref_playback_speed_sum">DĆ©finir les vitesses disponibles lors de la lecture audio</string>
<string name="pref_fast_forward">DurƩe du saut avant</string>
- <string name="pref_fast_forward_sum">Nombre de secondes Ơ sauter quand le bouton \"saut avant\" est cliquƩ</string>
+ <string name="pref_fast_forward_sum">Nombre de secondes Ơ sauter quand le bouton \"saut avant\" est pressƩ</string>
<string name="pref_rewind">DurĆ©e du saut arriĆØre</string>
- <string name="pref_rewind_sum">Nombre de secondes Ć  sauter quand le bouton \"saut arriĆØre\" est cliquĆ©</string>
+ <string name="pref_rewind_sum">Nombre de secondes Ć  sauter quand le bouton \"saut arriĆØre\" est pressĆ©</string>
<string name="pref_gpodnet_sethostname_title">Choisir un nom de domaine</string>
<string name="pref_gpodnet_sethostname_use_default_host">Utiliser le nom de domaine par dƩfaut</string>
- <string name="pref_expandNotify_title">Etendre la notification</string>
- <string name="pref_expandNotify_sum">Toujours Ć©tendre la notification pour montrer tous les boutons de lecture </string>
<string name="pref_persistNotify_title">Boutons de lecture permanents</string>
<string name="pref_persistNotify_sum">Garder les notifications et les boutons de lecture sur l\'Ć©cran de verouillage quand la lecture est en pause</string>
<string name="pref_compact_notification_buttons_title">DĆ©finir les boutons de l\'Ć©cran de verrouillage</string>
<string name="pref_compact_notification_buttons_sum">Change les boutons de lecture sur l\'Ʃcran de verrouillage. Le bouton de lecture/pause est toujours affichƩ.</string>
<string name="pref_compact_notification_buttons_dialog_title">Choisir un maximum de %1$d ƩlƩments</string>
<string name="pref_compact_notification_buttons_dialog_error">Vous ne pouvez pas choisir plus de %1$d ƩlƩments.</string>
- <string name="pref_lockscreen_background_title">Changer lā€™arriĆØre plan de l\'Ć©cran de dĆ©verrouillage</string>
- <string name="pref_lockscreen_background_sum">Placer l\'image de lā€™Ć©pisode en arriĆØre plan de l\'Ć©cran de dĆ©verrouillage. Cela aura aussi pour effet de montrer l\'image dans les autres applications.</string>
+ <string name="pref_lockscreen_background_title">Changer lā€™arriĆØre plan de l\'Ć©cran de verrouillage</string>
+ <string name="pref_lockscreen_background_sum">Placer l\'image de lā€™Ć©pisode en arriĆØre plan de l\'Ć©cran de verrouillage. Cela aura aussi pour effet de montrer l\'image dans les autres applications.</string>
<string name="pref_showDownloadReport_title">Afficher le rapport de tƩlƩchargements</string>
<string name="pref_showDownloadReport_sum">Si les tƩlƩchargements Ʃchouent, gƩnƩrer un rapport dƩtaillƩ des Ʃchecs.</string>
<string name="pref_expand_notify_unsupport_toast">Les versions d\'Android antƩrieures Ơ 4.1 ne sont pas compatibles avec les notifications Ʃlargies</string>
- <string name="pref_queueAddToFront_sum">Ajouter les nouveaux Ʃpisodes au dƩbut de la liste de lecture.</string>
+ <string name="pref_queueAddToFront_sum">Ajouter les nouveaux Ʃpisodes au dƩbut de la liste de lecture</string>
<string name="pref_queueAddToFront_title">Mettre au dƩbut de la liste de lecture</string>
<string name="pref_smart_mark_as_played_disabled">DƩsactivƩ</string>
<string name="pref_image_cache_size_title">Taille du cache de l\'image</string>
@@ -402,8 +424,7 @@
<string name="crash_report_sum">Envoyer le dernier rapport de crash par e-mail</string>
<string name="send_email">Envoyer e-mail</string>
<string name="experimental_pref">ExpƩrimental</string>
- <string name="pref_sonic_title">Lecteur multimƩdia Sonic</string>
- <string name="pref_sonic_message">Utiliser le lecteur multimƩdia interne Sonic au lieu du lecteur natif d\'Android ou Prestissimo</string>
+ <string name="pref_media_player_message">Choisir le lecteur Ć  utiliser pour lire les fichiers</string>
<string name="pref_current_value">Valeur actuelle : %1$s</string>
<string name="pref_proxy_title">Proxy</string>
<string name="pref_proxy_sum">ParamƩtrer un rƩseau proxy</string>
@@ -415,17 +436,22 @@
<string name="pref_cast_message_free_flavor">Chromecast nĆ©cessite des bibliothĆØques tierces qui sont dĆ©sactivĆ©es dans cette version d\'AntennaPod</string>
<string name="pref_enqueue_downloaded_title">Ajouter Ć  la liste aprĆØs tĆ©lĆ©chargement</string>
<string name="pref_enqueue_downloaded_summary">Mettre les Ć©pisodes dans la la liste de lecture aprĆØs tĆ©lĆ©chargement</string>
+ <string name="media_player_builtin">Lecteur natif d\'Android</string>
+ <string name="pref_videoBehavior_title">Sorti du lecteur pendant une vidƩo</string>
+ <string name="pref_videoBehavior_sum">DƩfinir ce qu\'il se passe si une vidƩo est quittƩe pendant sa lecture</string>
+ <string name="stop_playback">ArrĆŖter la lecture</string>
+ <string name="continue_playback">Continuer la lecture</string>
<!--Auto-Flattr dialog-->
<string name="auto_flattr_enable">Activer le paiement flattr automatique</string>
- <string name="auto_flattr_after_percent">Lancer un paiement flattr pour un Ć©pisode dĆØs que %d de l\'Ć©pisode a Ć©tĆ© jouĆ©</string>
+ <string name="auto_flattr_after_percent">Lancer un paiement flattr quand %d pourcent de l\'Ʃpisode a ƩtƩ lu</string>
<string name="auto_flattr_ater_beginning">Lancer le paiement flattr d\'un Ć©pisode dĆØs que la lecture commence</string>
<string name="auto_flattr_ater_end">Lancer le paiement flattr d\'un Ć©pisode Ć  la fin de la lecture</string>
<!--Search-->
<string name="search_hint">Chercher les Ć©pisodes</string>
<string name="found_in_shownotes_label">TrouvƩ dans les notes d\'Ʃpisodes</string>
<string name="found_in_chapters_label">TrouvƩ dans les titres de chapitre</string>
- <string name="found_in_authors_label">TrouvƩs en tant qu\'auteur</string>
- <string name="found_in_feeds_label">TrouvƩs dans les flux</string>
+ <string name="found_in_authors_label">TrouvƩs dans les auteurs</string>
+ <string name="found_in_feeds_label">TrouvƩs dans les podcasts</string>
<string name="search_status_no_results">Aucun rƩsultat trouvƩ</string>
<string name="search_label">Recherche</string>
<string name="found_in_title_label">TrouvƩ dans le titre</string>
@@ -437,7 +463,7 @@
<string name="opml_import_explanation_2">Utiliser une application tierce comme Dropbox, Google Drive ou votre gestionnaire de fichier favori pour ouvrir un fichier OPML</string>
<string name="opml_import_explanation_3">De nombreuses applications comme Google Mail, Dropbox ou Google Drive et la plupart des gestionnaires de fichiers peuvent <i>ouvrir</i> les fichiers OPML <i>avec</i> AntennaPod.</string>
<string name="start_import_label">DĆ©marrer l\'importation</string>
- <string name="opml_import_label">Importation OPML</string>
+ <string name="opml_import_label">Import OPML</string>
<string name="opml_directory_error">ERREUR !</string>
<string name="reading_opml_label">Lecture du fichier OPML en cours</string>
<string name="opml_reader_error">Une erreur s\'est produite pendant la lecture du fichier OPML :</string>
@@ -447,12 +473,12 @@
<string name="select_options_label">Choisir...</string>
<string name="choose_file_from_filesystem">Depuis le systĆØme de fichier local</string>
<string name="choose_file_from_external_application">Utiliser une application tierce</string>
- <string name="opml_export_label">Exportation OPML</string>
+ <string name="opml_export_label">Export OPML</string>
<string name="html_export_label">Export HTML</string>
<string name="exporting_label">Export en cours...</string>
<string name="export_error_label">Erreur d\'exportation</string>
- <string name="opml_export_success_title">Exportation OPML rƩussie.</string>
- <string name="opml_export_success_sum">Le fichier .opml a ƩtƩ Ʃcrit ici :\u0020</string>
+ <string name="export_success_title">Export rƩussi</string>
+ <string name="export_success_sum">Le fichier a ƩtƩ exportƩ dans :\n\n%1$s</string>
<string name="opml_import_ask_read_permission">L\'accĆØs au stockage externe est requis pour lire le fichier OPML</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">Activation du minuteur d\'arrĆŖt</string>
@@ -565,25 +591,25 @@
<string name="sp_apps_importing_feeds_msg">Importation des abonnements Ć  partir d\'applications Ć  usage unique...</string>
<string name="search_itunes_label">Chercher sur iTunes</string>
<string name="filter">Filtrer</string>
- <string name="search_fyyd_label">Chercher fyyd</string>
+ <string name="search_fyyd_label">Chercher sur fyyd</string>
<!--Episodes apply actions-->
<string name="all_label">Tout</string>
<string name="selected_all_label">Tous les Ʃpisodes ont ƩtƩ sƩlectionnƩ</string>
<string name="none_label">Aucun</string>
<string name="deselected_all_label">Tous les Ʃpisodes ont ƩtƩ dƩsƩlectionnƩ</string>
- <string name="played_label">JouƩs</string>
- <string name="selected_played_label">Episodes jouƩs sƩlectionnƩs</string>
- <string name="unplayed_label">Non jouƩs</string>
- <string name="selected_unplayed_label">Episodes non jouƩs sƩlectionnƩs</string>
+ <string name="played_label">Lus</string>
+ <string name="selected_played_label">Episodes lus sƩlectionnƩs</string>
+ <string name="unplayed_label">Non lus</string>
+ <string name="selected_unplayed_label">Episodes non lus sƩlectionnƩs</string>
<string name="downloaded_label">TƩlƩchargƩs</string>
<string name="selected_downloaded_label">Episodes tƩlƩchargƩs sƩlectionnƩs</string>
<string name="not_downloaded_label">Non tƩlƩchargƩs</string>
<string name="selected_not_downloaded_label">Ɖpisodes non tĆ©lĆ©chargĆ©s sĆ©lectionnĆ©s</string>
- <string name="queued_label">Dans liste de lecture</string>
+ <string name="queued_label">Dans la liste de lecture</string>
<string name="selected_queued_label">Episodes prƩsents dans la liste de lecture sƩlectionnƩs</string>
<string name="not_queued_label">En dehors de la liste de lecture</string>
<string name="selected_not_queued_label">Episodes absents de la liste de lecture sƩlectionnƩs</string>
- <string name="has_media">ƀ des mĆ©dias</string>
+ <string name="has_media">A des mƩdias</string>
<string name="selected_has_media_label">SƩlectionner les Ʃpisodes avec des mƩdias</string>
<!--Sort-->
<string name="sort_title_a_z">Titre (A \u2192 Z)</string>
@@ -620,12 +646,12 @@
<string name="proxy_host_invalid_error">L\'hƓte n\'est pas une adresse IP ou un domaine valide</string>
<string name="proxy_port_invalid_error">Port non valide</string>
<!--Database import/export-->
- <string name="import_export">Importer/Exporter la base de donnƩes</string>
- <string name="import_export_warning">Cette fonction expĆ©rimentale peut-ĆŖtre utilisĆ©e pour transfĆ©rer vos abonnements et Ć©pisodes jouĆ©s sur un autre appareil.\n\nLes bases de donnĆ©es exportĆ©es peuvent uniquement ĆŖtre importĆ©es sur la mĆŖme version d\'AntennaPod. Dans le cas contraire, des dysfonctionnements peuvent survenir.\n\nAprĆØs import, il est possible que des Ć©pisodes apparaissent tĆ©lĆ©chargĆ©s alors qu\'ils ne le sont pas. Appuyer sur le bouton de lecture pour qu\'AntennaPod le dĆ©tecte.</string>
+ <string name="import_export">Import / Export de la base de donnƩes</string>
+ <string name="import_export_warning">Cette fonction expĆ©rimentale peut-ĆŖtre utilisĆ©e pour transfĆ©rer vos abonnements et Ć©pisodes lus sur un autre appareil.\n\nLes bases de donnĆ©es exportĆ©es peuvent uniquement ĆŖtre importĆ©es sur la mĆŖme version d\'AntennaPod. Dans le cas contraire, des dysfonctionnements peuvent apparaĆ®tre.\n\nAprĆØs import, il est possible que des Ć©pisodes apparaissent tĆ©lĆ©chargĆ©s alors qu\'ils ne le sont pas. Appuyer sur le bouton de lecture pour qu\'AntennaPod le dĆ©tecte.</string>
<string name="label_import">Importer</string>
<string name="label_export">Exporter</string>
<string name="import_select_file">SĆ©lectionner le fichier Ć  importer</string>
- <string name="export_ok">Export rƩussi. La base de donnƩes a ƩtƩ Ʃcrite sur la carte SD.</string>
+ <string name="export_ok">Export rƩussi.</string>
<string name="import_ok">Import rƩussi.\n\nAppuyer sur OK pour redƩmarrer AntennaPod</string>
<!--Casting-->
<string name="cast_media_route_menu_title">Lire sur...</string>
@@ -643,4 +669,13 @@
<string name="cast_failed_seek">Ɖchec de la recherche de la nouvelle position sur l\'appareil cast</string>
<string name="cast_failed_receiver_player_error">Le lecteur de rƩception a rencontrƩ une grave erreur</string>
<string name="cast_failed_media_error_skipping">Erreur de lecture du mƩdia. Passage au suivant...</string>
+ <!--Notification channels-->
+ <string name="notification_channel_user_action">Action requise</string>
+ <string name="notification_channel_user_action_description">S\'affiche si une action est requise. Par exemple, un mot de passe Ć  saisir.</string>
+ <string name="notification_channel_downloading">TƩlƩchargement en cours</string>
+ <string name="notification_channel_downloading_description">S\'affiche lorsqu\'un tƩlƩchargement est en cours.</string>
+ <string name="notification_channel_playing">Lecture en cours</string>
+ <string name="notification_channel_playing_description">Permet de contrƓler la lecture. C\'est la notification principale pendant la lecture d\'un podcast.</string>
+ <string name="notification_channel_error">Erreurs</string>
+ <string name="notification_channel_error_description">S\'affiche en cas de problĆØme. Par exemple, un tĆ©lĆ©chargement ou une synchronisation qui Ć©choue.</string>
</resources>
diff --git a/core/src/main/res/values-gl-rES/strings.xml b/core/src/main/res/values-gl-rES/strings.xml
index 2dc04a5db..a2a4366ed 100644
--- a/core/src/main/res/values-gl-rES/strings.xml
+++ b/core/src/main/res/values-gl-rES/strings.xml
@@ -1,32 +1,36 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources xmlns:tools="http://schemas.android.com/tools">
<!--Activitiy and fragment titles-->
+ <string name="feed_update_receiver_name">Actualizar subscriciĆ³ns</string>
<string name="feeds_label">Fontes</string>
<string name="statistics_label">EstatĆ­sticas</string>
- <string name="add_feed_label">Engadir Podcast</string>
+ <string name="add_feed_label">Engadir podcast</string>
<string name="episodes_label">Episodios</string>
<string name="all_episodes_short_label">Todo</string>
+ <string name="new_episodes_label">Novo</string>
<string name="favorite_episodes_label">Favoritos</string>
<string name="new_label">Novo</string>
<string name="settings_label">Axustes</string>
<string name="downloads_label">Descargas</string>
- <string name="downloads_running_label">Descargando</string>
+ <string name="downloads_running_label">Funcionando</string>
<string name="downloads_completed_label">Completado</string>
<string name="downloads_log_label">Rexistro</string>
- <string name="subscriptions_label">SuscriciĆ³ns</string>
- <string name="subscriptions_list_label">Lista de suscriciĆ³ns</string>
+ <string name="subscriptions_label">SubscriciĆ³ns</string>
+ <string name="subscriptions_list_label">Lista de subscriciĆ³ns</string>
<string name="cancel_download_label">Cancelar\nDescarga</string>
<string name="playback_history_label">Historial de reproduciĆ³n</string>
<string name="gpodnet_main_label">gpodder.net</string>
+ <string name="gpodnet_summary">Sincronizar con outros dispositivos</string>
<string name="gpodnet_auth_label">gpodder.net ConexiĆ³n</string>
<string name="free_space_label">%1$s libre</string>
<string name="episode_cache_full_title">CachƩ de episodios chea</string>
<string name="episode_cache_full_message">Acadouse o lƭmite de espazo na cachƩ de episodios. Pode incrementalo nos Axustes do tamaƱo da cachƩ.</string>
+ <string name="synchronizing">Sincronizando...</string>
<!--Statistics fragment-->
<string name="total_time_listened_to_podcasts">Tempo total dos podcast reproducidos:</string>
<string name="statistics_details_dialog">%1$d de %2$d episodios iniciados.\n\nReproducidos %3$s de %4$s.</string>
<string name="statistics_mode">Modo de estatĆ­sticas</string>
- <string name="statistics_mode_normal">Calcular a duraciĆ³n que foi realmente reproducida. Reproducir dĆŗas veces conta dobre, mentras que marcar como lido non conta</string>
+ <string name="statistics_mode_normal">Calcular a duraciĆ³n que foi realmente reproducida. Reproducir dĆŗas veces conta dobre, mentres que marcar como lido non conta</string>
<string name="statistics_mode_count_all">Sumar todos os podcast marcados como reproducidos</string>
<string name="statistics_speed_not_counted">Aviso: A velocidade de reproduciĆ³n non se ten en conta en ningĆŗn caso.</string>
<!--Main activity-->
@@ -34,7 +38,7 @@
<string name="drawer_close">Pechar menĆŗ</string>
<string name="drawer_preferences">Preferencias da caixa</string>
<string name="drawer_feed_order_unplayed_episodes">Ordenar polo contador</string>
- <string name="drawer_feed_order_alphabetical">Ordenar alfabƩticamente</string>
+ <string name="drawer_feed_order_alphabetical">Ordenar alfabeticamente</string>
<string name="drawer_feed_order_last_update">Ordenar por data de publicaciĆ³n</string>
<string name="drawer_feed_order_most_played">Ordenar por nĆŗmero de episodios reproducidos</string>
<string name="drawer_feed_counter_new_unplayed">NĆŗmero de episodios novos e non reproducidos</string>
@@ -43,7 +47,7 @@
<string name="drawer_feed_counter_downloaded">NĆŗmero de episodios descargados</string>
<string name="drawer_feed_counter_none">NingĆŗn</string>
<!--Webview actions-->
- <string name="open_in_browser_label">Abrir en navegador</string>
+ <string name="open_in_browser_label">Abrir no navegador</string>
<string name="copy_url_label">Copiar URL</string>
<string name="share_url_label">Compartir URL</string>
<string name="copied_url_msg">Copiar URL ao portapapeis</string>
@@ -56,15 +60,16 @@
<string name="yes">Si</string>
<string name="no">Non</string>
<string name="reset">Restablecer</string>
- <string name="author_label">Autor</string>
+ <string name="author_label">Autor(es)</string>
<string name="language_label">Idioma</string>
<string name="url_label">URL</string>
<string name="podcast_settings_label">Axustes</string>
<string name="cover_label">Imaxe</string>
<string name="error_label">Fallo</string>
- <string name="error_msg_prefix">Houbo un fallo:</string>
+ <string name="error_msg_prefix">Produciuse un fallo:</string>
+ <string name="needs_storage_permission">PrecĆ­sase o permiso de almacenamento para esta operaciĆ³n</string>
<string name="refresh_label">Actualizar</string>
- <string name="external_storage_error_msg">Non se dispĆ³n de almacenamento externo. Por favor asegĆŗrese de que o almacenamento externo estĆ” montado e asĆ­ o app poderĆ” funcionar correctamente.</string>
+ <string name="external_storage_error_msg">Non se dispĆ³n de almacenamento externo. Por favor asegĆŗrese de que o almacenamento externo estĆ” montado e asĆ­ o aplicativo poderĆ” funcionar correctamente.</string>
<string name="chapters_label">CapĆ­tulos</string>
<string name="chapter_duration">DuraciĆ³n: %1$s</string>
<string name="shownotes_label">Notas do episodio</string>
@@ -105,25 +110,28 @@
<string name="mark_all_read_label">Marcar todo como reproducido</string>
<string name="mark_all_read_msg">MarcƔronse todos como reproducidos</string>
<string name="mark_all_read_confirmation_msg">Por favor confirme que quere marcar todos os episodios como reproducidos.</string>
- <string name="mark_all_read_feed_confirmation_msg">Por favor confirme que quere marcar todos os episodios de esta fonte como reproducidos.</string>
+ <string name="mark_all_read_feed_confirmation_msg">Por favor, confirme que quere marcar todos os episodios deste podcast como reproducidos.</string>
<string name="mark_all_seen_label">Marcar como visto</string>
<string name="mark_all_seen_msg">MarcƔronse todos os episodios como vistos</string>
<string name="mark_all_seen_confirmation_msg">Por favor confirme que quere marcar todos os episodios como vistos.</string>
<string name="show_info_label">Mostrar informaciĆ³n</string>
+ <string name="show_feed_settings_label">Mostrar axustes do podcast</string>
+ <string name="feed_info_label">InformaciĆ³n do podcast</string>
+ <string name="feed_settings_label">Axustes do podcast</string>
<string name="rename_feed_label">Mudar nome do podcast</string>
- <string name="remove_feed_label">Quitar podcast</string>
+ <string name="remove_feed_label">Eliminar o podcast</string>
<string name="share_label">Compartir...</string>
- <string name="share_link_label">Compartir ligazĆ³n</string>
+ <string name="share_link_label">Compartir a URL do episodio</string>
+ <string name="share_link_with_position_label">Compartir a URL do ficheiro do episodio coa posiciĆ³n</string>
<string name="share_file_label">Compartir ficheiro</string>
- <string name="share_link_with_position_label">Compartir ligazĆ³n con posiciĆ³n</string>
<string name="share_feed_url_label">Compartir URL da fonte</string>
- <string name="share_item_url_label">Compartir a URL do ficheiro do episodio</string>
- <string name="share_item_url_with_position_label">Compartir a URL do ficheiro do episodio con posiciĆ³n</string>
- <string name="feed_delete_confirmation_msg">Por favor confirme que quere eliminar a fonte \"%1$s\" e TODOS os episodios de esta fonte anteriormente descargados.</string>
- <string name="feed_remover_msg">Eliminando a fonte</string>
- <string name="load_complete_feed">Actualizar completamente a fonte</string>
+ <string name="share_item_url_label">Compartir a URL do ficheiro multimedia</string>
+ <string name="share_item_url_with_position_label">Compartir a URL do ficheiro multimedia coa posiciĆ³n</string>
+ <string name="feed_delete_confirmation_msg">Por favor, confirme que quere eliminar o podcast \"%1$s\" e TODOS os seus episodios (incluĆ­dos os xa descargados).</string>
+ <string name="feed_remover_msg">Eliminando o podcast</string>
+ <string name="load_complete_feed">Actualizar o podcast completo</string>
<string name="hide_episodes_title">Ocultar episodios</string>
- <string name="episode_actions">Aplicar acciĆ³ns</string>
+ <string name="batch_edit">EdiciĆ³n por lote</string>
<string name="hide_unplayed_episodes_label">Non reproducido</string>
<string name="hide_paused_episodes_label">En pausa</string>
<string name="hide_played_episodes_label">Reproducido</string>
@@ -132,6 +140,7 @@
<string name="hide_downloaded_episodes_label">Descargado</string>
<string name="hide_not_downloaded_episodes_label">Non descargado</string>
<string name="hide_has_media_label">Ten medios</string>
+ <string name="hide_is_favorite_label">Ɖ favorito</string>
<string name="filtered_label">Filtrado</string>
<string name="refresh_failed_msg">{fa-exclamation-circle} Erro na Ćŗltima actualizaciĆ³n</string>
<string name="open_podcast">Abrir podcast</string>
@@ -145,6 +154,7 @@
<string name="delete_label">Borrar</string>
<string name="delete_failed">Non se puido eliminar o ficheiro. Reiniciar o dispositivo poderĆ­a axudar.</string>
<string name="remove_episode_lable">Eliminar episodio</string>
+ <string name="mark_as_seen_label">Marcar como visto</string>
<string name="marked_as_seen_label">Marcar como visto</string>
<string name="mark_read_label">Marcar como reproducido</string>
<string name="marked_as_read_label">Marcado como reproducido</string>
@@ -168,6 +178,8 @@
<string name="download_failed">fallou</string>
<string name="download_pending">Descarga pendente</string>
<string name="download_running">Descarga en proceso</string>
+ <string name="download_error_details">Detalles</string>
+ <string name="download_error_details_message">%1$s\n\nURL do ficheiro:\n %2$s </string>
<string name="download_error_device_not_found">Non se atopou dispositivo de almacenamento</string>
<string name="download_error_insufficient_space">Non hai suficiente espacio</string>
<string name="download_error_file_error">Fallo de ficheiro</string>
@@ -182,7 +194,7 @@
<string name="download_error_forbidden">Non admitido</string>
<string name="cancel_all_downloads_label">Cancelar todas as descargas</string>
<string name="download_canceled_msg">Descarga cancelada</string>
- <string name="download_canceled_autodownload_enabled_msg">Descarga cancelada\nDeshabilitouse <i>Descarga automƔtica</i> para este elemento</string>
+ <string name="download_canceled_autodownload_enabled_msg">Descarga cancelada\nDesactivouse a <i>Descarga AutomƔtica</i> para este elemento</string>
<string name="download_report_title">Descargas completadas con erro(s)</string>
<string name="download_report_content_title">Informe da descarga</string>
<string name="download_error_malformed_url">URL mal formada</string>
@@ -204,8 +216,8 @@
<string name="authentication_notification_title">PrecĆ­sase autenticaciĆ³n</string>
<string name="authentication_notification_msg">O recurso solicitado require un usuario e contrasinal</string>
<string name="confirm_mobile_download_dialog_title">Confirme a descarga con datos do mĆ³bil</string>
- <string name="confirm_mobile_download_dialog_message_not_in_queue">Descargar coa conexiĆ³n de datos do mĆ³bil estĆ” deshabilitada nos axustes.\n\nPode escoller ben sĆ³ engadir o episodio a cola ou pode permitir a descarga temporalmente.\n\n<small> A sĆŗa elecciĆ³n lembrarase durante 10 minutos.</small></string>
- <string name="confirm_mobile_download_dialog_message">A descarga con datos mĆ³biles estĆ” deshabilitada nos axustes.\n\nQuere permitir a descarga temporalmente?\n\n <small>A sĆŗa decisiĆ³n lembrarase durante 10 minutos.</small></string>
+ <string name="confirm_mobile_download_dialog_message_not_in_queue">Descargar coa conexiĆ³n de datos do mĆ³bil estĆ” desactivada nos axustes.\n\nPode escoller ben sĆ³ engadir o episodio a cola ou pode permitir a descarga temporalmente.\n\n<small> A sĆŗa elecciĆ³n lembrarase durante 10 minutos.</small></string>
+ <string name="confirm_mobile_download_dialog_message">A descarga con datos mĆ³biles estĆ” desactivada nos axustes.\n\nQuere permitir a descarga temporalmente?\n\n <small>A sĆŗa decisiĆ³n lembrarase durante 10 minutos.</small></string>
<string name="confirm_mobile_download_dialog_only_add_to_queue">Engadir a cola</string>
<string name="confirm_mobile_download_dialog_enable_temporarily">Permitir temporalmente</string>
<!--Mediaplayer messages-->
@@ -218,13 +230,14 @@
<string name="playback_error_unknown">Fallo descoƱecido</string>
<string name="no_media_playing_label">Non reproducindo</string>
<string name="player_buffering_msg">Almacenando</string>
+ <string name="player_go_to_picture_in_picture">Modo imaxe-en-imaxe</string>
<string name="playbackservice_notification_title">Reproducindo podcast</string>
<string name="unknown_media_key">AntennaPod - chave de medios descoƱecida: %1$d</string>
<!--Queue operations-->
- <string name="lock_queue">Pechar a cola</string>
- <string name="unlock_queue">Despechar a cola</string>
- <string name="queue_locked">Cola pechada</string>
- <string name="queue_unlocked">Cola despechada</string>
+ <string name="lock_queue">Bloquear a cola</string>
+ <string name="unlock_queue">Desbloquear a cola</string>
+ <string name="queue_locked">Cola bloqueada</string>
+ <string name="queue_unlocked">Cola desbloqueada</string>
<string name="clear_queue_label">Limpar cola</string>
<string name="undo">Desfacer</string>
<string name="removed_from_queue">Elemento eliminado</string>
@@ -234,7 +247,9 @@
<string name="date">Data</string>
<string name="duration">DuraciĆ³n</string>
<string name="episode_title">TĆ­tulo do episodio</string>
- <string name="feed_title">TĆ­tulo da fonte</string>
+ <string name="feed_title">TĆ­tulo do podcast</string>
+ <string name="random">Aleatorio</string>
+ <string name="smart_shuffle">Barallado intelixente</string>
<string name="ascending">Ascendente</string>
<string name="descending">Descendente</string>
<string name="clear_queue_confirmation_msg">Por favor confirme que quere limpar a cola e TODOS os episodios nela</string>
@@ -243,15 +258,15 @@
<string name="flattr_auth_explanation">Pulse o botĆ³n inferior para iniciar o proceso de autenticaciĆ³n. SerĆ” redireccionado a pantalla de conexiĆ³n en Flattr no seu navegador e pediralle permiso para que AntennaPod poida acceder. Despois de dar permiso, voltarĆ” a esta pantalla de xeito automĆ”tico.</string>
<string name="authenticate_label">Autenticar</string>
<string name="return_home_label">Voltar ao inicio</string>
- <string name="flattr_auth_success">Autenticouse correctamente! Xa pode enviar valoraciĆ³ns a Flattr desde o app.</string>
+ <string name="flattr_auth_success">Autenticouse correctamente! Xa pode enviar valoraciĆ³ns a Flattr desde o aplicativo.</string>
<string name="no_flattr_token_title">Non se atopou o testemuƱo de Flattr</string>
<string name="no_flattr_token_notification_msg">A sĆŗa conta de Flattr non semella estar conectada a AntennaPod. Toque aquĆ­ para autenticarse.</string>
- <string name="no_flattr_token_msg">A sĆŗa conta de Flattr non semella estar conectada a AntennaPod. Ben pode conectar a sĆŗa conta a AntennaPod para interactuar en Flattr desde o app ou ben pode visitar o sitio web do elemento e darlle ao flattr desde alĆ­.</string>
+ <string name="no_flattr_token_msg">A sĆŗa conta de Flattr non semella estar conectada a AntennaPod. Ben pode conectar a sĆŗa conta a AntennaPod para interactuar en Flattr desde o aplicativo ou ben pode visitar o sitio web do elemento e darlle ao flattr desde alĆ­.</string>
<string name="authenticate_now_label">Autenticar</string>
<string name="action_forbidden_title">AcciĆ³n non permitida</string>
<string name="action_forbidden_msg">AntennaPod non ten permiso para esta acciĆ³n. A razĆ³n poderĆ­a ser que o testemuƱo de acceso de AntennaPod ou a sĆŗa conta fosen rexeitados. Pode voltar a autenticarse ou visitar o sitio web do elemento.</string>
<string name="access_revoked_title">Acceso rexeitado</string>
- <string name="access_revoked_info">Eliminou correctamente o testemuƱo de acceso de AntennaPod a sĆŗa conta. Para completar o proceso deberĆ” eliminar este aplicativo da lista de aplicativos autorizados nos axustes da sĆŗa conta na web de Flattr.</string>
+ <string name="access_revoked_info">Eliminou correctamente o token de acceso de AntennaPod Ć” sĆŗa conta. Para completar o proceso deberĆ” eliminar este aplicativo da lista de aplicativos autorizados nos axustes da sĆŗa conta na web de Flattr.</string>
<!--Flattr-->
<string name="flattr_click_success">Flateraches algo!</string>
<string name="flattr_click_success_count">Flateraches %d cousas!</string>
@@ -272,7 +287,7 @@
<string name="enable_sonic">Habilitar Sonic</string>
<!--Empty list labels-->
<string name="no_items_label">Non hai elementos na lista.</string>
- <string name="no_feeds_label">AĆ­nda non estĆ” suscrito a ningunha fonte.</string>
+ <string name="no_feeds_label">AĆ­nda non estĆ” subscrito a ningĆŗn podcast.</string>
<string name="no_chapters_label">Este episodio non ten capĆ­tulos.</string>
<string name="no_shownotes_label">Este episodio non ten notas de episodio.</string>
<!--Preferences-->
@@ -281,15 +296,23 @@
<string name="other_pref">Outro</string>
<string name="about_pref">Sobre</string>
<string name="queue_label">Cola</string>
- <string name="services_label">Servizos</string>
+ <string name="integrations_label">IntegraciĆ³ns</string>
<string name="flattr_label">Flattr</string>
+ <string name="flattr_summary">Servizo de micropagamentos</string>
+ <string name="automation">Automatizado</string>
+ <string name="download_pref_details">Detalles</string>
+ <string name="import_export_pref">Importar/Exportar</string>
+ <string name="appearance">Aspecto</string>
+ <string name="external_elements">Elementos externos</string>
+ <string name="interruptions">InterrupciĆ³ns</string>
+ <string name="buttons">BotĆ³ns do control de reproduciĆ³n</string>
+ <string name="media_player">Reprodutor de medios</string>
<string name="pref_episode_cleanup_title">Limpeza de episodios</string>
<string name="pref_episode_cleanup_summary">Os episodios que non estĆ”n na cola e tampouco son favoritos deberĆ­an poder ser candidatos a ser eliminados si a funciĆ³n Descarga AutomĆ”tica precisa espazo para novos episodios.</string>
<string name="pref_pauseOnDisconnect_sum">Deter a reproduciĆ³n cando se desconectan os auriculares ou bluetooth</string>
<string name="pref_unpauseOnHeadsetReconnect_sum">Retomar a reproduciĆ³n cando se conectan os auriculares</string>
<string name="pref_unpauseOnBluetoothReconnect_sum">Retomar a reproduciĆ³n cando se reconecta o bluetooth</string>
<string name="pref_hardwareForwardButtonSkips_title">O botĆ³n Adiante salta</string>
- <string name="pref_hardwareForwardButtonSkips_sum">Cando se presiona o botĆ³n Adiante no dispositivo salta ao seguinte episodio en lugar de reproducir de xeito acelerado</string>
<string name="pref_hardwarePreviousButtonRestarts_title">O botĆ³n Anterior reinicia</string>
<string name="pref_hardwarePreviousButtonRestarts_sum">Cando se presiona Anterior no dispositivo reinicia o episodio no lugar de ir cara atrƔs</string>
<string name="pref_followQueue_sum">Saltar ao seguinte elemento na cola cando remata o episodio</string>
@@ -304,9 +327,9 @@
<string name="playback_pref">ReproduciĆ³n</string>
<string name="network_pref">Rede</string>
<string name="pref_autoUpdateIntervallOrTime_title">Intervalo de actualizaciĆ³n ou Hora do dĆ­a</string>
- <string name="pref_autoUpdateIntervallOrTime_sum">Indicar un intervalo ou unha hora en concreto para actualizar automƔticamente as fontes</string>
- <string name="pref_autoUpdateIntervallOrTime_message">Pode establecer un <i>intervalo</i> como \"2 horas\", unha <i>hora do dĆ­a</i> en concreto como \"7:00 AM\" ou <i>deshabilitar</i>totalmente a actualizaciĆ³n automĆ”tica.\n\n<small>Aviso: indicar que pode haber un lixeiro retardo do momento da actualizaciĆ³n.</small></string>
- <string name="pref_autoUpdateIntervallOrTime_Disable">Deshabilitar</string>
+ <string name="pref_autoUpdateIntervallOrTime_sum">Indicar un intervalo ou unha hora en concreto para actualizar automaticamente as fontes</string>
+ <string name="pref_autoUpdateIntervallOrTime_message">Pode establecer un <i>intervalo</i> como \"2 horas\", unha <i>hora do dĆ­a</i> en concreto como \"7:00 AM\" ou <i>desactivar</i> totalmente a actualizaciĆ³n automĆ”tica.\n\n<small>Aviso: pode haber un lixeiro retardo do momento da actualizaciĆ³n.</small></string>
+ <string name="pref_autoUpdateIntervallOrTime_Disable">Desactivar</string>
<string name="pref_autoUpdateIntervallOrTime_Interval">Establecer intervalo</string>
<string name="pref_autoUpdateIntervallOrTime_TimeOfDay">Establecer hora do dĆ­a</string>
<string name="pref_autoUpdateIntervallOrTime_every">cada %1$s</string>
@@ -335,10 +358,10 @@
<string name="pref_nav_drawer_sum">Personalice o aspecto da caixa de navegaciĆ³n</string>
<string name="pref_nav_drawer_items_title">Estableza os elementos da Caixa de navegaciĆ³n</string>
<string name="pref_nav_drawer_items_sum">Cambie os elementos que aparecerĆ”n na Caixa de navegaciĆ³n</string>
- <string name="pref_nav_drawer_feed_order_title">Estableza a orde de suscriciĆ³n</string>
- <string name="pref_nav_drawer_feed_order_sum">Cambie a orde das sĆŗas suscriciĆ³ns</string>
- <string name="pref_nav_drawer_feed_counter_title">Establecer o contador de suscriciĆ³ns</string>
- <string name="pref_nav_drawer_feed_counter_sum">Cambie a informaciĆ³n mostrada polo contador de suscriciĆ³ns</string>
+ <string name="pref_nav_drawer_feed_order_title">Estableza a orde das subscriciĆ³ns</string>
+ <string name="pref_nav_drawer_feed_order_sum">Cambie a orde das subscriciĆ³ns</string>
+ <string name="pref_nav_drawer_feed_counter_title">Establecer o contador de subscriciĆ³ns</string>
+ <string name="pref_nav_drawer_feed_counter_sum">Cambiar a informaciĆ³n mostrada polo contador de subscriciĆ³ns. TamĆ©n afecta Ć” orde das subscriciĆ³ns se \"Orde das subscriciĆ³ns\" estĆ” establecida a \"Contador\".</string>
<string name="pref_set_theme_sum">Cambiar o aspecto de AntennaPod.</string>
<string name="pref_automatic_download_title">Descarga automƔtica</string>
<string name="pref_automatic_download_sum">Axuste a descarga automƔtica de episodios.</string>
@@ -352,20 +375,21 @@
<string name="pref_episode_cache_title">CachƩ de episodios</string>
<string name="pref_theme_title_light">Claro</string>
<string name="pref_theme_title_dark">Oscuro</string>
+ <string name="pref_theme_title_trueblack">Negro (listo para AMOLED)</string>
<string name="pref_episode_cache_unlimited">Ilimitado</string>
<string name="pref_update_interval_hours_plural">horas</string>
<string name="pref_update_interval_hours_singular">hora</string>
<string name="pref_update_interval_hours_manual">Manual</string>
<string name="pref_gpodnet_authenticate_title">ConexiĆ³n</string>
- <string name="pref_gpodnet_authenticate_sum">Conectar coa sĆŗa conta gpodder.net para sincronizar as sĆŗas suscriciĆ³ns.</string>
+ <string name="pref_gpodnet_authenticate_sum">Conecte coa sĆŗa conta gpodder.net para sincronizar as sĆŗas subscriciĆ³ns.</string>
<string name="pref_gpodnet_logout_title">Desconectar</string>
<string name="pref_gpodnet_logout_toast">Desconectouse correctamente</string>
<string name="pref_gpodnet_setlogin_information_title">Cambiar a informaciĆ³n de conexiĆ³n</string>
<string name="pref_gpodnet_setlogin_information_sum">Cambiar a informaciĆ³n de conexiĆ³n da sĆŗa conta gpodder.net</string>
<string name="pref_gpodnet_sync_changes_title">Sincronizar os cambios agora</string>
- <string name="pref_gpodnet_sync_changes_sum">Sincronizar os datos de suscriciĆ³n e estado dos episodios con gpodder.net</string>
+ <string name="pref_gpodnet_sync_changes_sum">Sincronizar os datos de subscriciĆ³n e estado dos episodios con gpodder.net</string>
<string name="pref_gpodnet_full_sync_title">Sincronice todo agora</string>
- <string name="pref_gpodnet_full_sync_sum">Sincronizar todas as suscriciĆ³ns e estados de episodios con gpodder.net</string>
+ <string name="pref_gpodnet_full_sync_sum">Sincronizar todas as subscriciĆ³ns e estados de episodios con gpodder.net</string>
<string name="pref_gpodnet_sync_sum_last_sync_line">ƚltimo intento de sincronizaciĆ³n: %1$s (%2$s)</string>
<string name="pref_gpodnet_sync_started">SincronizaciĆ³n iniciada</string>
<string name="pref_gpodnet_full_sync_started">SincronizaciĆ³n completa iniciada</string>
@@ -380,8 +404,6 @@
<string name="pref_rewind_sum">Personalice o nĆŗmero de segundos que se retrocede na reproduciĆ³n cando se pulsa o botĆ³n retroceso</string>
<string name="pref_gpodnet_sethostname_title">Establecer servidor</string>
<string name="pref_gpodnet_sethostname_use_default_host">Utilizar servidor por omisiĆ³n</string>
- <string name="pref_expandNotify_title">Expandir notificaciĆ³n</string>
- <string name="pref_expandNotify_sum">Expandir sempre a notificaciĆ³n para mostrar os botĆ³ns de reproduciĆ³n</string>
<string name="pref_persistNotify_title">Controles persistentes de reproduciĆ³n</string>
<string name="pref_persistNotify_sum">Manter notificaciĆ³n e controles na pantalla de bloqueo cando a reproduciĆ³n estĆ” pausada.</string>
<string name="pref_compact_notification_buttons_title">Establecer botĆ³ns de pantalla de bloqueo</string>
@@ -395,15 +417,14 @@
<string name="pref_expand_notify_unsupport_toast">As versiĆ³ns de Android anteriores a 4.1 non teƱen soporte para notificaciĆ³ns expandidas.</string>
<string name="pref_queueAddToFront_sum">Engadir os novos episodios ao inicio da cola.</string>
<string name="pref_queueAddToFront_title">Por no inicio da cola</string>
- <string name="pref_smart_mark_as_played_disabled">Deshabilitado</string>
+ <string name="pref_smart_mark_as_played_disabled">Desactivado</string>
<string name="pref_image_cache_size_title">TamaƱo da cachƩ de imaxes</string>
<string name="pref_image_cache_size_sum">TamaƱo da cachƩ en disco para as imaxes.</string>
<string name="crash_report_title">Informe de Desgracias</string>
<string name="crash_report_sum">Enviar por email o informe de fallo xeral no aplicativo</string>
<string name="send_email">Enviar email</string>
<string name="experimental_pref">En probas</string>
- <string name="pref_sonic_title">Sonic Media Player</string>
- <string name="pref_sonic_message">Utilizar o sonic media player incluĆ­do no lugar do reprodutor nativo de Android e Prestissimo</string>
+ <string name="pref_media_player_message">Escolla o reprodutor de medios para reproducir ficheiros</string>
<string name="pref_current_value">Valor actual: %1$s</string>
<string name="pref_proxy_title">Proxy</string>
<string name="pref_proxy_sum">Establecer un proxy para a rede</string>
@@ -412,9 +433,14 @@
<string name="pref_no_browser_found">Non se atopou un navegador web</string>
<string name="pref_cast_title">Soporte Chromecast</string>
<string name="pref_cast_message_play_flavor">Habilitar o soporte de reproduciĆ³n remota nun dispositivo Cast (como o Chromecast, Altofalantes ou Android TV)</string>
- <string name="pref_cast_message_free_flavor">Chromecast precisa software propietario de terceiras partes que estĆ”n deshabilitadas en esta versiĆ³n de AntennaPod</string>
+ <string name="pref_cast_message_free_flavor">Chromecast precisa software propietario de terceiras partes que estĆ”n desactivadas en esta versiĆ³n de AntennaPod</string>
<string name="pref_enqueue_downloaded_title">Foron descargados os elementos da cola</string>
<string name="pref_enqueue_downloaded_summary">Engadir os episodios descargados a cola</string>
+ <string name="media_player_builtin">Reprodutor android nativo</string>
+ <string name="pref_videoBehavior_title">Ao saĆ­r do vĆ­deo</string>
+ <string name="pref_videoBehavior_sum">Comportamento cando saia do vĆ­deo</string>
+ <string name="stop_playback">Para a reproduciĆ³n</string>
+ <string name="continue_playback">Continuar a reproduciĆ³n de audio</string>
<!--Auto-Flattr dialog-->
<string name="auto_flattr_enable">Hablitar o flattring automƔtico</string>
<string name="auto_flattr_after_percent">Flattr o episodio tan pronto como o %d por cento foi reproducido</string>
@@ -424,8 +450,8 @@
<string name="search_hint">Buscar episodios</string>
<string name="found_in_shownotes_label">Atopado nas notas do episodio</string>
<string name="found_in_chapters_label">Atopado en capĆ­tulos</string>
- <string name="found_in_authors_label">Atopado en autores</string>
- <string name="found_in_feeds_label">Atopado en fontes</string>
+ <string name="found_in_authors_label">Atopado en autor(es)</string>
+ <string name="found_in_feeds_label">Atopado no podcast</string>
<string name="search_status_no_results">Non se atoparon resultados</string>
<string name="search_label">Buscar</string>
<string name="found_in_title_label">Atopado no tĆ­tulo</string>
@@ -451,12 +477,12 @@
<string name="html_export_label">Exportar HTML</string>
<string name="exporting_label">Exportando...</string>
<string name="export_error_label">Fallo ao exportar</string>
- <string name="opml_export_success_title">ExportaciĆ³n OPML exitosa.</string>
- <string name="opml_export_success_sum">O ficheiro .opml foi gardado en:\u0020</string>
+ <string name="export_success_title">Exportado con Ć©xito</string>
+ <string name="export_success_sum">Escribeuse o ficheiro exportado en:\n\n%1$s</string>
<string name="opml_import_ask_read_permission">PrecĆ­sase acceso ao almacenamento externo para ler o ficheiro OPML</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">Establecer apagado automƔtico</string>
- <string name="disable_sleeptimer_label">Deshabilitar o apagado automƔtico</string>
+ <string name="disable_sleeptimer_label">Desactivar o apagado automƔtico</string>
<string name="enter_time_here_label">Introducir tempo</string>
<string name="sleep_timer_label">Apagado automƔtico</string>
<string name="time_left_label">Tempo restante:\u0020</string>
@@ -479,9 +505,9 @@
<item quantity="one">1 hora</item>
<item quantity="other">%d horas</item>
</plurals>
- <string name="auto_enable_label">Habilitar automƔticamente</string>
+ <string name="auto_enable_label">Habilitar automaticamente</string>
<string name="sleep_timer_enabled_label">Apagado automƔtico habilitado</string>
- <string name="sleep_timer_disabled_label">Apagado automƔtico deshabilitado</string>
+ <string name="sleep_timer_disabled_label">Apagado automƔtico desactivado</string>
<!--gpodder.net-->
<string name="gpodnet_taglist_header">CATEGORƍAS</string>
<string name="gpodnet_toplist_header">PODCASTS TOP</string>
@@ -504,7 +530,7 @@
<string name="gpodnetauth_device_caption_errorEmpty">Non pode quedar baldeiro o titulo</string>
<string name="gpodnetauth_device_butChoose">Escoller</string>
<string name="gpodnetauth_finish_title">ConexiĆ³n correcta!</string>
- <string name="gpodnetauth_finish_descr">ParabĆ©ns! A sĆŗa conta gpodder.net estĆ” conectada ao dispositivo. AntennaPod poderĆ” agora sincronizar automĆ”ticamente as sĆŗas suscriciĆ³ns no dispositivo na conta de gpodder.net</string>
+ <string name="gpodnetauth_finish_descr">ParabĆ©ns! A sĆŗa conta gpodder.net estĆ” conectada ao dispositivo. AntennaPod poderĆ” agora sincronizar automaticamente as sĆŗas subscriciĆ³ns no dispositivo na conta de gpodder.net</string>
<string name="gpodnetauth_finish_butsyncnow">Iniciar a sincronizaciĆ³n</string>
<string name="gpodnetauth_finish_butgomainscreen">Ir a pantalla principal</string>
<string name="gpodnetsync_auth_error_title">fallo na autenticaciĆ³n en gpodder.net</string>
@@ -530,14 +556,14 @@
<string name="folder_not_empty_dialog_title">O cartafol non estĆ” baldeiro</string>
<string name="folder_not_empty_dialog_msg">O cartafol escollido non estĆ” baldeiro. As descargas de medios e outros ficheiros situaranse directamente en este cartafol. Proceder de todos xeitos?</string>
<string name="set_to_default_folder">Escolla o cartafol por omisiĆ³n</string>
- <string name="pref_pausePlaybackForFocusLoss_sum">Pausar a reproduciĆ³n en lugar de baixar o volume cando outro app quere reproducir un son.</string>
+ <string name="pref_pausePlaybackForFocusLoss_sum">Pausar a reproduciĆ³n en lugar de baixar o volume cando outro aplicativo quere reproducir un son.</string>
<string name="pref_pausePlaybackForFocusLoss_title">Pausa para interrupciĆ³ns</string>
<string name="pref_resumeAfterCall_sum">Retomar a reproduciĆ³n despois de rematar a chamada telefĆ³nica</string>
<string name="pref_resumeAfterCall_title">Retomar despois da chamada</string>
<string name="pref_restart_required">AntennaPod debe reiniciarse para que esta opciĆ³n se aplique.</string>
<!--Online feed view-->
- <string name="subscribe_label">Suscribir</string>
- <string name="subscribed_label">Suscrito</string>
+ <string name="subscribe_label">Subscribir</string>
+ <string name="subscribed_label">Subscrito</string>
<string name="downloading_label">Descargando...</string>
<!--Content descriptions for image buttons-->
<string name="rewind_label">Rebobinar</string>
@@ -562,10 +588,10 @@
<!--Progress information-->
<string name="progress_upgrading_database">Actualizando a base de datos</string>
<!--AntennaPodSP-->
- <string name="sp_apps_importing_feeds_msg">Importando as suscriciĆ³ns desde apps de propĆ³sito Ćŗnico...</string>
+ <string name="sp_apps_importing_feeds_msg">Importando as subscriciĆ³ns desde aplicativos de propĆ³sito Ćŗnico...</string>
<string name="search_itunes_label">Buscar en iTunes</string>
<string name="filter">Filtrado</string>
- <string name="search_fyyd_label">Buscar fyyd</string>
+ <string name="search_fyyd_label">Buscar en fyyd</string>
<!--Episodes apply actions-->
<string name="all_label">Todo</string>
<string name="selected_all_label">Seleccionar todos os episodios</string>
@@ -593,7 +619,7 @@
<string name="sort_duration_short_long">DuraciĆ³n (Curto \u2192 Longo)</string>
<string name="sort_duration_long_short">DuraciĆ³n (Longo \u2192 Curto)</string>
<!--Rating dialog-->
- <string name="rating_title">Gosta de AntennaPod?</string>
+ <string name="rating_title">Goza de AntennaPod?</string>
<string name="rating_message">AgradecerĆ­amos que dedicase un intre a valorar AntennaPod.</string>
<string name="rating_never_label">Pasa de min oh!</string>
<string name="rating_later_label">Lembrar mƔis tarde</string>
@@ -621,11 +647,11 @@
<string name="proxy_port_invalid_error">Porto non vƔlido</string>
<!--Database import/export-->
<string name="import_export">Importar/Exportar base de datos</string>
- <string name="import_export_warning">Esta funciĆ³n experimental utilĆ­zase para transferir as sĆŗas suscriciĆ³ns e episodios reproducidos en outro dispositivo.\n\nAs bases de datos exportadas sĆ³ se poden importar si utiliza a misma versiĆ³n de AntennaPod. De todos xeitos, esta funciĆ³n pode comportarse de xeito raro.\n\nDespois de importar, os episodios poderĆ­an ser mostrados como descargados sin telo sido. Simplemente pulse o botĆ³n de reproduciĆ³n dos episodios para que AntennaPod detecte esto.</string>
+ <string name="import_export_warning">Esta funciĆ³n experimental utilĆ­zase para transferir as sĆŗas subscriciĆ³ns e episodios reproducidos noutro dispositivo.\n\nAs bases de datos exportadas sĆ³ se poden importar se utiliza a misma versiĆ³n de AntennaPod. De todos xeitos, esta funciĆ³n pode comportarse de xeito raro.\n\nDespois de importar, os episodios poderĆ­an ser mostrados como descargados sin telo sido. Simplemente pulse o botĆ³n de reproduciĆ³n dos episodios para que AntennaPod detecte esto.</string>
<string name="label_import">Importar</string>
<string name="label_export">Exportar</string>
<string name="import_select_file">Escolla o ficheiro a importar</string>
- <string name="export_ok">Exportouse correctamente. A base de datos escribeuse na tarxeta SD.</string>
+ <string name="export_ok">Exportado con Ć©xito.</string>
<string name="import_ok">ImportaciĆ³n correcta.\n\nPulse OK para reiniciar AntennaPod</string>
<!--Casting-->
<string name="cast_media_route_menu_title">Reproducir en...</string>
@@ -643,4 +669,13 @@
<string name="cast_failed_seek">Non se puido cambiar a posiciĆ³n no dispositivo de emisiĆ³n</string>
<string name="cast_failed_receiver_player_error">O reprodutor receptor atopou un fallo grave</string>
<string name="cast_failed_media_error_skipping">Fallo na reproduciĆ³n de medios. Saltando...</string>
+ <!--Notification channels-->
+ <string name="notification_channel_user_action">AcciĆ³n requerida</string>
+ <string name="notification_channel_user_action_description">Mostrado si a sĆŗa acciĆ³n Ć© requerida, por exemplo si precisa introducir o contrasinal.</string>
+ <string name="notification_channel_downloading">Descargando</string>
+ <string name="notification_channel_downloading_description">Mostrado durante a descarga actual.</string>
+ <string name="notification_channel_playing">Soando agora</string>
+ <string name="notification_channel_playing_description">Permite controlar a reproduciĆ³n. Esta Ć© a notificaciĆ³n principal que verĆ” mentras reproduce un podcast.</string>
+ <string name="notification_channel_error">Fallos</string>
+ <string name="notification_channel_error_description">Mostrado si algo falla, por exemplo si a descarga ou a sincronizaciĆ³n con gpodder fallan.</string>
</resources>
diff --git a/core/src/main/res/values-hi-rIN/strings.xml b/core/src/main/res/values-hi-rIN/strings.xml
index 7e3333a37..2cb584c48 100644
--- a/core/src/main/res/values-hi-rIN/strings.xml
+++ b/core/src/main/res/values-hi-rIN/strings.xml
@@ -1,35 +1,75 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources xmlns:tools="http://schemas.android.com/tools">
<!--Activitiy and fragment titles-->
+ <string name="feed_update_receiver_name">ą¤øą¤¬ą„ą¤øą„ą¤•ą„ą¤°ą¤æą¤Ŗą„ą¤¶ą¤Øą„ą¤ø ą¤•ą¤¾ ą¤…ą¤¦ą„ą¤Æą¤¤ą¤Ø </string>
<string name="feeds_label">ą¤«ą¤æą¤”ą„ą¤ø</string>
+ <string name="statistics_label">ą¤†ą¤‚ą¤•ą¤”ą¤¼ą„‡</string>
+ <string name="add_feed_label">ą¤Ŗą„‰ą¤”ą¤•ą¤¾ą¤øą„ą¤Ÿ ą¤œą„‹ą¤”ą¤¼ą„‡ą¤‚</string>
+ <string name="episodes_label">ą¤ą¤Ŗą¤æą¤øą„‹ą¤”</string>
+ <string name="all_episodes_short_label">ą¤øą¤¾ą¤°ą„‡</string>
+ <string name="new_episodes_label">ą¤Øą¤Æą„‡</string>
+ <string name="favorite_episodes_label">ą¤Ŗą¤øą¤‚ą¤¦ą„€ą¤¦ą¤¾</string>
<string name="new_label">ą¤Øą¤Æą¤¾</string>
<string name="settings_label">ą¤øą„‡ą¤Ÿą¤æą¤‚ą¤—ą„ą¤ø</string>
<string name="downloads_label">ą¤”ą¤¾ą¤‰ą¤Øą¤²ą„‹ą¤”</string>
+ <string name="downloads_running_label">ą¤œą¤¾ą¤°ą„€</string>
+ <string name="downloads_completed_label">ą¤øą¤‚ą¤Ŗą¤Øą„ą¤Ø ą¤¹ą„ą¤</string>
+ <string name="downloads_log_label">ą¤…ą¤­ą¤æą¤²ą„‡ą¤–</string>
+ <string name="subscriptions_label">ą¤øą¤¬ą„ą¤øą„ą¤•ą„ą¤°ą¤æą¤Ŗą„ą¤¶ą¤Øą„ą¤ø</string>
+ <string name="subscriptions_list_label">ą¤øą¤¬ą„ą¤øą„ą¤•ą„ą¤°ą¤æą¤Ŗą„ą¤¶ą¤Øą„ą¤ø ą¤•ą„€ ą¤øą„‚ą¤šą„€</string>
<string name="cancel_download_label">ą¤”ą¤¾ą¤‰ą¤Øą¤²ą„‹ą¤” ą¤°ą¤¦ą„ą¤¦ ą¤•ą¤°ą„‡ą¤‚</string>
<string name="playback_history_label">ą¤Ŗą„ą¤²ą„‡ą¤¬ą„ˆą¤• ą¤‡ą¤¤ą¤æą¤¹ą¤¾ą¤ø</string>
<string name="gpodnet_main_label">gpodder.net</string>
- <string name="gpodnet_auth_label">gpodder.net login</string>
+ <string name="gpodnet_summary">ą¤…ą¤Øą„ą¤Æ ą¤‰ą¤Ŗą¤•ą¤°ą¤£ ą¤•ą„‡ ą¤øą¤¾ą¤„ ą¤øą¤®ą¤•ą„ą¤°ą¤®ą¤æą¤• ą¤•ą¤°ą„‡ą¤‚</string>
+ <string name="gpodnet_auth_label">gpodder.net ą¤²ą„‰ą¤—ą¤æą¤Ø</string>
+ <string name="free_space_label">%1$s ą¤–ą¤¾ą¤²ą„€</string>
+ <string name="episode_cache_full_title">ą¤ą¤Ŗą¤æą¤øą„‹ą¤” ą¤•ą„ˆą¤¶ ą¤­ą¤° ą¤—ą¤Æą¤¾ ą¤¹ą„ˆ</string>
+ <string name="episode_cache_full_message">ą¤ą¤Ŗą¤æą¤øą„‹ą¤” ą¤•ą„ˆą¤¶ ą¤øą„€ą¤®ą¤¾ ą¤¤ą¤• ą¤Ŗą¤¹ą„ą¤‚ą¤š ą¤—ą¤Æą¤¾ ą¤¹ą„ˆą„¤ ą¤†ą¤Ŗ ą¤øą„‡ą¤Ÿą¤æą¤‚ą¤— ą¤®ą„‡ą¤‚ ą¤•ą„ˆą¤¶ ą¤•ą¤¾ ą¤†ą¤•ą¤¾ą¤° ą¤¬ą¤¢ą¤¼ą¤¾ ą¤øą¤•ą¤¤ą„‡ ą¤¹ą„ˆą¤‚ą„¤</string>
+ <string name="synchronizing">ą¤øą¤®ą¤•ą„ą¤°ą¤®ą¤æą¤• ą¤¹ą„‹ ą¤°ą¤¹ą¤¾ ą¤¹ą„ˆ...</string>
<!--Statistics fragment-->
+ <string name="total_time_listened_to_podcasts">ą¤šą¤²ą¤¾ą¤Æą„‡ ą¤—ą¤ ą¤Ŗą„‰ą¤”ą¤•ą¤¾ą¤øą„ą¤Ÿ ą¤•ą¤¾ ą¤•ą„ą¤² ą¤øą¤®ą¤Æ:</string>
+ <string name="statistics_details_dialog">%2$d ą¤®ą„‡ą¤‚ ą¤øą„‡ %1$d ą¤ą¤Ŗą¤æą¤øą„‹ą¤” ą¤¶ą„ą¤°ą„‚ ą¤•ą¤æą¤ ą¤—ą¤ ą¤¹ą„ˆ.\n\n%4$s ą¤®ą„‡ą¤‚ ą¤øą„‡ %3$są¤Ŗą„‚ą¤°ą„‡ ą¤¹ą„ą¤ ą¤¹ą„ˆą„¤ </string>
+ <string name="statistics_mode_normal">ą¤µą¤¾ą¤øą„ą¤¤ą¤µ ą¤®ą„‡ą¤‚ ą¤šą¤²ą¤¾ą¤ˆ ą¤—ą¤Æą„€ ą¤…ą¤µą¤§ą¤æ ą¤•ą„€ ą¤—ą¤£ą¤Øą¤¾ ą¤•ą¤°ą„‡ą¤‚ą„¤ ą¤¦ą„‹ ą¤¬ą¤¾ą¤° ą¤šą¤²ą¤Øą„‡ ą¤Ŗą¤° ą¤¦ą„‹ ą¤¬ą¤¾ą¤° ą¤—ą¤æą¤Øą¤¾ ą¤œą¤¾ą¤Æą„‡ą¤—ą¤¾, ą¤œą¤¬ą¤•ą¤æ ą¤šą¤² ą¤šą„‚ą¤•ą¤¾ ą¤øą¤¾ ą¤šą¤æą¤¹ą„ą¤Øą¤æą¤¤ą„‹ ą¤•ą„‹ ą¤Øą¤¹ą„€ ą¤—ą¤æą¤Øą¤¾ ą¤œą¤¾ą¤Æą„‡ą¤—ą¤¾ą„¤</string>
+ <string name="statistics_speed_not_counted">ą¤øą„‚ą¤šą¤Øą¤¾: ą¤Ŗą„ą¤²ą„‡ą¤¬ą„ˆą¤• ą¤—ą¤¤ą¤æ ą¤•ą„‹ ą¤•ą¤­ą„€ ą¤­ą„€ ą¤§ą„ą¤Æą¤¾ą¤Ø ą¤®ą„‡ą¤‚ ą¤Øą¤¹ą„€ą¤‚ ą¤°ą¤–ą¤¾ ą¤œą¤¾ą¤¤ą¤¾ ą¤¹ą„ˆą„¤</string>
<!--Main activity-->
+ <string name="drawer_open">ą¤®ą„‡ą¤Øą„ą¤Æą„‚ ą¤–ą„‹ą¤²ą„‡ą¤‚</string>
+ <string name="drawer_close">ą¤®ą„‡ą¤Øą„ą¤Æą„‚ ą¤¬ą¤‚ą¤¦ ą¤•ą¤°ą„‡ą¤‚</string>
+ <string name="drawer_preferences">ą¤”ą„ą¤°ą¤¾ą¤µą¤° ą¤•ą„€ ą¤Ŗą„ą¤°ą¤¾ą¤„ą¤®ą¤æą¤•ą¤¤ą¤¾ą¤ą¤‚</string>
+ <string name="drawer_feed_order_unplayed_episodes">ą¤•ą¤¾ą¤‰ą¤‚ą¤Ÿą¤° ą¤øą„‡ ą¤•ą„ą¤°ą¤®ą¤¬ą¤¦ą„ą¤§ ą¤•ą¤°ą„‡ą¤‚</string>
+ <string name="drawer_feed_order_alphabetical">ą¤µą¤°ą„ą¤£ą¤¾ą¤Øą„ą¤•ą„ą¤°ą¤® ą¤øą„‡ ą¤•ą„ą¤°ą¤®ą¤¬ą¤¦ą„ą¤§ ą¤•ą¤°ą„‡ą¤‚</string>
+ <string name="drawer_feed_order_last_update">ą¤Ŗą„ą¤°ą¤•ą¤¾ą¤¶ą¤Ø ą¤¤ą¤æą¤„ą¤æ ą¤øą„‡ ą¤•ą„ą¤°ą¤®ą¤¬ą¤¦ą„ą¤§ ą¤•ą¤°ą„‡ą¤‚</string>
+ <string name="drawer_feed_order_most_played">ą¤šą¤²ą¤¾ą¤ ą¤—ą¤ ą¤ą¤Ŗą¤æą¤øą„‹ą¤” ą¤•ą„€ ą¤øą¤‚ą¤–ą„ą¤Æą¤¾</string>
+ <string name="drawer_feed_counter_new_unplayed">ą¤Øą¤ ą¤”ą¤° ą¤Øą¤¹ą„€ą¤‚ ą¤šą¤²ą¤¾ą¤ ą¤—ą¤ ą¤ą¤Ŗą¤æą¤øą„‹ą¤” ą¤•ą„€ ą¤øą¤‚ą¤–ą„ą¤Æą¤¾</string>
+ <string name="drawer_feed_counter_new">ą¤Øą¤ ą¤ą¤Ŗą¤æą¤øą„‹ą¤” ą¤•ą„€ ą¤øą¤‚ą¤–ą„ą¤Æą¤¾</string>
+ <string name="drawer_feed_counter_unplayed">ą¤Øą¤¹ą„€ą¤‚ ą¤šą¤²ą¤¾ą¤ ą¤—ą¤ ą¤ą¤Ŗą¤æą¤øą„‹ą¤” ą¤•ą„€ ą¤øą¤‚ą¤–ą„ą¤Æą¤¾</string>
+ <string name="drawer_feed_counter_downloaded">ą¤”ą¤¾ą¤‰ą¤Øą¤²ą„‹ą¤” ą¤•ą¤æą¤ ą¤—ą¤ ą¤ą¤Ŗą¤æą¤øą„‹ą¤” ą¤•ą„€ ą¤øą¤‚ą¤–ą„ą¤Æą¤¾</string>
+ <string name="drawer_feed_counter_none">ą¤¶ą„‚ą¤Øą„ą¤Æ</string>
<!--Webview actions-->
<string name="open_in_browser_label">ą¤¬ą„ą¤°ą¤¾ą¤‰ą¤œą¤¼ą¤° ą¤®ą„‡ą¤‚ ą¤–ą„‹ą¤²ą„‡ą¤‚</string>
<string name="copy_url_label">ą¤•ą„‰ą¤Ŗą„€ ą¤Æą„‚ą¤†ą¤°ą¤ą¤²</string>
<string name="share_url_label">ą¤¶ą„‡ą¤Æą¤° ą¤Æą„‚ą¤†ą¤°ą¤ą¤²</string>
- <string name="copied_url_msg">ą¤Æą„‚ą¤†ą¤°ą¤ą¤² ą¤•ą„‹ ą¤•ą„ą¤²ą¤æą¤Ŗą¤¬ą„‹ą¤°ą„ą¤” ą¤Ŗą¤° ą¤•ą„‰ą¤Ŗą„€ ą¤•ą¤° ą¤²ą¤æą¤Æą¤¾ ą¤—ą¤Æą¤¾ ą¤¹ą„ˆ</string>
+ <string name="copied_url_msg">ą¤Æą„‚ą¤†ą¤°ą¤ą¤² ą¤•ą„‹ ą¤•ą„ą¤²ą¤æą¤Ŗą¤¬ą„‹ą¤°ą„ą¤” ą¤Ŗą¤° ą¤•ą„‰ą¤Ŗą„€ ą¤•ą¤æą¤Æą¤¾ ą¤—ą¤Æą¤¾ ą¤¹ą„ˆ</string>
+ <string name="go_to_position_label">ą¤‡ą¤ø ą¤øą„ą¤„ą¤¾ą¤Ø ą¤Ŗą¤° ą¤œą¤¾ą¤ą¤‚</string>
<!--Playback history-->
<string name="clear_history_label"> ą¤¹ą¤æą¤øą„ą¤Ÿą„ą¤°ą„€ ą¤¹ą¤Ÿą¤¾ą¤ą¤</string>
<!--Other-->
<string name="confirm_label">ą¤Ŗą„ą¤·ą„ą¤Ÿą¤æ ą¤•ą¤°ą„‡ą¤‚</string>
<string name="cancel_label">ą¤°ą¤¦ą„ą¤¦ ą¤•ą¤°ą„‡ą¤‚</string>
- <string name="author_label"> ą¤Øą¤æą¤°ą„ą¤®ą¤¾ą¤¤ą¤¾</string>
+ <string name="yes">ą¤¹ą¤¾ą¤</string>
+ <string name="no">ą¤Øą¤¹ą„€ą¤‚</string>
+ <string name="reset">ą¤°ą„€ą¤øą„‡ą¤Ÿ</string>
+ <string name="author_label">ą¤•ą¤²ą¤¾ą¤•ą¤¾ą¤°</string>
<string name="language_label">ą¤­ą¤¾ą¤·ą¤¾</string>
+ <string name="url_label">URL</string>
<string name="podcast_settings_label">ą¤øą„‡ą¤Ÿą¤æą¤‚ą¤—ą„ą¤ø</string>
<string name="cover_label">ą¤¤ą¤øą„ą¤µą„€ą¤°</string>
<string name="error_label">ą¤¤ą„ą¤°ą„ą¤Ÿą¤æ</string>
<string name="error_msg_prefix">ą¤ą¤• ą¤¤ą„ą¤°ą„ą¤Ÿą¤æ ą¤¹ą„‹ ą¤—ą¤ˆ:</string>
+ <string name="needs_storage_permission">ą¤‡ą¤ø ą¤•ą¤¾ą¤°ą„ą¤Æ ą¤•ą„€ ą¤Ŗą„‚ą¤°ą„ą¤¤ą„€ ą¤•ą„‡ ą¤²ą¤æą¤ ą¤øą„ą¤Ÿą„‹ą¤°ą„‡ą¤œ ą¤…ą¤Øą„ą¤®ą¤¤ą¤æ ą¤•ą„€ ą¤†ą¤µą¤¶ą„ą¤Æą¤•ą¤¤ą¤¾ ą¤¹ą„ˆ</string>
<string name="refresh_label">ą¤¤ą¤¾ą¤œą¤¼ą¤¾ ą¤•ą¤°ą„‡ą¤‚</string>
<string name="external_storage_error_msg">ą¤•ą„‹ą¤ˆ ą¤¬ą¤¾ą¤¹ą¤°ą„€ ą¤­ą¤‚ą¤”ą¤¾ą¤°ą¤£ ą¤‰ą¤Ŗą¤²ą¤¬ą„ą¤§ ą¤Øą¤¹ą„€ą¤‚ ą¤¹ą„ˆ.ą¤øą„ą¤Øą¤æą¤¶ą„ą¤šą¤æą¤¤ ą¤•ą¤°ą„‡ą¤‚ ą¤•ą¤æ ą¤†ą¤Ŗą¤Øą„‡ ą¤¬ą¤¾ą¤¹ą¤°ą„€ ą¤­ą¤‚ą¤”ą¤¾ą¤°ą¤£ ą¤®ą„ą¤¹ą¤æą¤® ą¤¶ą„ą¤°ą„‚ ą¤•ą„€ ą¤¹ą„ˆ ą¤¤ą¤¾ą¤•ą¤æ ą¤…ą¤Øą„ą¤Ŗą„ą¤°ą¤Æą„‹ą¤— ą¤ ą„€ą¤• ą¤øą„‡ ą¤•ą¤¾ą¤® ą¤•ą¤° ą¤øą¤•ą¤¤ą„‡ ą¤¹ą„ˆą¤‚</string>
<string name="chapters_label">ą¤…ą¤§ą„ą¤Æą¤¾ą¤Æ</string>
+ <string name="chapter_duration">ą¤…ą¤µą¤§ą¤æ: %1$s</string>
<string name="shownotes_label">ą¤Øą„‹ą¤Ÿą„ą¤ø ą¤¦ą¤æą¤–ą¤¾ą¤ą¤</string>
<string name="description_label">ą¤µą¤æą¤µą¤°ą¤£</string>
<string name="most_recent_prefix">ą¤øą¤¬ą¤øą„‡ ą¤¹ą¤¾ą¤² ą¤•ą¤¾ ą¤Ŗą„ą¤°ą¤•ą¤°ą¤£:\u0020</string>
@@ -37,40 +77,100 @@
<string name="length_prefix">ą¤²ą¤‚ą¤¬ą¤¾ą¤ˆ:\u0020</string>
<string name="size_prefix">ą¤øą¤¾ą¤‡ą¤œ:\u0020</string>
<string name="processing_label">ą¤Ŗą„ą¤°ą¤øą¤‚ą¤øą„ą¤•ą¤°ą¤£</string>
+ <string name="loading_label">ą¤²ą„‹ą¤” ą¤¹ą„‹ ą¤°ą¤¹ą¤¾ ą¤¹ą„ˆ...</string>
<string name="save_username_password_label">ą¤Æą„‚ą¤œą¤¼ą¤°ą¤Øą„‡ą¤® ą¤”ą¤° ą¤Ŗą¤¾ą¤øą¤µą¤°ą„ą¤” ą¤øą¤¹ą„‡ą¤œą„‡ą¤‚</string>
<string name="close_label">ą¤¬ą¤‚ą¤¦ ą¤•ą¤°ą„‡ą¤‚</string>
<string name="retry_label">ą¤Ŗą„ą¤Ø: ą¤Ŗą„ą¤°ą¤Æą¤¾ą¤ø</string>
<string name="auto_download_label">ą¤‘ą¤Ÿą„‹ ą¤”ą¤¾ą¤‰ą¤Øą¤²ą„‹ą¤” ą¤®ą„‡ą¤‚ ą¤¶ą¤¾ą¤®ą¤æą¤² ą¤•ą¤°ą„‡ą¤‚</string>
+ <string name="auto_download_apply_to_items_title">ą¤Ŗą¤æą¤›ą¤²ą„‡ ą¤ą¤Ŗą¤æą¤øą„‹ą¤” ą¤Ŗą¤° ą¤²ą¤¾ą¤—ą„‚ ą¤•ą¤°ą„‡ą¤‚</string>
+ <string name="auto_download_apply_to_items_message">ą¤Øą¤Æą¤¾ <i>ą¤‘ą¤Ÿą„‹ ą¤”ą¤¾ą¤‰ą¤Øą¤²ą„‹ą¤”</i> ą¤øą„‡ą¤Ÿą¤æą¤‚ą¤— ą¤øą„ą¤µą¤šą¤¾ą¤²ą¤æą¤¤ ą¤°ą„‚ą¤Ŗ ą¤øą„‡ ą¤Øą¤ ą¤ą¤Ŗą¤æą¤øą„‹ą¤” ą¤Ŗą¤° ą¤²ą¤¾ą¤—ą„‚ ą¤•ą„€ ą¤œą¤¾ą¤ą¤—ą¤¾ą„¤\ną¤•ą„ą¤Æą¤¾ ą¤†ą¤Ŗ ą¤‡ą¤øą¤øą„‡ ą¤Ŗą¤¹ą¤²ą„‡ ą¤Ŗą„ą¤°ą¤•ą¤¾ą¤¶ą¤æą¤¤ ą¤ą¤Ŗą¤æą¤øą„‹ą¤” ą¤Ŗą¤° ą¤­ą„€ ą¤²ą¤¾ą¤—ą„‚ ą¤•ą¤°ą¤Øą¤¾ ą¤šą¤¾ą¤¹ą¤¤ą„‡ ą¤¹ą„ˆą¤‚?</string>
+ <string name="auto_delete_label">ą¤‘ą¤Ÿą„‹ ą¤”ą¤æą¤²ą„€ą¤Ÿ ą¤ą¤Ŗą¤æą¤øą„‹ą¤”</string>
+ <string name="parallel_downloads_suffix">\u0020ą¤øą¤®ą¤¾ą¤Øą¤¾ą¤‚ą¤¤ą¤° ą¤”ą¤¾ą¤‰ą¤Øą¤²ą„‹ą¤”</string>
+ <string name="feed_auto_download_global">ą¤øą¤¾ą¤°ą„ą¤µą¤­ą„Œą¤®ą¤æą¤• ą¤”ą¤æą¤«ą¤¼ą„‰ą¤²ą„ą¤Ÿ</string>
+ <string name="feed_auto_download_always">ą¤¹ą¤®ą„‡ą¤¶ą¤¾</string>
+ <string name="feed_auto_download_never">ą¤•ą¤­ą„€ ą¤Øą¤¹ą„€ą¤</string>
+ <string name="send_label">ą¤­ą„‡ą¤œą„‡ą¤‚...</string>
+ <string name="episode_cleanup_never">ą¤•ą¤­ą„€ ą¤Øą¤¹ą„€ą¤</string>
+ <string name="episode_cleanup_queue_removal">ą¤œą¤¬ ą„˜ą¤¤ą¤¾ą¤° ą¤®ą„‡ą¤‚ ą¤Øą¤¹ą„€ą¤‚ ą¤¹ą„‹</string>
+ <string name="episode_cleanup_after_listening">ą¤øą¤®ą¤¾ą¤Ŗą„ą¤¤ą¤æ ą¤•ą„‡ ą¤¬ą¤¾ą¤¦</string>
+ <plurals name="episode_cleanup_days_after_listening">
+ <item quantity="one">ą¤øą¤®ą¤¾ą¤Ŗą„ą¤¤ą¤æ ą¤•ą„‡ 1 ą¤¦ą¤æą¤Ø ą¤¬ą¤¾ą¤¦</item>
+ <item quantity="other">ą¤øą¤®ą¤¾ą¤Ŗą„ą¤¤ą¤æ ą¤•ą„‡ %d ą¤¦ą¤æą¤Ø ą¤¬ą¤¾ą¤¦</item>
+ </plurals>
<!--'Add Feed' Activity labels-->
<string name="feedurl_label">ą¤Æą„‚ą¤†ą¤°ą¤ą¤² ą¤«ą¤¼ą„€ą¤”</string>
+ <string name="etxtFeedurlHint">www.example.com/feed</string>
<string name="txtvfeedurl_label">ą¤Æą„‚ą¤†ą¤°ą¤ą¤² ą¤¦ą„ą¤µą¤¾ą¤°ą¤¾ ą¤Ŗą„‰ą¤”ą¤•ą¤¾ą¤øą„ą¤Ÿ ą¤œą„‹ą¤”ą¤¼ą„‡ą¤‚</string>
<string name="podcastdirectories_label">ą¤Ŗą„‰ą¤”ą¤•ą¤¾ą¤øą„ą¤Ÿ ą¤Øą¤æą¤°ą„ą¤¦ą„‡ą¤¶ą¤æą¤•ą¤¾</string>
+ <string name="podcastdirectories_descr">ą¤Øą¤ ą¤Ŗą„‰ą¤”ą¤•ą¤¾ą¤øą„ą¤Ÿ ą¤•ą„‡ ą¤²ą¤æą¤, ą¤†ą¤Ŗ iTunes ą¤Æą¤¾ fyyd ą¤–ą„‹ą¤œ ą¤øą¤•ą¤¤ą„‡ ą¤¹ą„ˆą¤‚, ą¤Æą¤¾ gpodder.net ą¤•ą„‹ ą¤Øą¤¾ą¤®, ą¤¶ą„ą¤°ą„‡ą¤£ą„€ ą¤Æą¤¾ ą¤²ą„‹ą¤•ą¤Ŗą„ą¤°ą¤æą¤Æą¤¤ą¤¾ ą¤¦ą„ą¤µą¤¾ą¤°ą¤¾ ą¤¬ą„ą¤°ą¤¾ą¤‰ą¤œą¤¼ ą¤•ą¤° ą¤øą¤•ą¤¤ą„‡ ą¤¹ą„ˆą¤‚ą„¤</string>
+ <string name="browse_gpoddernet_label">gpodder.net ą¤¬ą„ą¤°ą¤¾ą¤‰ą¤œą¤¼ ą¤•ą¤°ą„‡ą¤‚</string>
<!--Actions on feeds-->
<string name="mark_all_read_label">ą¤Ŗą¤¢ą¤¼ą¤Øą„‡ ą¤•ą„‡ ą¤°ą„‚ą¤Ŗ ą¤®ą„‡ą¤‚ ą¤øą¤­ą„€ ą¤•ą„‹ ą¤šą¤æą¤¹ą„ą¤Øą¤æą¤¤ ą¤•ą¤°ą„‡ą¤‚</string>
<string name="show_info_label">ą¤œą¤¾ą¤Øą¤•ą¤¾ą¤°ą„€ ą¤¦ą¤æą¤–ą¤¾ą¤ą¤</string>
- <string name="remove_feed_label">ą¤Ŗą„‰ą¤”ą¤•ą¤¾ą¤øą„ą¤Ÿ ą¤¹ą¤Ÿą¤¾ą¤ą¤
-</string>
- <string name="share_link_label">ą¤¶ą„‡ą¤Æą¤° ą¤µą„‡ą¤¬ą¤øą¤¾ą¤‡ą¤Ÿ ą¤²ą¤æą¤‚ą¤•</string>
- <string name="feed_remover_msg">ą¤«ą¤¼ą„€ą¤” ą¤Øą¤æą¤•ą¤¾ą¤² ą¤°ą¤¹ą¤¾ ą¤¹ą„ˆ</string>
+ <string name="show_feed_settings_label">ą¤Ŗą„‰ą¤”ą¤•ą¤¾ą¤øą„ą¤Ÿ ą¤øą„‡ą¤Ÿą¤æą¤‚ą¤— ą¤¦ą¤æą¤–ą¤¾ą¤ą¤‚</string>
+ <string name="feed_info_label">ą¤Ŗą„‰ą¤”ą¤•ą¤¾ą¤øą„ą¤Ÿ ą¤•ą„€ ą¤œą¤¾ą¤Øą¤•ą¤¾ą¤°ą„€</string>
+ <string name="feed_settings_label">ą¤Ŗą„‰ą¤”ą¤•ą¤¾ą¤øą„ą¤Ÿ ą¤•ą„€ ą¤øą„‡ą¤Ÿą¤æą¤‚ą¤—</string>
+ <string name="rename_feed_label">ą¤Ŗą„‰ą¤”ą¤•ą¤¾ą¤øą„ą¤Ÿ ą¤•ą¤¾ ą¤Øą¤¾ą¤® ą¤¬ą¤¦ą¤²ą„‡</string>
+ <string name="remove_feed_label">ą¤Ŗą„‰ą¤”ą¤•ą¤¾ą¤øą„ą¤Ÿ ą¤¹ą¤Ÿą¤¾ą¤</string>
+ <string name="share_label">ą¤¶ą„‡ą¤Æą¤°...</string>
+ <string name="share_link_label">ą¤ą¤Ŗą¤æą¤øą„‹ą¤” URL ą¤¶ą„‡ą¤Æą¤° ą¤•ą¤°ą„‡</string>
+ <string name="share_link_with_position_label">ą¤øą„ą¤„ą¤¾ą¤Ø ą¤•ą„‡ ą¤øą¤¾ą¤„ ą¤ą¤Ŗą¤æą¤øą„‹ą¤” URL ą¤¶ą„‡ą¤Æą¤° ą¤•ą¤°ą„‡</string>
+ <string name="share_file_label">ą¤«ą¤¾ą¤‡ą¤² ą¤¶ą„‡ą¤Æą¤° ą¤•ą¤°ą„‡</string>
+ <string name="share_feed_url_label">ą¤«ą„€ą¤” URL ą¤¶ą„‡ą¤Æą¤° ą¤•ą¤°ą„‡</string>
+ <string name="share_item_url_label">ą¤®ą„€ą¤”ą¤æą¤Æą¤¾ ą¤«ą¤¾ą¤‡ą¤² ą¤¶ą„‡ą¤Æą¤° ą¤•ą¤°ą„‡</string>
+ <string name="share_item_url_with_position_label"> ą¤øą„ą¤„ą¤¾ą¤Ø ą¤•ą„‡ ą¤øą¤¾ą¤„ ą¤®ą„€ą¤”ą¤æą¤Æą¤¾ ą¤«ą¤¾ą¤‡ą¤² ą¤¶ą„‡ą¤Æą¤° ą¤•ą¤°ą„‡</string>
+ <string name="feed_remover_msg">ą¤Ŗą„‰ą¤”ą¤•ą¤¾ą¤øą„ą¤Ÿ ą¤¹ą¤Ÿą¤¾ą¤Æą¤¾ ą¤œą¤¾ą¤°ą¤¹ą¤¾ ą¤¹ą„ˆ</string>
+ <string name="load_complete_feed">ą¤øą¤¾ą¤°ą„‡ ą¤Ŗą„‰ą¤”ą¤•ą¤¾ą¤øą„ą¤Ÿ ą¤•ą„‹ ą¤°ą¤æą¤«ą„ą¤°ą„‡ą¤¶ ą¤•ą¤°ą„‡ą¤‚</string>
+ <string name="hide_episodes_title">ą¤ą¤Ŗą¤æą¤øą„‹ą¤” ą¤›ą„ą¤Ŗą¤¾ą¤</string>
+ <string name="batch_edit">ą¤œą¤¤ą„ą¤„ą¤¾ ą¤øą¤‚ą¤Ŗą¤¾ą¤¦ą¤æą¤¤ ą¤•ą¤°ą„‡ą¤‚</string>
+ <string name="hide_unplayed_episodes_label">ą¤Øą¤¹ą„€ą¤‚ ą¤šą¤²ą¤¾ą¤ ą¤—ą¤</string>
+ <string name="hide_paused_episodes_label">ą¤°ą„‹ą¤•ą„‡ ą¤—ą¤</string>
+ <string name="hide_played_episodes_label">ą¤šą¤²ą¤¾ą¤ ą¤—ą¤</string>
+ <string name="hide_queued_episodes_label">ą„˜ą¤¤ą¤¾ą¤° ą¤•ą¤æą¤ ą¤—ą¤</string>
+ <string name="hide_not_queued_episodes_label">ą„˜ą¤¤ą¤¾ą¤° ą¤Øą¤¹ą„€ ą¤•ą¤æą¤ ą¤—ą¤</string>
+ <string name="hide_downloaded_episodes_label">ą¤”ą¤¾ą¤‰ą¤Øą¤²ą„‹ą¤” ą¤•ą¤æą¤Æą„‡ ą¤—ą¤</string>
+ <string name="hide_not_downloaded_episodes_label">ą¤Øą¤¹ą„€ą¤‚ ą¤”ą¤¾ą¤‰ą¤Øą¤²ą„‹ą¤” ą¤•ą¤æą¤Æą„‡ ą¤—ą¤</string>
+ <string name="hide_has_media_label">ą¤®ą„€ą¤”ą¤æą¤Æą¤¾ ą¤¹ą„ˆ</string>
+ <string name="hide_is_favorite_label">ą¤Ŗą¤øą¤‚ą¤¦ą„€ą¤¦ą¤¾ ą¤¹ą„ˆ</string>
+ <string name="filtered_label">ą¤›ą¤¾ą¤Øą„‡ ą¤¹ą„ą¤</string>
+ <string name="refresh_failed_msg">{fa-exclamation-circle} ą¤Ŗą¤æą¤›ą¤²ą¤¾ ą¤°ą¤æą¤«ą„ą¤°ą„‡ą¤¶ ą¤…ą¤øą¤«ą¤² ą¤¹ą„ą¤†</string>
+ <string name="open_podcast">ą¤Ŗą„‰ą¤”ą¤•ą¤¾ą¤øą„ą¤Ÿ ą¤–ą„‹ą¤²ą„‡</string>
<!--actions on feeditems-->
<string name="download_label">ą¤”ą¤¾ą¤‰ą¤Øą¤²ą„‹ą¤”</string>
<string name="play_label">ą¤Ŗą„ą¤²ą„‡</string>
<string name="pause_label">ą¤°ą„‹ą¤•ą„‡ą¤‚</string>
+ <string name="stop_label">ą¤°ą„‹ą¤•ą„‡ą¤‚</string>
<string name="stream_label">ą¤øą„ą¤Ÿą„ą¤°ą¤æą¤®</string>
<string name="remove_label"> ą¤¹ą¤Ÿą¤¾ą¤ą¤</string>
- <string name="mark_read_label">ą¤Ŗą„ą¤¾ ą¤¹ą„ą¤† ą¤•ą„‡ ą¤°ą„‚ą¤Ŗ ą¤®ą„‡ą¤‚ ą¤šą¤æą¤¹ą„ą¤Øą¤æą¤¤ ą¤•ą¤°ą„‡ą¤‚</string>
- <string name="mark_unread_label">ą¤Øą¤¾ ą¤Ŗą„ą¤¾ ą¤¹ą„ą¤† ą¤•ą„‡ ą¤°ą„‚ą¤Ŗ ą¤®ą„‡ą¤‚ ą¤šą¤æą¤¹ą„ą¤Øą¤æą¤¤ ą¤•ą¤°ą„‡ą¤‚</string>
+ <string name="delete_label">ą¤”ą¤æą¤²ą„€ą¤Ÿ</string>
+ <string name="delete_failed">ą¤«ą¤¼ą¤¾ą¤‡ą¤² ą¤”ą¤æą¤²ą„€ą¤Ÿ ą¤•ą¤°ą¤Øą„‡ ą¤®ą„‡ą¤‚ ą¤…ą¤øą¤®ą¤°ą„ą¤„ą„¤ ą¤”ą¤æą¤µą¤¾ą¤‡ą¤ø ą¤•ą„‹ ą¤°ą¤æą¤¬ą„‚ą¤Ÿ ą¤•ą¤°ą¤Øą„‡ ą¤øą„‡ ą¤®ą¤¦ą¤¦ ą¤®ą¤æą¤² ą¤øą¤•ą¤¤ą„€ ą¤¹ą„ˆą„¤</string>
+ <string name="remove_episode_lable">ą¤ą¤Ŗą¤æą¤øą„‹ą¤” ą¤¹ą¤Ÿą¤¾ą¤ą¤‚</string>
+ <string name="mark_as_seen_label">ą¤¦ą„‡ą¤–ą¤¾ ą¤—ą¤Æą¤¾ ą¤•ą„‡ ą¤°ą„‚ą¤Ŗ ą¤®ą„‡ą¤‚ ą¤šą¤æą¤¹ą„ą¤Øą¤æą¤¤ ą¤•ą¤°ą„‡ą¤‚</string>
+ <string name="marked_as_seen_label">ą¤¦ą„‡ą¤–ą¤¾ ą¤—ą¤Æą¤¾ ą¤•ą„‡ ą¤°ą„‚ą¤Ŗ ą¤®ą„‡ą¤‚ ą¤šą¤æą¤¹ą„ą¤Øą¤æą¤¤ ą¤•ą¤æą¤Æą¤¾ ą¤—ą¤Æą¤¾</string>
+ <string name="mark_read_label">ą¤šą¤²ą¤¾ą¤Æą¤¾ ą¤—ą¤Æą¤¾ ą¤•ą„‡ ą¤°ą„‚ą¤Ŗ ą¤®ą„‡ą¤‚ ą¤šą¤æą¤¹ą„ą¤Øą¤æą¤¤ ą¤•ą¤°ą„‡ą¤‚</string>
+ <string name="marked_as_read_label">ą¤šą¤²ą¤¾ą¤Æą¤¾ ą¤—ą¤Æą¤¾ ą¤•ą„‡ ą¤°ą„‚ą¤Ŗ ą¤®ą„‡ą¤‚ ą¤šą¤æą¤¹ą„ą¤Øą¤æą¤¤ ą¤•ą¤æą¤Æą¤¾ ą¤—ą¤Æą¤¾</string>
+ <string name="mark_unread_label">ą¤Øą¤¹ą„€ ą¤šą¤²ą¤¾ą¤Æą¤¾ ą¤—ą¤Æą¤¾ ą¤•ą„‡ ą¤°ą„‚ą¤Ŗ ą¤®ą„‡ą¤‚ ą¤šą¤æą¤¹ą„ą¤Øą¤æą¤¤ ą¤•ą¤°ą„‡ą¤‚</string>
<string name="add_to_queue_label">ą¤•ą¤¼ą¤¤ą¤¾ą¤° ą¤®ą„‡ą¤‚ ą¤œą„‹ą¤”ą¤¼ą„‡ą¤‚</string>
+ <string name="added_to_queue_label">ą¤•ą¤¾ą¤‚ą¤¤ą¤° ą¤®ą„‡ą¤‚ ą¤œą„‹ą„œą„‡ ą¤—ą¤</string>
<string name="remove_from_queue_label">ą¤•ą¤¼ą¤¤ą¤¾ą¤° ą¤øą„‡ ą¤¹ą¤Ÿą¤¾ą¤ą¤</string>
+ <string name="add_to_favorite_label">ą¤Ŗą¤øą¤‚ą¤¦ą„€ą¤¦ą¤¾ ą¤øą„‚ą¤šą„€ ą¤®ą„‡ą¤‚ ą¤œą„‹ą¤”ą¤¼ą„‡</string>
+ <string name="added_to_favorites">ą¤Ŗą¤øą¤‚ą¤¦ą„€ą¤¦ą¤¾ ą¤øą„‚ą¤šą„€ ą¤®ą„‡ą¤‚ ą¤œą„‹ą„œą¤¾ ą¤—ą¤Æą¤¾</string>
+ <string name="remove_from_favorite_label">ą¤Ŗą¤øą¤‚ą¤¦ą„€ą¤¦ą¤¾ ą¤øą„‚ą¤šą„€ ą¤øą„‡ ą¤¹ą¤Ÿą¤¾ą¤</string>
+ <string name="removed_from_favorites">ą¤Ŗą¤øą¤‚ą¤¦ą„€ą¤¦ą¤¾ ą¤øą„‚ą¤šą„€ ą¤øą„‡ ą¤¹ą¤Ÿą¤Æą¤¾ ą¤—ą¤Æą¤¾</string>
<string name="visit_website_label">ą¤µą„‡ą¤¬ą¤øą¤¾ą¤‡ą¤Ÿ ą¤Ŗą¤° ą¤œą¤¾ą¤ą¤</string>
<string name="support_label">ą¤‡ą¤øą„‡ Flattr ą¤•ą¤°ą„‡ą¤‚</string>
<string name="skip_episode_label">ą¤ą¤Ŗą¤æą¤øą„‹ą¤” ą¤›ą„‹ą¤™ą„‡ą¤‚</string>
+ <string name="activate_auto_download">ą¤‘ą¤Ÿą„‹ ą¤”ą¤¾ą¤‰ą¤Øą¤²ą„‹ą¤” ą¤øą¤•ą„ą¤°ą¤æą¤Æ ą¤•ą¤°ą„‡ą¤‚</string>
+ <string name="deactivate_auto_download">ą¤‘ą¤Ÿą„‹ ą¤”ą¤¾ą¤‰ą¤Øą¤²ą„‹ą¤” ą¤Øą¤æą¤·ą„ą¤•ą„ą¤°ą¤æą¤Æ ą¤•ą¤°ą„‡ą¤‚</string>
+ <string name="reset_position">ą¤Ŗą„ą¤²ą„‡ą¤¬ą„ˆą¤• ą¤øą„ą¤„ą¤æą¤¤ą¤æ ą¤°ą„€ą¤øą„‡ą¤Ÿ ą¤•ą¤°ą„‡ą¤‚</string>
+ <string name="removed_item">ą¤†ą¤‡ą¤Ÿą¤® ą¤¹ą¤Ÿą¤Æą¤¾ ą¤—ą¤Æą¤¾</string>
<!--Download messages and labels-->
- <string name="download_successful">ą¤øą¤«ą¤²
-</string>
- <string name="download_failed">ą¤”ą¤¾ą¤‰ą¤Øą¤²ą„‹ą¤” ą¤µą¤æą¤«ą¤²</string>
+ <string name="download_successful">ą¤øą¤«ą¤² ą¤¹ą„ą¤†</string>
+ <string name="download_failed">ą¤…ą¤øą¤«ą¤² ą¤¹ą„ą¤†</string>
<string name="download_pending">ą¤²ą¤‚ą¤¬ą¤æą¤¤ ą¤”ą¤¾ą¤‰ą¤Øą¤²ą„‹ą¤”</string>
<string name="download_running">ą¤”ą¤¾ą¤‰ą¤Øą¤²ą„‹ą¤” ą¤šą¤² ą¤°ą¤¹ą¤¾ ą¤¹ą„ˆ</string>
+ <string name="download_error_details">ą¤µą¤æą¤µą¤°ą¤£</string>
+ <string name="download_error_details_message">%1$s \n\ną¤«ą¤¾ą¤‡ą¤² URL:\n%2$s</string>
<string name="download_error_device_not_found">ą¤øą„ą¤Ÿą„‹ą¤°ą„‡ą¤œ ą¤”ą¤æą¤µą¤¾ą¤‡ą¤ø ą¤Øą¤¹ą„€ą¤‚ ą¤®ą¤æą¤²ą¤¾</string>
<string name="download_error_insufficient_space">ą¤…ą¤Ŗą¤°ą„ą¤Æą¤¾ą¤Ŗą„ą¤¤ ą¤øą„ą¤„ą¤¾ą¤Ø</string>
<string name="download_error_file_error">ą¤«ą¤¼ą¤¾ą¤‡ą¤² ą¤¤ą„ą¤°ą„ą¤Ÿą¤æ</string>
@@ -80,13 +180,23 @@
<string name="download_error_unsupported_type">ą¤…ą¤øą¤®ą¤°ą„ą¤„ą¤æą¤¤ ą¤«ą¤¼ą„€ą¤” ą¤Ŗą„ą¤°ą¤•ą¤¾ą¤°</string>
<string name="download_error_connection_error">ą¤•ą¤Øą„‡ą¤•ą„ą¤¶ą¤Ø ą¤¤ą„ą¤°ą„ą¤Ÿą¤æ</string>
<string name="download_error_unknown_host">ą¤…ą¤œą„ą¤žą¤¾ą¤¤ ą¤¹ą„‹ą¤øą„ą¤Ÿ</string>
+ <string name="download_error_unauthorized">ą¤Ŗą„ą¤°ą¤®ą¤¾ą¤£ą„€ą¤•ą¤°ą¤£ ą¤¤ą„ą¤°ą„ą¤Ÿą¤æ</string>
+ <string name="download_error_file_type_type">ą¤«ą¤¼ą¤¾ą¤‡ą¤² ą¤Ŗą„ą¤°ą¤•ą¤¾ą¤° ą¤¤ą„ą¤°ą„ą¤Ÿą¤æ</string>
+ <string name="download_error_forbidden">ą¤Øą¤æą¤·ą¤æą¤¦ą„ą¤§</string>
<string name="cancel_all_downloads_label">ą¤øą¤­ą„€ ą¤”ą¤¾ą¤‰ą¤Øą¤²ą„‹ą¤” ą¤°ą¤¦ą„ą¤¦ ą¤•ą¤°ą„‡ą¤‚</string>
<string name="download_canceled_msg">ą¤”ą¤¾ą¤‰ą¤Øą¤²ą„‹ą¤” ą¤°ą¤¦ą„ą¤¦</string>
- <string name="download_report_title">ą¤”ą¤¾ą¤‰ą¤Øą¤²ą„‹ą¤” ą¤Ŗą„‚ą¤°ą¤¾ ą¤¹ą„‹ ą¤—ą¤Æą¤¾ ą¤¹ą„ˆ</string>
+ <string name="download_canceled_autodownload_enabled_msg">ą¤”ą¤¾ą¤‰ą¤Øą¤²ą„‹ą¤” ą¤°ą¤¦ą„ą¤¦ ą¤¹ą„ą¤†\ną¤‡ą¤ø ą¤†ą¤‡ą¤Ÿą¤® ą¤•ą„‡ ą¤²ą¤æą¤ <i>ą¤‘ą¤Ÿą¤”ą¤¾ą¤‰ą¤Øą¤²ą„‹ą¤”</i> ą¤…ą¤•ą„ą¤·ą¤® ą¤•ą¤æą¤Æą¤¾ ą¤—ą¤Æą¤¾</string>
+ <string name="download_report_title">ą¤¤ą„ą¤°ą„ą¤Ÿą¤æ ą¤•ą„‡ ą¤øą¤¾ą¤„ ą¤”ą¤¾ą¤‰ą¤Øą¤²ą„‹ą¤” ą¤øą¤‚ą¤Ŗą¤Øą„ą¤Ø ą¤¹ą„ą¤</string>
+ <string name="download_report_content_title">ą¤°ą¤æą¤Ŗą„‹ą¤°ą„ą¤Ÿ ą¤”ą¤¾ą¤‰ą¤Øą¤²ą„‹ą¤” ą¤•ą¤°ą„‡</string>
<string name="download_error_malformed_url">ą¤—ą¤²ą¤¤ URL</string>
<string name="download_error_io_error">ą¤†ą¤ˆą¤“ ą¤¤ą„ą¤°ą„ą¤Ÿą¤æ</string>
<string name="download_error_request_error">ą¤…ą¤Øą„ą¤°ą„‹ą¤§ ą¤¤ą„ą¤°ą„ą¤Ÿą¤æ</string>
<string name="download_error_db_access">ą¤”ą„‡ą¤Ÿą¤¾ą¤¬ą„‡ą¤ø ą¤•ą¤¾ ą¤‰ą¤Ŗą¤Æą„‹ą¤— ą¤¤ą„ą¤°ą„ą¤Ÿą¤æ</string>
+ <plurals name="downloads_left">
+ <item quantity="one">%d ą¤”ą¤¾ą¤‰ą¤Øą¤²ą„‹ą¤” ą¤¬ą¤¾ą¤•ą„€</item>
+ <item quantity="other">%d ą¤”ą¤¾ą¤‰ą¤Øą¤²ą„‹ą¤” ą¤¬ą¤¾ą¤•ą„€</item>
+ </plurals>
+ <string name="downloads_processing">ą¤”ą¤¾ą¤‰ą¤Øą¤²ą„‹ą¤” ą¤Ŗą„ą¤°ą„‹ą¤øą„‡ą¤ø ą¤•ą¤æą¤Æą„‡ ą¤œą¤¾ą¤°ą¤¹ą„‡</string>
<string name="download_notification_title">ą¤Ŗą„‰ą¤”ą¤•ą¤¾ą¤øą„ą¤Ÿ ą¤”ą„‡ą¤Ÿą¤¾ ą¤”ą¤¾ą¤‰ą¤Øą¤²ą„‹ą¤” ą¤•ą¤°ą„‡ą¤‚</string>
<string name="download_report_content">%1$d ą¤”ą¤¾ą¤‰ą¤Øą¤²ą„‹ą¤” ą¤øą¤«ą¤² ą¤°ą¤¹ą¤¾, %2$d ą¤®ą„‡ą¤‚ ą¤µą¤æą¤«ą¤² ą¤°ą¤¹ą¤¾ ą¤¹ą„ˆ</string>
<string name="download_log_title_unknown">ą¤…ą¤œą„ą¤žą¤¾ą¤¤ ą¤¶ą„€ą¤°ą„ą¤·ą¤•</string>
@@ -94,6 +204,11 @@
<string name="download_type_media">ą¤®ą„€ą¤”ą¤æą¤Æą¤¾ ą¤«ą¤¼ą¤¾ą¤‡ą¤²</string>
<string name="download_type_image">ą¤›ą¤µą¤æ</string>
<string name="download_request_error_dialog_message_prefix">ą¤«ą¤¾ą¤‡ą¤² ą¤”ą¤¾ą¤‰ą¤Øą¤²ą„‹ą¤” ą¤•ą¤°ą¤Øą„‡ ą¤•ą„‡ ą¤²ą¤æą¤ ą¤Ŗą„ą¤°ą¤Æą¤¾ą¤ø ą¤•ą¤°ą¤¤ą„‡ ą¤øą¤®ą¤Æ ą¤ą¤• ą¤¤ą„ą¤°ą„ą¤Ÿą¤æ ą¤¹ą„ą¤ˆ:\u0020</string>
+ <string name="authentication_notification_title">ą¤Ŗą„ą¤°ą¤®ą¤¾ą¤£ą„€ą¤•ą¤°ą¤£ ą¤†ą¤µą¤¶ą„ą¤Æą¤• ą¤¹ą„ˆ</string>
+ <string name="authentication_notification_msg">ą¤†ą¤Ŗą¤•ą„‡ ą¤¦ą„ą¤µą¤¾ą¤°ą¤¾ ą¤…ą¤Øą„ą¤°ą„‹ą¤§ą¤æą¤¤ ą¤øą¤‚ą¤øą¤¾ą¤§ą¤Ø ą¤•ą„‡ ą¤²ą¤æą¤ ą¤Æą„‚ą¤œą¤°ą¤Øą¤¾ą¤® ą¤Æą„‚ą¤œą¤°ą¤Øą„‡ą¤® ą¤”ą¤° ą¤Ŗą¤¾ą¤øą¤µą¤°ą„ą¤” ą¤•ą„€ ą¤†ą¤µą¤¶ą„ą¤Æą¤•ą¤¤ą¤¾ ą¤¹ą„ˆ</string>
+ <string name="confirm_mobile_download_dialog_title">ą¤®ą„‹ą¤¬ą¤¾ą¤‡ą¤² ą¤”ą¤¾ą¤‰ą¤Øą¤²ą„‹ą¤” ą¤•ą„€ ą¤Ŗą„ą¤·ą„ą¤Ÿą¤æ ą¤•ą¤°ą„‡ą¤‚</string>
+ <string name="confirm_mobile_download_dialog_only_add_to_queue">ą¤•ą¤¤ą¤¾ą¤°ą¤¬ą¤¦ą„ą¤§ ą¤•ą¤°ą„‡ą¤‚</string>
+ <string name="confirm_mobile_download_dialog_enable_temporarily">ą¤…ą¤øą„ą¤„ą¤¾ą¤Æą„€ ą¤°ą„‚ą¤Ŗ ą¤øą„‡ ą¤…ą¤Øą„ą¤®ą¤¤ą¤æ ą¤¦ą„‡ą¤‚</string>
<!--Mediaplayer messages-->
<string name="player_error_msg">ą¤¤ą„ą¤°ą„ą¤Ÿą¤æ!</string>
<string name="player_stopped_msg">ą¤®ą„€ą¤”ą¤æą¤Æą¤¾ ą¤Øą¤¹ą„€ą¤‚ ą¤šą¤² ą¤°ą¤¹ą¤¾</string>
@@ -105,12 +220,22 @@
<string name="no_media_playing_label">ą¤®ą„€ą¤”ą¤æą¤Æą¤¾ ą¤Øą¤¹ą„€ą¤‚ ą¤šą¤² ą¤°ą¤¹ą¤¾</string>
<string name="player_buffering_msg">ą¤¬ą¤«ą¤°ą¤æą¤‚ą¤—</string>
<string name="playbackservice_notification_title">ą¤Ŗą„ą¤²ą„‡ą¤ˆą¤‚ą¤— ą¤Ŗą„‰ą¤”ą¤•ą¤¾ą¤øą„ą¤Ÿ</string>
+ <string name="unknown_media_key">ą¤ą¤Øą„ą¤Ÿą„‡ą¤Øą¤¾ą¤Ŗą„‰ą¤” - ą¤…ą¤Øą¤œą¤¾ą¤Ø ą¤®ą„€ą¤”ą¤æą¤Æą¤¾ ą¤•ą„€: %1$d</string>
<!--Queue operations-->
<string name="clear_queue_label">ą¤•ą¤¤ą¤¾ą¤° ą¤øą¤¾ą¤«</string>
<string name="undo">ą¤Ŗą„‚ą¤°ą„ą¤µą¤µą¤¤ą„ ą¤•ą¤°ą„‡ą¤‚</string>
<string name="removed_from_queue">ą¤†ą¤‡ą¤Ÿą¤® ą¤¹ą¤Ÿą¤¾ą¤Æą¤¾</string>
<string name="move_to_top_label">ą¤¶ą„€ą¤°ą„ą¤· ą¤Ŗą¤° ą¤²ą„‡ ą¤œą¤¾ą¤ą¤‚</string>
<string name="move_to_bottom_label">ą¤Øą„€ą¤šą„‡ ą¤œą¤¾ą¤ą¤‚</string>
+ <string name="date">ą¤¦ą¤æą¤Øą¤¾ą¤‚ą¤•</string>
+ <string name="duration">ą¤…ą¤µą¤§ą¤æ</string>
+ <string name="episode_title">ą¤ą¤Ŗą¤æą¤øą„‹ą¤” ą¤•ą¤¾ ą¤¶ą„€ą¤°ą„ą¤·ą¤•</string>
+ <string name="feed_title">ą¤Ŗą„‰ą¤”ą¤•ą¤¾ą¤øą„ą¤Ÿ ą¤•ą¤¾ ą¤¶ą„€ą¤°ą„ą¤·ą¤•</string>
+ <string name="random">ą¤•ą„ą¤°ą¤®ą¤°ą¤¹ą¤æą¤¤</string>
+ <string name="smart_shuffle">ą¤šą¤¤ą„ą¤° ą¤®ą¤æą¤¶ą„ą¤°ą¤£</string>
+ <string name="ascending">ą¤†ą¤°ą„‹ą¤¹ą„€</string>
+ <string name="descending">ą¤…ą¤µą¤°ą„‹ą¤¹ą„€</string>
+ <string name="clear_queue_confirmation_msg">ą¤•ą„ƒą¤Ŗą¤Æą¤¾ ą¤Ŗą„ą¤·ą„ą¤Ÿą¤æ ą¤•ą¤°ą„‡ą¤‚ ą¤•ą¤æ ą¤†ą¤Ŗ ą¤øą¤¾ą¤°ą„‡ ą¤ą¤Ŗą¤æą¤øą„‹ą¤” ą¤•ą„‡ ą¤‡ą¤ø ą¤•ą¤¤ą¤¾ą¤° ą¤•ą„‹ ą¤¹ą¤Ÿą¤¾ą¤Øą¤¾ ą¤šą¤¾ą¤¹ą¤¤ą„‡ ą¤¹ą„ˆą¤‚</string>
<!--Flattr-->
<string name="flattr_auth_label">Flattr ą¤Ŗą¤‚ą¤œą„€ą¤•ą¤°ą¤£ ą¤•ą¤°ą„‡ą¤‚</string>
<string name="flattr_auth_explanation">ą¤Ŗą„ą¤°ą¤®ą¤¾ą¤£ą„€ą¤•ą¤°ą¤£ ą¤Ŗą„ą¤°ą¤•ą„ą¤°ą¤æą¤Æą¤¾ ą¤¶ą„ą¤°ą„‚ ą¤•ą¤°ą¤Øą„‡ ą¤•ą„‡ ą¤²ą¤æą¤ ą¤Øą„€ą¤šą„‡ ą¤¦ą¤æą¤ ą¤—ą¤ ą¤¬ą¤Ÿą¤Ø ą¤•ą„‹ ą¤¦ą¤¬ą¤¾ą¤ą¤‚. ą¤†ą¤Ŗą¤•ą„‡ ą¤¬ą„ą¤°ą¤¾ą¤‰ą¤œą¤¼ą¤° ą¤®ą„‡ą¤‚ flattr ą¤²ą„‰ą¤—ą¤æą¤Ø ą¤øą„ą¤•ą„ą¤°ą„€ą¤Ø ą¤•ą„‹ ą¤­ą„‡ą¤œą¤¾ ą¤œą¤¾ą¤ą¤—ą¤¾ ą¤”ą¤° flattr ą¤¬ą¤¾ą¤¤ą„‡ą¤‚ ą¤•ą¤°ą¤Øą„‡ ą¤•ą„‡ ą¤²ą¤æą¤ ą¤…ą¤Øą„ą¤®ą¤¤ą¤æ AntennaPod ą¤•ą„‹ ą¤¦ą„‡ą¤Øą„‡ ą¤•ą„‡ ą¤²ą¤æą¤ ą¤•ą¤¹ą¤¾ ą¤œą¤¾ą¤ą¤—ą¤¾. ą¤†ą¤Ŗą¤•ą¤æ ą¤…ą¤Øą„ą¤®ą¤¤ą¤æ ą¤¦ą„‡ą¤Øą„‡ ą¤•ą„‡ ą¤¬ą¤¾ą¤¦, ą¤†ą¤Ŗ ą¤øą„ą¤µą¤¤ą¤ƒ ą¤¹ą„€ ą¤‡ą¤ø ą¤øą„ą¤•ą„ą¤°ą„€ą¤Ø ą¤®ą„‡ą¤‚ ą¤µą¤¾ą¤Ŗą¤ø ą¤† ą¤œą¤¾ą¤ą¤—ą„‡ą¤‚.</string>
@@ -128,23 +253,39 @@
<string name="flattr_click_success">ą¤øą¤«ą¤²ą¤¤ą¤¾ą¤Ŗą„‚ą¤°ą„ą¤µą¤• ą¤Æą¤¹ ą¤¬ą¤¾ą¤¤ Flattr ą¤•ą¤æą¤Æą¤¾</string>
<string name="flattr_click_success_count">ą¤øą¤«ą¤²ą¤¤ą¤¾ą¤Ŗą„‚ą¤°ą„ą¤µą¤• %d ą¤¬ą¤¾ą¤¤ą„‹ą¤‚ą¤•ą„‹ Flattr ą¤•ą¤æą¤Æą¤¾</string>
<string name="flattr_click_success_queue">Flattr ą¤—ą¤æą¤Øą¤¤ą„€: %s</string>
- <string name="flattring_label">ą¤ą¤Øą„ą¤Ÿą„‡ą¤Øą¤¾ą¤Ŗą„‰ą¤” Flattr </string>
+ <string name="flattring_label">ą¤ą¤Øą„ą¤Ÿą„‡ą¤Øą¤¾ą¤Ŗą„‰ą¤” Flattr ą¤•ą¤°ą¤°ą¤¹ą¤¾ ą¤¹ą„ˆ</string>
<!--Variable Speed-->
<string name="download_plugin_label">ą¤Ŗą„ą¤²ą¤—ą¤‡ą¤Ø ą¤”ą¤¾ą¤‰ą¤Øą¤²ą„‹ą¤” ą¤•ą¤°ą„‡ą¤‚</string>
<string name="no_playback_plugin_title">ą¤Ŗą„ą¤²ą¤—ą¤‡ą¤Ø ą¤øą„ą¤„ą¤¾ą¤Ŗą¤æą¤¤ ą¤Øą¤¹ą„€ą¤‚ ą¤¹ą„ą¤†</string>
<string name="set_playback_speed_label">ą¤Ŗą„ą¤²ą„‡ą¤¬ą„ˆą¤• ą¤—ą¤¤ą¤æ</string>
+ <string name="enable_sonic">ą¤øą„‰ą¤Øą¤æą¤• ą¤øą¤•ą„ą¤·ą¤® ą¤•ą¤°ą„‡</string>
<!--Empty list labels-->
<string name="no_items_label">ą¤‡ą¤ø ą¤øą„‚ą¤šą„€ ą¤®ą„‡ą¤‚ ą¤•ą„‹ą¤ˆ ą¤†ą¤‡ą¤Ÿą¤® ą¤Øą¤¹ą„€ą¤‚ ą¤¹ą„ˆą¤‚.</string>
- <string name="no_feeds_label">ą¤†ą¤Ŗą¤Øą„‡ ą¤…ą¤­ą„€ ą¤¤ą¤• ą¤•ą¤æą¤øą„€ ą¤­ą„€ ą¤«ą¤¼ą„€ą¤” ą¤•ą„€ ą¤øą¤¦ą¤øą„ą¤Æą¤¤ą¤¾ ą¤Øą¤¹ą„€ą¤‚ ą¤²ą„€ ą¤¹ą„ˆ.</string>
+ <string name="no_feeds_label">ą¤†ą¤Ŗą¤Øą„‡ ą¤…ą¤­ą„€ ą¤¤ą¤• ą¤•ą¤æą¤øą„€ ą¤­ą„€ ą¤Ŗą„‰ą¤”ą¤•ą¤¾ą¤øą„ą¤Ÿ ą¤•ą„‹ ą¤øą¤¬ą„ą¤øą¤•ą„ą¤°ą¤¾ą¤‡ą¤¬ ą¤Øą¤¹ą„€ą¤‚ ą¤•ą¤æą¤Æą¤¾ ą¤¹ą„ˆą„¤</string>
+ <string name="no_chapters_label">ą¤‡ą¤ø ą¤ą¤Ŗą¤æą¤øą„‹ą¤” ą¤®ą„‡ą¤‚ ą¤•ą„‹ą¤ˆ ą¤…ą¤§ą„ą¤Æą¤¾ą¤Æ ą¤Øą¤¹ą„€ą¤‚ ą¤¹ą„ˆą„¤</string>
+ <string name="no_shownotes_label">ą¤‡ą¤ø ą¤ą¤Ŗą¤æą¤øą„‹ą¤” ą¤®ą„‡ą¤‚ ą¤•ą„‹ą¤ˆ ą¤¶ą„‹ą¤Øą„‹ą¤Ÿą„ą¤ø ą¤Øą¤¹ą„€ą¤‚ ą¤¹ą„ˆą„¤</string>
<!--Preferences-->
+ <string name="storage_pref">ą¤øą„ą¤Ÿą„‹ą¤°ą„‡ą¤œ</string>
+ <string name="project_pref">ą¤Ŗą¤°ą¤æą¤Æą„‹ą¤œą¤Øą¤¾</string>
<string name="other_pref">ą¤…ą¤Øą„ą¤Æ</string>
<string name="about_pref">ą¤•ą„‡ ą¤¬ą¤¾ą¤°ą„‡ ą¤®ą„‡ą¤‚</string>
<string name="queue_label">ą¤Ŗą¤‚ą¤•ą„ą¤¤ą¤æ</string>
- <string name="services_label">ą¤øą„‡ą¤µą¤¾ą¤ą¤‚</string>
<string name="flattr_label">Flattr</string>
+ <string name="automation">ą¤øą„ą¤µą¤šą¤¾ą¤²ą¤Ø</string>
+ <string name="download_pref_details">ą¤µą¤æą¤µą¤°ą¤£</string>
+ <string name="import_export_pref">ą¤†ą¤Æą¤¾ą¤¤/ą¤Øą¤æą¤°ą„ą¤Æą¤¾ą¤¤</string>
+ <string name="appearance">ą¤¦ą¤æą¤–ą¤¾ą¤µą¤Ÿ</string>
+ <string name="external_elements">ą¤¬ą¤¾ą¤¹ą¤°ą„€ ą¤¤ą¤¤ą„ą¤µ</string>
+ <string name="interruptions">ą¤°ą„ą¤•ą¤¾ą¤µą¤Ÿą„‡</string>
+ <string name="pref_episode_cleanup_title">ą¤ą¤Ŗą¤æą¤øą„‹ą¤” ą¤•ą„€ ą¤øą¤«ą¤¾ą¤ˆ</string>
<string name="pref_followQueue_sum">ą¤Ŗą„ą¤²ą„‡ą¤¬ą„ˆą¤• ą¤•ą„‡ ą¤Ŗą„‚ą¤°ą¤¾ ą¤¹ą„‹ą¤Øą„‡ ą¤Ŗą¤° ą¤…ą¤—ą¤²ą„€ ą¤Ŗą¤‚ą¤•ą„ą¤¤ą¤æ ą¤†ą¤‡ą¤Ÿą¤® ą¤•ą„‡ ą¤²ą¤æą¤ ą¤œą¤¾ą¤ą¤</string>
<string name="playback_pref">ą¤Ŗą„ą¤²ą„‡ą¤¬ą„ˆą¤•</string>
<string name="network_pref">ą¤øą¤‚ą¤œą¤¾ą¤²</string>
+ <string name="pref_autoUpdateIntervallOrTime_Disable">ą¤…ą¤•ą„ą¤·ą¤® ą¤•ą¤°ą„‡ą¤‚</string>
+ <string name="pref_autoUpdateIntervallOrTime_Interval">ą¤…ą¤‚ą¤¤ą¤°ą¤¾ą¤² ą¤Øą¤æą¤°ą„ą¤§ą¤¾ą¤°ą¤æą¤¤ ą¤•ą¤°ą„‡ą¤‚</string>
+ <string name="pref_autoUpdateIntervallOrTime_TimeOfDay">ą¤¦ą¤æą¤Ø ą¤•ą¤¾ ą¤øą¤®ą¤Æ ą¤Øą¤æą¤°ą„ą¤§ą¤¾ą¤°ą¤æą¤¤ ą¤•ą¤°ą„‡ą¤‚</string>
+ <string name="pref_autoUpdateIntervallOrTime_every">ą¤Ŗą„ą¤°ą¤¤ą¤æ %1$s</string>
+ <string name="pref_autoUpdateIntervallOrTime_at">%1$s ą¤¬ą¤œą„‡ </string>
<string name="pref_downloadMediaOnWifiOnly_sum">ą¤•ą„‡ą¤µą¤² ą¤µą¤¾ą¤ˆą¤«ą¤¼ą¤¾ą¤ˆ ą¤Ŗą¤° ą¤®ą„€ą¤”ą¤æą¤Æą¤¾ ą¤«ą¤¼ą¤¾ą¤‡ą¤²ą„‡ą¤‚ ą¤”ą¤¾ą¤‰ą¤Øą¤²ą„‹ą¤” ą¤•ą¤°ą„‡ą¤‚</string>
<string name="pref_followQueue_title">ą¤øą¤¤ą¤¤ ą¤Ŗą„ą¤²ą„‡ą¤¬ą„ˆą¤•</string>
<string name="pref_downloadMediaOnWifiOnly_title">ą¤µą¤¾ą¤ˆą¤«ą¤¾ą¤ˆ ą¤®ą„€ą¤”ą¤æą¤Æą¤¾ ą¤”ą¤¾ą¤‰ą¤Øą¤²ą„‹ą¤” ą¤•ą¤°ą„‡ą¤‚</string>
@@ -179,6 +320,7 @@
<string name="pref_gpodnet_logout_toast">ą¤²ą„‰ą¤—ą¤†ą¤‰ą¤Ÿ ą¤øą¤«ą¤² ą¤°ą¤¹ą¤¾ ą¤„ą¤¾</string>
<string name="pref_gpodnet_setlogin_information_title">ą¤Ŗą„ą¤°ą¤µą„‡ą¤¶ ą¤œą¤¾ą¤Øą¤•ą¤¾ą¤°ą„€ ą¤¬ą¤¦ą¤²ą„‡ą¤‚</string>
<string name="pref_gpodnet_setlogin_information_sum">ą¤…ą¤Ŗą¤Øą„‡ gpodder.net ą¤–ą¤¾ą¤¤ą„‡ ą¤•ą„‡ ą¤²ą¤æą¤ ą¤Ŗą„ą¤°ą¤µą„‡ą¤¶ ą¤œą¤¾ą¤Øą¤•ą¤¾ą¤°ą„€ ą¤¬ą¤¦ą¤²ą„‡ą¤‚.</string>
+ <string name="pref_gpodnet_login_status"><![CDATA[ <i>%1$s</i> ą¤•ą„‡ ą¤°ą„‚ą¤Ŗ ą¤®ą„‡ą¤‚ <i>%2$s</i> ą¤”ą¤æą¤µą¤¾ą¤‡ą¤ø ą¤•ą„‡ ą¤øą¤¾ą¤„ ą¤²ą„‰ą¤—ą¤æą¤Ø ą¤•ą¤æą¤Æą¤¾ ą¤—ą¤Æą¤¾ ]]></string>
<string name="pref_playback_speed_title">ą¤Ŗą„ą¤²ą„‡ą¤¬ą„ˆą¤• ą¤—ą¤¤ą¤æ</string>
<string name="pref_playback_speed_sum">ą¤šą¤° ą¤—ą¤¤ą¤æ ą¤‘ą¤”ą¤æą¤Æą„‹ ą¤Ŗą„ą¤²ą„‡ą¤¬ą„ˆą¤• ą¤•ą„‡ ą¤²ą¤æą¤ ą¤‰ą¤Ŗą¤²ą¤¬ą„ą¤§ ą¤—ą¤¤ą¤æ ą¤¬ą¤Øą¤¾ą¤‡ą¤</string>
<string name="pref_gpodnet_sethostname_title">ą¤¹ą„‹ą¤øą„ą¤Ÿą¤Øą¤¾ą¤® ą¤øą„‡ą¤Ÿ</string>
@@ -199,7 +341,6 @@
<string name="deselect_all_label">ą¤øą¤­ą„€ ą¤•ą¤¾ ą¤šą¤Æą¤Ø ą¤°ą¤¦ą„ą¤¦ ą¤•ą¤°ą„‡ą¤‚</string>
<string name="opml_export_label">OPML ą¤Øą¤æą¤°ą„ą¤Æą¤¾ą¤¤</string>
<string name="export_error_label">ą¤Øą¤æą¤°ą„ą¤Æą¤¾ą¤¤ ą¤¤ą„ą¤°ą„ą¤Ÿą¤æ</string>
- <string name="opml_export_success_sum">.ompl ą¤«ą¤¼ą¤¾ą¤‡ą¤² ą¤²ą¤æą¤–ą¤¾ ą¤—ą¤Æą¤¾ ą¤„ą¤¾:\u0020</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">ą¤øą„ą¤²ą„€ą¤Ŗ ą¤Ÿą¤¾ą¤‡ą¤®ą¤° ą¤øą„‡ą¤Ÿ</string>
<string name="disable_sleeptimer_label">ą¤øą„ą¤²ą„€ą¤Ŗ ą¤Ÿą¤¾ą¤‡ą¤®ą¤° ą¤…ą¤•ą„ą¤·ą¤®</string>
@@ -247,7 +388,7 @@
<string name="folder_not_empty_dialog_msg">ą¤†ą¤Ŗą¤•ą„‡ ą¤¦ą„ą¤µą¤¾ą¤°ą¤¾ ą¤šą„ą¤Øą„‡ ą¤—ą¤ ą¤«ą¤¼ą„‹ą¤²ą„ą¤”ą¤° ą¤–ą¤¾ą¤²ą„€ ą¤Øą¤¹ą„€ą¤‚ ą¤¹ą„ˆ. ą¤®ą„€ą¤”ą¤æą¤Æą¤¾ ą¤”ą¤¾ą¤‰ą¤Øą¤²ą„‹ą¤” ą¤”ą¤° ą¤…ą¤Øą„ą¤Æ ą¤«ą¤¼ą¤¾ą¤‡ą¤²ą„‡ą¤‚ ą¤‡ą¤ø ą¤«ą¤¼ą„‹ą¤²ą„ą¤”ą¤° ą¤®ą„‡ą¤‚ ą¤øą„€ą¤§ą„‡ ą¤°ą¤–ą¤¾ ą¤œą¤¾ą¤ą¤—ą¤¾. ą¤«ą¤æą¤° ą¤­ą„€ ą¤œą¤¾ą¤°ą„€ ą¤°ą¤–ą„‡ą¤‚?</string>
<string name="set_to_default_folder">ą¤”ą¤æą¤«ą¤¼ą„‰ą¤²ą„ą¤Ÿ ą¤«ą¤¼ą„‹ą¤²ą„ą¤”ą¤° ą¤šą„ą¤Øą„‡ą¤‚</string>
<string name="pref_pausePlaybackForFocusLoss_sum">ą¤Ŗą„ą¤²ą„‡ą¤¬ą„ˆą¤• ą¤°ą„‹ą¤•ą„‡ą¤‚ ą¤¬ą¤œą¤¾ą¤Æ ą¤§ą„ą¤µą¤Øą¤æą¤Æą„‹ą¤‚ ą¤•ą„‹ ą¤•ą¤® ą¤•ą¤°ą¤Øą„‡ ą¤•ą„‡ ą¤…ą¤—ą¤° ą¤•ą„‹ą¤ˆ ą¤…ą¤Øą„ą¤Æ ą¤…ą¤Øą„ą¤Ŗą„ą¤°ą¤Æą„‹ą¤— ą¤‡ą¤øą„‡ ą¤¬ą¤œą¤¾ą¤Øą¤¾ ą¤šą¤¾ą¤¹ą¤¤ą¤¾ ą¤¹ą„ˆ </string>
- <string name="pref_pausePlaybackForFocusLoss_title">ą¤°ą„ą¤•ą¤¾ą¤µą¤Ÿ ą¤•ą„‡ ą¤²ą¤æą¤ ą¤°ą„‹ą¤•ą„‡ą¤‚</string>
+ <string name="pref_pausePlaybackForFocusLoss_title">ą¤°ą„ą¤•ą¤¾ą¤µą¤Ÿą„‹ ą¤•ą„‡ ą¤²ą¤æą¤ ą¤°ą„‹ą¤•ą„‡ą¤‚</string>
<!--Online feed view-->
<string name="subscribe_label">ą¤øą¤¦ą¤øą„ą¤Æą¤¤ą¤¾ ą¤²ą„‡ą¤‚</string>
<string name="subscribed_label">ą¤øą¤¦ą¤øą„ą¤Æą¤¤ą¤¾ ą¤²ą„€ ą¤—ą¤ˆ</string>
@@ -263,4 +404,5 @@
<!--Database import/export-->
<!--Casting-->
<!--<string name="cast_failed_to_connect">Could not connect to the device</string>-->
+ <!--Notification channels-->
</resources>
diff --git a/core/src/main/res/values-hu/strings.xml b/core/src/main/res/values-hu/strings.xml
index 878925133..71e1283ce 100644
--- a/core/src/main/res/values-hu/strings.xml
+++ b/core/src/main/res/values-hu/strings.xml
@@ -32,6 +32,7 @@
<string name="drawer_feed_order_unplayed_episodes">RendezĆ©s szĆ”mlĆ”lĆ³ szerint</string>
<string name="drawer_feed_order_alphabetical">RendezƩs ABC rendben</string>
<string name="drawer_feed_order_last_update">RendezƩs megjelenƩs dƔtuma szerint</string>
+ <string name="drawer_feed_order_most_played">RendezĆ©s jĆ”tszott epizĆ³dok szerint</string>
<string name="drawer_feed_counter_new_unplayed">ƚj Ć©s nem jĆ”tszott epizĆ³dok szĆ”ma</string>
<string name="drawer_feed_counter_new">ƚj epizĆ³dok szĆ”ma</string>
<string name="drawer_feed_counter_unplayed">Nem jĆ”tszott epizĆ³dok szĆ”ma</string>
@@ -51,7 +52,6 @@
<string name="yes">Igen</string>
<string name="no">Nem</string>
<string name="reset">VisszaƔllƭtƔs</string>
- <string name="author_label">Szerző</string>
<string name="language_label">Nyelv</string>
<string name="url_label">URL</string>
<string name="podcast_settings_label">BeƔllƭtƔsok</string>
@@ -61,6 +61,7 @@
<string name="refresh_label">FrissƭtƩs</string>
<string name="external_storage_error_msg">Nem talĆ”lhatĆ³ kĆ¼lső tĆ”rhely. BiztosĆ­ts egy kĆ¼lső tĆ”rhelyet hogy az alkalmazĆ”s műkƶdni tudjon.</string>
<string name="chapters_label">Fejezetek</string>
+ <string name="chapter_duration">Hossz: %1$s</string>
<string name="shownotes_label">Jegyzetek</string>
<string name="description_label">LeƭrƔs</string>
<string name="most_recent_prefix">Legfrissebb epizĆ³d:\u0020</string>
@@ -82,7 +83,7 @@
<string name="feed_auto_download_never">Soha</string>
<string name="send_label">KĆ¼ldĆ©sā€¦</string>
<string name="episode_cleanup_never">Soha</string>
- <string name="episode_cleanup_queue_removal">Ha nem vƔrakozik</string>
+ <string name="episode_cleanup_queue_removal">Ha nincs sorbaƔllƭtva</string>
<string name="episode_cleanup_after_listening">BefejezƩs utƔn</string>
<plurals name="episode_cleanup_days_after_listening">
<item quantity="one">1 nappal a befejezƩs utƔn</item>
@@ -99,28 +100,18 @@
<string name="mark_all_read_label">Az ƶsszes megjelƶlƩse lejƔtszottkƩnt</string>
<string name="mark_all_read_msg">Az ƶsszes epizĆ³d lejĆ”tszottkĆ©nt megjelƶlve</string>
<string name="mark_all_read_confirmation_msg">Biztosan megjelƶlƶd az ƶsszes epizĆ³dot lejĆ”tszottkĆ©nt?</string>
- <string name="mark_all_read_feed_confirmation_msg">Biztosan megjelƶlƶd az ƶsszes epizĆ³dot az idővonalon lejĆ”tszottkĆ©nt?</string>
<string name="mark_all_seen_label">Az ƶsszes megjelƶlƩse megnƩzettkƩnt</string>
- <string name="mark_all_seen_msg">Az ƶsszes epizĆ³d megnĆ©zettkĆ©nt megjelƶlve</string>
<string name="mark_all_seen_confirmation_msg">Biztosan megjelƶlƶd az ƶsszes epizĆ³dott megnĆ©zettkĆ©nt?</string>
<string name="show_info_label">InformĆ”ciĆ³ mutatĆ”sa</string>
- <string name="rename_feed_label">Podcast ƔtnevezƩse</string>
- <string name="remove_feed_label">Podcast eltƔvolƭtƔsa</string>
<string name="share_label">MegosztĆ”sā€¦</string>
- <string name="share_link_label">Link megosztƔsa</string>
- <string name="share_link_with_position_label">Link megosztĆ”sa pozĆ­ciĆ³val</string>
+ <string name="share_file_label">FƔjl megosztƔsa</string>
<string name="share_feed_url_label">Idővonal URL megosztĆ”sa</string>
- <string name="share_item_url_label">EpizĆ³d fĆ”jl URL megosztĆ”sa</string>
- <string name="share_item_url_with_position_label">EpizĆ³d fĆ”jl URL megosztĆ”sa pozĆ­ciĆ³val</string>
- <string name="feed_remover_msg">Idővonal eltĆ”volĆ­tĆ”sa</string>
- <string name="load_complete_feed">Teljes idővonal frissĆ­tĆ©se</string>
<string name="hide_episodes_title">EpizĆ³dok elrejtĆ©se</string>
- <string name="episode_actions">Műveletek alkalmazĆ”sa</string>
<string name="hide_unplayed_episodes_label">Nem lejƔtszott</string>
<string name="hide_paused_episodes_label">SzĆ¼neteltetett</string>
<string name="hide_played_episodes_label">LejƔtszott</string>
- <string name="hide_queued_episodes_label">VĆ”rakozĆ³</string>
- <string name="hide_not_queued_episodes_label">Nem vĆ”rakozĆ³</string>
+ <string name="hide_queued_episodes_label">SorbaƔllƭtva</string>
+ <string name="hide_not_queued_episodes_label">Nincs sorbaƔllƭtva</string>
<string name="hide_downloaded_episodes_label">Letƶltƶtt</string>
<string name="hide_not_downloaded_episodes_label">Nem letƶltƶtt</string>
<string name="hide_has_media_label">TovƔbbi tartalma van</string>
@@ -137,12 +128,12 @@
<string name="delete_label">TƶrlƩs</string>
<string name="remove_episode_lable">EpizĆ³d eltĆ”volĆ­tĆ”sa</string>
<string name="marked_as_seen_label">MegtekintettkƩnt megjelƶlve</string>
- <string name="mark_read_label">LejƔtszottkƩnt megjelƶlƩs</string>
+ <string name="mark_read_label">JelƶlƩs jƔtszottnak</string>
<string name="marked_as_read_label">LejƔtszottkƩnt megjelƶlve</string>
- <string name="mark_unread_label">Nem lejƔtszottkƩnt megjelƶlƩs</string>
- <string name="add_to_queue_label">VƔrakozƔsi sorhoz adƔs</string>
- <string name="added_to_queue_label">VƔrakozƔsi sorhoz adva</string>
- <string name="remove_from_queue_label">VĆ”rakozĆ”si sorbĆ³l eltĆ”volĆ­tĆ”s</string>
+ <string name="mark_unread_label">JelƶlƩs nem jƔtszottnak</string>
+ <string name="add_to_queue_label">SorbaƔllƭtƔs</string>
+ <string name="added_to_queue_label">HozzƔadva a lejƔtszƔsi sorhoz</string>
+ <string name="remove_from_queue_label">EltĆ”volĆ­tĆ”s lejĆ”tszĆ”si sorbĆ³l</string>
<string name="add_to_favorite_label">Kedvencekhez adƔs</string>
<string name="added_to_favorites">Kedvencekhez adva</string>
<string name="remove_from_favorite_label">Kedvencekből eltĆ”volĆ­tĆ”s</string>
@@ -159,6 +150,8 @@
<string name="download_failed">sikertelen</string>
<string name="download_pending">LetƶltƩs vƔrakozik</string>
<string name="download_running">LetƶltƩs fut</string>
+ <string name="download_error_details">RĆ©szletek</string>
+ <string name="download_error_details_message">%1$s \n\nFƔjl URL:\n%2$s</string>
<string name="download_error_device_not_found">TĆ”reszkƶz nem talĆ”lhatĆ³</string>
<string name="download_error_insufficient_space">TĆŗl kevĆ©s tĆ”rhely</string>
<string name="download_error_file_error">FƔjl Hiba</string>
@@ -173,30 +166,208 @@
<string name="download_error_forbidden">Tiltott</string>
<string name="cancel_all_downloads_label">Az ƶsszes letƶltƩs visszavonƔsa</string>
<string name="download_canceled_msg">LetƶltƩs visszavonva</string>
+ <string name="download_report_title">LetƶltĆ©s befejeződƶtt, hibĆ”k lĆ©ptek fel</string>
+ <string name="download_report_content_title">JelentƩs letƶltƩse</string>
+ <string name="download_error_request_error">LekƩrƩsi hiba</string>
+ <string name="download_error_db_access">AdatbƔzis hozzƔfƩrƩsi hiba</string>
+ <plurals name="downloads_left">
+ <item quantity="one">%d letƶltƩs van hƔtra</item>
+ <item quantity="other">%d letƶltƩs van hƔtra</item>
+ </plurals>
+ <string name="downloads_processing">LetƶltƩsek feldolgozƔsa</string>
+ <string name="download_notification_title">Podcast adatok letƶltƩse</string>
+ <string name="download_report_content">%1$d letƶltƩs sikeres, %2$d sikertelen</string>
+ <string name="download_log_title_unknown">Ismeretlen cĆ­m</string>
+ <string name="download_type_feed">Csatorna</string>
+ <string name="download_type_media">MƩdia fƔjl</string>
+ <string name="download_type_image">KĆ©p</string>
+ <string name="authentication_notification_title">BejelentkezĆ©s szĆ¼ksĆ©ges</string>
+ <string name="authentication_notification_msg">A kĆ©rt forrĆ”s felhasznĆ”lĆ³nevet Ć©s jelszĆ³t kĆ©r</string>
+ <string name="confirm_mobile_download_dialog_enable_temporarily">Ɓtmenetileg engedƩlyez</string>
<!--Mediaplayer messages-->
+ <string name="player_error_msg">Hiba!</string>
+ <string name="player_preparing_msg">ElőkĆ©szĆ­tĆ©s</string>
+ <string name="player_ready_msg">KĆ©sz</string>
+ <string name="player_seeking_msg">TekerƩs</string>
+ <string name="playback_error_server_died">Szerver kapcsolat megszakadt</string>
+ <string name="playback_error_unknown">Ismeretlen hiba</string>
+ <string name="player_buffering_msg">PufferelƩs</string>
+ <string name="playbackservice_notification_title">Podcast lejƔtszƔsa</string>
<!--Queue operations-->
+ <string name="lock_queue">LejƔtszƔsi sor lezƔrƔsa</string>
+ <string name="unlock_queue">LejƔtszƔsi sor feloldƔsa</string>
+ <string name="queue_locked">LejƔtszƔsi sor lezƔrva</string>
+ <string name="queue_unlocked">LejƔtszƔsi sor feloldva</string>
+ <string name="clear_queue_label">LejƔtszƔsi sor tisztƭtƔsa</string>
+ <string name="undo">VisszavonƔs</string>
+ <string name="removed_from_queue">Elem eltƔvolƭtva</string>
+ <string name="move_to_top_label">MozgatƔs az elejƩre</string>
+ <string name="move_to_bottom_label">MozgatƔs a vƩgƩre</string>
+ <string name="sort">RendezƩs</string>
+ <string name="date">DƔtum</string>
+ <string name="duration">Hossz</string>
+ <string name="episode_title">EpizĆ³d cĆ­m</string>
+ <string name="ascending">Nƶvekvő</string>
+ <string name="descending">Csƶkkenő</string>
<!--Flattr-->
+ <string name="flattr_auth_label">Flattr bejelentkezƩs</string>
+ <string name="access_revoked_title">HozzƔfƩrƩs megtagadva</string>
<!--Flattr-->
<!--Variable Speed-->
+ <string name="download_plugin_label">KiegĆ©szĆ­tő letƶltĆ©se</string>
+ <string name="no_playback_plugin_title">KiegĆ©szĆ­tő nincs telepĆ­tve</string>
+ <string name="set_playback_speed_label">LejƔtszƔsi sebessƩg</string>
+ <string name="enable_sonic">Sonic engedƩlyezƩse</string>
<!--Empty list labels-->
+ <string name="no_items_label">Nincs elem a listƔban</string>
<!--Preferences-->
+ <string name="storage_pref">TĆ”rolĆ³</string>
+ <string name="project_pref">Projekt</string>
+ <string name="other_pref">Egyebek</string>
+ <string name="about_pref">RĆ³lam</string>
+ <string name="queue_label">LejƔtszƔsi sor</string>
+ <string name="flattr_label">Flattr</string>
+ <string name="pref_pauseOnDisconnect_sum">LejĆ”tszĆ”s szĆ¼neteltetĆ©se fejhallgatĆ³ Ć©s bluetooth levĆ”lasztĆ”sakor</string>
+ <string name="pref_hardwareForwardButtonSkips_title">Előre gomb Ć”tugor</string>
+ <string name="pref_hardwarePreviousButtonRestarts_title">Előző gomb ĆŗjraindĆ­t</string>
+ <string name="pref_auto_delete_title">AutĆ³mata tƶrlĆ©s</string>
+ <string name="pref_smart_mark_as_played_title">Intelligens jƔtszottnak jelƶlƩs</string>
+ <string name="playback_pref">LejƔtszƔs</string>
+ <string name="network_pref">HĆ”lĆ³zat</string>
+ <string name="pref_autoUpdateIntervallOrTime_Interval">Intervallum</string>
+ <string name="pref_autoUpdateIntervallOrTime_TimeOfDay">Időpont</string>
+ <string name="pref_autoUpdateIntervallOrTime_every">minden %1$s</string>
+ <string name="pref_autoUpdateIntervallOrTime_at">%1$s-kor</string>
+ <string name="pref_downloadMediaOnWifiOnly_sum">MƩdia fƔjlok letƶltƩse csak WiFi-n</string>
+ <string name="pref_followQueue_title">Folyamatos lejƔtszƔs</string>
+ <string name="pref_downloadMediaOnWifiOnly_title">WiFi mƩdia lejƔtszƔs</string>
+ <string name="pref_pauseOnHeadsetDisconnect_title">FejhallgatĆ³ levĆ”lasztĆ”sa</string>
+ <string name="pref_unpauseOnHeadsetReconnect_title">FejhallgatĆ³ ĆŗjracsatlakoztatĆ”sa</string>
+ <string name="pref_unpauseOnBluetoothReconnect_title">Bluetooth ĆŗjracsatlakozĆ”s</string>
+ <string name="pref_mobileUpdate_title">FrissƭtƩsek mobiladat-kapcsolaton</string>
+ <string name="pref_mobileUpdate_sum">FrissĆ­tĆ©sek engedĆ©lyezĆ©se mobiladat-kapcsolaton keresztĆ¼l</string>
+ <string name="flattr_settings_label">Flattr beƔllƭtƔsok</string>
+ <string name="pref_flattr_auth_title">Flattr bejelentkezƩs</string>
+ <string name="pref_revokeAccess_title">HozzƔfƩrƩs megvonƔsa</string>
+ <string name="user_interface_label">FelhasznĆ”lĆ³i felĆ¼let</string>
+ <string name="pref_set_theme_title">TƩma kivƔlasztƔsa</string>
+ <string name="pref_nav_drawer_title">NavigĆ”ciĆ³s fiĆ³k testreszabĆ”sa</string>
+ <string name="pref_nav_drawer_sum">NavigĆ”ciĆ³s fiĆ³k kinĆ©zetĆ©nek testreszabĆ”s</string>
+ <string name="pref_nav_drawer_items_title">NavigĆ”ciĆ³s fiĆ³k elemeinek kivĆ”laasztĆ”sa</string>
+ <string name="pref_set_theme_sum">AntennaPod kinƩzetƩnek megvƔltoztatƔsa</string>
+ <string name="pref_automatic_download_title">AutĆ³matikus letƶltĆ©s</string>
+ <string name="pref_automatic_download_sum">EpizĆ³dok autĆ³matikus letƶltĆ©sĆ©nek beĆ”llĆ­tĆ”sa</string>
+ <string name="pref_autodl_wifi_filter_title">Wi-Fi szűrő beĆ”llĆ­tĆ”sa</string>
+ <string name="pref_parallel_downloads_title">PƔrhuzamos letƶltƩsek</string>
+ <string name="pref_episode_cache_title">EpizĆ³d gyorsĆ­tĆ³tĆ”r</string>
+ <string name="pref_theme_title_light">VilƔgos</string>
+ <string name="pref_theme_title_dark">SƶtƩt</string>
+ <string name="pref_update_interval_hours_plural">Ć³ra</string>
+ <string name="pref_update_interval_hours_singular">Ć³ra</string>
+ <string name="pref_gpodnet_authenticate_title">BejelentkezƩs</string>
+ <string name="pref_gpodnet_authenticate_sum">Jelentkezz be a gpodder.net fiĆ³kodba a feliratkozĆ”sok szinkronizĆ”lĆ”sĆ”hoz.</string>
+ <string name="pref_gpodnet_logout_title">KijelentkezƩs</string>
+ <string name="pref_gpodnet_logout_toast">KijelentkezƩs sikeres</string>
+ <string name="pref_gpodnet_sync_changes_title">VƔltozƔsok szinkronizƔlƔsa most</string>
+ <string name="pref_gpodnet_full_sync_title">Teljes szinkronizƔlƔs most</string>
+ <string name="pref_playback_speed_title">LejƔtszƔsi sebessƩg</string>
+ <string name="pref_compact_notification_buttons_title">ZĆ”rkĆ©pernyő gombok beĆ”llĆ­tĆ”sa</string>
+ <string name="pref_lockscreen_background_title">ZĆ”rkĆ©pernyő hĆ”ttĆ©rkĆ©p</string>
+ <string name="pref_lockscreen_background_sum">ZĆ”rkĆ©pernyő hĆ”ttĆ©rkĆ©p Ć”tĆ”llĆ­tĆ”sa az epizĆ³d kĆ©pekĆ©nt.</string>
+ <string name="pref_image_cache_size_title">KĆ©p gyorsĆ­tĆ³tĆ”r mĆ©rete</string>
+ <string name="pref_image_cache_size_sum">KĆ©p gyorsĆ­tĆ³tĆ”r mĆ©retĆ©nek a lemezen</string>
+ <string name="crash_report_title">HibajelentƩs</string>
+ <string name="experimental_pref">KƭsƩrleti</string>
+ <string name="pref_proxy_title">Proxy</string>
+ <string name="pref_proxy_sum">HĆ”lĆ³zati proxy beĆ”llĆ­tĆ”sa</string>
+ <string name="pref_faq">GYIK</string>
+ <string name="pref_known_issues">Ismert hibƔk</string>
+ <string name="pref_no_browser_found">Nem talĆ”lhatĆ³ webbƶngĆ©sző</string>
+ <string name="pref_cast_title">Chromecast tƔmogatƔs</string>
<!--Auto-Flattr dialog-->
<!--Search-->
+ <string name="search_hint">EpizĆ³dok keresĆ©se</string>
+ <string name="search_label">KeresƩs</string>
<!--OPML import and export-->
+ <string name="start_import_label">ImportƔlƔs indƭtƔsa</string>
+ <string name="opml_import_label">OPML importƔlƔsa</string>
+ <string name="opml_directory_error">HIBA!</string>
+ <string name="reading_opml_label">OPML fƔjl olvasƔsa</string>
<!--Sleep timer-->
+ <string name="sleep_timer_enabled_label">ElalvĆ”s időzĆ­tő engedĆ©lyezĆ©se</string>
+ <string name="sleep_timer_disabled_label">ElalvĆ”s időzĆ­tő kikapcsolĆ”sa</string>
<!--gpodder.net-->
+ <string name="gpodnet_taglist_header">KATEGƓRIƁK</string>
+ <string name="gpodnet_suggestions_header">AJƁNLƁSOK</string>
+ <string name="gpodnetauth_login_title">BejelentkezƩs</string>
+ <string name="gpodnetauth_login_butLabel">BejelentkezƩs</string>
+ <string name="username_label">FelhasznĆ”lĆ³nĆ©v</string>
+ <string name="password_label">JelszĆ³</string>
+ <string name="gpodnetauth_device_title">Eszkƶz kivƔlasztƔsa</string>
+ <string name="gpodnetsync_pref_report_successful">Sikeres</string>
+ <string name="gpodnetsync_pref_report_failed">Sikertelen</string>
<!--Directory chooser-->
+ <string name="selected_folder_label">KivƔlasztott mappa:</string>
+ <string name="create_folder_label">Mappa lƩtrehozƔsa</string>
+ <string name="create_folder_error_already_exists">Mappa mƔr lƩtezik</string>
+ <string name="folder_not_empty_dialog_title">Mappa nem Ć¼res</string>
+ <string name="set_to_default_folder">AlapƩrtelmezett mappa kivƔlasztƔsa</string>
<!--Online feed view-->
+ <string name="subscribe_label">FeliratkozƔs</string>
+ <string name="subscribed_label">Feliratkozva</string>
+ <string name="downloading_label">LetƶltƩs...</string>
<!--Content descriptions for image buttons-->
+ <string name="media_type_audio_label">Hang</string>
+ <string name="media_type_video_label">Video</string>
+ <string name="load_next_page_label">Kƶvetkező oldal betƶltĆ©se</string>
<!--Feed information screen-->
<!--Progress information-->
<!--AntennaPodSP-->
+ <string name="search_itunes_label">iTunes keresƩs</string>
+ <string name="search_fyyd_label">fyyd keresƩs</string>
<!--Episodes apply actions-->
+ <string name="all_label">Mind</string>
+ <string name="downloaded_label">Letƶltve</string>
+ <string name="not_downloaded_label">Nincs letƶltve</string>
+ <string name="queued_label">SorbaƔllƭtva</string>
+ <string name="not_queued_label">Nincs sorbaƔllƭtva</string>
<!--Sort-->
+ <string name="sort_title_a_z">CĆ­m (A \u2192 Z)</string>
+ <string name="sort_title_z_a">CĆ­m (Z \u2192 A)</string>
+ <string name="sort_date_new_old">DĆ”tum (ƚj \u2192Ā RĆ©gi)</string>
+ <string name="sort_date_old_new">DĆ”tum (RĆ©gi \u2192 ƚj)</string>
+ <string name="sort_duration_short_long">Hossz (Rƶvid \u2192 HosszĆŗ)</string>
+ <string name="sort_duration_long_short">Hossz (HosszĆŗ \u2192 Rƶvid)</string>
<!--Rating dialog-->
+ <string name="rating_later_label">KĆ©rdezz rĆ”kĆ©sőbb</string>
<!--Audio controls-->
+ <string name="audio_controls">Hang vezĆ©rlők</string>
+ <string name="playback_speed">LejƔtszƔsi sebessƩg</string>
+ <string name="volume">Hangerő</string>
+ <string name="left_short">B</string>
+ <string name="right_short">J</string>
+ <string name="audio_effects">Hangeffektek</string>
+ <string name="stereo_to_mono">LekeverĆ©s: SztereĆ³t Monora</string>
+ <string name="sonic_only">Csak Sonic</string>
<!--proxy settings-->
+ <string name="proxy_type_label">TĆ­pus</string>
+ <string name="host_label">KiszolgĆ”lĆ³</string>
+ <string name="port_label">Port</string>
+ <string name="optional_hint">(OpcionƔlis)</string>
+ <string name="proxy_test_label">Teszt</string>
+ <string name="proxy_test_successful">Teszt sikeres</string>
+ <string name="proxy_test_failed">Teszt sikertelen</string>
+ <string name="proxy_host_empty_error">KiszolgĆ”lĆ³ nem lehet Ć¼res</string>
+ <string name="proxy_port_invalid_error">Port nem helyes</string>
<!--Database import/export-->
+ <string name="import_export">AdatbƔzis importƔlƔsa/exportƔlƔsa</string>
+ <string name="label_import">ImportƔlƔs</string>
+ <string name="label_export">ExportƔlƔs</string>
+ <string name="import_select_file">FƔjl kiƔlasztƔs importƔlƔshoz</string>
+ <string name="export_ok">ExportƔlƔs sikeres</string>
<!--Casting-->
<!--<string name="cast_failed_to_connect">Could not connect to the device</string>-->
+ <string name="cast_failed_setting_volume">Hiba a hangerő beĆ”llĆ­tĆ”sa kƶzben</string>
+ <string name="cast_failed_media_error_skipping">Hiba a lejƔtszƔs kƶzben. ƁtugrƔs...</string>
+ <!--Notification channels-->
</resources>
diff --git a/core/src/main/res/values-id/strings.xml b/core/src/main/res/values-id/strings.xml
index e6ff6d1e7..62254518d 100644
--- a/core/src/main/res/values-id/strings.xml
+++ b/core/src/main/res/values-id/strings.xml
@@ -151,4 +151,5 @@
<!--Database import/export-->
<!--Casting-->
<!--<string name="cast_failed_to_connect">Could not connect to the device</string>-->
+ <!--Notification channels-->
</resources>
diff --git a/core/src/main/res/values-is-rIS/strings.xml b/core/src/main/res/values-is-rIS/strings.xml
index acf3abe75..2d9481b84 100644
--- a/core/src/main/res/values-is-rIS/strings.xml
+++ b/core/src/main/res/values-is-rIS/strings.xml
@@ -36,4 +36,5 @@
<!--Database import/export-->
<!--Casting-->
<!--<string name="cast_failed_to_connect">Could not connect to the device</string>-->
+ <!--Notification channels-->
</resources>
diff --git a/core/src/main/res/values-it-rIT/strings.xml b/core/src/main/res/values-it-rIT/strings.xml
deleted file mode 100644
index 23c8ec1c0..000000000
--- a/core/src/main/res/values-it-rIT/strings.xml
+++ /dev/null
@@ -1,526 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources xmlns:tools="http://schemas.android.com/tools">
- <!--Activitiy and fragment titles-->
- <string name="feeds_label">Feed</string>
- <string name="statistics_label">Statistiche</string>
- <string name="add_feed_label">Aggiungi un podcast</string>
- <string name="episodes_label">Episodi</string>
- <string name="all_episodes_short_label">Tutti</string>
- <string name="favorite_episodes_label">Preferiti</string>
- <string name="new_label">Nuovo</string>
- <string name="settings_label">Impostazioni</string>
- <string name="downloads_label">Download</string>
- <string name="downloads_running_label">In esecuzione</string>
- <string name="downloads_completed_label">Completati</string>
- <string name="downloads_log_label">Registro</string>
- <string name="subscriptions_label">Abbonamenti</string>
- <string name="subscriptions_list_label">Elenco degli Abbonamenti</string>
- <string name="cancel_download_label">Annulla\nil Download</string>
- <string name="playback_history_label">Cronologia delle riproduzioni</string>
- <string name="gpodnet_main_label">gpodder.net</string>
- <string name="gpodnet_auth_label">Accesso a gpodder.net</string>
- <string name="free_space_label">%1$s disponibili</string>
- <string name="episode_cache_full_title">Cache degli episodi piena</string>
- <string name="episode_cache_full_message">Lo spazio di memoria della cache degli episodi ĆØ esaurito. Puoi aumentarlo nelle Impostazioni</string>
- <!--Statistics fragment-->
- <string name="total_time_listened_to_podcasts">Tempo totale di riproduzione:</string>
- <string name="statistics_details_dialog">%1$d di %2$d episodi iniziati.\n\nRiprodotti %3$s di %4$s.</string>
- <string name="statistics_mode">ModalitĆ  di statistica</string>
- <string name="statistics_mode_normal">Calcola l\'attuale tempo di riproduzione. Riprodurre un podcast due volte verrĆ  contato due volte, mentre segnarlo come riprodotto no.</string>
- <string name="statistics_mode_count_all">Somma tutti i podcast segnati come riprodotti</string>
- <string name="statistics_speed_not_counted">Avviso: La velocitĆ  di riproduzione non viene considerata.</string>
- <!--Main activity-->
- <string name="drawer_open">Apri il menĆ¹</string>
- <string name="drawer_close">Chiudi il menĆ¹</string>
- <string name="drawer_preferences">Preferenze del Drawer</string>
- <string name="drawer_feed_order_unplayed_episodes">Ordina per contatore</string>
- <string name="drawer_feed_order_alphabetical">Ordina alfabeticamente</string>
- <string name="drawer_feed_order_last_update">Ordina per data di pubblicazione</string>
- <string name="drawer_feed_order_most_played">Ordina per numero di episodi riprodotti</string>
- <string name="drawer_feed_counter_new_unplayed">Numero di episodi nuovi e non riprodotti</string>
- <string name="drawer_feed_counter_new">Numero di episodi nuovi</string>
- <string name="drawer_feed_counter_unplayed">Numero di episodi non riprodotti</string>
- <string name="drawer_feed_counter_downloaded">Numero di episodi scaricati</string>
- <string name="drawer_feed_counter_none">Nulla</string>
- <!--Webview actions-->
- <string name="open_in_browser_label">Apri nel Browser</string>
- <string name="copy_url_label">Copia URL</string>
- <string name="share_url_label">Condividi URL</string>
- <string name="copied_url_msg">URL copiato negli appunti</string>
- <string name="go_to_position_label">Vai a questa posizione</string>
- <!--Playback history-->
- <string name="clear_history_label">Pulisci la cronologia</string>
- <!--Other-->
- <string name="confirm_label">Conferma</string>
- <string name="cancel_label">Annulla</string>
- <string name="yes">SƬ</string>
- <string name="no">No</string>
- <string name="reset">Reimposta</string>
- <string name="author_label">Autore</string>
- <string name="language_label">Lingua</string>
- <string name="url_label">URL</string>
- <string name="podcast_settings_label">Impostazioni</string>
- <string name="cover_label">Immagine</string>
- <string name="error_label">Errore</string>
- <string name="error_msg_prefix">ƈ stato rilevato un errore:</string>
- <string name="refresh_label">Aggiorna</string>
- <string name="external_storage_error_msg">Non risulta disponibile lo spazio di archiviazione esterno. Assicurati che lo spazio di archiviazione sia montato per permettere all\'applicazione di funzionare correttamente.</string>
- <string name="chapters_label">Capitoli</string>
- <string name="chapter_duration">Durata: %1$s</string>
- <string name="shownotes_label">Note dell\'episodio</string>
- <string name="description_label">Descrizione</string>
- <string name="most_recent_prefix">Episodio piĆ¹ recente:\u0020</string>
- <string name="episodes_suffix">\u0020episodi</string>
- <string name="length_prefix">Durata:\u0020</string>
- <string name="size_prefix">Dimensione:\u0020</string>
- <string name="processing_label">Elaborazione in corso</string>
- <string name="loading_label">Caricamento...</string>
- <string name="save_username_password_label">Salva nome utente e password</string>
- <string name="close_label">Chiudi</string>
- <string name="retry_label">Riprova</string>
- <string name="auto_download_label">Includi nei download automatici</string>
- <string name="auto_download_apply_to_items_title">Applica ai Precedenti Episodi</string>
- <string name="auto_download_apply_to_items_message">L\'opzione <i>Download Automatico</i> verrĆ  applicata ai nuovi episodi.\nVuoi anche applicarla agli episodi precedenti?</string>
- <string name="auto_delete_label">Elimina Episodi Automaticamente</string>
- <string name="parallel_downloads_suffix">\u0020download paralleli</string>
- <string name="feed_auto_download_global">Impostazione Globale</string>
- <string name="feed_auto_download_always">Sempre</string>
- <string name="feed_auto_download_never">Mai</string>
- <string name="send_label">Invia...</string>
- <string name="episode_cleanup_never">Mai</string>
- <string name="episode_cleanup_queue_removal">Quando non ĆØ in coda</string>
- <string name="episode_cleanup_after_listening">Dopo il completamento</string>
- <plurals name="episode_cleanup_days_after_listening">
- <item quantity="one">1 giorno dopo il completamento</item>
- <item quantity="other">%d giorni dopo il completamento</item>
- </plurals>
- <!--'Add Feed' Activity labels-->
- <string name="feedurl_label">URL del feed</string>
- <string name="etxtFeedurlHint">www.example.com/feed</string>
- <string name="txtvfeedurl_label">Aggiungi un Podcast tramite URL</string>
- <string name="podcastdirectories_label">Trova un podcast nella directory</string>
- <string name="podcastdirectories_descr">Per trovare podcasts puoi cercare su iTunes o fyyd, oppure puoi esplorare gpodder.net per nome, categoria oppure popolaritĆ .</string>
- <string name="browse_gpoddernet_label">Esplora gpodder.net</string>
- <!--Actions on feeds-->
- <string name="mark_all_read_label">Segna tutti come riprodotti</string>
- <string name="mark_all_read_msg">Segnati tutti gli episodi come riprodotti</string>
- <string name="mark_all_read_confirmation_msg">Conferma che desideri segnare tutti gli episodi come riprodotti.</string>
- <string name="mark_all_read_feed_confirmation_msg">Conferma che desideri segnare tutti gli episodi in questo feed come riprodotti.</string>
- <string name="mark_all_seen_label">Segna tutti come visti</string>
- <string name="mark_all_seen_msg">Segnati tutti gli episodi come visti</string>
- <string name="mark_all_seen_confirmation_msg">Conferma che desideri segnare tutti gli episodi come visti.</string>
- <string name="show_info_label">Informazioni</string>
- <string name="rename_feed_label">Rinomina Podcast</string>
- <string name="remove_feed_label">Rimuovi podcast</string>
- <string name="share_label">Condividi...</string>
- <string name="share_link_label">Condividi il link</string>
- <string name="share_file_label">Condividi il file</string>
- <string name="share_link_with_position_label">Condividi il Link con la Posizione</string>
- <string name="share_feed_url_label">Condividi URL del Feed</string>
- <string name="share_item_url_label">Condividi l\'URL dell\'episodio</string>
- <string name="share_item_url_with_position_label">Condividi l\'URL del File dell\'epsiodio con la Posizione</string>
- <string name="feed_delete_confirmation_msg">Conferma che desideri cancellare il feed \"%1$s\" e TUTTI i suoi episodi scaricati.</string>
- <string name="feed_remover_msg">Rimozione del Feed in corso</string>
- <string name="load_complete_feed">Ricarica il feed completo</string>
- <string name="hide_episodes_title">Nascondi gli episodi</string>
- <string name="episode_actions">Applica le azioni</string>
- <string name="hide_unplayed_episodes_label">Non riprodotti</string>
- <string name="hide_paused_episodes_label">In pausa</string>
- <string name="hide_played_episodes_label">Riprodotti</string>
- <string name="hide_queued_episodes_label">In coda</string>
- <string name="hide_not_queued_episodes_label">Non in coda</string>
- <string name="hide_downloaded_episodes_label">Scaricati</string>
- <string name="hide_not_downloaded_episodes_label">Non scaricati</string>
- <string name="filtered_label">Filtrati</string>
- <string name="refresh_failed_msg">{fa-exclamation-circle} Ultimo aggiornamento fallito</string>
- <string name="open_podcast">Apri Podcast</string>
- <!--actions on feeditems-->
- <string name="download_label">Download</string>
- <string name="play_label">Riproduci</string>
- <string name="pause_label">Pausa</string>
- <string name="stop_label">Ferma</string>
- <string name="stream_label">Stream</string>
- <string name="remove_label">Rimuovi</string>
- <string name="delete_label">Elimina</string>
- <string name="remove_episode_lable">Rimuovi l\'episodio</string>
- <string name="marked_as_seen_label">Segna come visto</string>
- <string name="mark_read_label">Segna come riprodotto</string>
- <string name="marked_as_read_label">Segnato come riprodotto</string>
- <string name="mark_unread_label">Segna come non riprodotto</string>
- <string name="add_to_queue_label">Aggiungi alla coda</string>
- <string name="added_to_queue_label">Aggiunto alla coda</string>
- <string name="remove_from_queue_label">Rimuovi dalla coda</string>
- <string name="add_to_favorite_label">Aggiungi ai preferiti</string>
- <string name="added_to_favorites">Aggiunto ai Preferiti</string>
- <string name="remove_from_favorite_label">Rimuovi dai preferiti</string>
- <string name="removed_from_favorites">Rimosso dai Preferiti</string>
- <string name="visit_website_label">Visita il sito</string>
- <string name="support_label">Carica questo su Flattr</string>
- <string name="skip_episode_label">Salta l\'episodio</string>
- <string name="activate_auto_download">Attiva il Download Automatico</string>
- <string name="deactivate_auto_download">Disattiva il Download Automatico</string>
- <string name="reset_position">Azzera la Posizione di Riproduzione</string>
- <string name="removed_item">Elemento rimosso</string>
- <!--Download messages and labels-->
- <string name="download_successful">successo</string>
- <string name="download_failed">fallito</string>
- <string name="download_pending">Download in attesa</string>
- <string name="download_running">Download in corso</string>
- <string name="download_error_device_not_found">Spazio di archiviazione non trovato</string>
- <string name="download_error_insufficient_space">Spazio insufficiente</string>
- <string name="download_error_file_error">Errore del file</string>
- <string name="download_error_http_data_error">Errore dei dati HTTP</string>
- <string name="download_error_error_unknown">Errore sconosciuto</string>
- <string name="download_error_parser_exception">Eccezione del decodificatore</string>
- <string name="download_error_unsupported_type">Tipo di feed non supportato</string>
- <string name="download_error_connection_error">Errore di connessione</string>
- <string name="download_error_unknown_host">Host sconosciuto</string>
- <string name="download_error_unauthorized">Errore di autenticazione</string>
- <string name="download_error_file_type_type">Errore Formato FIle</string>
- <string name="download_error_forbidden">Proibito</string>
- <string name="cancel_all_downloads_label">Annulla tutti i download</string>
- <string name="download_canceled_msg">Download annullato</string>
- <string name="download_canceled_autodownload_enabled_msg">Download annullato\n<i>Download Automatico</i> disabilitato per questo elemento</string>
- <string name="download_report_title">Download completato con un errore (o errori)</string>
- <string name="download_report_content_title">Rapporto del Downoad</string>
- <string name="download_error_malformed_url">URL malformato</string>
- <string name="download_error_io_error">Errore IO</string>
- <string name="download_error_request_error">Errore della richiesta</string>
- <string name="download_error_db_access">Errore di accesso al database</string>
- <plurals name="downloads_left">
- <item quantity="one">%d download rimanente</item>
- <item quantity="other">%d download rimanenti</item>
- </plurals>
- <string name="downloads_processing">Elaborazione dei download in corso</string>
- <string name="download_notification_title">Download podcast in corso</string>
- <string name="download_report_content">%1$d download con successo, %2$d falliti</string>
- <string name="download_log_title_unknown">Titolo Sconosciuto</string>
- <string name="download_type_feed">Feed</string>
- <string name="download_type_media">File multimediali</string>
- <string name="download_type_image">Immagine</string>
- <string name="download_request_error_dialog_message_prefix">Rilevato errore durante il download del file:\u0020</string>
- <string name="authentication_notification_title">Autenticazione richiesta</string>
- <string name="authentication_notification_msg">La risorsa che hai richiesto richiede un nome utente e una password</string>
- <string name="confirm_mobile_download_dialog_title">Conferma il download su cellulare</string>
- <string name="confirm_mobile_download_dialog_only_add_to_queue">Metti in Coda</string>
- <string name="confirm_mobile_download_dialog_enable_temporarily">Consenti temporaneamente</string>
- <!--Mediaplayer messages-->
- <string name="player_error_msg">Errore!</string>
- <string name="player_stopped_msg">Nessun media in riproduzione</string>
- <string name="player_preparing_msg">Preparazione</string>
- <string name="player_ready_msg">Pronto</string>
- <string name="player_seeking_msg">Ricerca posizione</string>
- <string name="playback_error_server_died">Server morto</string>
- <string name="playback_error_unknown">Errore sconosciuto</string>
- <string name="no_media_playing_label">Nessun elemento multimediale in riproduzione</string>
- <string name="player_buffering_msg">Buffer in corso</string>
- <string name="playbackservice_notification_title">Riproduzione del podcast in corso</string>
- <string name="unknown_media_key">AntennaPod - Chiave dell\'elemento multimediale sconosciuta: %1$d</string>
- <!--Queue operations-->
- <string name="lock_queue">Blocca la coda</string>
- <string name="unlock_queue">Sblocca la coda</string>
- <string name="queue_locked">Coda bloccata</string>
- <string name="queue_unlocked">Coda sbloccata</string>
- <string name="clear_queue_label">Svuota la Coda</string>
- <string name="undo">Undo</string>
- <string name="removed_from_queue">Oggetto rimosso</string>
- <string name="move_to_top_label">Sposta all\'inizio</string>
- <string name="move_to_bottom_label">Sposta in fondo</string>
- <string name="sort">Ordina</string>
- <string name="date">Per data</string>
- <string name="duration">Per durata</string>
- <string name="episode_title">Titolo dell\'episodio</string>
- <string name="feed_title">Titolo del feed</string>
- <string name="ascending">In ordine crescente</string>
- <string name="descending">In ordine decrescente</string>
- <string name="clear_queue_confirmation_msg">Per favore conferma che vuoi rimuovere dalla coda TUTTI gli episodi in essa presenti.</string>
- <!--Flattr-->
- <string name="flattr_auth_label">Accesso a Flattr</string>
- <string name="flattr_auth_explanation">Premi il tasto seguente per iniziare il processo di autenticazione. Sarai trasferito alla pagina di login di flattr sul tuo browser e ti sarĆ  richiesto di garantire ad AntennaPod il permesso di effettuare microdonazioni. Dopo la tua autorizzazione, sarai riportato alla seguente schermata in modo automatico.</string>
- <string name="authenticate_label">Autenticazione</string>
- <string name="return_home_label">Ritorna alla pagina iniziale</string>
- <string name="flattr_auth_success">Autenticazione avvenuta con successo! Adesso puoi microdonare con flattr dall\'interno dell\'app.</string>
- <string name="no_flattr_token_title">Nessun token flattr trovato</string>
- <string name="no_flattr_token_notification_msg">Il tuo account di Flattr non sembra essere collegato ad AntennaPod. Premi qui per autenticarti.</string>
- <string name="no_flattr_token_msg">Il tuo account flattr non sembra essere collegato ad AntennaPod. Potresti collegare il tuo account ad AntennaPod per utilizzare flattr dall\'app oppure puoi visitare il sito per utilizzare flattr direttamente da lƬ.</string>
- <string name="authenticate_now_label">Autenticati</string>
- <string name="action_forbidden_title">Azione proibita</string>
- <string name="action_forbidden_msg">AntennaPod non ha il permesso di effettuare questa azione. La ragione potrebbe essere che il token di accesso di AntennaPod al tuo account ĆØ stato revocato. Puoi eseguire la re-autenticazione o altrimenti visitare il sito web.</string>
- <string name="access_revoked_title">Accesso revocato</string>
- <string name="access_revoked_info">Hai revocato l\'accesso di AntennaPod al tuo account. Al fine di completare il processo devi rimuovere l\'app dalla lista delle applicazioni autorizzare nelle impostazioni del tuo account sul sito di flattr.</string>
- <!--Flattr-->
- <string name="flattr_click_success">Caricata una cosa su Flattr!</string>
- <string name="flattr_click_success_count">Caricate %d cose su Flattr!</string>
- <string name="flattr_click_success_queue">Caricato su Flattr: %s.</string>
- <string name="flattr_click_failure_count">ƈ stato fallito il caricamento su Flattr di %d cose!</string>
- <string name="flattr_click_failure">Non caricato su Flattr: %s.</string>
- <string name="flattr_click_enqueued">La cosa verrĆ  caricata su Flattr piĆ¹ tardi</string>
- <string name="flattring_thing">Caricamento su Flattr di %s in corso</string>
- <string name="flattring_label">AntennaPod sta eseguendo Flattr</string>
- <string name="flattrd_label">AntennaPod ha caricato su Flattr</string>
- <string name="flattrd_failed_label">Caricamento su Flattr di AntennaPod fallito</string>
- <string name="flattr_retrieving_status">Ricezione di cose caricate su Flattr in corso</string>
- <!--Variable Speed-->
- <string name="download_plugin_label">Scarica plugin</string>
- <string name="no_playback_plugin_title">Plugin non installato</string>
- <string name="set_playback_speed_label">VelocitĆ  di riproduzione</string>
- <string name="enable_sonic">Abilita Sonic</string>
- <!--Empty list labels-->
- <string name="no_items_label">Non ci sono oggetti in questo elenco.</string>
- <string name="no_feeds_label">Non sei ancora abbonato a nessun feed.</string>
- <string name="no_chapters_label">Questo episodio non ha capitoli.</string>
- <string name="no_shownotes_label">Questo episodio non ha note.</string>
- <!--Preferences-->
- <string name="storage_pref">Memoria</string>
- <string name="project_pref">Progetto</string>
- <string name="other_pref">Altro</string>
- <string name="about_pref">Informazioni</string>
- <string name="queue_label">Coda</string>
- <string name="services_label">Servizi</string>
- <string name="flattr_label">Flattr</string>
- <string name="pref_unpauseOnHeadsetReconnect_sum">Riprendi la riproduzione quando vengono riconnesse le cuffie</string>
- <string name="pref_followQueue_sum">Passa al prossimo episodio in coda quanto si completa una riproduzione</string>
- <string name="pref_auto_delete_sum">Elimina l\'episodio quando viene completata la riproduzione</string>
- <string name="pref_auto_delete_title">Elimina automaticamente</string>
- <string name="pref_skip_keeps_episodes_title">Manteni gli Episodi Saltati</string>
- <string name="playback_pref">Riproduzione</string>
- <string name="network_pref">Rete</string>
- <string name="pref_autoUpdateIntervallOrTime_message">Puoi impostare un <i>intervallo</i> come \"ogni 2 ore\", impostare <i>un\'ora del giorno</i> specifica, come \"7:00\" oppure <i>disabilitare</i> gli aggiornamenti automatici del tutto.\n\n<small>Nota: I tempi di aggiornamento non sono perfetti. Potrai riscontrare dei brevi ritardi.</small></string>
- <string name="pref_autoUpdateIntervallOrTime_Disable">Disabilita</string>
- <string name="pref_autoUpdateIntervallOrTime_Interval">Imposta Intervallo</string>
- <string name="pref_autoUpdateIntervallOrTime_every">ogni %1$s</string>
- <string name="pref_autoUpdateIntervallOrTime_at">alle %1$s</string>
- <string name="pref_downloadMediaOnWifiOnly_sum">Abilita il download dei media solo tramite WiFi</string>
- <string name="pref_followQueue_title">Riproduzione Continua</string>
- <string name="pref_downloadMediaOnWifiOnly_title">Download dei media su WiFi</string>
- <string name="pref_pauseOnHeadsetDisconnect_title">Disconnessione cuffie</string>
- <string name="pref_unpauseOnHeadsetReconnect_title">Riconnetti le Cuffie</string>
- <string name="pref_unpauseOnBluetoothReconnect_title">Riconnessione Bluetooth</string>
- <string name="pref_mobileUpdate_title">Aggiornamenti su Reti a Consumo</string>
- <string name="pref_mobileUpdate_sum">Permetti gli aggiornamenti tramite connessione dati mobile</string>
- <string name="refreshing_label">Aggiornamento</string>
- <string name="flattr_settings_label">Impostazioni Flattr</string>
- <string name="pref_flattr_auth_title">Flattr sign-in</string>
- <string name="pref_flattr_auth_sum">Collega il tuo account flattr per utilizzare flattr direttamente dall\'app</string>
- <string name="pref_flattr_this_app_title">Supporta con flattr questa app</string>
- <string name="pref_flattr_this_app_sum">Supporta lo sviluppo di AntennaPod tramite flattr. Grazie!</string>
- <string name="pref_revokeAccess_title">Revoca l\'accesso</string>
- <string name="pref_revokeAccess_sum">Revoca il permesso, a questa applicazione, di accedere al tuo account flattr.</string>
- <string name="pref_auto_flattr_title">Flattr automatico</string>
- <string name="pref_auto_flattr_sum">Configura l\'esecuzione automatica di Flattr</string>
- <string name="user_interface_label">Interfaccia utente</string>
- <string name="pref_set_theme_title">Seleziona un Tema</string>
- <string name="pref_nav_drawer_feed_order_title">Imposta l\'ordine delle Iscrizioni</string>
- <string name="pref_set_theme_sum">Cambia l\'aspetto di AntennaPod</string>
- <string name="pref_automatic_download_title">Download Automatico</string>
- <string name="pref_automatic_download_sum">Configura il download automatico degli episodi</string>
- <string name="pref_autodl_wifi_filter_title">Abilita il filtro Wi-Fi</string>
- <string name="pref_autodl_wifi_filter_sum">Abilita il download automatico solo per alcune reti Wi-Fi selezionate.</string>
- <string name="pref_automatic_download_on_battery_title">Scarica quando la batteria non ĆØ in carica</string>
- <string name="pref_automatic_download_on_battery_sum">Permetti il download automatico quando la batteria non ĆØ in carica</string>
- <string name="pref_parallel_downloads_title">Download Contemporanei</string>
- <string name="pref_episode_cache_title">Cache degli Episodi</string>
- <string name="pref_theme_title_light">Light</string>
- <string name="pref_theme_title_dark">Dark</string>
- <string name="pref_episode_cache_unlimited">Illimitato</string>
- <string name="pref_update_interval_hours_plural">ore</string>
- <string name="pref_update_interval_hours_singular">ora</string>
- <string name="pref_update_interval_hours_manual">Manuale</string>
- <string name="pref_gpodnet_authenticate_title">Login</string>
- <string name="pref_gpodnet_authenticate_sum">Effettua il login con il tuo account gpodder.net per sincronizzare le tue sottoscrizioni.</string>
- <string name="pref_gpodnet_logout_title">Logout</string>
- <string name="pref_gpodnet_logout_toast">Logout effettuato</string>
- <string name="pref_gpodnet_setlogin_information_title">Cambia le informazioni di login</string>
- <string name="pref_gpodnet_setlogin_information_sum">Cambia le informazioni di login per il tuo account gpodder.net.</string>
- <string name="pref_gpodnet_sync_started">Sincronizzazione avviata</string>
- <string name="pref_playback_speed_title">VelocitĆ  di riproduzione</string>
- <string name="pref_playback_speed_sum">Personalizza le velocitĆ  disponibili per la riproduzione audio a velocitĆ  variabile</string>
- <string name="pref_gpodnet_sethostname_title">Imposta l\'hostname</string>
- <string name="pref_gpodnet_sethostname_use_default_host">Usa l\'host di default</string>
- <string name="pref_expandNotify_title">Espandi le notifiche</string>
- <string name="pref_expandNotify_sum">Espandi sempre le notifiche per mostrare i pulsanti di riproduzione.</string>
- <string name="pref_persistNotify_title">Controlli di riproduzione persistenti</string>
- <string name="pref_persistNotify_sum">Mantieni le notifiche e i controlli del blocco dello schermo quando la riproduzione ĆØ in pausa.</string>
- <string name="pref_showDownloadReport_title">Mostra il Rapporto del Download</string>
- <string name="pref_expand_notify_unsupport_toast">Le versioni di Android prima della 4.1 non supportano le notifiche estese.</string>
- <string name="pref_queueAddToFront_sum">Aggiungi un nuovo episodio in testa alla coda.</string>
- <string name="pref_queueAddToFront_title">Aggiungi in cima alla coda</string>
- <string name="pref_smart_mark_as_played_disabled">Disabilitato</string>
- <string name="pref_image_cache_size_title">Dimensione Cache delle Immagini</string>
- <string name="send_email">Invia e-mail</string>
- <string name="experimental_pref">Sperimentale</string>
- <string name="pref_current_value">Valore corrente: %1$s</string>
- <string name="pref_proxy_title">Proxy</string>
- <string name="pref_faq">FAQ</string>
- <string name="pref_known_issues">Problemi noti</string>
- <string name="pref_cast_title">Supporto a Chromecast</string>
- <!--Auto-Flattr dialog-->
- <string name="auto_flattr_enable">Abilita l\'esecuzione automatica di Flattr</string>
- <string name="auto_flattr_after_percent">Carica l\'episodio su Flattr appena ĆØ stato riprodotto al %d percento</string>
- <string name="auto_flattr_ater_beginning">Carica l\'episodio su Flattr appena comincia la riproduzione</string>
- <string name="auto_flattr_ater_end">Carica l\'episodio su Flattr appena finisce la riproduzione</string>
- <!--Search-->
- <string name="found_in_chapters_label">Trovato nei capitoli</string>
- <string name="search_status_no_results">Nessun risultato trovato</string>
- <string name="search_label">Ricerca</string>
- <string name="found_in_title_label">Trovato nel titolo</string>
- <!--OPML import and export-->
- <string name="opml_import_txtv_button_lable">I file OPML ti permettono di spostare i tuoi podcast da un programma ad un altro.</string>
- <string name="start_import_label">Avvio importazione</string>
- <string name="opml_import_label">Importazione OPML</string>
- <string name="opml_directory_error">ERRORE!</string>
- <string name="reading_opml_label">Lettura OPML file in corso</string>
- <string name="opml_import_error_no_file">Nessun file selezionato!</string>
- <string name="select_all_label">Seleziona tutti</string>
- <string name="deselect_all_label">Deseleziona tutti</string>
- <string name="choose_file_from_filesystem">Dal filesystem locale</string>
- <string name="choose_file_from_external_application">Utilizza un\'applicazione esterna</string>
- <string name="opml_export_label">Esportazione su OPML</string>
- <string name="export_error_label">Errore di esportazione</string>
- <string name="opml_export_success_title">Esportazione OPML avvenuta con successo.</string>
- <string name="opml_export_success_sum">Il file .opml ĆØ stato scritto su:\u0020</string>
- <!--Sleep timer-->
- <string name="set_sleeptimer_label">Imposta timer</string>
- <string name="disable_sleeptimer_label">Disabilita il timer di spegnimento</string>
- <string name="enter_time_here_label">Tempo di spegnimento</string>
- <string name="sleep_timer_label">Timer di spegnimento</string>
- <string name="time_left_label">Tempo residuo:\u0020</string>
- <string name="time_dialog_invalid_input">Input non valido, il campo deve essere un numero intero.</string>
- <string name="timer_vibration_label">Vibra</string>
- <string name="time_seconds">secondi</string>
- <string name="time_minutes">minuti</string>
- <string name="time_hours">ore</string>
- <plurals name="time_seconds_quantified">
- <item quantity="one">1 secondo</item>
- <item quantity="other">%d secondi</item>
- </plurals>
- <plurals name="time_minutes_quantified">
- <item quantity="one">1 minuto</item>
- <item quantity="other">%d minuti</item>
- </plurals>
- <plurals name="time_hours_quantified">
- <item quantity="one">1 ora</item>
- <item quantity="other">%d ore</item>
- </plurals>
- <string name="auto_enable_label">Abilita automaticamente</string>
- <!--gpodder.net-->
- <string name="gpodnet_taglist_header">CATEGORIE</string>
- <string name="gpodnet_toplist_header">TOP PODCAST</string>
- <string name="gpodnet_suggestions_header">SUGGERIMENTI</string>
- <string name="gpodnet_search_hint">Cerca su gpodder.net</string>
- <string name="gpodnetauth_login_title">Login</string>
- <string name="gpodnetauth_login_descr">Benvenuto sul processo di login di gpodder.net. Per prima cosa, inserisci le tue informazioni di login:</string>
- <string name="gpodnetauth_login_butLabel">Login</string>
- <string name="gpodnetauth_login_register">Se non hai ancora un account, puoi crearne uno qui:\nhttps://gpodder.net/register/</string>
- <string name="username_label">Username</string>
- <string name="password_label">Password</string>
- <string name="gpodnetauth_device_title">Scelta del dispositivo</string>
- <string name="gpodnetauth_device_descr">Crea un nuovo dispositivo per utilizzare il tuo account gpodder.net o scegline uno esistente:</string>
- <string name="gpodnetauth_device_deviceID">ID del dispositivo:\u0020</string>
- <string name="gpodnetauth_device_caption">Caption</string>
- <string name="gpodnetauth_device_butCreateNewDevice">Crea un nuovo dispositivo</string>
- <string name="gpodnetauth_device_chooseExistingDevice">Scegli un dispositivo esistente:</string>
- <string name="gpodnetauth_device_errorEmpty">L\'ID del dispositivo non puĆ² essere vuoto</string>
- <string name="gpodnetauth_device_errorAlreadyUsed">ID di dispositivo giĆ  in uso</string>
- <string name="gpodnetauth_device_butChoose">Scegli</string>
- <string name="gpodnetauth_finish_title">Login effettuato!</string>
- <string name="gpodnetauth_finish_descr">Congraturazioni! Il tuo account gpodder.net ĆØ stato collegato con il tuo dispositivo. Da ora AntennaPod sincronizzerĆ  automaticamente le sottoscrizioni sul tuo dispositivo con il tuo account gpodder.net.</string>
- <string name="gpodnetauth_finish_butsyncnow">Avvia la sincronizzazione</string>
- <string name="gpodnetauth_finish_butgomainscreen">Vai alla schermata principale</string>
- <string name="gpodnetsync_auth_error_title">errore di autenticazione su gpodder.net</string>
- <string name="gpodnetsync_auth_error_descr">Nome utente o password errati</string>
- <string name="gpodnetsync_error_title">gpodder.net errore di sincronizzazione</string>
- <string name="gpodnetsync_error_descr">Rilevato un errore in fase di sincronizzazione:\u0020</string>
- <!--Directory chooser-->
- <string name="selected_folder_label">Seleziona la cartella:</string>
- <string name="create_folder_label">Crea una cartella</string>
- <string name="choose_data_directory">Scegli la directory per i dati</string>
- <string name="create_folder_msg">Crea una nuova directory con nome \"%1$s\"?</string>
- <string name="create_folder_success">Crea una nuova directory</string>
- <string name="create_folder_error_no_write_access">Impossibile scrivere in questa directory</string>
- <string name="create_folder_error_already_exists">La cartella esiste giĆ </string>
- <string name="create_folder_error">Non ĆØ stato possibile creare la cartella</string>
- <string name="folder_does_not_exist_error">\"%1$s\" non esiste</string>
- <string name="folder_not_readable_error">\"%1$s\" non ĆØ leggibile</string>
- <string name="folder_not_writable_error">\"%1$s\" non ĆØ scrivibile</string>
- <string name="folder_not_empty_dialog_title">La cartella non ĆØ vuota</string>
- <string name="folder_not_empty_dialog_msg">La cartella che hai selezionato non ĆØ vuota. I download dei media e altri file saranno creati in questa cartella. Continuare?</string>
- <string name="set_to_default_folder">Scegli la cartella predefinita</string>
- <string name="pref_pausePlaybackForFocusLoss_sum">Sospendi la riproduzione invece di abbassare il volume quando un\'altra app emette un suono</string>
- <string name="pref_pausePlaybackForFocusLoss_title">Pausa su interruzione</string>
- <string name="pref_resumeAfterCall_title">Riprendi dopo la chiamata</string>
- <!--Online feed view-->
- <string name="subscribe_label">Abbonati</string>
- <string name="subscribed_label">Abbonato</string>
- <string name="downloading_label">Download in corso...</string>
- <!--Content descriptions for image buttons-->
- <string name="rewind_label">Riavvolgi</string>
- <string name="fast_forward_label">Avanti veloce</string>
- <string name="media_type_audio_label">Audio</string>
- <string name="media_type_video_label">Video</string>
- <string name="navigate_upwards_label">Naviga verso l\'alto</string>
- <string name="status_downloading_label">L\'episodio sta venendo scaricato</string>
- <string name="in_queue_label">L\'episodio ĆØ in coda</string>
- <string name="drag_handle_content_description">Trascina per cambiare la posizione di questo oggetto</string>
- <string name="load_next_page_label">Carica la pagina successiva</string>
- <!--Feed information screen-->
- <string name="authentication_label">Autenticazione</string>
- <string name="authentication_descr">Cambia il tuo nome utente e la tua password per questo podcast e i suoi episodi.</string>
- <string name="episode_filters_include">Includi</string>
- <string name="episode_filters_exclude">Escludi</string>
- <string name="keep_updated">Mantieni Aggiornato</string>
- <!--Progress information-->
- <!--AntennaPodSP-->
- <string name="sp_apps_importing_feeds_msg">Importazione di sottoscrizioni da applicazioni monouso in corso...</string>
- <string name="search_itunes_label">Cerca su iTunes</string>
- <string name="filter">Filtro</string>
- <!--Episodes apply actions-->
- <string name="all_label">Tutto</string>
- <string name="selected_all_label">Seleziona tutti gli Episodi</string>
- <string name="none_label">Nulla</string>
- <string name="deselected_all_label">De-seleziona tutti gli episodi</string>
- <string name="played_label">Riprodotti</string>
- <string name="selected_played_label">Selezionati gli episodi riprodotti</string>
- <string name="unplayed_label">Non riprodotti</string>
- <string name="selected_unplayed_label">Selezionati gli episodi non riprodotti</string>
- <string name="downloaded_label">Scaricati</string>
- <string name="selected_downloaded_label">Seleziona gli episodi scaricati</string>
- <string name="not_downloaded_label">Non scaricati</string>
- <string name="selected_not_downloaded_label">Seleziona gli episodi non scaricati</string>
- <string name="queued_label">In coda</string>
- <string name="selected_queued_label">Seleziona gli episodi in coda</string>
- <string name="not_queued_label">Non in coda</string>
- <string name="selected_not_queued_label">Seleziona gli episodi non in coda</string>
- <string name="selected_has_media_label">Seleziona gli episodi con elementi multimediali</string>
- <!--Sort-->
- <string name="sort_title_a_z">Titolo (A \u2192 Z)</string>
- <string name="sort_title_z_a">Titolo (Z \u2192 A)</string>
- <string name="sort_date_new_old">Data (Nuovi \u2192 Vecchi)</string>
- <string name="sort_date_old_new">Data (Vecchi \u2192 Nuovi)</string>
- <string name="sort_duration_short_long">Durata (Corti \u2192 Lunghi)</string>
- <string name="sort_duration_long_short">Durata (Lunghi \u2192 Corti)</string>
- <!--Rating dialog-->
- <string name="rating_title">Ti piace AntennaPod?</string>
- <string name="rating_later_label">Ricordamelo piĆ¹ tardi</string>
- <!--Audio controls-->
- <string name="audio_controls">Controlli audio</string>
- <string name="playback_speed">VelocitĆ  di riproduzione</string>
- <string name="volume">Volume</string>
- <string name="left_short">Sx</string>
- <string name="right_short">Dx</string>
- <string name="audio_effects">Effetti Audio</string>
- <!--proxy settings-->
- <string name="proxy_type_label">Tipo</string>
- <string name="host_label">Host</string>
- <string name="port_label">Porta</string>
- <string name="optional_hint">(Opzionale)</string>
- <string name="proxy_test_label">Test</string>
- <string name="proxy_checking">Controllo in corso...</string>
- <string name="proxy_test_successful">Test avvenuto con successo</string>
- <string name="proxy_test_failed">Test fallito</string>
- <string name="proxy_port_invalid_error">Porta non valida</string>
- <!--Database import/export-->
- <!--Casting-->
- <string name="cast_media_route_menu_title">Riproduci su...</string>
- <!--<string name="cast_failed_to_connect">Could not connect to the device</string>-->
-</resources>
diff --git a/core/src/main/res/values-it/strings.xml b/core/src/main/res/values-it/strings.xml
index 45cd8d334..6084c3020 100644
--- a/core/src/main/res/values-it/strings.xml
+++ b/core/src/main/res/values-it/strings.xml
@@ -1,11 +1,13 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources xmlns:tools="http://schemas.android.com/tools">
<!--Activitiy and fragment titles-->
+ <string name="feed_update_receiver_name">Aggiorna sottoscrizioni</string>
<string name="feeds_label">Feed</string>
<string name="statistics_label">Statistiche</string>
<string name="add_feed_label">Aggiungi un podcast</string>
<string name="episodes_label">Episodi</string>
<string name="all_episodes_short_label">Tutti</string>
+ <string name="new_episodes_label">Nuovo</string>
<string name="favorite_episodes_label">Preferiti</string>
<string name="new_label">Nuovo</string>
<string name="settings_label">Impostazioni</string>
@@ -18,10 +20,12 @@
<string name="cancel_download_label">Annulla\nil download</string>
<string name="playback_history_label">Cronologia delle riproduzioni</string>
<string name="gpodnet_main_label">gpodder.net</string>
+ <string name="gpodnet_summary">Sincronizza con altri dispositivi</string>
<string name="gpodnet_auth_label">Accesso a gpodder.net</string>
<string name="free_space_label">%1$s liberi</string>
<string name="episode_cache_full_title">Cache degli episodi piena</string>
<string name="episode_cache_full_message">Lo spazio di memoria della cache dell\'episodio ĆØ esaurito. Puoi aumentarlo nelle Impostazioni</string>
+ <string name="synchronizing">Sincronizzazione...</string>
<!--Statistics fragment-->
<string name="total_time_listened_to_podcasts">Tempo totale di riproduzione:</string>
<string name="statistics_details_dialog">%1$d di %2$d episodi iniziati.\n\nRiprodotti %3$s di %4$s.</string>
@@ -56,13 +60,14 @@
<string name="yes">SƬ</string>
<string name="no">No</string>
<string name="reset">Reimposta</string>
- <string name="author_label">Autore</string>
+ <string name="author_label">Autore(i)</string>
<string name="language_label">Lingua</string>
<string name="url_label">URL</string>
<string name="podcast_settings_label">Impostazioni</string>
<string name="cover_label">Immagine</string>
<string name="error_label">Errore</string>
<string name="error_msg_prefix">ƈ avvenuto un errore:</string>
+ <string name="needs_storage_permission">Permessi di archiviazione obbligatori per questa azione</string>
<string name="refresh_label">Ricarica</string>
<string name="external_storage_error_msg">Non ĆØ stata trovata nessuna memoria esterna. Controlla che la memoria esterna sia montata in modo che l\'app possa rilevarla</string>
<string name="chapters_label">Capitoli</string>
@@ -105,24 +110,27 @@
<string name="mark_all_read_label">Segna tutti come riprodotti</string>
<string name="mark_all_read_msg">Segnati tutti gli episodi come riprodotti</string>
<string name="mark_all_read_confirmation_msg">Conferma che desideri segnare tutti gli episodi come riprodotti.</string>
- <string name="mark_all_read_feed_confirmation_msg">Conferma che desideri segnare tutti gli episodi in questo feed come riprodotti.</string>
+ <string name="mark_all_read_feed_confirmation_msg">Per favore conferma che vuoi segnare tutti gli episodi di questo podcast come riprodotti.</string>
<string name="mark_all_seen_label">Segna tutti come visti</string>
- <string name="mark_all_seen_msg">Segnati tutti gli episodi come visti</string>
+ <string name="mark_all_seen_msg">Segna tutti gli episodi come visti</string>
<string name="mark_all_seen_confirmation_msg">Conferma che desideri segnare tutti gli episodi come visti.</string>
<string name="show_info_label">Mostra delle informazioni</string>
- <string name="rename_feed_label">Rinomina Podcast</string>
- <string name="remove_feed_label">Rimuovi Podcast</string>
+ <string name="show_feed_settings_label">Mostra impostazioni podcast</string>
+ <string name="feed_info_label">Info podcast</string>
+ <string name="feed_settings_label">Impostazioni podcast</string>
+ <string name="rename_feed_label">Rinomina podcast</string>
+ <string name="remove_feed_label">Rimuovi podcast</string>
<string name="share_label">Condividi...</string>
- <string name="share_link_label">Condividi il link</string>
+ <string name="share_link_label">Condividi URL episodio</string>
+ <string name="share_link_with_position_label">Condividi URL episodio con posizione</string>
<string name="share_file_label">Condividi il file</string>
- <string name="share_link_with_position_label">Condividi il Link con la Posizione</string>
<string name="share_feed_url_label">Condividi URL del Feed</string>
- <string name="share_item_url_label">Condividi l\'URL dell\'episodio</string>
- <string name="share_item_url_with_position_label">Condividi l\'URL del File dell\'epsiodio con la Posizione</string>
- <string name="feed_delete_confirmation_msg">Conferma che desideri cancellare il feed \"%1$s\" e TUTTI i suoi episodi scaricati.</string>
- <string name="feed_remover_msg">Rimozione del Feed in corso</string>
+ <string name="share_item_url_label">Condividi URL Media File</string>
+ <string name="share_item_url_with_position_label">Condividi URL Media File con posizione</string>
+ <string name="feed_delete_confirmation_msg">Conferma che vuoi eliminare il podcast \"%1$s\" e TUTTI i suoi episodi (compresi quelli scaricati).</string>
+ <string name="feed_remover_msg">Rimozione podcast</string>
+ <string name="load_complete_feed">Aggiorna l\'intero podcast</string>
<string name="hide_episodes_title">Nascondi gli episodi</string>
- <string name="episode_actions">Applica le azioni</string>
<string name="hide_unplayed_episodes_label">Non riprodotti</string>
<string name="hide_paused_episodes_label">In pausa</string>
<string name="hide_played_episodes_label">Riprodotti</string>
@@ -130,6 +138,7 @@
<string name="hide_not_queued_episodes_label">Non in coda</string>
<string name="hide_downloaded_episodes_label">Scaricati</string>
<string name="hide_not_downloaded_episodes_label">Non scaricati</string>
+ <string name="hide_is_favorite_label">Preferito</string>
<string name="filtered_label">Filtrati</string>
<string name="refresh_failed_msg">{fa-exclamation-circle} Ultimo aggiornamento fallito</string>
<string name="open_podcast">Apri il Podcast</string>
@@ -141,7 +150,9 @@
<string name="stream_label">Stream</string>
<string name="remove_label">Rimuovi</string>
<string name="delete_label">Elimina</string>
+ <string name="delete_failed">Impossibile eliminare il file. Il riavvio del dispositivo potrebbe aiutare.</string>
<string name="remove_episode_lable">Rimuovi l\'episodio</string>
+ <string name="mark_as_seen_label">Segna come visto</string>
<string name="marked_as_seen_label">Segna come visto</string>
<string name="mark_read_label">Segna come riprodotto</string>
<string name="marked_as_read_label">Segnato come riprodotto</string>
@@ -165,6 +176,8 @@
<string name="download_failed">fallito</string>
<string name="download_pending">Download in attesa</string>
<string name="download_running">Download in corso</string>
+ <string name="download_error_details">Dettagli</string>
+ <string name="download_error_details_message">%1$s \n\nFile URL:\n%2$s</string>
<string name="download_error_device_not_found">Spazio di archiviazione non trovato</string>
<string name="download_error_insufficient_space">Spazio Insufficiente</string>
<string name="download_error_file_error">Errore del file</string>
@@ -229,7 +242,6 @@
<string name="date">Per data</string>
<string name="duration">Per durata</string>
<string name="episode_title">Titolo dell\'episodio</string>
- <string name="feed_title">Titolo del feed</string>
<string name="ascending">Crescente</string>
<string name="descending">Decrescente</string>
<string name="clear_queue_confirmation_msg">Per favore conferma che vuoi rimuovere dalla coda TUTTI gli episodi in essa presenti.</string>
@@ -266,7 +278,6 @@
<string name="enable_sonic">Abilita Sonic</string>
<!--Empty list labels-->
<string name="no_items_label">Non ci sono oggetti in questo elenco.</string>
- <string name="no_feeds_label">Non sei ancora abbonato a nessun feed.</string>
<string name="no_chapters_label">Questo episodio non ha capitoli.</string>
<string name="no_shownotes_label">Questo episodio non ha note.</string>
<!--Preferences-->
@@ -275,12 +286,16 @@
<string name="other_pref">Altro</string>
<string name="about_pref">Riguardo a</string>
<string name="queue_label">Coda</string>
- <string name="services_label">Servizi</string>
<string name="flattr_label">Flattr</string>
+ <string name="pref_episode_cleanup_title">Pulizia dell\'episodio</string>
+ <string name="pref_episode_cleanup_summary">Gli episodi che non sono in coda e non sono preferiti dovrebbero essere idonei alla rimozione se Auto Download richiede spazio per nuovi episodi</string>
+ <string name="pref_pauseOnDisconnect_sum">Sospendi la riproduzione quando le cuffie o il bluetooth sono disconnessi</string>
<string name="pref_unpauseOnHeadsetReconnect_sum">Riprendi la riproduzione quando le cuffie vengono ricollegate</string>
+ <string name="pref_unpauseOnBluetoothReconnect_sum">Reprendi la riproduzione quando le cuffie o il bluetooth sono disconnessi</string>
<string name="pref_followQueue_sum">Passa al prossimo episodio in coda al termine della riproduzione</string>
<string name="pref_auto_delete_sum">Elimina l\'episodio al termine della riproduzione</string>
<string name="pref_auto_delete_title">Elimina Automaticamente</string>
+ <string name="pref_smart_mark_as_played_sum">Contrassegna gli episodi come riprodotti anche se rimane meno di un certo numero di secondi di tempo di riproduzione</string>
<string name="pref_skip_keeps_episodes_title">Manteni gli Episodi Saltati</string>
<string name="playback_pref">Riproduzione</string>
<string name="network_pref">Rete</string>
@@ -336,8 +351,6 @@
<string name="pref_playback_speed_sum">Personalizza le velocitĆ  disponibili per la riproduzione audio a velocitĆ  variabile</string>
<string name="pref_gpodnet_sethostname_title">Imposta il nome dell\'host</string>
<string name="pref_gpodnet_sethostname_use_default_host">Utilizza l\'host predefinito</string>
- <string name="pref_expandNotify_title">Espandi le notifiche</string>
- <string name="pref_expandNotify_sum">Espandi sempre le notifiche per mostrare i pulsanti di riproduzione.</string>
<string name="pref_persistNotify_title">Controlli di riproduzione persistenti</string>
<string name="pref_persistNotify_sum">Mantieni le notifiche e i controlli del blocco dello schermo quando la riproduzione ĆØ in pausa.</string>
<string name="pref_showDownloadReport_title">Mostra il Rapporto del Download</string>
@@ -376,8 +389,6 @@
<string name="choose_file_from_external_application">Usa un\'applicazione esterna</string>
<string name="opml_export_label">Esportazione OPML</string>
<string name="export_error_label">Errore di esportazione</string>
- <string name="opml_export_success_title">Esportazione OPML avvenuta con successo.</string>
- <string name="opml_export_success_sum">Il file .opml ĆØ stato scritto su:\u0020</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">Imposta timer di spegnimento</string>
<string name="disable_sleeptimer_label">Disabilita il timer di spegnimento</string>
@@ -499,7 +510,9 @@
<string name="sort_duration_long_short">Durata (Lunghi \u2192 Corti)</string>
<!--Rating dialog-->
<string name="rating_title">Ti piace AntennaPod?</string>
+ <string name="rating_never_label">Lasciami solo</string>
<string name="rating_later_label">Ricordamelo piĆ¹ tardi</string>
+ <string name="rating_now_label">Certo, facciamolo!</string>
<!--Audio controls-->
<string name="audio_controls">Controlli audio</string>
<string name="playback_speed">VelocitĆ  di riproduzione</string>
@@ -516,9 +529,13 @@
<string name="proxy_checking">Controllo in corso...</string>
<string name="proxy_test_successful">Test avvenuto con successo</string>
<string name="proxy_test_failed">Test fallito</string>
+ <string name="proxy_host_empty_error">Host non puĆ² essere vuoto</string>
<string name="proxy_port_invalid_error">Porta non valida</string>
<!--Database import/export-->
+ <string name="import_select_file">Seleziona il file da importare</string>
+ <string name="export_ok">Esportato con successo.</string>
<!--Casting-->
<string name="cast_media_route_menu_title">Riproduci su...</string>
<!--<string name="cast_failed_to_connect">Could not connect to the device</string>-->
+ <!--Notification channels-->
</resources>
diff --git a/core/src/main/res/values-iw-rIL/strings.xml b/core/src/main/res/values-iw-rIL/strings.xml
index 96475b40e..8699c3eee 100644
--- a/core/src/main/res/values-iw-rIL/strings.xml
+++ b/core/src/main/res/values-iw-rIL/strings.xml
@@ -2,58 +2,70 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<!--Activitiy and fragment titles-->
<string name="feeds_label">הזנו×Ŗ</string>
- <string name="statistics_label">הטטיהטיקו×Ŗ</string>
- <string name="add_feed_label">הוהף פודקאהט</string>
+ <string name="statistics_label">הטטיהטיקה</string>
+ <string name="add_feed_label">הוהפ×Ŗ פודקאהט</string>
<string name="episodes_label">פ×Øקים</string>
- <string name="all_episodes_short_label">הכל</string>
+ <string name="all_episodes_short_label">הכול</string>
<string name="favorite_episodes_label">מועדפים</string>
<string name="new_label">חדש</string>
<string name="settings_label">הגד×Øו×Ŗ</string>
<string name="downloads_label">הו×Øדו×Ŗ</string>
- <string name="downloads_running_label">פועל</string>
- <string name="downloads_completed_label">היים</string>
+ <string name="downloads_running_label">פעיל</string>
+ <string name="downloads_completed_label">הושלם</string>
<string name="downloads_log_label">יומן</string>
<string name="subscriptions_label">פודקאהטים</string>
<string name="subscriptions_list_label">×Øשימ×Ŗ פודקאהטים</string>
- <string name="cancel_download_label">בטל הו×Øדה</string>
+ <string name="cancel_download_label">ביטול\nהו×Øדה</string>
<string name="playback_history_label">היהטו×Øיי×Ŗ ניגון</string>
<string name="gpodnet_main_label">gpodder.net</string>
- <string name="gpodnet_auth_label">ה×Ŗחב×Øו×Ŗ אל gpodder.net</string>
- <string name="free_space_label">%1$s חינם</string>
- <string name="episode_cache_full_title">זכ×Øון -המטמון של פ×Øקים מלא</string>
- <string name="episode_cache_full_message">זכ×Øון-המטמון של פ×Øקים הגיע לגבול שלו. אפש×Ø ×œ×”×’×“×™×œ א×Ŗ גודל המטמון בהגד×Øו×Ŗ.</string>
+ <string name="gpodnet_auth_label">×›× ×™×”×” אל gpodder.net</string>
+ <string name="free_space_label">%1$s פנויים</string>
+ <string name="episode_cache_full_title">מטמון הפ×Øקים מלא</string>
+ <string name="episode_cache_full_message">מטמון הפ×Øקים ה×Ŗמלא. ני×Ŗן להגדיל א×Ŗ גודל המטמון בהגד×Øו×Ŗ.</string>
<!--Statistics fragment-->
- <string name="total_time_listened_to_podcasts">×”×”\"כ זמן ניגון של פודקאהטים:</string>
- <string name="statistics_mode_normal">חשב זמן שנוגן בפועל. פ×Øק שנוגן פעמיים נהפ×Ø ×¤×¢×ž×™×™×, לעומ×Ŗ פ×Øק ש×Øק הומן כנוגן - שלא נהפ×Ø.</string>
+ <string name="total_time_listened_to_podcasts">זמן ניגון הפודקאהטים הכולל:</string>
+ <string name="statistics_details_dialog">%1$d מ×Ŗוך %2$d פ×Øקים החלו.\n\nנוגנו %3$s מ×Ŗוך %4$s.</string>
+ <string name="statistics_mode">מצב הטטיהטיקה</string>
+ <string name="statistics_mode_normal">חישוב זמן שנוגן בפועל. נגינה כפולה נהפ×Ø×Ŗ פעמיים, בעוד שהימון כנוגן לא נחשב.</string>
+ <string name="statistics_mode_count_all">היכום כל הפודקאהטים שהומנו כנוגנו</string>
+ <string name="statistics_speed_not_counted">ל×Ŗשומ×Ŗ לבך: אין ה×Ŗייחהו×Ŗ למהי×Øו×Ŗ הנגינה.</string>
<!--Main activity-->
- <string name="drawer_open">פ×Ŗח ×Ŗפ×Øיט</string>
- <string name="drawer_close">הגו×Ø ×Ŗפ×Øיט</string>
- <string name="drawer_feed_order_alphabetical">מיין בהד×Ø ××œ×¤×‘×™×Ŗי</string>
- <string name="drawer_feed_order_last_update">מיין לפי ×Ŗא×Øיך פ×Øהום</string>
- <string name="drawer_feed_order_most_played">מיין לפי מהפ×Ø ×¤×Øקים שהושמעו </string>
+ <string name="drawer_open">פ×Ŗיח×Ŗ ×Ŗפ×Øיט</string>
+ <string name="drawer_close">×”×’×™×Ø×Ŗ ×Ŗפ×Øיט</string>
+ <string name="drawer_preferences">העדפו×Ŗ מגי×Øה</string>
+ <string name="drawer_feed_order_unplayed_episodes">מיון לפי מונה</string>
+ <string name="drawer_feed_order_alphabetical">מיון בהד×Ø ××œ×¤×‘×™×Ŗי</string>
+ <string name="drawer_feed_order_last_update">מיון לפי ×Ŗא×Øיך פ×Øהום</string>
+ <string name="drawer_feed_order_most_played">מיון לפי מהפ×Ø ×¤×Øקים שהושמעו </string>
+ <string name="drawer_feed_counter_new_unplayed">מהפ×Ø ×¤×Øקים חדשים וכאלו שעדיין לא ה×Ŗנגנו</string>
+ <string name="drawer_feed_counter_new">מהפ×Ø ×¤×Øקים חדשים</string>
+ <string name="drawer_feed_counter_unplayed">מהפ×Ø ×¤×Øקים שעוד לא ה×Ŗנגנו</string>
+ <string name="drawer_feed_counter_downloaded">מהפ×Ø ×¤×Øקים שה×Ŗקבלו</string>
+ <string name="drawer_feed_counter_none">ללא</string>
<!--Webview actions-->
- <string name="open_in_browser_label">פ×Ŗח בדפדפן</string>
- <string name="copy_url_label">הע×Ŗק כ×Ŗוב×Ŗ א×Ŗ×Ø</string>
- <string name="share_url_label">ש×Ŗ×£ כ×Ŗוב×Ŗ א×Ŗ×Ø</string>
- <string name="copied_url_msg">כ×Ŗוב×Ŗ א×Ŗ×Øהוע×Ŗקה ללוח.</string>
- <string name="go_to_position_label">עבו×Ø ×œ×ž×™×§×•× זה</string>
+ <string name="open_in_browser_label">פ×Ŗיחה בדפדפן</string>
+ <string name="copy_url_label">הע×Ŗק×Ŗ כ×Ŗוב×Ŗ</string>
+ <string name="share_url_label">שי×Ŗוף כ×Ŗוב×Ŗ</string>
+ <string name="copied_url_msg">הכ×Ŗוב×Ŗ הוע×Ŗקה ללוח הגזי×Øים</string>
+ <string name="go_to_position_label">מעב×Ø ×œ×ž×™×§×•× זה</string>
<!--Playback history-->
- <string name="clear_history_label">נקה היהטו×Øיה</string>
+ <string name="clear_history_label">ניקוי היהטו×Øיה</string>
<!--Other-->
<string name="confirm_label">אישו×Ø</string>
- <string name="cancel_label">בטל</string>
+ <string name="cancel_label">ביטול</string>
<string name="yes">כן</string>
<string name="no">לא</string>
- <string name="author_label">מחב×Ø</string>
+ <string name="reset">איפוה</string>
<string name="language_label">שפה</string>
<string name="url_label">כ×Ŗוב×Ŗ</string>
<string name="podcast_settings_label">הגד×Øו×Ŗ</string>
<string name="cover_label">×Ŗמונה</string>
<string name="error_label">שגיאה</string>
<string name="error_msg_prefix">אי×Øעה שגיאה:</string>
- <string name="refresh_label">×Øענן</string>
- <string name="external_storage_error_msg">אין אחהון חיצוני זמין. אנא ודא כי אחהון חיצוני הוא מו×Ŗקן כך שהאפליקציה ×Ŗוכל לעבוד כמו שצ×Øיך.</string>
+ <string name="refresh_label">×Øענון</string>
+ <string name="external_storage_error_msg">אין אחהון חיצוני זמין. נא לוודא שיש אחהון חיצוני מעוגן כדי שהיישומון יוכל לפעול כ×Øאוי.</string>
<string name="chapters_label">פ×Øקים</string>
+ <string name="chapter_duration">משך: %1$s</string>
<string name="shownotes_label">הע×Øו×Ŗ פ×Øק</string>
<string name="description_label">×Ŗיאו×Ø</string>
<string name="most_recent_prefix">הפ×Øק האח×Øון:\u0020</string>
@@ -62,187 +74,268 @@
<string name="size_prefix">גודל:\u0020</string>
<string name="processing_label">מעבד</string>
<string name="loading_label">טוען...</string>
- <string name="save_username_password_label">שמו×Ø ×©× מש×Ŗמש וההמה</string>
- <string name="close_label">הגו×Ø</string>
- <string name="retry_label">× ×”×” שוב</string>
- <string name="auto_download_label">כלול בהו×Øדו×Ŗ אוטומטיו×Ŗ</string>
+ <string name="save_username_password_label">שמי×Ø×Ŗ שם מש×Ŗמש וההמה</string>
+ <string name="close_label">×”×’×™×Øה</string>
+ <string name="retry_label">לנהו×Ŗ שוב</string>
+ <string name="auto_download_label">לכלול בהו×Øדו×Ŗ אוטומטיו×Ŗ</string>
+ <string name="auto_download_apply_to_items_title">החלה על פ×Øקים קודמים</string>
+ <string name="auto_download_apply_to_items_message">הגד×Øו×Ŗ ה<i>הו×Øדה האוטומטי×Ŗ</i> החדשו×Ŗ יחולו אוטומטי×Ŗ על פ×Øקים חדשים.\nלהחיל או×Ŗן גם על פ×Øקים שפו×Øהמו בעב×Ø?</string>
+ <string name="auto_delete_label">מחיק×Ŗ פ×Øק באופן אוטומטי</string>
<string name="parallel_downloads_suffix">\u0020הו×Øדו×Ŗ במקביל</string>
+ <string name="feed_auto_download_global">ב×Ø×Ø×Ŗ מחדל גלובלי</string>
<string name="feed_auto_download_always">×Ŗמיד</string>
<string name="feed_auto_download_never">אף פעם</string>
- <string name="send_label">שלח...</string>
+ <string name="send_label">שליחהā€¦</string>
<string name="episode_cleanup_never">אף פעם</string>
+ <string name="episode_cleanup_queue_removal">כאש×Ø ×œ× ב×Ŗו×Ø</string>
<string name="episode_cleanup_after_listening">אח×Øי היום</string>
<plurals name="episode_cleanup_days_after_listening">
<item quantity="one">יום אח×Øי היום</item>
+ <item quantity="two">%d ימים לאח×Ø ×”×™×•× </item>
+ <item quantity="many">%d ימים לאח×Ø ×”×™×•× </item>
<item quantity="other">%d ימים לאח×Ø ×”×™×•× </item>
</plurals>
<!--'Add Feed' Activity labels-->
<string name="feedurl_label">כ×Ŗוב×Ŗ הזנה</string>
- <string name="etxtFeedurlHint">כ×Ŗוב×Ŗ של הזנה או א×Ŗ×Ø ××™× ×˜×Øנט</string>
- <string name="txtvfeedurl_label">הוהף פודקאהט לפי כ×Ŗוב×Ŗ א×Ŗ×Ø</string>
+ <string name="etxtFeedurlHint">www.example.com/feed</string>
+ <string name="txtvfeedurl_label">הוהפ×Ŗ פודקאהט לפי כ×Ŗוב×Ŗ</string>
<string name="podcastdirectories_label">חפש פודקאהט בהפ×Øיה</string>
- <string name="browse_gpoddernet_label">עיין בgpodder.net</string>
+ <string name="podcastdirectories_descr">לאי×Ŗו×Ø ×¤×•×“×§××”×˜×™× חדשים, ני×Ŗן לחפש ב־iTunes או ב־fyyd או לעיין ב־gpodder.net לפי שם, קטגו×Øיה או פופול×Øיו×Ŗ.</string>
+ <string name="browse_gpoddernet_label">עיון ב־gpodder.net</string>
<!--Actions on feeds-->
- <string name="mark_all_read_label">המן הכל כנק×Øא</string>
- <string name="mark_all_read_msg">המן א×Ŗ כל הפ×Øקים כנק×Øא</string>
- <string name="mark_all_read_confirmation_msg">אנא אש×Ø ×©××Ŗה ×Øוצה להמן א×Ŗ כל פ×Øקים כנק×Øאים.</string>
- <string name="mark_all_read_feed_confirmation_msg">אנא אש×Ø ×©××Ŗה ×Øוצה להמן א×Ŗ כל פ×Øקים בהזנה זו כנק×Øאים.</string>
- <string name="mark_all_seen_label">המן א×Ŗ כולם כנ×Øאו</string>
- <string name="mark_all_seen_msg">המן א×Ŗ כל הפ×Øקים כנ×Øאו</string>
- <string name="mark_all_seen_confirmation_msg">אנא אש×Ø ×©××Ŗה ×Øוצה להמן א×Ŗ כל פ×Øקים כנ×Øאו.</string>
- <string name="show_info_label">הצג מידע</string>
- <string name="rename_feed_label">שנה שם פודקאהט</string>
- <string name="remove_feed_label">×”×”×Ø ×¤×•×“×§××”×˜</string>
- <string name="share_label">ש×Ŗ×£...</string>
- <string name="share_link_label">ש×Ŗ×£ קישו×Ø ××Ŗ×Ø</string>
- <string name="feed_remover_msg">×”×”×Ø ×”×–× ×”</string>
- <string name="load_complete_feed">×Øענן א×Ŗ כל ההזנה</string>
- <string name="hide_episodes_title">×”×”×Ŗ×Ø ×¤×Øקים</string>
+ <string name="mark_all_read_label">הימון הכול כנוגנו</string>
+ <string name="mark_all_read_msg">הימון א×Ŗ כל הפ×Øקים כנוגנו</string>
+ <string name="mark_all_read_confirmation_msg">נא לאש×Ø ×©×‘×Øצונך להמן א×Ŗ כל הפ×Øקים כנוגנו.</string>
+ <string name="mark_all_seen_label">הימון כולם כנצפו</string>
+ <string name="mark_all_seen_confirmation_msg">נא לאש×Ø ×©×‘×Øצונך להמן א×Ŗ כל הפ×Øקים כנצפו.</string>
+ <string name="show_info_label">הצג×Ŗ מידע</string>
+ <string name="share_label">שי×Ŗוףā€¦</string>
+ <string name="share_file_label">שי×Ŗוף כ×Ŗוב×Ŗ</string>
+ <string name="share_feed_url_label">שי×Ŗוף כ×Ŗוב×Ŗ הזנה</string>
+ <string name="hide_episodes_title">×”×”×Ŗ×Ø×Ŗ פ×Øקים</string>
+ <string name="hide_unplayed_episodes_label">לא נוגן</string>
+ <string name="hide_paused_episodes_label">מושהה</string>
+ <string name="hide_played_episodes_label">נוגן</string>
+ <string name="hide_queued_episodes_label">ב×Ŗו×Ø</string>
+ <string name="hide_not_queued_episodes_label">לא ב×Ŗו×Ø</string>
+ <string name="hide_downloaded_episodes_label">הו×Øד</string>
+ <string name="hide_not_downloaded_episodes_label">לא הו×Øד</string>
+ <string name="hide_has_media_label">יש מדיה</string>
+ <string name="filtered_label">מהונן</string>
+ <string name="refresh_failed_msg">{fa-exclamation-circle} ה×Øענון האח×Øון נכשל</string>
+ <string name="open_podcast">פ×Ŗיח×Ŗ פודקאהט</string>
<!--actions on feeditems-->
- <string name="download_label">הו×Øד</string>
- <string name="play_label">נגן</string>
- <string name="pause_label">השהה</string>
- <string name="stop_label">עצו×Ø</string>
- <string name="stream_label">הז×Øם</string>
- <string name="remove_label">×”×”×Ø</string>
- <string name="remove_episode_lable">×”×”×Ø ×¤×Øק</string>
- <string name="mark_read_label">המן כנק×Øא</string>
- <string name="marked_as_read_label">הומן כנק×Øא</string>
- <string name="mark_unread_label">המן כלא נק×Øא</string>
- <string name="add_to_queue_label">הוהף ל×Ŗו×Ø</string>
+ <string name="download_label">הו×Øדה</string>
+ <string name="play_label">ניגון</string>
+ <string name="pause_label">השהיה</string>
+ <string name="stop_label">עצי×Øה</string>
+ <string name="stream_label">הז×Øמה</string>
+ <string name="remove_label">×”×”×Øה</string>
+ <string name="delete_label">מחיקה</string>
+ <string name="delete_failed">לא ני×Ŗן למחוק קובׄ. הפעל×Ŗ המכשי×Ø ×ž×—×“×© עשויה להייע.</string>
+ <string name="remove_episode_lable">×”×”×Ø×Ŗ פ×Øק</string>
+ <string name="marked_as_seen_label">הימון כנצפה</string>
+ <string name="mark_read_label">הימון כנצפה</string>
+ <string name="marked_as_read_label">הימון כנוגן</string>
+ <string name="mark_unread_label">הימון כלא נוגן</string>
+ <string name="add_to_queue_label">הוהפה ל×Ŗו×Ø</string>
<string name="added_to_queue_label">ה×Ŗווהף ל×Ŗו×Ø</string>
- <string name="remove_from_queue_label">×”×”×Ø ×ž×”×Ŗו×Ø</string>
+ <string name="remove_from_queue_label">×”×”×Øה מה×Ŗו×Ø</string>
<string name="add_to_favorite_label">ה×Ŗווהף למועדפים</string>
- <string name="visit_website_label">בק×Ø ×‘××Ŗ×Ø</string>
- <string name="support_label">×Ŗ×Øום באמצעו×Ŗ Flattr</string>
- <string name="skip_episode_label">דלג על הפ×Øק</string>
+ <string name="added_to_favorites">ה×Ŗווהף למועדפים</string>
+ <string name="remove_from_favorite_label">×”×”×Øה מהמועדפים</string>
+ <string name="removed_from_favorites">הוה×Ø ×ž×”×ž×•×¢×“×¤×™×</string>
+ <string name="visit_website_label">ביקו×Ø ×‘××Ŗ×Ø</string>
+ <string name="support_label">×Ŗ×Øומה עם Flattr</string>
+ <string name="skip_episode_label">דילוג על פ×Øק</string>
+ <string name="activate_auto_download">הפעל×Ŗ הו×Øדה אוטומטי×Ŗ</string>
+ <string name="deactivate_auto_download">השב×Ŗ×Ŗ הו×Øדה אוטומטי×Ŗ</string>
+ <string name="reset_position">איפוה מיקום הנגינה</string>
+ <string name="removed_item">פ×Øיט הוה×Ø</string>
<!--Download messages and labels-->
<string name="download_successful">הצלחה</string>
- <string name="download_failed">כישלון</string>
- <string name="download_pending">הו×Øדה ×¢×Ŗידי×Ŗ</string>
+ <string name="download_failed">כשל</string>
+ <string name="download_pending">הו×Øדה ממ×Ŗינה</string>
<string name="download_running">הו×Øדה מ×Ŗבצע×Ŗ</string>
- <string name="download_error_device_not_found">ה×Ŗקן איחהון לא נמצא</string>
- <string name="download_error_insufficient_space">אין די שטח איחהון</string>
+ <string name="download_error_details">פ×Øטים</string>
+ <string name="download_error_details_message">%1$s \n\nכ×Ŗוב×Ŗ הקובׄ:\n%2$s</string>
+ <string name="download_error_device_not_found">ה×Ŗקן האחהון לא נמצא</string>
+ <string name="download_error_insufficient_space">אין די שטח אחהון</string>
<string name="download_error_file_error">שגיא×Ŗ קובׄ</string>
- <string name="download_error_http_data_error">שגיא×Ŗ מידע HTTP</string>
+ <string name="download_error_http_data_error">שגיא×Ŗ × ×Ŗוני HTTP</string>
<string name="download_error_error_unknown">שגיאה לא ידועה</string>
- <string name="download_error_parser_exception">שגיא×Ŗ ×Ŗוכני×Ŗ ני×Ŗוח</string>
+ <string name="download_error_parser_exception">שגיא×Ŗ מפענח</string>
<string name="download_error_unsupported_type">הוג ההזנה אינו × ×Ŗמך</string>
<string name="download_error_connection_error">שגיא×Ŗ חיבו×Ø</string>
<string name="download_error_unknown_host">ש×Ø×Ŗ לא ידוע</string>
<string name="download_error_unauthorized">שגיא×Ŗ אימו×Ŗ</string>
- <string name="cancel_all_downloads_label">בטל א×Ŗ כל ההו×Øדו×Ŗ</string>
+ <string name="download_error_file_type_type">שגיא×Ŗ הוג קובׄ</string>
+ <string name="download_error_forbidden">אהו×Ø</string>
+ <string name="cancel_all_downloads_label">ביטול כל ההו×Øדו×Ŗ</string>
<string name="download_canceled_msg">הו×Øדה בוטלה</string>
- <string name="download_report_title">הו×Øדו×Ŗ הושלמו</string>
- <string name="download_error_malformed_url">כ×Ŗוב×Ŗ א×Ŗ×Ø ×©×’×•×™×”</string>
+ <string name="download_canceled_autodownload_enabled_msg">ההו×Øדה בוטלה\nה<i>הו×Øדה האוטומטי×Ŗ</i> הושב×Ŗה עבו×Ø ×¤×Øיט זה</string>
+ <string name="download_report_title">הו×Øדו×Ŗ הושלמו עם שגיאה אח×Ŗ או יו×Ŗ×Ø</string>
+ <string name="download_report_content_title">דוח הו×Øדה</string>
+ <string name="download_error_malformed_url">כ×Ŗוב×Ŗ שגויה</string>
<string name="download_error_io_error">שגיא×Ŗ קלט פלט</string>
<string name="download_error_request_error">שגיא×Ŗ בקשה</string>
<string name="download_error_db_access">שגיא×Ŗ גישה למהד הנ×Ŗונים</string>
- <string name="downloads_processing">מעבד הו×Øדו×Ŗ</string>
- <string name="download_notification_title">מו×Øיד פודקאהט</string>
- <string name="download_report_content">%1$d הו×Øדו×Ŗ הצליחו, %2$d ניכשלו</string>
+ <plurals name="downloads_left">
+ <item quantity="one">נו×Ŗ×Øה הו×Øדה %d</item>
+ <item quantity="two">נו×Ŗ×Øו %d הו×Øדו×Ŗ</item>
+ <item quantity="many">נו×Ŗ×Øו %d הו×Øדו×Ŗ</item>
+ <item quantity="other">נו×Ŗ×Øו %d הו×Øדו×Ŗ</item>
+ </plurals>
+ <string name="downloads_processing">ההו×Øדו×Ŗ בהליכי עיבוד</string>
+ <string name="download_notification_title">× ×Ŗוני הפודקאהט מ×Ŗקבלים</string>
+ <string name="download_report_content">%1$d הו×Øדו×Ŗ הצליחו, %2$d נכשלו</string>
<string name="download_log_title_unknown">כו×Ŗ×Ø×Ŗ לא ידועה</string>
<string name="download_type_feed">הזנה</string>
<string name="download_type_media">קובׄ מדיה</string>
<string name="download_type_image">×Ŗמונה</string>
- <string name="download_request_error_dialog_message_prefix">שגיאה אי×Øעה בע×Ŗ הניהיון הו×Øד×Ŗ הקובׄ:\u0020</string>
- <string name="authentication_notification_title">ניד×Øש אימו×Ŗ</string>
- <string name="authentication_notification_msg">המשאב או×Ŗה ביקש×Ŗ דו×Øש שם מש×Ŗמש וההמה</string>
+ <string name="download_request_error_dialog_message_prefix">אי×Øעה שגיאה בע×Ŗ הניהיון הו×Øד×Ŗ הקובׄ:\u0020</string>
+ <string name="authentication_notification_title">נד×Øש אימו×Ŗ</string>
+ <string name="authentication_notification_msg">המשאב שביקש×Ŗ דו×Øש שם מש×Ŗמש וההמה</string>
+ <string name="confirm_mobile_download_dialog_title">אישו×Ø ×”×•×Øדה ד×Øך ×Øש×Ŗ הלול×Øי×Ŗ</string>
+ <string name="confirm_mobile_download_dialog_message_not_in_queue">הו×Øדה ד×Øך חיבו×Ø × ×Ŗונים של ×Øש×Ŗ הלול×Øי×Ŗ מושב×Ŗ ד×Øך ההגד×Øו×Ŗ.\n\nני×Ŗן לבחו×Ø ×‘×™×Ÿ הוהפ×Ŗ הפ×Øק ל×Ŗו×Ø ××• לאפש×Ø ×œ×”×•×Øיד או×Ŗו באופן זמני.\n\n<small>הבחי×Øה שלך ×Ŗישמ×Ø ×œ×ž×©×š 10 דקו×Ŗ.</small></string>
+ <string name="confirm_mobile_download_dialog_message">הו×Øדה ד×Øך חיבו×Ø × ×Ŗונים של ×Øש×Ŗ הלול×Øי×Ŗ מושב×Ŗ ד×Øך ההגד×Øו×Ŗ.\n\nלאפש×Ø ××Ŗ ההו×Øדה באופן זמני?\n\n<small>הבחי×Øה שלך ×Ŗישמ×Ø ×œ×ž×©×š 10 דקו×Ŗ.</small></string>
+ <string name="confirm_mobile_download_dialog_only_add_to_queue">הוהפה ל×Ŗו×Ø</string>
+ <string name="confirm_mobile_download_dialog_enable_temporarily">לאפש×Ø ×œ×‘×™× ×Ŗיים</string>
<!--Mediaplayer messages-->
<string name="player_error_msg">שגיאה!</string>
- <string name="player_stopped_msg">מדיה לא מ×Ŗנגנ×Ŗ</string>
- <string name="player_preparing_msg">מ×Ŗכונן</string>
- <string name="player_ready_msg">מוכן</string>
- <string name="player_seeking_msg">מחפש</string>
- <string name="playback_error_server_died">ש×Ø×Ŗ מ×Ŗ</string>
+ <string name="player_stopped_msg">אין מדיה מ×Ŗנגנ×Ŗ</string>
+ <string name="player_preparing_msg">בהכנה</string>
+ <string name="player_ready_msg">בהמ×Ŗנה</string>
+ <string name="player_seeking_msg">מ×Ŗבצע אי×Ŗו×Ø</string>
+ <string name="playback_error_server_died">הש×Ø×Ŗ לא מגיב</string>
<string name="playback_error_unknown">שגיאה לא ידועה</string>
- <string name="no_media_playing_label">מדיה לא מ×Ŗנגנ×Ŗ</string>
- <string name="player_buffering_msg">ממלא חוצׄ</string>
- <string name="playbackservice_notification_title">מנגן פודקאהט</string>
- <string name="unknown_media_key">אנטנה-פוד - מפ×Ŗח מדיה לא ידוע: %1$d</string>
+ <string name="no_media_playing_label">אין מדיה מ×Ŗנגנ×Ŗ</string>
+ <string name="player_buffering_msg">החוצׄ מ×Ŗמלא</string>
+ <string name="playbackservice_notification_title">פודקאהט מ×Ŗנגן</string>
+ <string name="unknown_media_key">אנטנה־פּוֹד - מפ×Ŗח מדיה לא ידוע: %1$d</string>
<!--Queue operations-->
- <string name="clear_queue_label">נקה ×Ŗו×Ø</string>
- <string name="undo">בטל</string>
- <string name="removed_from_queue">×”×”×Ø ×¤×Øיט</string>
- <string name="move_to_top_label">העב×Ø ×œ×ž×¢×œ×”</string>
- <string name="move_to_bottom_label">העב×Ø ×œ×ž×˜×”</string>
- <string name="sort">מיין</string>
+ <string name="lock_queue">נעיל×Ŗ ×Ŗו×Ø</string>
+ <string name="unlock_queue">שח×Øו×Ø ×Ŗו×Ø</string>
+ <string name="queue_locked">ה×Ŗו×Ø × × ×¢×œ</string>
+ <string name="queue_unlocked">ה×Ŗו×Ø ×©×•×—×Ø×Ø ×ž× ×¢×™×œ×”</string>
+ <string name="clear_queue_label">ניקוי ×Ŗו×Ø</string>
+ <string name="undo">ביטול</string>
+ <string name="removed_from_queue">פ×Øיט הוה×Ø</string>
+ <string name="move_to_top_label">העב×Øה למעלה</string>
+ <string name="move_to_bottom_label">העב×Øה למטה</string>
+ <string name="sort">מיון</string>
<string name="date">×Ŗא×Øיך</string>
<string name="duration">משך</string>
+ <string name="episode_title">כו×Ŗ×Ø×Ŗ הפ×Øק</string>
<string name="ascending">בהד×Ø ×¢×•×œ×”</string>
<string name="descending">בהד×Ø ×™×•×Øד</string>
- <string name="clear_queue_confirmation_msg">אנא אש×Ø ×©××Ŗה ×Øוצה לנקו×Ŗ א×Ŗ ה×Ŗו×Ø ×ž×›×œ הפ×Øקים שבו</string>
+ <string name="clear_queue_confirmation_msg">נא לאש×Ø ××Ŗ פינוי ה×Ŗו×Ø ×ž×›×œ הפ×Øקים שבו</string>
<!--Flattr-->
- <string name="flattr_auth_label">×›× ×™×”×” ל-Fattr</string>
- <string name="flattr_auth_explanation">לחׄ על הכפ×Ŗו×Ø ×œ×ž×˜×” כדי לה×Ŗחיל א×Ŗ ×Ŗהליך האימו×Ŗ. א×Ŗה ×Ŗועב×Ø ×œ×ž×”×š ×›× ×™×”×Ŗ flattr בדפדפן שלך ו×Ŗ×Ŗבקש ל×Ŗ×Ŗ לאנטנה-פוד ×Øשו×Ŗ ל×Ŗ×Øום באמצעו×Ŗ flattr. לאח×Ø ×©×§×‘×œ×Ŗ אישו×Ø, ×Ŗוכל לחזו×Ø ×œ×ž×”×š זה באופן אוטומטי.</string>
+ <string name="flattr_auth_label">×›× ×™×”×” ל־Fattr</string>
+ <string name="flattr_auth_explanation">נא ללחוׄ על הכפ×Ŗו×Ø ×©×œ×ž×˜×” כדי לה×Ŗחיל א×Ŗ ×Ŗהליך האימו×Ŗ. פעולה זו ×Ŗעבי×Ø ××•×Ŗך למהך ×”×›× ×™×”×” של Flattr בדפדפן שלך ו×Ŗופיע בקשה לאפש×Ø ×œ×× ×˜× ×”Ö¾×¤Ö¼×•Ö¹×“ לבצע פעולו×Ŗ ב־Flattr. לאח×Ø ×ž×Ŗן הה×Øשאה, המע×Øכ×Ŗ ×Ŗחזי×Ø ××•×Ŗך למהך זה אוטומטי×Ŗ.</string>
<string name="authenticate_label">אימו×Ŗ</string>
- <string name="return_home_label">חזו×Ø ×œ×ž×”×š הבי×Ŗ</string>
- <string name="flattr_auth_success">האימו×Ŗ הצליח! עכשיו א×Ŗה יכול ל×Ŗ×Øום באמצעו×Ŗ flattr מ×Ŗוך האפליקציה.</string>
- <string name="no_flattr_token_title">אהימון flattr לא נמצא</string>
- <string name="no_flattr_token_notification_msg">חשבון ה-flattr שלך אינו מחוב×Ø ×œ×× ×˜× ×”-פוד. הקש כאן לאימו×Ŗ.</string>
- <string name="no_flattr_token_msg">חשבון ה-flattr שלך אינו מחוב×Ø ×œ×× ×˜× ×”-פוד. א×Ŗה יכול לקש×Øא×Ŗ לחשבונך לאנטנה-פוד ל×Ŗ×Øום באמצעו×Ŗ flattr מ×Ŗוך האפליקציה או שא×Ŗה יכול לבק×Ø ×‘××Ŗ×Ø ×”××™× ×˜×Øנט של הדב×Ø ×œ×• ×Ŗ×Øצה ל×Ŗ×Øום.</string>
- <string name="authenticate_now_label">אמ×Ŗ</string>
+ <string name="return_home_label">חז×Øה למהך הבי×Ŗ</string>
+ <string name="flattr_auth_success">האימו×Ŗ הצליח! כע×Ŗ יש לך אפש×Øו×Ŗ ל×Ŗ×Øום עם Flattr מ×Ŗוך היישומון.</string>
+ <string name="no_flattr_token_title">לא נמצא אהימון Flattr</string>
+ <string name="no_flattr_token_notification_msg">× ×Øאה כי חשבון ה־Flattr שלך אינו מחוב×Ø ×œ×× ×˜× ×”Ö¾×¤Ö¼×•Ö¹×“. יש לגע×Ŗ כאן לאימו×Ŗ.</string>
+ <string name="no_flattr_token_msg">× ×Øאה כי חשבון ה־Flattr שלך אינו מחוב×Ø ×œ×× ×˜× ×”Ö¾×¤Ö¼×•Ö¹×“. יש לך אפש×Øו×Ŗ לחב×Ø ××Ŗ חשבונך לאנטנה־פּוֹד כדי ל×Ŗ×Øום עם Flattr מ×Ŗוך היישומון או לבק×Ø ×‘××Ŗ×Ø ×©×œ מה שב×Øצונך ל×Ŗ×Øום לו עם Flattr.</string>
+ <string name="authenticate_now_label">אימו×Ŗ</string>
<string name="action_forbidden_title">הפעולה אהו×Øה</string>
- <string name="action_forbidden_msg">לאנטנה-פוד אין ה×Øשאה לפעולה זו. ההיבה לכך יכולה להיו×Ŗ שאהימון הגישה של אנטנה-פוד לחשבון שלך בוטל. א×Ŗה יכול לבצע אימו×Ŗ מחדש או לבק×Ø ×‘××Ŗ×Ø ×”××™× ×˜×Øנט של הדב×Ø ×‘×ž×§×•×.</string>
+ <string name="action_forbidden_msg">לאנטנה־פּוֹד אין ה×Øשאה לבצע פעולה זו. ההיבה לכך עשויה להיו×Ŗ שאהימון הגישה של אנטנה־פּוֹד לחשבון שלך נשלל. ני×Ŗן לאמ×Ŗ מחדש או לבק×Ø ×‘××Ŗ×Ø ×”×ž×™×•×¢×“ במקום.</string>
<string name="access_revoked_title">גישה בוטלה</string>
- <string name="access_revoked_info">אהימון הגישה של אנטנה-פוד לחשבונך בוטל. על מנ×Ŗ להשלים א×Ŗ ה×Ŗהליך, א×Ŗה צ×Øיך לההי×Ø ×™×™×©×•× זה מה×Øשימ×Ŗ היישומים שאוש×Øו בהגד×Øו×Ŗ החשבונך בא×Ŗ×Ø flattr.</string>
+ <string name="access_revoked_info">אהימון הגישה של אנטנה־פוד לחשבונך בוטל. על מנ×Ŗ להשלים א×Ŗ ה×Ŗהליך, א×Ŗה צ×Øיך לההי×Ø ×™×™×©×•× זה מה×Øשימ×Ŗ היישומים שאוש×Øו בהגד×Øו×Ŗ החשבונך בא×Ŗ×Ø flattr.</string>
<!--Flattr-->
- <string name="flattr_click_success">×Ŗ×Øמ×Ŗ ב-Flattr!</string>
- <string name="flattr_click_success_count">×Ŗ×Øמ×Ŗ ב-Flattr %d פעמים! </string>
+ <string name="flattr_click_success">×Ŗ×Øמ×Ŗ ב־Flattr!</string>
+ <string name="flattr_click_success_count">×Ŗ×Øמ×Ŗ ב־Flattr %d פעמים!</string>
<string name="flattr_click_success_queue">×Ŗ×Øומו×Ŗ Flattr: %s.</string>
- <string name="flattr_click_failure_count">כישלון ל×Ŗ×Øום ב-Flattr %d!</string>
- <string name="flattr_click_failure">לא × ×Ŗ×Øם ב-Flattr: %s.</string>
- <string name="flattr_click_enqueued">×Ŗ×Øומו×Ŗ ב-Flattr מאוח×Ø ×™×•×Ŗ×Ø</string>
- <string name="flattring_thing">×Ŗו×Øם ב-Flattr %s</string>
- <string name="flattring_label">אנטנה-פוד ×Ŗו×Øם ב-Flattr</string>
- <string name="flattrd_label">אנטנה-פוד ×Ŗ×Øם ב-Flattr</string>
- <string name="flattrd_failed_label">כישלון ×Ŗ×Øומ×Ŗ אנטנה-פוד ב-Flattr</string>
- <string name="flattr_retrieving_status">איחזו×Ø ×Ŗ×Øומו×Ŗ Flattr</string>
+ <string name="flattr_click_failure_count">ה×Ŗ×Øומה ב־Flattr %d נכשלה!</string>
+ <string name="flattr_click_failure">לא × ×Ŗ×Øם ב־Flattr: %s.</string>
+ <string name="flattr_click_enqueued">ל×Ŗ×Øום ב־Flattr מאוח×Ø ×™×•×Ŗ×Ø</string>
+ <string name="flattring_thing">×Ŗ×Øומה ב־Flattr %s</string>
+ <string name="flattring_label">×Ŗ×Øומה ב־Flattr עם אנטנה־פּוֹד</string>
+ <string name="flattrd_label">×Ŗ×Øומה ב־Flattr עם אנטנה־פּוֹד</string>
+ <string name="flattrd_failed_label">ה×Ŗ×Øומה באנטנה־פּוֹד עם Flattr נכשלה</string>
+ <string name="flattr_retrieving_status">×Ŗ×Øומו×Ŗ Flattr מ×Ŗקבלו×Ŗ</string>
<!--Variable Speed-->
- <string name="download_plugin_label">הו×Øד ×Ŗוהף</string>
+ <string name="download_plugin_label">הו×Øד×Ŗ ×Ŗוהף</string>
<string name="no_playback_plugin_title">×Ŗוהף לא מו×Ŗקן</string>
+ <string name="no_playback_plugin_or_sonic_msg">כדי ש×Ŗכונ×Ŗ המהי×Øו×Ŗ המש×Ŗנה ×Ŗפעל, מומלׄ להפעיל א×Ŗ נגן המדיה המובנה בשם Sonic [מ־Android 4.1 ואילך].\n\nלחלופין, ני×Ŗן להו×Øיד ×Ŗוהף צד שלישי בשם <i>Prestissimo</i> מהחנו×Ŗ Play.\nכל ×Ŗקלה שמופיעה ב־Prestissimo אינה באח×Øיו×Ŗ אנטנה־פּוֹד ויש לדווח עליה לבעלים על ה×Ŗוהף.</string>
<string name="set_playback_speed_label">מהי×Øויו×Ŗ ניגון</string>
+ <string name="enable_sonic">הפעל×Ŗ Sonic</string>
<!--Empty list labels-->
<string name="no_items_label">אין פ×Øיטים ב×Øשימה זו.</string>
- <string name="no_feeds_label">לא × ×Øשמ×Ŗ עדיין להזנו×Ŗ.</string>
+ <string name="no_chapters_label">לפ×Øק זה אין פ×Øקים.</string>
+ <string name="no_shownotes_label">לפ×Øק זה אין הע×Øו×Ŗ פ×Øק.</string>
<!--Preferences-->
+ <string name="storage_pref">אחהון</string>
+ <string name="project_pref">מיזם</string>
<string name="other_pref">אח×Ø</string>
- <string name="about_pref">אודו×Ŗ</string>
+ <string name="about_pref">על אודו×Ŗ</string>
<string name="queue_label">×Ŗו×Ø</string>
- <string name="services_label">שי×Øו×Ŗים</string>
<string name="flattr_label">Flattr</string>
- <string name="pref_unpauseOnHeadsetReconnect_sum">המשך א×Ŗ הניגון כשהאוזניו×Ŗ מחוב×Øו×Ŗ מחדש</string>
- <string name="pref_followQueue_sum">עבו×Ø ×œ×¤×Øיט הבא ב×Ŗו×Ø ×›××©×Ø ×”× ×™×’×•×Ÿ מה×Ŗיים</string>
- <string name="pref_auto_delete_sum">מחק פ×Øק כהניגון מה×Ŗיים</string>
+ <string name="pref_episode_cleanup_title">ניקוי פ×Øקים</string>
+ <string name="pref_episode_cleanup_summary">פ×Øקים שאינם ב×Ŗו×Ø ×•××™× × במועדפים אמו×Øים לענו×Ŗ ל×Ŗנאים של ×”×”×Øה במק×Øה שההו×Øדה האוטומטי×Ŗ זקוקה למקום לפ×Øקים חדשים</string>
+ <string name="pref_pauseOnDisconnect_sum">השהיי×Ŗ הנגינה כאש×Ø ×”××•×–× ×™×•×Ŗ או ה־Bluetooth מנו×Ŗקים</string>
+ <string name="pref_unpauseOnHeadsetReconnect_sum">להמשיך א×Ŗ הניגון כשהאוזניו×Ŗ מחוב×Øו×Ŗ מחדש</string>
+ <string name="pref_unpauseOnBluetoothReconnect_sum">להמשיך א×Ŗ הנגינה עם חיבו×Ø ×ž×—×“×© של ה־Bluetooth</string>
+ <string name="pref_hardwareForwardButtonSkips_title">כפ×Ŗו×Ø ×§×“×™×ž×” מדלג</string>
+ <string name="pref_hardwarePreviousButtonRestarts_title">כפ×Ŗו×Ø ××—×•×Øה מ×Ŗחיל מחדש</string>
+ <string name="pref_hardwarePreviousButtonRestarts_sum">לחיצה על כפ×Ŗו×Ø ×”×—×•×ž×Øה אחו×Øה מדלג מ×Ŗחיל מחדש א×Ŗ נגינ×Ŗ הפ×Øק הנוכחי במקום לחזו×Ø ××—×•×Øה בפ×Øק</string>
+ <string name="pref_followQueue_sum">לעבו×Ø ×œ×¤×Øיט הבא ב×Ŗו×Ø ×›××©×Ø ×”× ×™×’×•×Ÿ מה×Ŗיים</string>
+ <string name="pref_auto_delete_sum">מחיק×Ŗ פ×Øק כשהניגון מה×Ŗיים</string>
<string name="pref_auto_delete_title">מחיקה אוטומטי×Ŗ</string>
+ <string name="pref_smart_mark_as_played_sum">הימון פ×Øקים כנוגנו אפילו אם נשא×Øו כמה שניו×Ŗ לנגינה</string>
+ <string name="pref_smart_mark_as_played_title">הימון חכם כנוגנו</string>
+ <string name="pref_skip_keeps_episodes_sum">להשאי×Ø ×¤×Øקים למ×Øו×Ŗ שדילג×Ŗ עליהם</string>
+ <string name="pref_skip_keeps_episodes_title">להשאי×Ø ×¤×Øקים שדולגו</string>
+ <string name="pref_favorite_keeps_episodes_sum">להשאי×Ø ×¤×Øקים שהומנו כמועדפים</string>
+ <string name="pref_favorite_keeps_episodes_title">להשאי×Ø ×¤×Øקים מועדפים</string>
<string name="playback_pref">ניגון</string>
<string name="network_pref">×Øש×Ŗ</string>
- <string name="pref_downloadMediaOnWifiOnly_sum">הו×Øד קבצי מדיה ×Øק ד×Øך חיבו×Ø ××™× ×˜×Øנט אלחוטי</string>
+ <string name="pref_autoUpdateIntervallOrTime_title">זמן בין עדכונים או מועד ביום</string>
+ <string name="pref_autoUpdateIntervallOrTime_sum">נא לציין הפ×Øש זמן או מועד ביום ל×Øענון ההזנו×Ŗ אוטומטי×Ŗ</string>
+ <string name="pref_autoUpdateIntervallOrTime_message">ני×Ŗן להגדי×Ø <i>הפ×Øש זמן</i> כגון ā€ž×›×œ שע×Ŗייםā€, להגדי×Ø <i>מועד ביום</i> כגון ā€ž7:00ā€ או <i>להשבי×Ŗ</i> עדכונים אוטומטיים לאל×Ŗ×Ø.\n\n<small>ל×Ŗשומ×Ŗ לבך: מועדי העדכון אינם מדויקים. י×Ŗכן עיכוב קל בפעולו×Ŗ.</small></string>
+ <string name="pref_autoUpdateIntervallOrTime_Disable">השב×Ŗה</string>
+ <string name="pref_autoUpdateIntervallOrTime_Interval">הגד×Ø×Ŗ הפ×Øש זמן</string>
+ <string name="pref_autoUpdateIntervallOrTime_TimeOfDay">הגד×Ø×Ŗ הזמן ביום</string>
+ <string name="pref_autoUpdateIntervallOrTime_every">כל %1$s</string>
+ <string name="pref_autoUpdateIntervallOrTime_at">ב־%1$s</string>
+ <string name="pref_downloadMediaOnWifiOnly_sum">הו×Øד×Ŗ קובצי מדיה ×Øק ד×Øך ×Øש×Ŗ אלחוטי×Ŗ</string>
<string name="pref_followQueue_title">ניגון מ×Ŗמשך</string>
- <string name="pref_downloadMediaOnWifiOnly_title">הו×Øד×Ŗ מדיה ד×Øך אינט×Øנט אלחוטי</string>
+ <string name="pref_downloadMediaOnWifiOnly_title">הו×Øד×Ŗ מדיה ד×Øך ×Øש×Ŗ אלחוטי×Ŗ</string>
<string name="pref_pauseOnHeadsetDisconnect_title">ני×Ŗוק אוזניו×Ŗ</string>
<string name="pref_unpauseOnHeadsetReconnect_title">חיבו×Ø ××•×–× ×™×•×Ŗ מחדש</string>
- <string name="pref_mobileUpdate_title">עידכון ד×Øך ×Øש×Ŗ הלול×Øי×Ŗ</string>
- <string name="pref_mobileUpdate_sum">אפש×Ø ×¢×™×“×›×•× ×™× ד×Øך ×Øש×Ŗ הלול×Øי×Ŗ</string>
- <string name="refreshing_label">מ×Øענן</string>
+ <string name="pref_unpauseOnBluetoothReconnect_title">חיבו×Ø Bluetooth מחדש</string>
+ <string name="pref_mobileUpdate_title">עדכון ד×Øך ×Øש×Ŗ הלול×Øי×Ŗ</string>
+ <string name="pref_mobileUpdate_sum">לאפש×Ø ×¢×“×›×•× ×™× ד×Øך ×Øש×Ŗ הלול×Øי×Ŗ</string>
+ <string name="refreshing_label">מ×Ŗבצע ×Øענון</string>
<string name="flattr_settings_label">הגד×Øו×Ŗ Flattr</string>
- <string name="pref_flattr_auth_title">×›× ×™×”×” ל-Fattr</string>
- <string name="pref_flattr_auth_sum">×”×™×›× ×” לחשבון שלך לflattr ל×Ŗ×Øום ישי×Øו×Ŗ מ×Ŗוך האפליקציה.</string>
+ <string name="pref_flattr_auth_title">×›× ×™×”×” ל־Fattr</string>
+ <string name="pref_flattr_auth_sum">ני×Ŗן להיכנה לחשבון שלך ב־Flattr כדי ל×Ŗ×Øום ישי×Øו×Ŗ מ×Ŗוך היישומון.</string>
<string name="pref_flattr_this_app_title">×Ŗ×Øום באמצעו×Ŗ Flattr לאפליקציה זו</string>
- <string name="pref_flattr_this_app_sum">×Ŗמוך בפי×Ŗוח אנטנה-פוד ב×Ŗ×Øומה עם Flattr. ×Ŗודה!</string>
- <string name="pref_revokeAccess_title">בטל גישה</string>
- <string name="pref_revokeAccess_sum">בטל ה×Øשא×Ŗ גישה לחשבון flattr ליישום זה.</string>
+ <string name="pref_flattr_this_app_sum">ני×Ŗן ל×Ŗמוך בפי×Ŗוח של אנטנה־פּוֹד על ידי ×Ŗ×Øומה ב־Flattr. ×Ŗודה!</string>
+ <string name="pref_revokeAccess_title">ביטול גישה גישה</string>
+ <string name="pref_revokeAccess_sum">שליל×Ŗ ה×Øשאו×Ŗ הגישה לחשבון ה־Flattr שלך מיישומון זה.</string>
<string name="pref_auto_flattr_title">×Ŗ×Øומו×Ŗ Flattr אוטומטיו×Ŗ</string>
- <string name="pref_auto_flattr_sum">הגד×Ø ×Ŗ×Øומו×Ŗ flattr אוטומטיו×Ŗ</string>
- <string name="user_interface_label">ממשק מש×Ŗמש</string>
- <string name="pref_set_theme_title">בח×Ø ×¢×Øכ×Ŗ נושא</string>
- <string name="pref_set_theme_sum">שנה א×Ŗ מ×Øאה אנטנה-פוד</string>
+ <string name="pref_auto_flattr_sum">הגד×Ø×Ŗ ×Ŗ×Øומו×Ŗ Flattr אוטומטיו×Ŗ</string>
+ <string name="user_interface_label">מנשק מש×Ŗמש</string>
+ <string name="pref_set_theme_title">בחי×Ø×Ŗ ×¢×Øכ×Ŗ עיצוב</string>
+ <string name="pref_nav_drawer_title">ה×Ŗאמ×Ŗ מגי×Ø×Ŗ הניווט</string>
+ <string name="pref_nav_drawer_sum">ה×Ŗאמ×Ŗ ×Ŗצוג×Ŗ מגי×Ø×Ŗ הניווט.</string>
+ <string name="pref_nav_drawer_items_title">הגד×Ø×Ŗ פ×Øיטי מגי×Ø×Ŗ ניווט</string>
+ <string name="pref_nav_drawer_items_sum">החלפ×Ŗ הפ×Øיטים שמופיעים במגי×Ø×Ŗ הניווט.</string>
+ <string name="pref_nav_drawer_feed_order_title">הגד×Ø×Ŗ הד×Ø ×ž×™× ×•×™×™×</string>
+ <string name="pref_nav_drawer_feed_order_sum">שינוי הד×Ø ×”×ž×™× ×•×™×™× שלך</string>
+ <string name="pref_nav_drawer_feed_counter_title">הגד×Ø×Ŗ מונה מינויים</string>
+ <string name="pref_set_theme_sum">שינוי המ×Øאה של אנטנה־פּוֹד</string>
<string name="pref_automatic_download_title">הו×Øדה אוטומטי×Ŗ</string>
- <string name="pref_automatic_download_sum">הגד×Ø ×”×•×Øדה אטומטי×Ŗ של פ×Øקים.</string>
- <string name="pref_autodl_wifi_filter_title">אפש×Ø ×”×™× ×•×Ÿ אינט×Øנט אלחוטי</string>
- <string name="pref_autodl_wifi_filter_sum">אפש×Ø ×”×•×Øדה אוטומטי×Ŗ ד×Øך ×Øש×Ŗו×Ŗ אלחוטייו×Ŗ נבח×Øו×Ŗ.</string>
- <string name="pref_automatic_download_on_battery_title">הו×Øדה כשלא טוען</string>
- <string name="pref_automatic_download_on_battery_sum">אפש×Ø ×”×•×Øדה אוטומטי×Ŗ כשההוללה אינה נטענ×Ŗ</string>
+ <string name="pref_automatic_download_sum">הגד×Ø×Ŗ הו×Øדה אטומטי×Ŗ של פ×Øקים.</string>
+ <string name="pref_autodl_wifi_filter_title">הפעל×Ŗ הינון ×Øש×Ŗו×Ŗ אלחוטיו×Ŗ</string>
+ <string name="pref_autodl_wifi_filter_sum">לאפש×Ø ×”×•×Øדה אוטומטי×Ŗ ×Øק ד×Øך ×Øש×Ŗו×Ŗ אלחוטיו×Ŗ נבח×Øו×Ŗ.</string>
+ <string name="pref_autodl_allow_on_mobile_title">הו×Øדה ד×Øך ×Øש×Ŗ הלול×Øי×Ŗ</string>
+ <string name="pref_autodl_allow_on_mobile_sum">לאפש×Ø ×”×•×Øדה אוטומטי×Ŗ ד×Øך חיבו×Ø × ×Ŗונים של ×Øש×Ŗ הלול×Øי×Ŗ.</string>
+ <string name="pref_automatic_download_on_battery_title">להו×Øיד שלא בזמן טעינה</string>
+ <string name="pref_automatic_download_on_battery_sum">לאפש×Ø ×”×•×Øדה אוטומטי×Ŗ כאש×Ø ×”×”×•×œ×œ×” אינה בטעינה</string>
<string name="pref_parallel_downloads_title">הו×Øדו×Ŗ במקביל</string>
<string name="pref_episode_cache_title">מטמון פ×Øקים</string>
<string name="pref_theme_title_light">בהי×Ø</string>
@@ -252,128 +345,291 @@
<string name="pref_update_interval_hours_singular">שעה</string>
<string name="pref_update_interval_hours_manual">ידני</string>
<string name="pref_gpodnet_authenticate_title">×›× ×™×”×”</string>
- <string name="pref_gpodnet_authenticate_sum">×›× ×” עם חשבון gpodder.net שלך על מנ×Ŗ להנכ×Øן א×Ŗ הה×Øשמו×Ŗ שלך.</string>
- <string name="pref_gpodnet_logout_title">ה×Ŗ× ×Ŗקו×Ŗ</string>
- <string name="pref_gpodnet_logout_toast">הה×Ŗ× ×Ŗקו×Ŗ היי×Ŗה מוצלח×Ŗ</string>
- <string name="pref_gpodnet_setlogin_information_title">שינוי פ×Øטי ה×Ŗחב×Øו×Ŗ</string>
- <string name="pref_gpodnet_setlogin_information_sum">שנה פ×Øטי ה×Ŗחב×Øו×Ŗ של חשבון gpodder.net.</string>
+ <string name="pref_gpodnet_authenticate_sum">ני×Ŗן להיכנה לחשבונך ב־gpodder.net כדי להנכ×Øן א×Ŗ המינויים שלך.</string>
+ <string name="pref_gpodnet_logout_title">יציאה</string>
+ <string name="pref_gpodnet_logout_toast">הצלח×Ŗ לצא×Ŗ</string>
+ <string name="pref_gpodnet_setlogin_information_title">שינוי פ×Øטי ×”×›× ×™×”×”</string>
+ <string name="pref_gpodnet_setlogin_information_sum">שינוי פ×Øטי ×”×›× ×™×”×” לחשבון ה־gpodder.net שלך.</string>
+ <string name="pref_gpodnet_sync_changes_title">×”× ×›×Øון השינויים כע×Ŗ</string>
+ <string name="pref_gpodnet_sync_changes_sum">×”× ×›×Øון שינויי מצב במינויים ובפ×Øקים מול gpodder.net.</string>
+ <string name="pref_gpodnet_full_sync_title">×”× ×›×Øון מלא כע×Ŗ</string>
+ <string name="pref_gpodnet_full_sync_sum">×”× ×›×Øון כל המינויים ומצבי הפ×Øקים עם gpodder.net.</string>
+ <string name="pref_gpodnet_sync_sum_last_sync_line">ניהיון ×”×”× ×›×Øון האח×Øון: %1$s (%2$s)</string>
+ <string name="pref_gpodnet_sync_started">×”×”× ×›×Øון ה×Ŗחיל</string>
+ <string name="pref_gpodnet_full_sync_started">החל ×”× ×›×Øון מלא</string>
+ <string name="pref_gpodnet_login_status"><![CDATA[× ×›× ×”×Ŗ בשם <i>%1$s</i> עם הה×Ŗקן <i>%2$s</i>]]></string>
+ <string name="pref_gpodnet_notifications_title">הצג×Ŗ ה×Ŗ×Øעו×Ŗ שגיאו×Ŗ ×”× ×›×Øון</string>
+ <string name="pref_gpodnet_notifications_sum">הגד×Øה זו אינה חלה על שגיאו×Ŗ אימו×Ŗ.</string>
<string name="pref_playback_speed_title">מהי×Øויו×Ŗ ניגון</string>
- <string name="pref_playback_speed_sum">ה×Ŗאמ×Ŗ המהי×Øיו×Ŗ הזמינו×Ŗ לניגון במהי×Øו×Ŗ מש×Ŗנה</string>
- <string name="pref_gpodnet_sethostname_title">הגד×Ø ×©× ש×Ø×Ŗ</string>
- <string name="pref_gpodnet_sethostname_use_default_host">הש×Ŗמש בש×Ø×Ŗ ב×Øי×Ø×Ŗ מידל</string>
- <string name="pref_expandNotify_title">ה×Øחב הודעה</string>
- <string name="pref_expandNotify_sum">×Ŗמיד ה×Øחב א×Ŗ ההודעה כדי לה×Øאו×Ŗ א×Ŗ לחצני הפעלה.</string>
- <string name="pref_persistNotify_title">פקדי הפעלה קבועים</string>
- <string name="pref_persistNotify_sum">שמ×Ø ×‘×§×Øי הודעה ומהך נעילה בע×Ŗ השהיי×Ŗ השמעה.</string>
- <string name="pref_expand_notify_unsupport_toast">ג×Øהאו×Ŗ אנד×Øויד לפני 4.1 לא ×Ŗומכו×Ŗ בהודעו×Ŗ מו×Øחבו×Ŗ.</string>
- <string name="pref_queueAddToFront_sum">הוהף פ×Øקים חדשים ל×Øאש ה×Ŗו×Ø.</string>
- <string name="pref_queueAddToFront_title">הוהף ל×Øאש ה×Ŗו×Ø.</string>
+ <string name="pref_playback_speed_sum">בחי×Ø×Ŗ המהי×Øויו×Ŗ הזמינו×Ŗ למהי×Øו×Ŗ נגינה מש×Ŗנה</string>
+ <string name="pref_fast_forward">זמן דילוג בהאצה קדימה</string>
+ <string name="pref_fast_forward_sum">ה×Ŗאמ×Ŗ מהפ×Ø ×”×©× ×™×•×Ŗ של הקפיצה קדימה בע×Ŗ לחיצה על כפ×Ŗו×Ø ×”×”××¦×”</string>
+ <string name="pref_rewind">זמן בקפיצה אחו×Øה</string>
+ <string name="pref_rewind_sum">ה×Ŗאמ×Ŗ מהפ×Ø ×”×©× ×™×•×Ŗ של הקפיצה אחו×Øה בע×Ŗ לחיצה על כפ×Ŗו×Ø ×”×—×–×Øה</string>
+ <string name="pref_gpodnet_sethostname_title">הגד×Ø×Ŗ שם מא×Øח</string>
+ <string name="pref_gpodnet_sethostname_use_default_host">שימוש בשם מא×Øח כב×Ø×Ø×Ŗ מחדל</string>
+ <string name="pref_persistNotify_title">פקדי נגינה קבועים</string>
+ <string name="pref_persistNotify_sum">להשאי×Ø ××Ŗ פקדי הה×Ŗ×Øעו×Ŗ ומהך הנעילה גם כשהנגינה מושהי×Ŗ.</string>
+ <string name="pref_compact_notification_buttons_title">הגד×Ø×Ŗ כפ×Ŗו×Øים במהך נעילה</string>
+ <string name="pref_compact_notification_buttons_sum">החלפ×Ŗ כפ×Ŗו×Ø ×”× ×’×™× ×” במהך הנעילה. הכפ×Ŗו×Øים נגינה/השהיה ×Ŗמיד נכללים.</string>
+ <string name="pref_compact_notification_buttons_dialog_title">בחי×Øה עד %1$d פ×Øיטים</string>
+ <string name="pref_compact_notification_buttons_dialog_error">ני×Ŗן לבחו×Ø ×¢×“ %1$d פ×Øיטים.</string>
+ <string name="pref_lockscreen_background_title">הגד×Ø×Ŗ ×Øקע מהך הנעילה</string>
+ <string name="pref_lockscreen_background_sum">הגד×Ø×Ŗ ×Øקע מהך הנעילה ל×Ŗמונה של הפ×Øק שמ×Ŗנגן כע×Ŗ. כ×Ŗופע×Ŗ לוואי, ה×Ŗמונה ×Ŗופיע גם ביישומי צד שלישי.</string>
+ <string name="pref_showDownloadReport_title">הצג×Ŗ דוח הו×Øדה</string>
+ <string name="pref_showDownloadReport_sum">אם ההו×Øדה נכשל×Ŗ, יש ליצ×Ø ×“×•×— שמציג א×Ŗ פ×Øטי הכשל.</string>
+ <string name="pref_expand_notify_unsupport_toast">ג×Øהאו×Ŗ Android שקדמו ל־4.1 אינן ×Ŗומכו×Ŗ בה×Ŗ×Øעו×Ŗ מ×Ŗ×Øחבו×Ŗ.</string>
+ <string name="pref_queueAddToFront_sum">הוהפ×Ŗ פ×Øקים חדשים ל×Øאש ה×Ŗו×Ø.</string>
+ <string name="pref_queueAddToFront_title">הוהפה ל×Øאש ה×Ŗו×Ø.</string>
+ <string name="pref_smart_mark_as_played_disabled">מושב×Ŗ</string>
+ <string name="pref_image_cache_size_title">גודל מטמון ה×Ŗמונו×Ŗ</string>
+ <string name="pref_image_cache_size_sum">הנפח בכונן שעשוי לשמש למטמון של ×Ŗמונו×Ŗ.</string>
+ <string name="crash_report_title">דיווח על ק×Ø×™×”×”</string>
+ <string name="crash_report_sum">שליח×Ŗ דיווח הק×Ø×™×”×” העדכני ביו×Ŗ×Ø ×“×Øך דואדל</string>
+ <string name="send_email">שליח×Ŗ דואדל</string>
+ <string name="experimental_pref">ניהיוני</string>
+ <string name="pref_current_value">×¢×Øך נוכחי: %1$s</string>
+ <string name="pref_proxy_title">מ×Ŗווך</string>
+ <string name="pref_proxy_sum">הגד×Ø×Ŗ מ×Ŗווך ×Øש×Ŗ</string>
+ <string name="pref_faq">שוד×Ŗ</string>
+ <string name="pref_known_issues">×Ŗקלו×Ŗ ידועו×Ŗ</string>
+ <string name="pref_no_browser_found">לא נמצא דפדפן.</string>
+ <string name="pref_cast_title">×Ŗמיכה ב־Chromecast</string>
+ <string name="pref_cast_message_play_flavor">הפעל×Ŗ ×Ŗמיכה בנגינ×Ŗ מדיה על ה×Ŗקני שידו×Ø ×ž×Øוחקים (כגון Chromecast, ×Øמקולים דיגיטליים או Android TV)</string>
+ <string name="pref_cast_message_free_flavor">ל×Ŗמיכה ב־Chromecast נד×Øשו×Ŗ הפ×Øיו×Ŗ קנייניו×Ŗ מא×Ŗ צד־שלישי שמושב×Ŗו×Ŗ בג×Ø×”×” זו של אנטנה־פּוֹד</string>
+ <string name="pref_enqueue_downloaded_title">הוהפ×Ŗ הו×Øדו×Ŗ ל×Ŗו×Ø</string>
+ <string name="pref_enqueue_downloaded_summary">הוהפ×Ŗ פ×Øקים שה×Ŗקבלו ל×Ŗו×Ø</string>
<!--Auto-Flattr dialog-->
- <string name="auto_flattr_enable">הפעל ×Ŗ×Øומו×Ŗ flattr אוטומטיו×Ŗ</string>
- <string name="auto_flattr_after_percent">×Ŗ×Øום באמצעו×Ŗ flattr כשנוגן %d אחוזים מהפ×Øק</string>
- <string name="auto_flattr_ater_beginning">×Ŗ×Øום באמצעו×Ŗ flattr כשניגון פ×Øק מ×Ŗחיל</string>
- <string name="auto_flattr_ater_end">×Ŗ×Øום באמצעו×Ŗ flattr כשניגון פ×Øק מה×Ŗיים</string>
+ <string name="auto_flattr_enable">הפעל×Ŗ ×Ŗ×Øומו×Ŗ Flattr אוטומטיו×Ŗ</string>
+ <string name="auto_flattr_after_percent">ל×Ŗ×Øום לפ×Øק כאש×Ø ×”×Ŗנגנו %d אחוזים</string>
+ <string name="auto_flattr_ater_beginning">ל×Ŗ×Øום עם Flattr עם ×Ŗחיל×Ŗ נגינ×Ŗ פ×Øק</string>
+ <string name="auto_flattr_ater_end">ל×Ŗ×Øום עם Flattr עם היום נגינ×Ŗ פ×Øק</string>
<!--Search-->
+ <string name="search_hint">חיפוש אח×Ø ×¤×Øקים</string>
+ <string name="found_in_shownotes_label">נמצא בהע×Øו×Ŗ הפ×Øק</string>
<string name="found_in_chapters_label">נמצא בפ×Øקים</string>
- <string name="search_status_no_results">אין ×Ŗוצאו×Ŗ</string>
+ <string name="search_status_no_results">לא נמצאו ×Ŗוצאו×Ŗ</string>
<string name="search_label">חיפוש</string>
<string name="found_in_title_label">נמצא בכו×Ŗ×Ø×Ŗ</string>
+ <string name="no_results_for_query">לא נמצאו ×Ŗוצאו×Ŗ עבו×Ø ā€ž%1$sā€</string>
<!--OPML import and export-->
- <string name="opml_import_txtv_button_lable">קבצי OPML יאפש×Øו לכך לנייד פודקאהטים מלוכד פודקאהטים אחד למשנו.</string>
- <string name="opml_import_explanation_1">בח×Ø × ×Ŗיב קובׄ הפציפי במע×Øכ×Ŗ הקבצים המקומי×Ŗ.</string>
- <string name="opml_import_explanation_2">הש×Ŗמש ביישומים חיצוניים כמו Dropbox, Google Drive או מנהל הקבצים האהוב עליך לפ×Ŗוח קובׄ OPML.</string>
- <string name="opml_import_explanation_3">יישומים ×Øבים כמו Google Mail, Dropbox, Google Drive ו×Øוב מנהלי הקבצים יכולים <i>לפ×Ŗוח</i> קבצי OPML <i>עם</i> אנטנה-פוד.</string>
- <string name="start_import_label">ה×Ŗחל יבוא</string>
- <string name="opml_import_label">יבוא OPML</string>
+ <string name="opml_import_txtv_button_lable">קובצי OPML מאפש×Øים לך להעבי×Ø ××Ŗ הפודקאהטים שלך ממכשי×Ø ××—×“ למשנהו.</string>
+ <string name="opml_import_option">אפש×Øו×Ŗ %1$d</string>
+ <string name="opml_import_explanation_1">נא לבחו×Ø × ×Ŗיב קובׄ מהוים ממע×Øכ×Ŗ הקבצים המקומי×Ŗ.</string>
+ <string name="opml_import_explanation_2">ני×Ŗן להש×Ŗמש ביישומים חיצוניים כמו Dropbox,ā€ Google Drive או מנהל הקבצים המועדף עליך כדי לפ×Ŗוח קובׄ OPML.</string>
+ <string name="opml_import_explanation_3">יישומים ×Øבים כגון Google Mail,ā€ Dropbox,ā€ Google Drive ו×Øוב מנהלי הקבצים יכולים <i>לפ×Ŗוח</i> קובצי OPML <i>עם</i> אנטנה־פּוֹד.</string>
+ <string name="start_import_label">ה×Ŗחל×Ŗ ייבוא</string>
+ <string name="opml_import_label">ייבוא OPML</string>
<string name="opml_directory_error">שגיאה!</string>
- <string name="reading_opml_label">קו×Øא קובׄ OPML</string>
- <string name="select_all_label">בח×Ø ×”×›×œ</string>
- <string name="deselect_all_label">בטל בחי×Øו×Ŗ</string>
+ <string name="reading_opml_label">ק×Øיא×Ŗ קובׄ OPML</string>
+ <string name="opml_reader_error">אי×Øעה שגיאה בע×Ŗ ק×Øיא×Ŗ מהמך ה־OPML:</string>
+ <string name="opml_import_error_no_file">לא נבח×Ø ×§×•×‘×„!</string>
+ <string name="select_all_label">בחי×Ø×Ŗ הכול</string>
+ <string name="deselect_all_label">ביטול הבחי×Øה</string>
+ <string name="select_options_label">בחי×Øהā€¦</string>
<string name="choose_file_from_filesystem">ממע×Øכ×Ŗ הקבצים המקומי×Ŗ</string>
- <string name="choose_file_from_external_application">הש×Ŗמש באפליקציה חיצוני×Ŗ</string>
- <string name="opml_export_label">יצוא OPML</string>
- <string name="export_error_label">שגיא×Ŗ יצוא</string>
- <string name="opml_export_success_title">יצוא OPML הצליח.</string>
- <string name="opml_export_success_sum">קובׄ OPML נכ×Ŗב ל:\u0020</string>
+ <string name="choose_file_from_external_application">שימוש ביישומון חיצוני</string>
+ <string name="opml_export_label">ייצוא OPML</string>
+ <string name="html_export_label">ייצוא HTML</string>
+ <string name="exporting_label">מ×Ŗבצע ייצואā€¦</string>
+ <string name="export_error_label">שגיא×Ŗ ייצוא</string>
+ <string name="export_success_title">הייצוא הצליח</string>
+ <string name="export_success_sum">הקובׄ שייוצא נכ×Ŗב אל:\n\n%1$s</string>
+ <string name="opml_import_ask_read_permission">נד×Øש×Ŗ גישה לאחהון חיצוני כדי לק×Øוא א×Ŗ קובׄ ה־OPML</string>
<!--Sleep timer-->
- <string name="set_sleeptimer_label">קבע טיימ×Ø ×©×™× ×”</string>
- <string name="disable_sleeptimer_label">בטל טיימ×Ø ×©×™× ×”</string>
- <string name="enter_time_here_label">קבע זמן</string>
- <string name="sleep_timer_label">טיימ×Ø ×©×™× ×”</string>
- <string name="time_left_label">זמן נו×Ŗ×Ø:\u0020</string>
- <string name="time_dialog_invalid_input">קלט לא חוקי, זמן חייב להיו×Ŗ מהפ×Ø ×©×œ×</string>
+ <string name="set_sleeptimer_label">הגד×Ø×Ŗ מ×Ŗזמן שינה</string>
+ <string name="disable_sleeptimer_label">השב×Ŗ×Ŗ מ×Ŗזמן שינה</string>
+ <string name="enter_time_here_label">הגד×Ø×Ŗ שעה</string>
+ <string name="sleep_timer_label">מ×Ŗזמן שינה</string>
+ <string name="time_left_label">זמן שנו×Ŗ×Ø:\u0020</string>
+ <string name="time_dialog_invalid_input">קלט שגוי, השעה חייב להיו×Ŗ מהפ×Ø ×©×œ× וחיובי</string>
+ <string name="timer_about_to_expire_label"><b>כאש×Ø ×”×¤×™×Ø×Ŗ המ×Ŗזמן עומד×Ŗ להה×Ŗיים:</b></string>
+ <string name="shake_to_reset_label">לשקשק כדי לאפה א×Ŗ המ×Ŗזמן</string>
+ <string name="timer_vibration_label">ל×Øטוט</string>
+ <string name="time_seconds">שניו×Ŗ</string>
+ <string name="time_minutes">דקו×Ŗ</string>
+ <string name="time_hours">שעו×Ŗ</string>
+ <plurals name="time_seconds_quantified">
+ <item quantity="one">שנייה אח×Ŗ</item>
+ <item quantity="two">%d שניו×Ŗ</item>
+ <item quantity="many">%d שניו×Ŗ</item>
+ <item quantity="other">%d שניו×Ŗ</item>
+ </plurals>
+ <plurals name="time_minutes_quantified">
+ <item quantity="one">דקה אח×Ŗ</item>
+ <item quantity="two">%d דקו×Ŗ</item>
+ <item quantity="many">%d דקו×Ŗ</item>
+ <item quantity="other">%d דקו×Ŗ</item>
+ </plurals>
+ <plurals name="time_hours_quantified">
+ <item quantity="one">שעה</item>
+ <item quantity="two">שע×Ŗיים</item>
+ <item quantity="many">%d שעו×Ŗ</item>
+ <item quantity="other">%d שעו×Ŗ</item>
+ </plurals>
+ <string name="auto_enable_label">הפעלה אוטומטי×Ŗ</string>
+ <string name="sleep_timer_enabled_label">מ×Ŗזמן השינה פעיל</string>
+ <string name="sleep_timer_disabled_label">מ×Ŗזמן השינה מושב×Ŗ</string>
<!--gpodder.net-->
<string name="gpodnet_taglist_header">קטגו×Øיו×Ŗ</string>
- <string name="gpodnet_toplist_header">פודקאהטים בכי×Øים</string>
+ <string name="gpodnet_toplist_header">פודקאהטים מובילים</string>
<string name="gpodnet_suggestions_header">המלצו×Ŗ</string>
- <string name="gpodnet_search_hint">חפש ב-gpodder.net</string>
- <string name="gpodnetauth_login_title">ה×Ŗחב×Øו×Ŗ</string>
- <string name="gpodnetauth_login_descr">ב×Øוך הבא לה×Ŗחב×Øו×Ŗ ל-gpodder.net. ×Øאשי×Ŗ, הקלד א×Ŗ פ×Øטי ×”×›× ×™×”×” שלך:</string>
- <string name="gpodnetauth_login_butLabel">ה×Ŗחב×Øו×Ŗ</string>
- <string name="gpodnetauth_login_register">אם אין לך עדיין חשבון, ×Ŗוכל לפ×Ŗוח אחד ד×Øך: \nhttps://gpodder.net/register/</string>
- <string name="username_label">שם מש×Ŗמש:</string>
- <string name="password_label">ההמה:</string>
+ <string name="gpodnet_search_hint">חיפוש ב־gpodder.net</string>
+ <string name="gpodnetauth_login_title">×›× ×™×”×”</string>
+ <string name="gpodnetauth_login_descr">ב×Øוך בואך ל×Ŗהליך ×”×›× ×™×”×” ל־gpodder.net. ×Øאשי×Ŗ, עליך להקליד א×Ŗ פ×Øטי ×”×›× ×™×”×” שלך:</string>
+ <string name="gpodnetauth_login_butLabel">×›× ×™×”×”</string>
+ <string name="gpodnetauth_login_register">אם עדיין אין לך חשבון, ני×Ŗן ליצו×Ø ××—×“ כאן:ā€Ž\nhttps://gpodder.net/register/ā€Ž</string>
+ <string name="username_label">שם מש×Ŗמש</string>
+ <string name="password_label">ההמה</string>
<string name="gpodnetauth_device_title">בחי×Ø×Ŗ מכשי×Ø</string>
- <string name="gpodnetauth_device_descr">צו×Ø ×ž×›×©×™×Ø ×—×“×© לשימוש עבו×Ø ×—×©×‘×•×Ÿ gpodder.net או לבח×Ø ××—×“ קיים:</string>
+ <string name="gpodnetauth_device_descr">ני×Ŗן ליצו×Ø ×”×Ŗקן חדש לשימוש עם החשבון שלך ב־gpodder.net או לבחו×Ø ×‘×”×Ŗקן חדש:</string>
<string name="gpodnetauth_device_deviceID">מזהה מכשי×Ø:\u0020</string>
<string name="gpodnetauth_device_caption">כו×Ŗ×Ø×Ŗ</string>
- <string name="gpodnetauth_device_butCreateNewDevice">צו×Ø ×ž×›×©×™×Ø ×—×“×©</string>
- <string name="gpodnetauth_device_chooseExistingDevice">בח×Ø ×ž×›×©×™×Ø ×§×™×™×:</string>
- <string name="gpodnetauth_device_errorEmpty">מזהה המכשי×Ø ××™× ×• יכול להיו×Ŗ ×Øיק</string>
- <string name="gpodnetauth_device_errorAlreadyUsed">מזהה המכשי×Ø ×‘×©×™×ž×•×©</string>
- <string name="gpodnetauth_device_butChoose">בח×Ø</string>
- <string name="gpodnetauth_finish_title">ה×Ŗחב×Øו×Ŗ מוצלח×Ŗ!</string>
- <string name="gpodnetauth_finish_descr">מזל טוב! חשבון gpodder.net שלך מקוש×Ø ×›×¢×Ŗ עם המכשי×Ø ×©×œ×š. אנטנה-פוד מע×Ŗה ×™×”× ×›×Øן באופן אוטומטי ה×Øשמו×Ŗ במכשי×Ø ×©×œ×š עם חשבון gpodder.net שלך.</string>
- <string name="gpodnetauth_finish_butsyncnow">ה×Ŗחל ×”× ×›×Øון כע×Ŗ</string>
- <string name="gpodnetauth_finish_butgomainscreen">עבו×Ø ×œ×ž×”×š ה×Øאשי</string>
- <string name="gpodnetsync_auth_error_title">שגיא×Ŗ אימו×Ŗ של gpodder.net</string>
+ <string name="gpodnetauth_device_butCreateNewDevice">יצי×Ø×Ŗ מכשי×Ø ×—×“×©</string>
+ <string name="gpodnetauth_device_chooseExistingDevice">בחי×Ø×Ŗ מכשי×Ø ×§×™×™×:</string>
+ <string name="gpodnetauth_device_errorEmpty">מזהה המכשי×Ø ×œ× יכול להישא×Ø ×Øיק</string>
+ <string name="gpodnetauth_device_errorAlreadyUsed">מזהה המכשי×Ø ×›×‘×Ø ×‘×©×™×ž×•×©</string>
+ <string name="gpodnetauth_device_caption_errorEmpty">הכו×Ŗ×Ø×Ŗ לא יכולה להישא×Ø ×Øיקה</string>
+ <string name="gpodnetauth_device_butChoose">בחי×Øה</string>
+ <string name="gpodnetauth_finish_title">× ×›× ×”×Ŗ בהצלחה!</string>
+ <string name="gpodnetauth_finish_descr">מזל טוב! חשבון ה־gpodder.net שלך מקוש×Ø ×›×¢×Ŗ עם המכשי×Ø ×©×œ×š. מע×Ŗה כל המינויים שלך יהונכ×Øנו אוטומטי×Ŗ על ידי אנטנה־פּוֹד מהמכשי×Ø ×©×œ×š לחשבון ה־gpodder.net שלך.</string>
+ <string name="gpodnetauth_finish_butsyncnow">ה×Ŗחל×Ŗ ×”× ×›×Øון כע×Ŗ</string>
+ <string name="gpodnetauth_finish_butgomainscreen">מעב×Ø ×œ×ž×”×š ה×Øאשי</string>
+ <string name="gpodnetsync_auth_error_title">שגיא×Ŗ אימו×Ŗ מול gpodder.net</string>
<string name="gpodnetsync_auth_error_descr">שם מש×Ŗמש או ההמה שגויים</string>
- <string name="gpodnetsync_error_title">שגיא×Ŗ ×”× ×›×Øון של gpodder.net</string>
- <string name="gpodnetsync_error_descr">שגיאה במהל ×”×™× ×›×Øון:\u0020</string>
+ <string name="gpodnetsync_error_title">שגיא×Ŗ ×”× ×›×Øון מול gpodder.net</string>
+ <string name="gpodnetsync_error_descr">שגיאה במהלך ×”×™× ×›×Øון:\u0020</string>
+ <string name="gpodnetsync_pref_report_successful">מוצלח</string>
+ <string name="gpodnetsync_pref_report_failed">נכשל</string>
<!--Directory chooser-->
- <string name="selected_folder_label">×Ŗיקיה נבח×Ø×Ŗ:</string>
- <string name="create_folder_label">צו×Ø ×Ŗיקיה</string>
+ <string name="selected_folder_label">×Ŗיקייה נבח×Ø×Ŗ:</string>
+ <string name="create_folder_label">יצי×Ø×Ŗ ×Ŗיקייה</string>
<string name="choose_data_directory">בח×Ø ×Ŗיקיי×Ŗ מידע</string>
- <string name="create_folder_msg">צו×Ø ×Ŗיקיה חדשה בשם \"%1$s\"?</string>
- <string name="create_folder_success">×Ŗיקיה חדשה נוצ×Øה</string>
- <string name="create_folder_error_no_write_access">לא ני×Ŗן לכ×Ŗוב ל×Ŗיקה זו</string>
- <string name="create_folder_error_already_exists">×Ŗיקה כב×Ø ×§×™×™×ž×Ŗ</string>
- <string name="create_folder_error">לא ני×Ŗן ליצו×Ø ×Ŗיקיה</string>
- <string name="folder_not_empty_dialog_title">ה×Ŗיקיה אינה ×Øיקה</string>
- <string name="folder_not_empty_dialog_msg">ה×Ŗיקייה שבח×Ø×Ŗ אינה ×Øיקה. הו×Øדו×Ŗ מדיה וקבצים אח×Øים יהיו ממוקמו×Ŗ ישי×Øו×Ŗ ב×Ŗיקייה זו. להמשיך בכל זא×Ŗ?</string>
- <string name="set_to_default_folder">בח×Ø ×Ŗיקיי×Ŗ ב×Øי×Ø×Ŗ מחדל</string>
- <string name="pref_pausePlaybackForFocusLoss_sum">השהה ניגון במקום החלש×Ŗ עוצמ×Ŗ שמע כשאפליקציה אח×Ø×Ŗ מנגנ×Ŗ</string>
- <string name="pref_pausePlaybackForFocusLoss_title">השהה בזמן הפ×Øעה</string>
+ <string name="choose_data_directory_message">נא לבחו×Ø ××Ŗ בהיה ×Ŗיקיי×Ŗ הנ×Ŗונים שלך. ×Ŗ×Ŗ־ה×Ŗיקיו×Ŗ ×Ŗיווצ×Øנה על ידי אנטנה־פּוֹד בה×Ŗאם.</string>
+ <string name="choose_data_directory_permission_rationale">נד×Øש×Ŗ גישה לאחהון חיצוני כדי לשנו×Ŗ א×Ŗ ×Ŗיקיי×Ŗ הנ×Ŗונים</string>
+ <string name="create_folder_msg">ליצו×Ø ×Ŗיקייה חדשה בשם ā€ž%1$sā€?</string>
+ <string name="create_folder_success">נוצ×Øה ×Ŗיקייה חדשה</string>
+ <string name="create_folder_error_no_write_access">לא ני×Ŗן לכ×Ŗוב ל×Ŗיקייה זו</string>
+ <string name="create_folder_error_already_exists">ה×Ŗיקייה כב×Ø ×§×™×™×ž×Ŗ</string>
+ <string name="create_folder_error">לא ני×Ŗן ליצו×Ø ×Ŗיקייה</string>
+ <string name="folder_does_not_exist_error">ā€ž%1$sā€ לא קיים</string>
+ <string name="folder_not_readable_error">ā€ž%1$sā€ אינו ק×Øיא</string>
+ <string name="folder_not_writable_error">ā€ž%1$sā€ חהום לכ×Ŗיבה</string>
+ <string name="folder_not_empty_dialog_title">ה×Ŗיקייה אינה ×Øיקה</string>
+ <string name="folder_not_empty_dialog_msg">ה×Ŗיקייה שבח×Ø×Ŗ אינה ×Øיקה. הו×Øדו×Ŗ מדיה וקבצים אח×Øים ימוקמו ישי×Øו×Ŗ ב×Ŗיקייה זו. להמשיך בכל זא×Ŗ?</string>
+ <string name="set_to_default_folder">נא לבחו×Ø ×Ŗיקיי×Ŗ ב×Ø×Ø×Ŗ מחדל</string>
+ <string name="pref_pausePlaybackForFocusLoss_sum">השהיי×Ŗ הניגון במקום הנמכ×Ŗ עצמ×Ŗ השמע כאש×Ø ×™×™×©×•×ž×•×Ÿ אח×Ø ×ž×¢×•× ×™×™×Ÿ לנגן צלילים</string>
+ <string name="pref_pausePlaybackForFocusLoss_title">להשהו×Ŗ במהלך הפ×Øעו×Ŗ</string>
+ <string name="pref_resumeAfterCall_sum">להמשיך בנגינה לאח×Ø ×”×©×œ×ž×Ŗ שיח×Ŗ הטלפון</string>
+ <string name="pref_resumeAfterCall_title">להמשיך לאח×Ø ×©×™×—×”</string>
+ <string name="pref_restart_required">יש להפעיל א×Ŗ אנטנה־פּוֹד מחדש כדי שהשינויים ייכנהו ל×Ŗוקף.</string>
<!--Online feed view-->
- <string name="subscribe_label">ה×Øשם</string>
- <string name="subscribed_label">× ×Øשם</string>
+ <string name="subscribe_label">ה×Øשמה</string>
+ <string name="subscribed_label">× ×Øשמ×Ŗ</string>
+ <string name="downloading_label">מ×Ŗבצע×Ŗ הו×Øדהā€¦</string>
<!--Content descriptions for image buttons-->
- <string name="rewind_label">דלג לאחו×Ø</string>
- <string name="fast_forward_label">ה×Øׄ קדימה</string>
+ <string name="rewind_label">חז×Øה לאחו×Ø</string>
+ <string name="fast_forward_label">ה×Øצה קדימה</string>
<string name="media_type_audio_label">שמע</string>
<string name="media_type_video_label">וידאו</string>
- <string name="navigate_upwards_label">נווט למעלה</string>
+ <string name="navigate_upwards_label">ניווט כלפי מעלה</string>
<string name="status_downloading_label">הפ×Øק יו×Øד</string>
<string name="in_queue_label">הפ×Øק ב×Ŗו×Ø</string>
<string name="drag_handle_content_description">ג×Øו×Ø ×œ×©×™× ×•×™ מיקום פ×Øיט זה</string>
- <string name="load_next_page_label">טען א×Ŗ הדף הבא</string>
+ <string name="load_next_page_label">טעינ×Ŗ הדף הבא</string>
<!--Feed information screen-->
<string name="authentication_label">אימו×Ŗ</string>
- <string name="authentication_descr">שנה א×Ŗ שם המש×Ŗמש וההיהמה שלך לפודקאהט ופ×Øקים שלו.</string>
+ <string name="authentication_descr">שינוי שם המש×Ŗמש והההמה שלך לפודקאהט הזה ולפ×Øקים שלו.</string>
+ <string name="auto_download_settings_label">הגד×Øו×Ŗ הו×Øדה אוטומטי×Ŗ</string>
+ <string name="episode_filters_label">מהנן פ×Øקים</string>
+ <string name="episode_filters_description">×Øשימ×Ŗ המונחים בהם יעשה שימוש כדי להחליט אם להכליל או להח×Øיג פ×Øק כלשהו במהלך הו×Øדה אוטומטי×Ŗ</string>
+ <string name="episode_filters_include">להכליל</string>
+ <string name="episode_filters_exclude">להח×Øיג</string>
+ <string name="episode_filters_hint">מילים בודדו×Ŗ \n\"אוהף מילים\"</string>
+ <string name="keep_updated">לשמו×Ø ×¢×œ עדכניו×Ŗ</string>
<!--Progress information-->
+ <string name="progress_upgrading_database">מהד הנ×Ŗונים מש×Ŗד×Øג</string>
<!--AntennaPodSP-->
- <string name="sp_apps_importing_feeds_msg">מייבא ×Øישום מאפליקציו×Ŗ יעודיו×Ŗ...</string>
- <string name="search_itunes_label">חפש בiTunes</string>
+ <string name="sp_apps_importing_feeds_msg">מ×Ŗבצע ייבוא מינויים מיישומונים ממוקדי מט×Øהā€¦</string>
+ <string name="search_itunes_label">חיפוש ב־iTunes</string>
+ <string name="filter">מהנן</string>
+ <string name="search_fyyd_label">בחיפוש ב־fyyd</string>
<!--Episodes apply actions-->
+ <string name="all_label">הכול</string>
+ <string name="selected_all_label">בחי×Ø×Ŗ כל הפ×Øקים</string>
+ <string name="none_label">ללא</string>
+ <string name="deselected_all_label">אף פ×Øק לא נבח×Ø</string>
+ <string name="played_label">נוגנו</string>
+ <string name="selected_played_label">בחי×Ø×Ŗ פ×Øקים שנוגנו</string>
+ <string name="unplayed_label">לא נוגנו</string>
+ <string name="selected_unplayed_label">בחי×Ø×Ŗ פ×Øקים שלא נוגנו</string>
+ <string name="downloaded_label">הו×Øדו</string>
+ <string name="selected_downloaded_label">בחי×Ø×Ŗ פ×Øקים שהו×Øדו</string>
+ <string name="not_downloaded_label">לא הו×Øדו</string>
+ <string name="selected_not_downloaded_label">בחי×Ø×Ŗ פ×Øקים שלא הו×Øדו</string>
+ <string name="queued_label">ב×Ŗו×Ø</string>
+ <string name="selected_queued_label">בחי×Ø×Ŗ פ×Øקים ב×Ŗו×Ø</string>
+ <string name="not_queued_label">לא ב×Ŗו×Ø</string>
+ <string name="selected_not_queued_label">בחי×Ø×Ŗ פ×Øטים שאינם ב×Ŗו×Ø</string>
+ <string name="has_media">יש מדיה</string>
+ <string name="selected_has_media_label">בחי×Ø×Ŗ פ×Øקים עם מדיה</string>
<!--Sort-->
+ <string name="sort_title_a_z">כו×Ŗ×Ø×Ŗ (א \u2192 ×Ŗ)</string>
+ <string name="sort_title_z_a">כו×Ŗ×Ø×Ŗ (×Ŗ \u2192 א)</string>
+ <string name="sort_date_new_old">×Ŗא×Øיך (חדש \u2192 ישן)</string>
+ <string name="sort_date_old_new">×Ŗא×Øיך (ישן \u2192 חדש)</string>
+ <string name="sort_duration_short_long">משך (קצ×Ø \u2192 א×Øוך)</string>
+ <string name="sort_duration_long_short">משך (קצ×Ø \u2192 א×Øוך)</string>
<!--Rating dialog-->
- <string name="rating_title">אוהבים א×Ŗ האפליקציה?</string>
+ <string name="rating_title">היישומון אנטנה־פּוֹד נושא חן בעיניך?</string>
+ <string name="rating_message">מאוד נשמח לקבל די×Øוג על אנטנה־פּוֹד אם יש לך זמן לכך.</string>
<string name="rating_never_label">לא ×Ŗודה</string>
<string name="rating_later_label">פעם אח×Ø×Ŗ</string>
- <string name="rating_now_label">בטח!</string>
+ <string name="rating_now_label">בטח, נלך על זה!</string>
<!--Audio controls-->
+ <string name="audio_controls">פקדי שמע</string>
+ <string name="playback_speed">מהי×Øו×Ŗ נגינה</string>
+ <string name="volume">עצמ×Ŗ שמע</string>
+ <string name="left_short">L</string>
+ <string name="right_short">R</string>
+ <string name="audio_effects">אפקטים של שמע</string>
+ <string name="stereo_to_mono">איחוד: הט×Øיאו למונו</string>
+ <string name="sonic_only">Sonic בלבד</string>
<!--proxy settings-->
+ <string name="proxy_type_label">הוג</string>
+ <string name="host_label">מא×Øח</string>
+ <string name="port_label">פ×Ŗחה</string>
+ <string name="optional_hint">(×Øשו×Ŗ)</string>
+ <string name="proxy_test_label">בדיקה</string>
+ <string name="proxy_checking">מ×Ŗבצע×Ŗ בדיקהā€¦</string>
+ <string name="proxy_test_successful">הבדיקה לא הצליחה</string>
+ <string name="proxy_test_failed">הבדיקה נכשלה</string>
+ <string name="proxy_host_empty_error">המא×Øח לא יכול להישא×Ø ×Øיק</string>
+ <string name="proxy_host_invalid_error">כ×Ŗוב×Ŗ המא×Øח אינה כ×Ŗוב×Ŗ IP או שם מ×Ŗחם ×Ŗקניים</string>
+ <string name="proxy_port_invalid_error">הפ×Ŗחה אינה ×Ŗקני×Ŗ</string>
<!--Database import/export-->
+ <string name="import_export">ייבוא/ייצוא מהד × ×Ŗונים</string>
+ <string name="import_export_warning">×Ŗכונה ניהיוני×Ŗ זו יכולה לשמש לטוב×Ŗ העב×Ø×Ŗ המינויים והפ×Øקים שניגנ×Ŗ לה×Ŗקן אח×Ø.\n\nני×Ŗן לייבא מהדי × ×Ŗונים שיוצאו ×Øק לאו×Ŗה הג×Ø×”×” של אנטנה־פּוֹד. אח×Ø×Ŗ, ×Ŗכונה זו עשויה לג×Øו×Ø ×”×Ŗנהגו×Ŗ בל×Ŗי צפויה.\n\nלאח×Ø ×”×™×™×‘×•×, י×Ŗכן שחלק מהפ×Øקים יופיעו כאילו כב×Ø ×”×•×Øד×Ŗ או×Ŗם למ×Øו×Ŗ שבפועל לא עשי×Ŗ זא×Ŗ. עליך פשוט ללחוׄ על כפ×Ŗו×Ø ×”× ×’×™× ×” של הפ×Øקים כדי שאנטנה־פּוֹד יוכל לזהו×Ŗ זא×Ŗ.</string>
+ <string name="label_import">ייבוא</string>
+ <string name="label_export">ייצוא</string>
+ <string name="import_select_file">בחי×Ø×Ŗ קובׄ לייבוא</string>
+ <string name="export_ok">הייצוא הצליח.</string>
+ <string name="import_ok">הייבוא הצליח.\n\nנא ללחוׄ על אישו×Ø ×›×“×™ להפעיל א×Ŗ אנטנה־פּוֹד מחדש</string>
<!--Casting-->
+ <string name="cast_media_route_menu_title">ניגון ד×Øךā€¦</string>
+ <string name="cast_disconnect_label">ני×Ŗוק השידו×Ø</string>
+ <string name="cast_not_castable">המדיה הנבח×Ø×Ŗ אינה ×Ŗואמ×Ŗ לה×Ŗקן שידו×Ø</string>
+ <string name="cast_failed_to_play">ה×Ŗחל×Ŗ נגינ×Ŗ המדיה נכשלה</string>
+ <string name="cast_failed_to_stop">עצי×Ø×Ŗ נגינ×Ŗ המדיה נכשלה</string>
+ <string name="cast_failed_to_pause">השהיי×Ŗ נגינ×Ŗ המדיה נכשלה</string>
<!--<string name="cast_failed_to_connect">Could not connect to the device</string>-->
+ <string name="cast_failed_setting_volume">הגד×Ø×Ŗ עצמ×Ŗ השמע נכשלה</string>
+ <string name="cast_failed_no_connection">אין חיבו×Ø ×œ×”×Ŗקן שידו×Ø</string>
+ <string name="cast_failed_no_connection_trans">החיבו×Ø ×œ×”×Ŗקן שידו×Ø ××‘×“. היישומון מנהה לה×Ŗחב×Ø ×©×•×‘, אם ני×Ŗן. נא להמ×Ŗין מהפ×Ø ×©× ×™×•×Ŗ ואז לנהו×Ŗ שוב.</string>
+ <string name="cast_failed_perform_action">ביצוע הפעולה נכשל</string>
+ <string name="cast_failed_status_request">×”×”× ×›×Øון עם ה×Ŗקן השידו×Ø × ×›×©×œ</string>
+ <string name="cast_failed_seek">ההקפצה למיקום נגינה אח×Ø ×‘×”×Ŗקן השידו×Ø × ×›×©×œ×”</string>
+ <string name="cast_failed_receiver_player_error">הנגן המקבל × ×Ŗקל בשגיאה חמו×Øה</string>
+ <string name="cast_failed_media_error_skipping">שגיאה בנגינ×Ŗ המדיה. מ×Ŗבצע דילוגā€¦</string>
+ <!--Notification channels-->
</resources>
diff --git a/core/src/main/res/values-ja/strings.xml b/core/src/main/res/values-ja/strings.xml
index c5ea6357f..566817243 100644
--- a/core/src/main/res/values-ja/strings.xml
+++ b/core/src/main/res/values-ja/strings.xml
@@ -1,11 +1,13 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources xmlns:tools="http://schemas.android.com/tools">
<!--Activitiy and fragment titles-->
+ <string name="feed_update_receiver_name">č³¼čŖ­ć‚’ꛓꖰ</string>
<string name="feeds_label">ćƒ•ć‚£ćƒ¼ćƒ‰</string>
<string name="statistics_label">ēµ±čØˆęƒ…å ±</string>
<string name="add_feed_label">ćƒ•ć‚£ćƒ¼ćƒ‰ć‚’čæ½åŠ </string>
<string name="episodes_label">ć‚Øćƒ”ć‚½ćƒ¼ćƒ‰</string>
<string name="all_episodes_short_label">ć™ć¹ć¦</string>
+ <string name="new_episodes_label">ę–°č¦</string>
<string name="favorite_episodes_label">ćŠę°—ć«å…„ć‚Š</string>
<string name="new_label">ꖰ</string>
<string name="settings_label">čح定</string>
@@ -18,10 +20,12 @@
<string name="cancel_download_label">ćƒ€ć‚¦ćƒ³ćƒ­ćƒ¼ćƒ‰ć‚’ć‚­ćƒ£ćƒ³ć‚»ćƒ«</string>
<string name="playback_history_label">再ē”Ÿå±„ę­“</string>
<string name="gpodnet_main_label">gpodder.net</string>
+ <string name="gpodnet_summary">ä»–ć®ćƒ‡ćƒć‚¤ć‚¹ćØåŒęœŸ</string>
<string name="gpodnet_auth_label">gpodder.net ćƒ­ć‚°ć‚¤ćƒ³</string>
<string name="free_space_label">%1$s ē©ŗ恍</string>
<string name="episode_cache_full_title">ć‚Øćƒ”ć‚½ćƒ¼ćƒ‰ć‚­ćƒ£ćƒƒć‚·ćƒ„ćŒäø€ęÆ恧恙</string>
<string name="episode_cache_full_message">ć‚Øćƒ”ć‚½ćƒ¼ćƒ‰ć‚­ćƒ£ćƒƒć‚·ćƒ„ćŒåˆ¶é™ć«é”ć—ć¾ć—ćŸć€‚čØ­å®šć§ć‚­ćƒ£ćƒƒć‚·ćƒ„ć‚µć‚¤ć‚ŗć‚’å¢—ć‚„ć™ć“ćØćŒć§ćć¾ć™ć€‚</string>
+ <string name="synchronizing">åŒęœŸć—ć¦ć„ć¾ć™ā€¦</string>
<!--Statistics fragment-->
<string name="total_time_listened_to_podcasts">ćƒćƒƒćƒ‰ć‚­ćƒ£ć‚¹ćƒˆć‚’å†ē”Ÿć—ćŸåˆčØˆę™‚é–“:</string>
<string name="statistics_details_dialog">%2$d 恋悉 %1$d 恮ć‚Øćƒ”ć‚½ćƒ¼ćƒ‰ćŒé–‹å§‹ć—ć¾ć—ćŸć€‚\n\n%4$s 恋悉%3$s ć‚’å†ē”Ÿć—ć¾ć—ćŸć€‚</string>
@@ -63,6 +67,7 @@
<string name="cover_label">ę˜ åƒ</string>
<string name="error_label">ć‚Øćƒ©ćƒ¼</string>
<string name="error_msg_prefix">ć‚Øćƒ©ćƒ¼ćŒē™ŗē”Ÿć—ć¾ć—ćŸć€‚</string>
+ <string name="needs_storage_permission">ć“ć®ę“ä½œć«ćÆć‚¹ćƒˆćƒ¬ćƒ¼ć‚øć®ć‚¢ć‚Æć‚»ć‚¹čرåÆ恌åæ…要恧恙</string>
<string name="refresh_label">ꛓꖰ</string>
<string name="external_storage_error_msg">外éƒØć‚¹ćƒˆćƒ¬ćƒ¼ć‚øćŒåˆ©ē”Øć§ćć¾ć›ć‚“ć€‚ć‚¢ćƒ—ćƒŖćŒę­£åøøć«å‹•ä½œć§ćć‚‹ć‚ˆć†ć«ć€å¤–éƒØć‚¹ćƒˆćƒ¬ćƒ¼ć‚øćŒćƒžć‚¦ćƒ³ćƒˆć•ć‚Œć¦ć„ć‚‹ć“ćØ悒ē¢ŗčŖć—ć¦ćć ć•ć„ć€‚</string>
<string name="chapters_label">ćƒćƒ£ćƒ—ć‚æćƒ¼</string>
@@ -104,25 +109,28 @@
<string name="mark_all_read_label">ć™ć¹ć¦å†ē”ŸęøˆćØć—ć¦ćƒžćƒ¼ć‚Æ</string>
<string name="mark_all_read_msg">ć™ć¹ć¦ć®ć‚Øćƒ”ć‚½ćƒ¼ćƒ‰ć‚’å†ē”Ÿęøˆć«ć—ć¾ć—ćŸ</string>
<string name="mark_all_read_confirmation_msg">再ē”ŸęøˆćØć—ć¦ćƒžćƒ¼ć‚Æć™ć‚‹ć™ć¹ć¦ć®ć‚Øćƒ”ć‚½ćƒ¼ćƒ‰ć‚’ē¢ŗčŖć—ć¦ćć ć•ć„ć€‚</string>
- <string name="mark_all_read_feed_confirmation_msg">再ē”ŸęøˆćØć—ć¦ćƒžćƒ¼ć‚Æć™ć‚‹ć“ć®ćƒ•ć‚£ćƒ¼ćƒ‰ć®ć™ć¹ć¦ć®ć‚Øćƒ”ć‚½ćƒ¼ćƒ‰ć‚’ē¢ŗčŖć—ć¦ćć ć•ć„ć€‚</string>
+ <string name="mark_all_read_feed_confirmation_msg">再ē”ŸęøˆćØć—ć¦ćƒžćƒ¼ć‚Æć™ć‚‹ć“ć®ćƒćƒƒćƒ‰ć‚­ćƒ£ć‚¹ćƒˆć®ć™ć¹ć¦ć®ć‚Øćƒ”ć‚½ćƒ¼ćƒ‰ć‚’ē¢ŗčŖć—ć¦ćć ć•ć„ć€‚</string>
<string name="mark_all_seen_label">ć™ć¹ć¦å‚ē…§ęøˆćØć—ć¦ćƒžćƒ¼ć‚Æ</string>
<string name="mark_all_seen_msg">ć™ć¹ć¦ć®ć‚Øćƒ”ć‚½ćƒ¼ćƒ‰ć‚’å‚ē…§ęøˆć«ć—ć¾ć—ćŸ</string>
<string name="mark_all_seen_confirmation_msg">参ē…§ęøˆćØć—ć¦ćƒžćƒ¼ć‚Æć™ć‚‹ć™ć¹ć¦ć®ć‚Øćƒ”ć‚½ćƒ¼ćƒ‰ć‚’ē¢ŗčŖć—ć¦ćć ć•ć„ć€‚</string>
<string name="show_info_label">ęƒ…å ±ć‚’č”Øē¤ŗ</string>
+ <string name="show_feed_settings_label">ćƒćƒƒćƒ‰ć‚­ćƒ£ć‚¹ćƒˆčØ­å®šć‚’č”Øē¤ŗ</string>
+ <string name="feed_info_label">ćƒćƒƒćƒ‰ć‚­ćƒ£ć‚¹ćƒˆęƒ…å ±</string>
+ <string name="feed_settings_label">ćƒćƒƒćƒ‰ć‚­ćƒ£ć‚¹ćƒˆčح定</string>
<string name="rename_feed_label">ćƒćƒƒćƒ‰ć‚­ćƒ£ć‚¹ćƒˆć®åå‰ć‚’å¤‰ę›“</string>
<string name="remove_feed_label">ćƒćƒƒćƒ‰ć‚­ćƒ£ć‚¹ćƒˆć‚’å‰Šé™¤</string>
<string name="share_label">å…±ęœ‰ā€¦</string>
- <string name="share_link_label">Webć‚µć‚¤ćƒˆć®ćƒŖćƒ³ć‚Æć‚’å…±ęœ‰</string>
+ <string name="share_link_label">ć‚Øćƒ”ć‚½ćƒ¼ćƒ‰ URLć‚’å…±ęœ‰</string>
+ <string name="share_link_with_position_label">ć‚Øćƒ”ć‚½ćƒ¼ćƒ‰ URL ć‚’ä½ē½®ćØå…±ć«å…±ęœ‰</string>
<string name="share_file_label">ćƒ•ć‚”ć‚¤ćƒ«ć‚’å…±ęœ‰</string>
- <string name="share_link_with_position_label">å “ę‰€ćØćƒŖćƒ³ć‚Æć‚’å…±ęœ‰</string>
<string name="share_feed_url_label">ćƒ•ć‚£ćƒ¼ćƒ‰ URLć‚’å…±ęœ‰</string>
- <string name="share_item_url_label">ć‚Øćƒ”ć‚½ćƒ¼ćƒ‰ćƒ•ć‚”ć‚¤ćƒ« URLć‚’å…±ęœ‰</string>
- <string name="share_item_url_with_position_label">ć‚Øćƒ”ć‚½ćƒ¼ćƒ‰ćƒ•ć‚”ć‚¤ćƒ« URL ć‚’ä½ē½®ćØå…±ć«å…±ęœ‰</string>
- <string name="feed_delete_confirmation_msg">ćƒ•ć‚£ćƒ¼ćƒ‰ \"%1$s\" ćØć€ć“ć®ćƒ•ć‚£ćƒ¼ćƒ‰ć®ć™ć¹ć¦ć®ćƒ€ć‚¦ćƒ³ćƒ­ćƒ¼ćƒ‰ć—ćŸć‚Øćƒ”ć‚½ćƒ¼ćƒ‰ć‚’å‰Šé™¤ć™ć‚‹ć“ćØ悒ē¢ŗčŖć—ć¦ćć ć•ć„ć€‚</string>
- <string name="feed_remover_msg">ćƒ•ć‚£ćƒ¼ćƒ‰ć®å‰Šé™¤äø­</string>
- <string name="load_complete_feed">ćƒ•ć‚£ćƒ¼ćƒ‰ć‚’ć™ć¹ć¦ę›“ę–°</string>
+ <string name="share_item_url_label">ćƒ”ćƒ‡ć‚£ć‚¢ćƒ•ć‚”ć‚¤ćƒ« URLć‚’å…±ęœ‰</string>
+ <string name="share_item_url_with_position_label">ćƒ”ćƒ‡ć‚£ć‚¢ćƒ•ć‚”ć‚¤ćƒ« URL ć‚’ä½ē½®ćØå…±ć«å…±ęœ‰</string>
+ <string name="feed_delete_confirmation_msg">ćƒćƒƒćƒ‰ć‚­ćƒ£ć‚¹ćƒˆ \"%1$s\" ćØć™ć¹ć¦ć®ļ¼ˆćƒ€ć‚¦ćƒ³ćƒ­ćƒ¼ćƒ‰ęøˆć‚’å«ć‚€ļ¼‰ć‚Øćƒ”ć‚½ćƒ¼ćƒ‰ć‚’å‰Šé™¤ć™ć‚‹ć“ćØ悒ē¢ŗčŖć—ć¦ćć ć•ć„ć€‚</string>
+ <string name="feed_remover_msg">ćƒćƒƒćƒ‰ć‚­ćƒ£ć‚¹ćƒˆć‚’å‰Šé™¤ć—ć¦ć„ć¾ć™</string>
+ <string name="load_complete_feed">ćƒćƒƒćƒ‰ć‚­ćƒ£ć‚¹ćƒˆć‚’ć™ć¹ć¦ę›“ę–°</string>
<string name="hide_episodes_title">ć‚Øćƒ”ć‚½ćƒ¼ćƒ‰ć‚’éžč”Øē¤ŗ恫恙悋</string>
- <string name="episode_actions">ę“ä½œć‚’é©ē”Ø</string>
+ <string name="batch_edit">äø€ę‹¬ē·Ø集</string>
<string name="hide_unplayed_episodes_label">ęœŖ再ē”Ÿ</string>
<string name="hide_paused_episodes_label">äø€ę™‚åœę­¢ć—ć¾ć—ćŸ</string>
<string name="hide_played_episodes_label">再ē”Ÿć—ć¾ć—ćŸ</string>
@@ -131,6 +139,7 @@
<string name="hide_downloaded_episodes_label">ćƒ€ć‚¦ćƒ³ćƒ­ćƒ¼ćƒ‰ć—ć¾ć—ćŸ</string>
<string name="hide_not_downloaded_episodes_label">ćƒ€ć‚¦ćƒ³ćƒ­ćƒ¼ćƒ‰ć—ć¦ć„ć¾ć›ć‚“</string>
<string name="hide_has_media_label">ćƒ”ćƒ‡ć‚£ć‚¢ć‚ć‚Š</string>
+ <string name="hide_is_favorite_label">ćŠę°—ć«å…„ć‚Š</string>
<string name="filtered_label">ćƒ•ć‚£ćƒ«ć‚æćƒ¼ć—ć¾ć—ćŸ</string>
<string name="refresh_failed_msg">{fa-exclamation-circle} å‰å›žę›“ę–°ć«å¤±ę•—ć—ć¾ć—ćŸ</string>
<string name="open_podcast">ćƒćƒƒćƒ‰ć‚­ćƒ£ć‚¹ćƒˆć‚’é–‹ć</string>
@@ -144,6 +153,7 @@
<string name="delete_label">削除</string>
<string name="delete_failed">ćƒ•ć‚”ć‚¤ćƒ«ć‚’å‰Šé™¤ć§ćć¾ć›ć‚“ć€‚ćƒ‡ćƒć‚¤ć‚¹ć‚’å†čµ·å‹•ć—ć¦ćæć¦ćć ć•ć„ć€‚</string>
<string name="remove_episode_lable">ć‚Øćƒ”ć‚½ćƒ¼ćƒ‰ć‚’å‰Šé™¤</string>
+ <string name="mark_as_seen_label">参ē…§ęøˆ</string>
<string name="marked_as_seen_label">参ē…§ęøˆćØć—ć¦ćƒžćƒ¼ć‚Æ</string>
<string name="mark_read_label">再ē”ŸęøˆćØć—ć¦ćƒžćƒ¼ć‚Æ</string>
<string name="marked_as_read_label">再ē”ŸęøˆćØć—ć¦ćƒžćƒ¼ć‚Æć—ć¾ć—ćŸ</string>
@@ -167,6 +177,8 @@
<string name="download_failed">å¤±ę•—</string>
<string name="download_pending">ćƒ€ć‚¦ćƒ³ćƒ­ćƒ¼ćƒ‰ćÆäæē•™äø­</string>
<string name="download_running">ćƒ€ć‚¦ćƒ³ćƒ­ćƒ¼ćƒ‰å®Ÿč”Œäø­</string>
+ <string name="download_error_details">č©³ē“°</string>
+ <string name="download_error_details_message">%1$s \n\nćƒ•ć‚”ć‚¤ćƒ« URL:\n%2$s</string>
<string name="download_error_device_not_found">ć‚¹ćƒˆćƒ¬ćƒ¼ć‚ø ćƒ‡ćƒć‚¤ć‚¹ćŒč¦‹ć¤ć‹ć‚Šć¾ć›ć‚“</string>
<string name="download_error_insufficient_space">ć‚¹ćƒšćƒ¼ć‚¹ćŒäøč¶³ć—ć¦ć„ć¾ć™</string>
<string name="download_error_file_error">ćƒ•ć‚”ć‚¤ćƒ«ć‚Øćƒ©ćƒ¼</string>
@@ -216,6 +228,7 @@
<string name="playback_error_unknown">äøę˜ŽćŖć‚Øćƒ©ćƒ¼</string>
<string name="no_media_playing_label">再ē”Ÿć™ć‚‹ćƒ”ćƒ‡ć‚£ć‚¢ćŒć‚ć‚Šć¾ć›ć‚“</string>
<string name="player_buffering_msg">ćƒćƒƒćƒ•ć‚”ćƒ¼äø­</string>
+ <string name="player_go_to_picture_in_picture">惔ć‚Æćƒćƒ£-ć‚¤ćƒ³-惔ć‚Æćƒćƒ£ ćƒ¢ćƒ¼ćƒ‰</string>
<string name="playbackservice_notification_title">ćƒćƒƒćƒ‰ć‚­ćƒ£ć‚¹ćƒˆć‚’å†ē”Ÿäø­</string>
<string name="unknown_media_key">AntennaPod - äøę˜ŽćŖćƒ”ćƒ‡ć‚£ć‚¢ć‚­ćƒ¼: %1$d</string>
<!--Queue operations-->
@@ -232,7 +245,9 @@
<string name="date">ę—„ä»˜</string>
<string name="duration">ē¶™ē¶šę™‚é–“</string>
<string name="episode_title">ć‚Øćƒ”ć‚½ćƒ¼ćƒ‰ ć‚æć‚¤ćƒˆćƒ«</string>
- <string name="feed_title">ćƒ•ć‚£ćƒ¼ćƒ‰ ć‚æć‚¤ćƒˆćƒ«</string>
+ <string name="feed_title">ćƒćƒƒćƒ‰ć‚­ćƒ£ć‚¹ćƒˆć®ć‚æć‚¤ćƒˆćƒ«</string>
+ <string name="random">ćƒ©ćƒ³ćƒ€ćƒ </string>
+ <string name="smart_shuffle">ć‚¹ćƒžćƒ¼ćƒˆć‚·ćƒ£ćƒƒćƒ•ćƒ«</string>
<string name="ascending">ꘇ順</string>
<string name="descending">降順</string>
<string name="clear_queue_confirmation_msg">ć‚ÆćƒŖć‚¢ć™ć‚‹ć€ć‚­ćƒ„ćƒ¼ć«å«ć¾ć‚Œć‚‹ć™ć¹ć¦ć®ć‚Øćƒ”ć‚½ćƒ¼ćƒ‰ć‚’ē¢ŗčŖć—ć¦ćć ć•ć„ć€‚</string>
@@ -270,7 +285,7 @@
<string name="enable_sonic">Sonic ć‚’ęœ‰åŠ¹ć«ć™ć‚‹</string>
<!--Empty list labels-->
<string name="no_items_label">恓恮ćƒŖć‚¹ćƒˆć«ćÆć‚¢ć‚¤ćƒ†ćƒ ćŒć‚ć‚Šć¾ć›ć‚“ć€‚</string>
- <string name="no_feeds_label">ć¾ć ćƒ•ć‚£ćƒ¼ćƒ‰ć‚’ä½•ć‚‚č³¼čŖ­ć—ć¦ć„ć¾ć›ć‚“ć€‚</string>
+ <string name="no_feeds_label">ć¾ć ćƒćƒƒćƒ‰ć‚­ćƒ£ć‚¹ćƒˆć‚’ä½•ć‚‚č³¼čŖ­ć—ć¦ć„ć¾ć›ć‚“ć€‚</string>
<string name="no_chapters_label">恓恮ć‚Øćƒ”ć‚½ćƒ¼ćƒ‰ć«ćƒćƒ£ćƒ—ć‚æćƒ¼ćÆć‚ć‚Šć¾ć›ć‚“ć€‚</string>
<string name="no_shownotes_label">恓恮ć‚Øćƒ”ć‚½ćƒ¼ćƒ‰ć«ć‚·ćƒ§ćƒ¼ćƒŽćƒ¼ćƒˆćÆć‚ć‚Šć¾ć›ć‚“ć€‚</string>
<!--Preferences-->
@@ -279,15 +294,23 @@
<string name="other_pref">ćć®ä»–</string>
<string name="about_pref">恫恤恄恦</string>
<string name="queue_label">ć‚­ćƒ„ćƒ¼</string>
- <string name="services_label">ć‚µćƒ¼ćƒ“ć‚¹</string>
+ <string name="integrations_label">ēµ±åˆ</string>
<string name="flattr_label">Flattr</string>
+ <string name="flattr_summary">惞悤ć‚Æćƒ­ćƒšć‚¤ćƒ”ćƒ³ćƒˆ ć‚µćƒ¼ćƒ“ć‚¹</string>
+ <string name="automation">č‡Ŗ動</string>
+ <string name="download_pref_details">č©³ē“°</string>
+ <string name="import_export_pref">ć‚¤ćƒ³ćƒćƒ¼ćƒˆ/ć‚Øć‚Æć‚¹ćƒćƒ¼ćƒˆ</string>
+ <string name="appearance">å¤–č¦³</string>
+ <string name="external_elements">外éƒØ要ē“ </string>
+ <string name="interruptions">å‰²ć‚Šč¾¼ćæ</string>
+ <string name="buttons">再ē”Ÿć‚³ćƒ³ćƒˆćƒ­ćƒ¼ćƒ«ćƒœć‚æćƒ³</string>
+ <string name="media_player">ćƒ”ćƒ‡ć‚£ć‚¢ćƒ—ćƒ¬ćƒ¼ćƒ¤ćƒ¼</string>
<string name="pref_episode_cleanup_title">ć‚Øćƒ”ć‚½ćƒ¼ćƒ‰ ć‚ÆćƒŖćƒ¼ćƒ³ć‚¢ćƒƒćƒ—</string>
<string name="pref_episode_cleanup_summary">ć‚­ćƒ„ćƒ¼ć«å«ć¾ć‚Œć¦ćŠć‚‰ćšć€ćŠę°—ć«å…„ć‚Šć§ćÆćŖ恄ć‚Øćƒ”ć‚½ćƒ¼ćƒ‰ćÆ态č‡Ŗå‹•ćƒ€ć‚¦ćƒ³ćƒ­ćƒ¼ćƒ‰ć§ę–°ć—ć„ć‚Øćƒ”ć‚½ćƒ¼ćƒ‰ć®ćŸć‚ć«ć‚¹ćƒšćƒ¼ć‚¹ćŒåæ…要ćŖå “åˆć€é™¤åŽ»ć®åÆ¾č±”ć«ćŖć‚Šć¾ć™</string>
<string name="pref_pauseOnDisconnect_sum">ćƒ˜ćƒƒćƒ‰ćƒ•ć‚©ćƒ³ć¾ćŸćÆBluetooth恮ꎄē¶šćŒåˆ‡ę–­ć•ć‚ŒćŸę™‚ć€å†ē”Ÿć‚’äø€ę™‚åœę­¢ć—ć¾ć™</string>
<string name="pref_unpauseOnHeadsetReconnect_sum">ćƒ˜ćƒƒćƒ‰ćƒ•ć‚©ćƒ³ćŒå†ęŽ„ē¶šć•ć‚ŒćŸę™‚ć«å†ē”Ÿć‚’å†é–‹ć—ć¾ć™</string>
<string name="pref_unpauseOnBluetoothReconnect_sum">BluetoothćŒå†ęŽ„ē¶šć•ć‚ŒćŸę™‚ć«å†ē”Ÿć‚’å†é–‹ć—ć¾ć™</string>
<string name="pref_hardwareForwardButtonSkips_title">ę—©é€ć‚Šćƒœć‚æćƒ³ć§ć‚¹ć‚­ćƒƒćƒ—</string>
- <string name="pref_hardwareForwardButtonSkips_sum">ćƒćƒ¼ćƒ‰ć‚¦ć‚§ć‚¢ć®ę—©é€ć‚Šćƒœć‚æćƒ³ć‚’ęŠ¼ć—ćŸćØćć«ć€ę—©é€ć‚Šć®ä»£ć‚ć‚Šć«ę¬”ć®ć‚Øćƒ”ć‚½ćƒ¼ćƒ‰ć«ć‚¹ć‚­ćƒƒćƒ—ć—ć¾ć™</string>
<string name="pref_hardwarePreviousButtonRestarts_title">ęˆ»ć‚‹ćƒœć‚æćƒ³ć§å†é–‹</string>
<string name="pref_hardwarePreviousButtonRestarts_sum">ćƒćƒ¼ćƒ‰ć‚¦ć‚§ć‚¢ć®ęˆ»ć‚‹ćƒœć‚æćƒ³ć‚’ęŠ¼ć—ćŸćØćć«ć€å·»ćęˆ»ć—ć®ä»£ć‚ć‚Šć«ē¾åœØ恮ć‚Øćƒ”ć‚½ćƒ¼ćƒ‰ć®å†ē”Ÿć‚’å†é–‹ć—ć¾ć™</string>
<string name="pref_followQueue_sum">再ē”ŸćŒå®Œäŗ†ć—ćŸę™‚ć«ę¬”ć®ć‚­ćƒ„ćƒ¼ć®ć‚¢ć‚¤ćƒ†ćƒ ć«ē§»å‹•ć—ć¾ć™</string>
@@ -336,7 +359,7 @@
<string name="pref_nav_drawer_feed_order_title">č³¼čŖ­ę³Øę–‡ć‚’ć‚»ćƒƒćƒˆ</string>
<string name="pref_nav_drawer_feed_order_sum">č³¼čŖ­ć®ę³Øę–‡ć‚’å¤‰ę›“ć—ć¾ć™</string>
<string name="pref_nav_drawer_feed_counter_title">č³¼čŖ­ć‚«ć‚¦ćƒ³ć‚æćƒ¼ć‚’ć‚»ćƒƒćƒˆ</string>
- <string name="pref_nav_drawer_feed_counter_sum">č³¼čŖ­ć‚«ć‚¦ćƒ³ć‚æćƒ¼ć§č”Øē¤ŗć•ć‚Œć‚‹ęƒ…å ±ć‚’å¤‰ę›“ć—ć¾ć™</string>
+ <string name="pref_nav_drawer_feed_counter_sum">č³¼čŖ­ć‚«ć‚¦ćƒ³ć‚æćƒ¼ć«č”Øē¤ŗć•ć‚Œć‚‹ęƒ…å ±ć‚’å¤‰ę›“ć—ć¾ć™ć€‚ \'č³¼čŖ­é †\' 恌 \'ć‚«ć‚¦ćƒ³ć‚æćƒ¼\' 恫čØ­å®šć•ć‚Œć¦ć„ć‚‹å “åˆćÆć€č³¼čŖ­ć®äø¦ć³ę›æćˆć«ć‚‚å½±éŸæć—ć¾ć™ć€‚</string>
<string name="pref_set_theme_sum">AntennaPodć®å¤–č¦³ć‚’å¤‰ę›“ć—ć¾ć™ć€‚</string>
<string name="pref_automatic_download_title">č‡Ŗå‹•ćƒ€ć‚¦ćƒ³ćƒ­ćƒ¼ćƒ‰</string>
<string name="pref_automatic_download_sum">ć‚Øćƒ”ć‚½ćƒ¼ćƒ‰ć®č‡Ŗå‹•ćƒ€ć‚¦ćƒ³ćƒ­ćƒ¼ćƒ‰ć‚’ę§‹ęˆć—ć¾ć™ć€‚</string>
@@ -350,6 +373,7 @@
<string name="pref_episode_cache_title">ć‚Øćƒ”ć‚½ćƒ¼ćƒ‰ć‚­ćƒ£ćƒƒć‚·ćƒ„</string>
<string name="pref_theme_title_light">ćƒ©ć‚¤ćƒˆ</string>
<string name="pref_theme_title_dark">ćƒ€ćƒ¼ć‚Æ</string>
+ <string name="pref_theme_title_trueblack">黒 (AMOLED åƾåæœ)</string>
<string name="pref_episode_cache_unlimited">ē„”制限</string>
<string name="pref_update_interval_hours_plural">Ꙃ間</string>
<string name="pref_update_interval_hours_singular">Ꙃ間</string>
@@ -378,8 +402,6 @@
<string name="pref_rewind_sum">å·»ćęˆ»ć—ćƒœć‚æćƒ³ćŒć‚ÆćƒŖ惃ć‚Æ恕悌恟ćØćć«å¾Œę–¹ć«ć‚øćƒ£ćƒ³ćƒ—ć™ć‚‹ē§’ę•°ć‚’ć‚«ć‚¹ć‚æ惞悤ć‚ŗć—ć¾ć™</string>
<string name="pref_gpodnet_sethostname_title">ćƒ›ć‚¹ćƒˆåć‚’ć‚»ćƒƒćƒˆ</string>
<string name="pref_gpodnet_sethostname_use_default_host">ćƒ‡ćƒ•ć‚©ćƒ«ćƒˆćƒ›ć‚¹ćƒˆć‚’ä½æē”Ø</string>
- <string name="pref_expandNotify_title">ę‹”å¼µé€šēŸ„</string>
- <string name="pref_expandNotify_sum">åøøć«å†ē”Ÿćƒœć‚æćƒ³ć‚’č”Øē¤ŗć™ć‚‹ć‚ˆć†ć«é€šēŸ„ć‚’å±•é–‹ć—ć¾ć™ć€‚</string>
<string name="pref_persistNotify_title">ę°øē¶šå†ē”Ÿć‚³ćƒ³ćƒˆćƒ­ćƒ¼ćƒ«</string>
<string name="pref_persistNotify_sum">再ē”ŸćŒäø€ę™‚åœę­¢ć•ć‚ŒćŸę™‚ć«ć€é€šēŸ„ćŠć‚ˆć³ćƒ­ćƒƒć‚Æē”»é¢ć®ć‚³ćƒ³ćƒˆćƒ­ćƒ¼ćƒ«ć‚’äæęŒć—ć¾ć™ć€‚</string>
<string name="pref_compact_notification_buttons_title">惭惃ć‚Æē”»é¢ćƒœć‚æćƒ³ć‚’čح定</string>
@@ -400,8 +422,7 @@
<string name="crash_report_sum">ćƒ”ćƒ¼ćƒ«ć§ęœ€ę–°ć®ć‚Æćƒ©ćƒƒć‚·ćƒ„ćƒ¬ćƒćƒ¼ćƒˆć‚’é€äæ”ć—ć¾ć™</string>
<string name="send_email">ćƒ”ćƒ¼ćƒ«ć‚’é€äæ”</string>
<string name="experimental_pref">実éؓēš„</string>
- <string name="pref_sonic_title">Sonic ćƒ”ćƒ‡ć‚£ć‚¢ćƒ—ćƒ¬ćƒ¼ćƒ¤ćƒ¼</string>
- <string name="pref_sonic_message">Android ęؙęŗ–ć®ćƒ”ćƒ‡ć‚£ć‚¢ćƒ—ćƒ¬ćƒ¼ćƒ¤ćƒ¼ćØ Prestissimo ć®ä»£ć‚ć‚Šć«ć€å†…č”µć®ć‚½ćƒ‹ćƒƒć‚Æćƒ”ćƒ‡ć‚£ć‚¢ćƒ—ćƒ¬ćƒ¼ćƒ¤ćƒ¼ć‚’ä½æē”Øć—ć¾ć™</string>
+ <string name="pref_media_player_message">ćƒ•ć‚”ć‚¤ćƒ«ć‚’å†ē”Ÿć™ć‚‹ćƒ”ćƒ‡ć‚£ć‚¢ćƒ—ćƒ¬ćƒ¼ćƒ¤ćƒ¼ć‚’éøꊞ</string>
<string name="pref_current_value">ē¾åœØć®å€¤: %1$s</string>
<string name="pref_proxy_title">ćƒ—ćƒ­ć‚­ć‚·</string>
<string name="pref_proxy_sum">惍惃惈ćƒÆćƒ¼ć‚Æ ćƒ—ćƒ­ć‚­ć‚·ć®čح定</string>
@@ -413,6 +434,11 @@
<string name="pref_cast_message_free_flavor">Chromecast ćÆ AntennaPod ć®ć“ć®ćƒćƒ¼ć‚øćƒ§ćƒ³ć§ē„”åŠ¹ć«ćŖć£ć¦ć„ć‚‹ć‚µćƒ¼ćƒ‰ćƒ‘ćƒ¼ćƒ†ć‚£ē‹¬č‡Ŗć®ćƒ©ć‚¤ćƒ–ćƒ©ćƒŖćƒ¼ćŒåæ…要恧恙</string>
<string name="pref_enqueue_downloaded_title">ćƒ€ć‚¦ćƒ³ćƒ­ćƒ¼ćƒ‰ć®ć‚­ćƒ„ćƒ¼ć«å…„ć‚Œć‚‹</string>
<string name="pref_enqueue_downloaded_summary">ćƒ€ć‚¦ćƒ³ćƒ­ćƒ¼ćƒ‰ć—ćŸć‚Øćƒ”ć‚½ćƒ¼ćƒ‰ć‚’ć‚­ćƒ„ćƒ¼ć«čæ½åŠ ć—ć¾ć™</string>
+ <string name="media_player_builtin">ćƒ“ćƒ«ćƒˆć‚¤ćƒ³ Android ćƒ—ćƒ¬ćƒ¼ćƒ¤ćƒ¼</string>
+ <string name="pref_videoBehavior_title">惓惇ć‚Ŗēµ‚äŗ†ę™‚</string>
+ <string name="pref_videoBehavior_sum">惓惇ć‚Ŗ再ē”Ÿć‹ć‚‰é·ē§»ę™‚ć®å‹•ä½œ</string>
+ <string name="stop_playback">再ē”Ÿåœę­¢</string>
+ <string name="continue_playback">éŸ³å£°ć®å†ē”Ÿć‚’ē¶šć‘ć‚‹</string>
<!--Auto-Flattr dialog-->
<string name="auto_flattr_enable">č‡Ŗ動Flattrć‚’ęœ‰åŠ¹ć«ć™ć‚‹</string>
<string name="auto_flattr_after_percent">%d ļ¼…再ē”Ÿć—ćŸć‚‰ć‚Øćƒ”ć‚½ćƒ¼ćƒ‰ć‚’Flattr </string>
@@ -423,7 +449,7 @@
<string name="found_in_shownotes_label">ć‚·ćƒ§ćƒ¼ćƒŽćƒ¼ćƒˆć§č¦‹ć¤ć‹ć‚Šć¾ć—ćŸ</string>
<string name="found_in_chapters_label">ćƒćƒ£ćƒ—ć‚æćƒ¼ć§č¦‹ć¤ć‹ć‚Šć¾ć—ćŸ</string>
<string name="found_in_authors_label">ä½œč€…ć§č¦‹ć¤ć‹ć‚Šć¾ć—ćŸ</string>
- <string name="found_in_feeds_label">ćƒ•ć‚£ćƒ¼ćƒ‰ć§č¦‹ć¤ć‹ć‚Šć¾ć—ćŸ</string>
+ <string name="found_in_feeds_label">ćƒćƒƒćƒ‰ć‚­ćƒ£ć‚¹ćƒˆć§č¦‹ć¤ć‹ć‚Šć¾ć—ćŸ</string>
<string name="search_status_no_results">č¦‹ć¤ć‹ć‚Šć¾ć›ć‚“ć§ć—ćŸ</string>
<string name="search_label">ꤜē“¢</string>
<string name="found_in_title_label">ć‚æć‚¤ćƒˆćƒ«ć§č¦‹ć¤ć‹ć‚Šć¾ć—ćŸ</string>
@@ -449,8 +475,8 @@
<string name="html_export_label">HTML ć‚Øć‚Æć‚¹ćƒćƒ¼ćƒˆ</string>
<string name="exporting_label">ć‚Øć‚Æć‚¹ćƒćƒ¼ćƒˆäø­ā€¦</string>
<string name="export_error_label">ć‚Øć‚Æć‚¹ćƒćƒ¼ćƒˆć‚Øćƒ©ćƒ¼</string>
- <string name="opml_export_success_title">OPML悒ć‚Øć‚Æć‚¹ćƒćƒ¼ćƒˆć—ć¾ć—ćŸć€‚</string>
- <string name="opml_export_success_sum">.opml ćƒ•ć‚”ć‚¤ćƒ«ć‚’ę›øćč¾¼ćæć¾ć—ćŸ:\u0020</string>
+ <string name="export_success_title">ć‚Øć‚Æć‚¹ćƒćƒ¼ćƒˆć—ć¾ć—ćŸ</string>
+ <string name="export_success_sum">ć‚Øć‚Æć‚¹ćƒćƒ¼ćƒˆć—ćŸćƒ•ć‚”ć‚¤ćƒ«ć‚’ę›øćč¾¼ćæć¾ć—ćŸ:\n\n%1$s</string>
<string name="opml_import_ask_read_permission">OPML ćƒ•ć‚”ć‚¤ćƒ«ć‚’čŖ­ćæč¾¼ć‚€ćŸć‚ć«ć€å¤–éƒØć‚¹ćƒˆćƒ¬ćƒ¼ć‚øćøć®ć‚¢ć‚Æć‚»ć‚¹ćŒåæ…要恧恙</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">ć‚¹ćƒŖćƒ¼ćƒ—ć‚æć‚¤ćƒžćƒ¼ć‚’ć‚»ćƒƒćƒˆ</string>
@@ -620,7 +646,7 @@
<string name="label_import">ć‚¤ćƒ³ćƒćƒ¼ćƒˆ</string>
<string name="label_export">ć‚Øć‚Æć‚¹ćƒćƒ¼ćƒˆ</string>
<string name="import_select_file">ć‚¤ćƒ³ćƒćƒ¼ćƒˆć™ć‚‹ćƒ•ć‚”ć‚¤ćƒ«ć‚’éøęŠžć—ć¦ćć ć•ć„</string>
- <string name="export_ok">ć‚Øć‚Æć‚¹ćƒćƒ¼ćƒˆćŒęˆåŠŸć—ć¾ć—ćŸć€‚ćƒ‡ćƒ¼ć‚æćƒ™ćƒ¼ć‚¹ćÆSDć‚«ćƒ¼ćƒ‰ć«ę›øćč¾¼ć¾ć‚Œć¾ć—ćŸć€‚</string>
+ <string name="export_ok">ć‚Øć‚Æć‚¹ćƒćƒ¼ćƒˆć—ć¾ć—ćŸć€‚</string>
<string name="import_ok">ć‚¤ćƒ³ćƒćƒ¼ćƒˆćŒęˆåŠŸć—ć¾ć—ćŸć€‚\n\nOKć‚’ęŠ¼ć—ć¦AntennaPodć‚’å†čµ·å‹•ć—ć¦ćć ć•ć„ć€‚</string>
<!--Casting-->
<string name="cast_media_route_menu_title">ā€¦ć§å†ē”Ÿ</string>
@@ -638,4 +664,13 @@
<string name="cast_failed_seek">ć‚­ćƒ£ć‚¹ćƒˆćƒ‡ćƒć‚¤ć‚¹ć®ę–°ć—ć„ä½ē½®ćø恮ē§»å‹•ć«å¤±ę•—ć—ć¾ć—ćŸ</string>
<string name="cast_failed_receiver_player_error">ćƒ¬ć‚·ćƒ¼ćƒćƒ¼ćƒ—ćƒ¬ćƒ¼ćƒ¤ćƒ¼ć§ę·±åˆ»ćŖć‚Øćƒ©ćƒ¼ćŒē™ŗē”Ÿć—ć¾ć—ćŸ</string>
<string name="cast_failed_media_error_skipping">ćƒ”ćƒ‡ć‚£ć‚¢ć®å†ē”Ÿę™‚恫ć‚Øćƒ©ćƒ¼ćŒē™ŗē”Ÿć—ć¾ć—ćŸć€‚ć‚¹ć‚­ćƒƒćƒ—ć—ć¦ć„ć¾ć™ā€¦</string>
+ <!--Notification channels-->
+ <string name="notification_channel_user_action">ę“ä½œćŒåæ…要</string>
+ <string name="notification_channel_user_action_description">恟ćØćˆć°ćƒ‘ć‚¹ćƒÆćƒ¼ćƒ‰ć‚’å…„åŠ›ć™ć‚‹åæ…č¦ćŒć‚ć‚‹å “合ćŖć©ć€ę“ä½œćŒåæ…要ćŖå “åˆć«č”Øē¤ŗć•ć‚Œć¾ć™ć€‚</string>
+ <string name="notification_channel_downloading">ćƒ€ć‚¦ćƒ³ćƒ­ćƒ¼ćƒ‰äø­</string>
+ <string name="notification_channel_downloading_description">ē¾åœØć®ćƒ€ć‚¦ćƒ³ćƒ­ćƒ¼ćƒ‰ćŒč”Øē¤ŗć•ć‚Œć¾ć™ć€‚</string>
+ <string name="notification_channel_playing">ē¾åœØ再ē”Ÿäø­</string>
+ <string name="notification_channel_playing_description">再ē”Ÿć‚’ć‚³ćƒ³ćƒˆćƒ­ćƒ¼ćƒ«ć§ćć¾ć™ć€‚ć“ć‚ŒćÆćƒćƒƒćƒ‰ć‚­ćƒ£ć‚¹ćƒˆå†ē”Ÿäø­ć®ćƒ”ć‚¤ćƒ³é€šēŸ„恧恙怂</string>
+ <string name="notification_channel_error">ć‚Øćƒ©ćƒ¼</string>
+ <string name="notification_channel_error_description">ćƒ€ć‚¦ćƒ³ćƒ­ćƒ¼ćƒ‰ć‚„ gpodder ć®åŒęœŸć«å¤±ę•—ć—ćŸå “åˆćŖć©ć€ä½•ć‹å•é”ŒćŒē™ŗē”Ÿć—ćŸå “åˆć«č”Øē¤ŗć•ć‚Œć¾ć™ć€‚</string>
</resources>
diff --git a/core/src/main/res/values-kn-rIN/strings.xml b/core/src/main/res/values-kn-rIN/strings.xml
index f62c6b2de..14ccf4e42 100644
--- a/core/src/main/res/values-kn-rIN/strings.xml
+++ b/core/src/main/res/values-kn-rIN/strings.xml
@@ -101,4 +101,5 @@
<!--Database import/export-->
<!--Casting-->
<!--<string name="cast_failed_to_connect">Could not connect to the device</string>-->
+ <!--Notification channels-->
</resources>
diff --git a/core/src/main/res/values-ko-rKR/strings.xml b/core/src/main/res/values-ko-rKR/strings.xml
index acf3abe75..2d9481b84 100644
--- a/core/src/main/res/values-ko-rKR/strings.xml
+++ b/core/src/main/res/values-ko-rKR/strings.xml
@@ -36,4 +36,5 @@
<!--Database import/export-->
<!--Casting-->
<!--<string name="cast_failed_to_connect">Could not connect to the device</string>-->
+ <!--Notification channels-->
</resources>
diff --git a/core/src/main/res/values-ko/strings.xml b/core/src/main/res/values-ko/strings.xml
index a3ec4de96..c776885ea 100644
--- a/core/src/main/res/values-ko/strings.xml
+++ b/core/src/main/res/values-ko/strings.xml
@@ -122,7 +122,6 @@
<string name="feed_remover_msg">ķ”¼ė“œ ģ‚­ģ œķ•˜ėŠ” ģ¤‘</string>
<string name="load_complete_feed">ģ „ģ²“ ķ”¼ė“œ ģƒˆė”œź³ ģ¹Ø</string>
<string name="hide_episodes_title">ģ—ķ”¼ģ†Œė“œ ź°ģ¶”źø°</string>
- <string name="episode_actions">ė™ģž‘ ģ ģš©</string>
<string name="hide_unplayed_episodes_label">ģž¬ģƒ ģ•ˆ ķ•Ø</string>
<string name="hide_paused_episodes_label">ģ¼ģ‹œ ģ¤‘ģ§€</string>
<string name="hide_played_episodes_label">ģž¬ģƒķ•Ø</string>
@@ -167,6 +166,8 @@
<string name="download_failed">ģ‹¤ķŒØ</string>
<string name="download_pending">ė‹¤ģš“ė”œė“œ ģ§€ģ—° ģ¤‘</string>
<string name="download_running">ė‹¤ģš“ė”œė“œ ģ‹¤ķ–‰ ģ¤‘</string>
+ <string name="download_error_details">ģžģ„øķžˆ</string>
+ <string name="download_error_details_message">%1$s \n\nķŒŒģ¼ URL:\n%2$s</string>
<string name="download_error_device_not_found">ģ €ģž„ ģž„ģ¹˜ź°€ ģ—†ģŠµė‹ˆė‹¤</string>
<string name="download_error_insufficient_space">ģ €ģž„ ź³µź°„ģ“ ė¶€ģ”±ķ•©ė‹ˆė‹¤</string>
<string name="download_error_file_error">ķŒŒģ¼ ģ˜¤ė„˜</string>
@@ -279,7 +280,6 @@
<string name="other_pref">źø°ķƒ€</string>
<string name="about_pref">ģ •ė³“</string>
<string name="queue_label">ėŒ€źø°ģ—“</string>
- <string name="services_label">ģ„œė¹„ģŠ¤</string>
<string name="flattr_label">Flattr</string>
<string name="pref_episode_cleanup_title">ģ—ķ”¼ģ†Œė“œ ģ •ė¦¬</string>
<string name="pref_episode_cleanup_summary">ėŒ€źø°ģ—“ģ— ģ—†ź³  ģ¦ź²Øģ°¾źø°ģ— ė„£ģ§€ ģ•Šģ€ ģ—ķ”¼ģ†Œė“œėŠ” ģžė™ ė‹¤ģš“ė”œė“œģ—ģ„œ ģƒˆ ģ—ķ”¼ģ†Œė“œģ— ź³µź°„ģ“ ķ•„ģš”ķ•  ź²½ģš° ģ œź±°ė  ģˆ˜ ģžˆģŠµė‹ˆė‹¤.</string>
@@ -400,8 +400,6 @@
<string name="crash_report_sum">ģµœź·¼ģ˜ ģ“ģƒ ģ¢…ė£Œ ė³“ź³ ģ„œė„¼ ģ“ė©”ģ¼ė”œ ė³“ėƒ…ė‹ˆė‹¤.</string>
<string name="send_email">ģ“ė©”ģ¼ ė³“ė‚“źø°</string>
<string name="experimental_pref">ģ‹¤ķ—˜ģ  źø°ėŠ„</string>
- <string name="pref_sonic_title">ģ†Œė‹‰ ėÆøė””ģ–“ ķ”Œė ˆģ“ģ–“</string>
- <string name="pref_sonic_message">ė‚“ģž„ ģ†Œė‹‰ ėÆøė””ģ–“ ķ”Œė ˆģ“ģ–“ė„¼ ģ•ˆė“œė”œģ“ė“œ ź³ ģœ  ėÆøė””ģ–“ ķ”Œė ˆģ“ģ–“ģ™€ Prestissimo ėŒ€ģ‹  ģ‚¬ģš©ķ•©ė‹ˆė‹¤.</string>
<string name="pref_current_value">ķ˜„ģž¬ ź°’: %1$s</string>
<string name="pref_proxy_title">ķ”„ė”ģ‹œ</string>
<string name="pref_proxy_sum">ė„¤ķŠøģ›Œķ¬ ķ”„ė”ģ‹œ ģ„¤ģ •</string>
@@ -449,8 +447,8 @@
<string name="html_export_label">HTML ė‚“ė³“ė‚“źø°</string>
<string name="exporting_label">ė‚“ė³“ė‚“ėŠ” ģ¤‘ā€¦</string>
<string name="export_error_label">ė‚“ė³“ė‚“źø° ģ˜¤ė„˜</string>
- <string name="opml_export_success_title">OPML ė‚“ė³“ė‚“źø°ź°€ ģ„±ź³µķ–ˆģŠµė‹ˆė‹¤.</string>
- <string name="opml_export_success_sum">OPML ķŒŒģ¼ģ„ ė‹¤ģŒģ— ģ €ģž„ķ–ˆģŠµė‹ˆė‹¤:\u0020</string>
+ <string name="export_success_title">ė‚“ė³“ė‚“źø° ģ„±ź³µ</string>
+ <string name="export_success_sum">ė‚“ė³“ė‚ø ķŒŒģ¼ģ„ ė‹¤ģŒģ— ģ €ģž„ķ–ˆģŠµė‹ˆė‹¤:\n\n%1$s</string>
<string name="opml_import_ask_read_permission">OPML ķŒŒģ¼ģ„ ģ½ģœ¼ė ¤ė©“ ģ™øė¶€ ģ €ģž„ģ†Œ ģ ‘ź·¼ģ“ ķ•„ģš”ķ•©ė‹ˆė‹¤</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">ģ·Øģ¹Ø ķƒ€ģ“ėØø ģ„¤ģ •</string>
@@ -615,6 +613,13 @@
<string name="proxy_host_invalid_error">ķ˜øģŠ¤ķŠøź°€ ģ˜¬ė°”ė„ø IP ģ£¼ģ†Œ ė˜ėŠ” ė„ė©”ģøģ“ ģ•„ė‹™ė‹ˆė‹¤</string>
<string name="proxy_port_invalid_error">ķ¬ķŠøź°€ ģ˜¬ė°”ė„“ģ§€ ģ•ŠģŠµė‹ˆė‹¤</string>
<!--Database import/export-->
+ <string name="import_export">ė°ģ“ķ„°ė² ģ“ģŠ¤ ź°€ģ øģ˜¤źø°/ė‚“ė³“ė‚“źø°</string>
+ <string name="import_export_warning">ģ‹¤ķ—˜ģ ģø źø°ėŠ„ģœ¼ė”œ źµ¬ė… ģ •ė³“ģ™€ ģž¬ģƒķ•œ ģ—ķ”¼ģ†Œė“œ ģ •ė³“ė„¼ ė‹¤ė„ø ģž„ģ¹˜ė”œ ģ˜®źø°ėŠ”ė° ģ‚¬ģš©ķ•©ė‹ˆė‹¤.\n\nė‚“ė³“ė‚ø ė°ģ“ķ„°ė² ģ“ģŠ¤ėŠ” ź°™ģ€ ė²„ģ „ģ˜ ģ•ˆķ…Œė‚˜ķŒŸģ„ ģ‚¬ģš©ķ•  ź²½ģš°ģ—ė§Œ ź°€ģ øģ˜¬ ģˆ˜ ģžˆģŠµė‹ˆė‹¤. ź°™ģ€ ė²„ģ „ģ“ ģ•„ė‹ˆė©“ ģ˜ˆģƒģ¹˜ ėŖ»ķ•˜ź²Œ ė™ģž‘ķ•  ģˆ˜ ģžˆģŠµė‹ˆė‹¤.\n\nź°€ģ øģ˜Ø ķ›„ģ— ė‹¤ģš“ė”œė“œķ•˜ģ§€ ģ•Šģ€ ģ—ķ”¼ģ†Œė“œź°€ ė‹¤ģš“ė”œė“œķ•œ ź²ƒģœ¼ė”œ ķ‘œģ‹œė  ģˆ˜ ģžˆģŠµė‹ˆė‹¤. ź·ø ź²½ģš° ķ•“ė‹¹ ģ—ķ”¼ģ†Œė“œģ˜ ģž¬ģƒ ė²„ķŠ¼ģ„ ėˆ„ė„“ė©“ ģ•ˆķ…Œė‚˜ķŒŸģ—ģ„œ ė‹¤ģš“ė”œė“œ ģ—¬ė¶€ė„¼ ķ™•ģøķ•“ ģ¤ė‹ˆė‹¤.</string>
+ <string name="label_import">ź°€ģ øģ˜¤źø°</string>
+ <string name="label_export">ė‚“ė³“ė‚“źø°</string>
+ <string name="import_select_file">ź°€ģ øģ˜¬ ķŒŒģ¼ģ„ ģ„ ķƒķ•˜ģ‹­ģ‹œģ˜¤</string>
+ <string name="export_ok">ė‚“ė³“ė‚“źø° ģ„±ź³µ</string>
+ <string name="import_ok">ė‚“ė³“ė‚“źø° ģ„±ź³µ.\n\nģ•ˆķ…Œė‚˜ķŒŸģ„ ė‹¤ģ‹œ ģ‹œģž‘ķ•˜ė ¤ė©“ ķ™•ģøģ„ ėˆ„ė„“ģ‹­ģ‹œģ˜¤</string>
<!--Casting-->
<string name="cast_media_route_menu_title">ė‹¤ė„ø ģž„ģ¹˜ģ—ģ„œ ģž¬ģƒ...</string>
<string name="cast_disconnect_label">ģŗģŠ¤ķŠø ģ„øģ…˜ ģ—°ź²° ėŠźø°</string>
@@ -631,4 +636,5 @@
<string name="cast_failed_seek">ģŗģŠ¤ķŠø ģž„ģ¹˜ģ— ģƒˆ ģž¬ģƒ ģœ„ģ¹˜ė”œ ģ“ė™ķ•˜ėŠ”ė° ģ‹¤ķŒØķ–ˆģŠµė‹ˆė‹¤</string>
<string name="cast_failed_receiver_player_error">ė¦¬ģ‹œė²„ ķ”Œė ˆģ“ģ–“ģ—ģ„œ ģ‹¬ź°ķ•œ ģ˜¤ė„˜ź°€ ė°œģƒķ–ˆģŠµė‹ˆė‹¤</string>
<string name="cast_failed_media_error_skipping">ėÆøė””ģ–“ ģž¬ģƒģ— ģ˜¤ė„˜. ź±“ė„ˆėœė‹ˆė‹¤...</string>
+ <!--Notification channels-->
</resources>
diff --git a/core/src/main/res/values-lt/strings.xml b/core/src/main/res/values-lt/strings.xml
index 7736c148b..3ca4270ce 100644
--- a/core/src/main/res/values-lt/strings.xml
+++ b/core/src/main/res/values-lt/strings.xml
@@ -1,11 +1,13 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources xmlns:tools="http://schemas.android.com/tools">
<!--Activitiy and fragment titles-->
+ <string name="feed_update_receiver_name">Atnaujinti prenumeratas</string>
<string name="feeds_label">Sklaidos kanalai</string>
<string name="statistics_label">Statistika</string>
<string name="add_feed_label">Pridėti tinklalaidę</string>
<string name="episodes_label">Epizodai</string>
<string name="all_episodes_short_label">Visi</string>
+ <string name="new_episodes_label">Nauji</string>
<string name="favorite_episodes_label">Mėgiami</string>
<string name="new_label">Nauji</string>
<string name="settings_label">Nustatymai</string>
@@ -56,7 +58,7 @@
<string name="yes">Taip</string>
<string name="no">Ne</string>
<string name="reset">Nustatyti iÅ” naujo</string>
- <string name="author_label">Autorius</string>
+ <string name="author_label">Autorius (-iai)</string>
<string name="language_label">Kalba</string>
<string name="url_label">URL</string>
<string name="podcast_settings_label">Nustatymai</string>
@@ -93,6 +95,7 @@
<plurals name="episode_cleanup_days_after_listening">
<item quantity="one">Praėjus 1 dienai nuo perklausymo</item>
<item quantity="few">Praėjus %d dienoms nuo perklausymo</item>
+ <item quantity="many">Praėjus %d dienų nuo perklausymo</item>
<item quantity="other">Praėjus %d dienų nuo perklausymo</item>
</plurals>
<!--'Add Feed' Activity labels-->
@@ -106,25 +109,21 @@
<string name="mark_all_read_label">Pažymėti visus kaip perklausytus</string>
<string name="mark_all_read_msg">Visi epizodai pažymėti kaip perklausyti</string>
<string name="mark_all_read_confirmation_msg">Patvirtinkite, jog norite pažymėti visus epizodus kaip perklausytus.</string>
- <string name="mark_all_read_feed_confirmation_msg">Patvirtinkite, jog norite pažymėti visus Å”io sklaidos kanalo epizodus kaip perklausytus.</string>
<string name="mark_all_seen_label">Pažymėti visus kaip matytus</string>
- <string name="mark_all_seen_msg">Visi epizodai pažymėti kaip matyti</string>
+ <string name="mark_all_seen_msg">Pažymėti visus epizodus kaip matytus</string>
<string name="mark_all_seen_confirmation_msg">Patvirtinkite, jog norite pažymėti visus epizodus kaip matytus.</string>
<string name="show_info_label">Rodyti informaciją</string>
+ <string name="feed_info_label">Tinklalaidės informacija</string>
<string name="rename_feed_label">Pervadinti tinklalaidę</string>
<string name="remove_feed_label">PaÅ”alinti tinklalaidę</string>
<string name="share_label">Dalintis...</string>
- <string name="share_link_label">Dalintis nuoroda</string>
+ <string name="share_link_label">Dalintis epizodo URL</string>
+ <string name="share_link_with_position_label">Dalintis epizodo URL su pozicija</string>
<string name="share_file_label">Dalintis failu</string>
- <string name="share_link_with_position_label">Dalintis nuoroda su pozicija</string>
<string name="share_feed_url_label">Dalintis sklaidos kanalo URL</string>
- <string name="share_item_url_label">Dalintis epizodo failo URL</string>
- <string name="share_item_url_with_position_label">Dalintis epizodo failo adresu su pozicija</string>
- <string name="feed_delete_confirmation_msg">Patvirtinkite, jog norite iÅ”trinti sklaidos kanalą ā€ž%1$sā€œ bei VISUS atsisiųstus Å”io sklaidos kanalo epizodus.</string>
- <string name="feed_remover_msg">Å alinamas sklaidos kanalas</string>
- <string name="load_complete_feed">Atnaujinti visą sklaidos kanalą</string>
+ <string name="share_item_url_label">Dalintis medijos failo URL</string>
+ <string name="share_item_url_with_position_label">Dalintis medijos failo adresu su pozicija</string>
<string name="hide_episodes_title">Slėpti epizodus</string>
- <string name="episode_actions">Pritaikyti veiksmus</string>
<string name="hide_unplayed_episodes_label">Neperklausyti</string>
<string name="hide_paused_episodes_label">Pristabdyti</string>
<string name="hide_played_episodes_label">Perklausyti</string>
@@ -193,6 +192,7 @@
<plurals name="downloads_left">
<item quantity="one">Liko %d atsiuntimas</item>
<item quantity="few">Liko %d atsiuntimai</item>
+ <item quantity="many">Liko %d atsiuntimų</item>
<item quantity="other">Liko %d atsiuntimų</item>
</plurals>
<string name="downloads_processing">Apdorojami atsiuntimai</string>
@@ -236,7 +236,7 @@
<string name="date">Data</string>
<string name="duration">Trukmė</string>
<string name="episode_title">Epizodo pavadinimas</string>
- <string name="feed_title">Sklaidos kanalo pavadinimas</string>
+ <string name="feed_title">Tinklalaidės pavadinimas</string>
<string name="ascending">Didėjančia tvarka</string>
<string name="descending">Mažėjančia tvarka</string>
<string name="clear_queue_confirmation_msg">Patvirtinkite, jog norite paÅ”alinti VISUS epizodus iÅ” perklausos eilės</string>
@@ -274,7 +274,6 @@
<string name="enable_sonic">Ä®jungti ā€žSonicā€œ</string>
<!--Empty list labels-->
<string name="no_items_label">Å iame sąraÅ”e nėra elementų.</string>
- <string name="no_feeds_label">Kol kas neprenumeruojate jokio sklaidos kanalo.</string>
<string name="no_chapters_label">Šis epizodas neturi skyrių.</string>
<string name="no_shownotes_label">Šis epizodas neturi užraŔų.</string>
<!--Preferences-->
@@ -283,15 +282,16 @@
<string name="other_pref">Kita</string>
<string name="about_pref">Apie</string>
<string name="queue_label">Eilė</string>
- <string name="services_label">Paslaugos</string>
+ <string name="integrations_label">Integracijos</string>
<string name="flattr_label">Flattr</string>
+ <string name="appearance">IŔvaizda</string>
+ <string name="media_player">Medijos grotuvas</string>
<string name="pref_episode_cleanup_title">Epizodų valymas</string>
<string name="pref_episode_cleanup_summary">Epizodai, nesantys eilėje ar tarp mėgiamųjų, gali bÅ«ti iÅ”trinti automatinio atsiuntimo metu pritrÅ«kus laisvos vietos naujiems epizodams </string>
<string name="pref_pauseOnDisconnect_sum">Pristabdyti atkÅ«rimą, kai atjungiamos ausinės ar ā€žBluetoothā€œ</string>
<string name="pref_unpauseOnHeadsetReconnect_sum">Pratęsti atkūrimą, kai ausinės pakartotinai prijungiamos</string>
<string name="pref_unpauseOnBluetoothReconnect_sum">Pratęsti atkÅ«rimą, kai pakartotinai prisijungiama prie ā€žBluetoothā€œ</string>
<string name="pref_hardwareForwardButtonSkips_title">Mygtukas ā€žpirmynā€œ perÅ”oka epizodą</string>
- <string name="pref_hardwareForwardButtonSkips_sum">Paspaudus aparatinÄÆ mygtuką ā€žpirmynā€œ perÅ”okti ÄÆ kitą epizodą vietoje greito persukimo ÄÆ priekÄÆ.</string>
<string name="pref_hardwarePreviousButtonRestarts_title">Mygtukas ā€žankstesnisā€œ paleidžia iÅ” naujo</string>
<string name="pref_hardwarePreviousButtonRestarts_sum">Paspaudus aparatinÄÆ mygtuką ā€žankstesnisā€œ paleisti dabartinÄÆ epizodą nuo pradžių vietoj epizodo perÅ”okimo</string>
<string name="pref_followQueue_sum">AtkÅ«rimui pasibaigus perÅ”okti ÄÆ kitą eilės elementą</string>
@@ -340,7 +340,6 @@
<string name="pref_nav_drawer_feed_order_title">Nustatyti prenumeratų tvarką</string>
<string name="pref_nav_drawer_feed_order_sum">Keiskite prenumeratų tvarką</string>
<string name="pref_nav_drawer_feed_counter_title">Nustatyti prenumeratų skaitliuką</string>
- <string name="pref_nav_drawer_feed_counter_sum">Keisti prenumeratų skaitliuko rodomą informaciją</string>
<string name="pref_set_theme_sum">Keisti AntennaPod iÅ”vaizdą.</string>
<string name="pref_automatic_download_title">Automatinis atsiuntimas</string>
<string name="pref_automatic_download_sum">KonfigÅ«ruoti automatinÄÆ epizodų atsiuntimą.</string>
@@ -382,8 +381,6 @@
<string name="pref_rewind_sum">Derinkite, per kiek sekundžių Å”oktelėti atgal kai paspaudžiamas atsukimo atgal mygtukas</string>
<string name="pref_gpodnet_sethostname_title">Nustatyti serverÄÆ</string>
<string name="pref_gpodnet_sethostname_use_default_host">Naudoti numatytąjÄÆ serverÄÆ</string>
- <string name="pref_expandNotify_title">IÅ”plėsti praneÅ”imus</string>
- <string name="pref_expandNotify_sum">IÅ”plėsti programos praneÅ”imus, kad bÅ«tų atvaizduojami atkÅ«rimo valdymo mygtukai.</string>
<string name="pref_persistNotify_title">Pastovūs atkūrimo valdikliai</string>
<string name="pref_persistNotify_sum">Pristabdžius atkÅ«rimą palikti valdiklius ekrano užrakte bei programų praneÅ”imuose. </string>
<string name="pref_compact_notification_buttons_title">Nustatyti ekrano užrakto mygtukus</string>
@@ -404,8 +401,6 @@
<string name="crash_report_sum">Siųsti paskiausios strigties praneÅ”imą el. paÅ”tu</string>
<string name="send_email">Siųsti el. laiÅ”ką</string>
<string name="experimental_pref">Eksperimentinis</string>
- <string name="pref_sonic_title">ā€žSonicā€œ medijos leistuvė</string>
- <string name="pref_sonic_message">Naudoti ÄÆtaisytąją ā€žSonicā€œ medijos leistuvę vietoje savosios ā€žAndroidā€œ medijos leistuvės ir ā€žPrestissimoā€œ </string>
<string name="pref_current_value">Dabartinė reikÅ”mė: %1$s</string>
<string name="pref_proxy_title">Įgaliotasis serveris</string>
<string name="pref_proxy_sum">Nustatyti ÄÆgaliotąjÄÆ tinklo serverÄÆ</string>
@@ -426,8 +421,6 @@
<string name="search_hint">IeŔkoti epizodų</string>
<string name="found_in_shownotes_label">Rasta laidos užraŔuose</string>
<string name="found_in_chapters_label">Rasta skyriuose</string>
- <string name="found_in_authors_label">Rasta autoriuose</string>
- <string name="found_in_feeds_label">Rasta sklaidos kanaluose</string>
<string name="search_status_no_results">Nieko nerasta</string>
<string name="search_label">PaieŔka</string>
<string name="found_in_title_label">Rasta pavadinime</string>
@@ -453,8 +446,6 @@
<string name="html_export_label">HTML eksportas</string>
<string name="exporting_label">Eksportuojama...</string>
<string name="export_error_label">Eksporto klaida</string>
- <string name="opml_export_success_title">OPML eksportas sėkmingas.</string>
- <string name="opml_export_success_sum">.opml failas iÅ”saugotas ÄÆ:\u0020</string>
<string name="opml_import_ask_read_permission">Norint nuskaityti OPML failą reikalinga prieiga prie neÅ”iojamos atmintinės</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">Nustatyti miego laikmatÄÆ</string>
@@ -472,16 +463,19 @@
<plurals name="time_seconds_quantified">
<item quantity="one">1 sekundė</item>
<item quantity="few">%d sekundės</item>
+ <item quantity="many">%d sekundžių</item>
<item quantity="other">%d sekundžių</item>
</plurals>
<plurals name="time_minutes_quantified">
<item quantity="one">1 minutė</item>
<item quantity="few">%d minutės</item>
+ <item quantity="many">%d minučių</item>
<item quantity="other">%d minučių</item>
</plurals>
<plurals name="time_hours_quantified">
<item quantity="one">1 valanda</item>
<item quantity="few">%d valandos</item>
+ <item quantity="many">%d valandų</item>
<item quantity="other">%d valandų</item>
</plurals>
<string name="auto_enable_label">Įjungti automatiŔkai</string>
@@ -634,7 +628,6 @@ Po importavimo, epizodai gali būti per klaidą pažymėti kaip atsisiųsti. Tie
<string name="label_import">Importuoti</string>
<string name="label_export">Eksportuoti</string>
<string name="import_select_file">Pasirinkite failą, kurÄÆ norite importuoti</string>
- <string name="export_ok">Eksportas sėkmingas. Duomenų bazė iÅ”saugota SD kortelėje.</string>
<string name="import_ok">Importuota sėkmingai.
Spauskite ā€žOKā€œ, kad paleisti ā€žAntennaPodā€œ iÅ” naujo.</string>
@@ -654,4 +647,7 @@ Spauskite ā€žOKā€œ, kad paleisti ā€žAntennaPodā€œ iÅ” naujo.</string>
<string name="cast_failed_seek">PerÅ”okti ÄÆ naują poziciją ā€žChromecastā€œ ÄÆrenginyje nepavyko</string>
<string name="cast_failed_receiver_player_error">Imtuvo leistuvę iÅ”tiko rimta klaida</string>
<string name="cast_failed_media_error_skipping">Įvyko medijos atkūrimo klaida. Praleidžiama...</string>
+ <!--Notification channels-->
+ <string name="notification_channel_downloading">Atsiunčiama</string>
+ <string name="notification_channel_error">Klaidos</string>
</resources>
diff --git a/core/src/main/res/values-mk/strings.xml b/core/src/main/res/values-mk/strings.xml
new file mode 100644
index 000000000..1bb5aa651
--- /dev/null
+++ b/core/src/main/res/values-mk/strings.xml
@@ -0,0 +1,54 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources xmlns:tools="http://schemas.android.com/tools">
+ <!--Activitiy and fragment titles-->
+ <string name="statistics_label">Š”тŠ°Ń‚ŠøстŠøŠŗŠø</string>
+ <string name="add_feed_label">Š”тŠ°Š²Šø ŠŸŠ¾Š“ŠŗŠ°ŃŃ‚</string>
+ <string name="episodes_label">Š•ŠæŠøŠ·Š¾Š“Šø</string>
+ <string name="all_episodes_short_label">Š”ŠøтŠµ</string>
+ <string name="new_episodes_label">ŠŠ¾Š²Šø</string>
+ <string name="favorite_episodes_label">ŠžŠ¼ŠøŠ»ŠµŠ½Šø</string>
+ <!--Statistics fragment-->
+ <!--Main activity-->
+ <!--Webview actions-->
+ <!--Playback history-->
+ <!--Other-->
+ <string name="no">ŠŠµ</string>
+ <string name="reset">Š ŠµŃŠµŃ‚</string>
+ <string name="author_label">ŠŠ²Ń‚Š¾Ń€</string>
+ <string name="language_label">ŠˆŠ°Š·ŠøŠŗ</string>
+ <string name="url_label">Š£Š Š›</string>
+ <string name="chapters_label">ŠŸŠ¾Š³Š»Š°Š²Ń˜Š°</string>
+ <!--'Add Feed' Activity labels-->
+ <!--Actions on feeds-->
+ <!--actions on feeditems-->
+ <string name="delete_label">Š˜Š·Š±Ń€ŠøшŠø</string>
+ <!--Download messages and labels-->
+ <!--Mediaplayer messages-->
+ <!--Queue operations-->
+ <string name="date">Š”Š°Ń‚ŃƒŠ¼</string>
+ <!--Flattr-->
+ <!--Flattr-->
+ <!--Variable Speed-->
+ <!--Empty list labels-->
+ <!--Preferences-->
+ <!--Auto-Flattr dialog-->
+ <!--Search-->
+ <!--OPML import and export-->
+ <!--Sleep timer-->
+ <!--gpodder.net-->
+ <!--Directory chooser-->
+ <!--Online feed view-->
+ <!--Content descriptions for image buttons-->
+ <!--Feed information screen-->
+ <!--Progress information-->
+ <!--AntennaPodSP-->
+ <!--Episodes apply actions-->
+ <!--Sort-->
+ <!--Rating dialog-->
+ <!--Audio controls-->
+ <!--proxy settings-->
+ <!--Database import/export-->
+ <!--Casting-->
+ <!--<string name="cast_failed_to_connect">Could not connect to the device</string>-->
+ <!--Notification channels-->
+</resources>
diff --git a/core/src/main/res/values-nb/strings.xml b/core/src/main/res/values-nb/strings.xml
index 65dc5565b..dafc7eb60 100644
--- a/core/src/main/res/values-nb/strings.xml
+++ b/core/src/main/res/values-nb/strings.xml
@@ -42,7 +42,6 @@
<string name="cancel_label">Avbryt</string>
<string name="yes">Ja</string>
<string name="no">Nei</string>
- <string name="author_label">Opphavsperson</string>
<string name="language_label">SprƄk</string>
<string name="url_label">URL</string>
<string name="podcast_settings_label">Innstillinger</string>
@@ -85,17 +84,10 @@
<string name="mark_all_read_label">Marker alle som avspilt</string>
<string name="mark_all_read_msg">Marker alle episoder som avspilt</string>
<string name="mark_all_read_confirmation_msg">Vennligst bekreft at du Ćønsker Ć„ markere alle episoder som avspilt.</string>
- <string name="mark_all_read_feed_confirmation_msg">Vennligst bekreft at du Ćønsker Ć„ markere alle episoder i denne strĆømmen som avspilt.</string>
<string name="mark_all_seen_label">Marker alle som sett</string>
<string name="show_info_label">Vis informasjon</string>
- <string name="remove_feed_label">Fjern podcast</string>
- <string name="share_link_label">Del lenke</string>
- <string name="share_link_with_position_label">Del lenke med plassering</string>
<string name="share_feed_url_label">Del strĆømmens URL</string>
- <string name="feed_remover_msg">Fjerner strĆøm</string>
- <string name="load_complete_feed">Oppdater hele strĆømmen</string>
<string name="hide_episodes_title">Skjul episoder</string>
- <string name="episode_actions">Lagre handlinger</string>
<string name="hide_unplayed_episodes_label">Ikke avspilt</string>
<string name="hide_paused_episodes_label">Pauset</string>
<string name="hide_played_episodes_label">Avspilt</string>
@@ -226,18 +218,15 @@
<string name="enable_sonic">Skru pƄ Sonic</string>
<!--Empty list labels-->
<string name="no_items_label">Det er ingen objekter pƄ denne listen.</string>
- <string name="no_feeds_label">Du abonnerer ikke pĆ„ noen strĆømmer enda.</string>
<!--Preferences-->
<string name="other_pref">Annet</string>
<string name="about_pref">Om</string>
<string name="queue_label">Queue</string>
- <string name="services_label">Tjenester</string>
<string name="flattr_label">Flattr</string>
<string name="pref_episode_cleanup_title">Episodeopprydding</string>
<string name="pref_pauseOnDisconnect_sum">Sett playback pƄ pause nƄr hodetelefoner eller bluetooth er frakoblet</string>
<string name="pref_unpauseOnHeadsetReconnect_sum">Gjenoppta avspilling nƄr hodetelefoner gjeninnkoples</string>
<string name="pref_unpauseOnBluetoothReconnect_sum">Fortsett avspilling nƄr bluetooth er tilkoblet igjen</string>
- <string name="pref_hardwareForwardButtonSkips_sum">Ved pressing av hardware forover-knapp hopp til neste episode istedenfor forover-spoling</string>
<string name="pref_followQueue_sum">Hopp til neste element i kĆøen nĆ„r avspillingen er ferdig</string>
<string name="pref_auto_delete_sum">Slett episode nƄr avspillingen er ferdig</string>
<string name="pref_auto_delete_title">Automatisk sletting</string>
@@ -279,7 +268,6 @@
<string name="pref_nav_drawer_feed_order_title">Velg rekkefĆølge pĆ„ abbonement</string>
<string name="pref_nav_drawer_feed_order_sum">Endre rekkefĆølgen pĆ„ abbonementene dine</string>
<string name="pref_nav_drawer_feed_counter_title">Velg abbonementsteller</string>
- <string name="pref_nav_drawer_feed_counter_sum">Endre informasjonen vist av abonnementstelleren</string>
<string name="pref_set_theme_sum">Endre utseendet til AntennaPod</string>
<string name="pref_automatic_download_title">Automatisk nedlasting</string>
<string name="pref_automatic_download_sum">Konfigurer automatisk nedlasting av episoder.</string>
@@ -305,8 +293,6 @@
<string name="pref_playback_speed_sum">Egendefiner hastighetene tilgjengelig for variabel avspillingshastighet</string>
<string name="pref_gpodnet_sethostname_title">Sett vertsnavn</string>
<string name="pref_gpodnet_sethostname_use_default_host">Bruk standard vert</string>
- <string name="pref_expandNotify_title">Utvid varsel</string>
- <string name="pref_expandNotify_sum">Utvider alltid varselet for Ć„ inkludere avspillingsknapper.</string>
<string name="pref_persistNotify_title">Vedvarende avspillingskontroller</string>
<string name="pref_persistNotify_sum">Behold varsel- og lƄseskjermkontroller nƄr avspilling er satt pƄ pause.</string>
<string name="pref_lockscreen_background_title">Angi som bakgrunn pƄ lƄseskjermen</string>
@@ -350,8 +336,6 @@
<string name="choose_file_from_external_application">Bruk ekstern applikasjon</string>
<string name="opml_export_label">OPML-eksportering</string>
<string name="export_error_label">Eksporteringserror</string>
- <string name="opml_export_success_title">OPML-import vellykket.</string>
- <string name="opml_export_success_sum">.opml-filen ble skrevet til:\u0020</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">Sett opp sovetimer</string>
<string name="disable_sleeptimer_label">Deaktiver sovetimer</string>
@@ -480,4 +464,5 @@
<!--Database import/export-->
<!--Casting-->
<!--<string name="cast_failed_to_connect">Could not connect to the device</string>-->
+ <!--Notification channels-->
</resources>
diff --git a/core/src/main/res/values-nl/strings.xml b/core/src/main/res/values-nl/strings.xml
index 2756adc53..b2b368e8a 100644
--- a/core/src/main/res/values-nl/strings.xml
+++ b/core/src/main/res/values-nl/strings.xml
@@ -1,38 +1,42 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources xmlns:tools="http://schemas.android.com/tools">
<!--Activitiy and fragment titles-->
+ <string name="feed_update_receiver_name">Abonnementen bijwerken</string>
<string name="feeds_label">Feeds</string>
<string name="statistics_label">Statistieken</string>
<string name="add_feed_label">Podcast toevoegen</string>
<string name="episodes_label">Afleveringen</string>
<string name="all_episodes_short_label">Alle</string>
+ <string name="new_episodes_label">Nieuw</string>
<string name="favorite_episodes_label">Favorieten</string>
<string name="new_label">Nieuw</string>
<string name="settings_label">Instellingen</string>
<string name="downloads_label">Downloads</string>
<string name="downloads_running_label">Bezig</string>
<string name="downloads_completed_label">Voltooid</string>
- <string name="downloads_log_label">Geschiedenis</string>
- <string name="subscriptions_label">Feeds</string>
- <string name="subscriptions_list_label">Lijst met feeds</string>
- <string name="cancel_download_label">Annuleer download</string>
+ <string name="downloads_log_label">Logboek</string>
+ <string name="subscriptions_label">Abonnementen</string>
+ <string name="subscriptions_list_label">Lijst met abonnementen</string>
+ <string name="cancel_download_label">Download\nafbreken</string>
<string name="playback_history_label">Afspeelgeschiedenis</string>
<string name="gpodnet_main_label">gpodder.net</string>
- <string name="gpodnet_auth_label">gpodder.net login</string>
+ <string name="gpodnet_summary">Synchroniseren met andere apparaten</string>
+ <string name="gpodnet_auth_label">Inloggen op gpodder.net</string>
<string name="free_space_label">%1$s beschikbaar</string>
- <string name="episode_cache_full_title">Afleveringen cache is vol</string>
- <string name="episode_cache_full_message">Het maximum aantal gecachte afleveringen is bereikt. U kunt het maximum verhogen in de instellingen.</string>
+ <string name="episode_cache_full_title">Afleveringscache is vol</string>
+ <string name="episode_cache_full_message">Het maximum aantal gecachete afleveringen is bereikt. Je kunt het maximum verhogen in de instellingen.</string>
+ <string name="synchronizing">Bezig met synchroniserenā€¦</string>
<!--Statistics fragment-->
<string name="total_time_listened_to_podcasts">Totale duur van afgespeelde podcasts:</string>
- <string name="statistics_details_dialog">%1$d van de %2$d afleveringen gestart.\n\n%3$s van de %4$s afgespeeld.</string>
+ <string name="statistics_details_dialog">%1$d van %2$d afleveringen gestart.\n\n%3$s van %4$s afgespeeld.</string>
<string name="statistics_mode">Rekenmethode</string>
- <string name="statistics_mode_normal">Bereken de daadwerkelijke speeltijd. Tweemaal afspelen wordt twee keer gerekend; als \'afgespeeld\' markeren wordt niet meegeteld.</string>
- <string name="statistics_mode_count_all">Duur van de podcasts optelle die als \'afgespeeld\' zijn gemarkeerd.</string>
- <string name="statistics_speed_not_counted">Let op: Met de afspeelsnelheid wordt geen rekening gehouden.</string>
+ <string name="statistics_mode_normal">Bereken de daadwerkelijke speeltijd. Tweemaal afspelen wordt twee keer gerekend; gemarkeerd als \'afgespeeld\' wordt niet meegeteld.</string>
+ <string name="statistics_mode_count_all">Duur van de podcasts optellen die gemarkeerd zijn als \'afgespeeld\' zijn</string>
+ <string name="statistics_speed_not_counted">Let op: er wordt geen rekening gehouden met de afspeelsnelheid.</string>
<!--Main activity-->
<string name="drawer_open">Menu openen</string>
<string name="drawer_close">Menu sluiten</string>
- <string name="drawer_preferences">Menu voorkeuren</string>
+ <string name="drawer_preferences">Menuvoorkeuren</string>
<string name="drawer_feed_order_unplayed_episodes">Op aantal afleveringen</string>
<string name="drawer_feed_order_alphabetical">Op alfabetische volgorde</string>
<string name="drawer_feed_order_last_update">Op datum van publicatie</string>
@@ -41,89 +45,93 @@
<string name="drawer_feed_counter_new">Aantal nieuwe afleveringen</string>
<string name="drawer_feed_counter_unplayed">Aantal onbeluisterde afleveringen</string>
<string name="drawer_feed_counter_downloaded">Aantal gedownloade afleveringen</string>
- <string name="drawer_feed_counter_none">Geen (alfabetisch sorteren)</string>
+ <string name="drawer_feed_counter_none">Geen</string>
<!--Webview actions-->
- <string name="open_in_browser_label">In de browser openen</string>
+ <string name="open_in_browser_label">Openen in browser</string>
<string name="copy_url_label">URL kopiƫren</string>
<string name="share_url_label">URL delen</string>
- <string name="copied_url_msg">URL naar klembord gekopieerd.</string>
- <string name="go_to_position_label">Ga naar specifiek tijdstip</string>
+ <string name="copied_url_msg">URL is gekopieerd naar het klembord</string>
+ <string name="go_to_position_label">Ga naar deze positie</string>
<!--Playback history-->
<string name="clear_history_label">Geschiedenis wissen</string>
<!--Other-->
- <string name="confirm_label">Bevestig</string>
+ <string name="confirm_label">Bevestigen</string>
<string name="cancel_label">Annuleren</string>
<string name="yes">Ja</string>
<string name="no">Nee</string>
- <string name="reset">Reset</string>
- <string name="author_label">Auteur</string>
+ <string name="reset">Standaardwaarden</string>
+ <string name="author_label">Maker(s)</string>
<string name="language_label">Taal</string>
<string name="url_label">URL</string>
<string name="podcast_settings_label">Instellingen</string>
<string name="cover_label">Beeld</string>
<string name="error_label">Fout</string>
<string name="error_msg_prefix">Er is een fout opgetreden:</string>
+ <string name="needs_storage_permission">Machtiging voor gebruik van opslag voor deze functie vereist</string>
<string name="refresh_label">Verversen</string>
- <string name="external_storage_error_msg">Geen externe opslag beschikbaar. Zorg ervoor dat de externe opslag gemonteerd is, zodat de app goed kan werken.</string>
+ <string name="external_storage_error_msg">Geen externe opslag beschikbaar. Zorg ervoor dat de externe opslag is aangekoppeld, zodat de app goed kan werken.</string>
<string name="chapters_label">Hoofdstukken</string>
<string name="chapter_duration">Duur: %1$s</string>
- <string name="shownotes_label">Shownotes</string>
- <string name="description_label">Beschrijving</string>
+ <string name="shownotes_label">Notities</string>
+ <string name="description_label">Omschrijving</string>
<string name="most_recent_prefix">Meest recente aflevering:\u0020</string>
<string name="episodes_suffix">\u0020afleveringen</string>
- <string name="length_prefix">Lengte:\u0020</string>
+ <string name="length_prefix">Duur:\u0020</string>
<string name="size_prefix">Grootte:\u0020</string>
- <string name="processing_label">Aan het verwerken</string>
- <string name="loading_label">Ladenā€¦</string>
+ <string name="processing_label">Bezig met verwerken...</string>
+ <string name="loading_label">Bezig met laden...</string>
<string name="save_username_password_label">Gebruikersnaam en wachtwoord opslaan</string>
<string name="close_label">Sluiten</string>
- <string name="retry_label">Opnieuw proberen</string>
+ <string name="retry_label">Opnieuw</string>
<string name="auto_download_label">Meenemen bij automatisch downloaden</string>
- <string name="auto_download_apply_to_items_title">Toepassen op bestaande afleveringen</string>
- <string name="auto_download_apply_to_items_message">De instelling voor <i>Automatisch downloaden</i> wordt automatisch toegepast op toekomstige afleveringen.\nWilt u het ook toepassen op eerder gepubliceerde afleveringen?</string>
- <string name="auto_delete_label">Afleveringen automatisch\nverwijderen</string>
- <string name="parallel_downloads_suffix">\u0020parallele downloads</string>
+ <string name="auto_download_apply_to_items_title">Toepassen op vorige afleveringen</string>
+ <string name="auto_download_apply_to_items_message">De instelling voor <i>Automatisch downloaden</i> wordt automatisch toegepast op toekomstige afleveringen.\nWil je het ook toepassen op eerder gepubliceerde afleveringen?</string>
+ <string name="auto_delete_label">Aflevering automatisch verwijderen</string>
+ <string name="parallel_downloads_suffix">\u0020gelijktijdige downloads</string>
<string name="feed_auto_download_global">Standaardinstelling</string>
<string name="feed_auto_download_always">Altijd</string>
<string name="feed_auto_download_never">Nooit</string>
- <string name="send_label">Versturenā€¦</string>
+ <string name="send_label">Versturen...</string>
<string name="episode_cleanup_never">Nooit</string>
- <string name="episode_cleanup_queue_removal">Wanneer niet in de wachtrij</string>
- <string name="episode_cleanup_after_listening">Wanneer aflevering volledig is afgespeeld</string>
+ <string name="episode_cleanup_queue_removal">Indien niet in de wachtrij</string>
+ <string name="episode_cleanup_after_listening">Als aflevering volledig is afgespeeld</string>
<plurals name="episode_cleanup_days_after_listening">
- <item quantity="one">1 dag nadat de aflevering als afgespeeld is gemarkeerd</item>
- <item quantity="other">%d dagen nadat de aflevering als afgespeeld is gemarkeerd</item>
+ <item quantity="one">1 dag nadat de aflevering is gemarkeerd als afgespeeld</item>
+ <item quantity="other">%d dagen nadat de aflevering is gemarkeerd als afgespeeld</item>
</plurals>
<!--'Add Feed' Activity labels-->
- <string name="feedurl_label">Feed URL</string>
+ <string name="feedurl_label">Feed-URL</string>
<string name="etxtFeedurlHint">www.voorbeeld.nl/feed</string>
<string name="txtvfeedurl_label">Podcast toevoegen via URL</string>
- <string name="podcastdirectories_label">Podcast vinden in de gids</string>
- <string name="podcastdirectories_descr">U kunt nieuwe podcasts zoeken op naam, categorie of populariteit in de gpodder.net database, of de iTunes winkel doorzoeken.</string>
- <string name="browse_gpoddernet_label">gpodder.net doorbladeren</string>
+ <string name="podcastdirectories_label">Podcast zoeken in de gids</string>
+ <string name="podcastdirectories_descr">Je kunt nieuwe podcasts vinden op naam, categorie of populariteit in de gpodder.net-databank of via iTunes of fyyd.</string>
+ <string name="browse_gpoddernet_label">Blader door gpodder.net</string>
<!--Actions on feeds-->
- <string name="mark_all_read_label">Alles als afgespeeld markeren</string>
- <string name="mark_all_read_msg">Alle afleveringen als afgespeeld markeren</string>
- <string name="mark_all_read_confirmation_msg">Bevestig aub dat u alle afleveringen als afgespeeld wilt markeren.</string>
- <string name="mark_all_read_feed_confirmation_msg">Bevestig aub dat u alle afleveringen van deze feed als afgespeeld wilt markeren.</string>
- <string name="mark_all_seen_label">\'Nieuw\' label van alle afleveringen verwijderen.</string>
- <string name="mark_all_seen_msg">\'Nieuw\' label van alle afleveringen verwijderend</string>
- <string name="mark_all_seen_confirmation_msg">Bevestig aub dat u het \'nieuw\' label van alle afleveringen wilt verwijderen.</string>
- <string name="show_info_label">Toon informatie</string>
- <string name="rename_feed_label">Podcast hernoemen</string>
+ <string name="mark_all_read_label">Alles markeren als afgespeeld</string>
+ <string name="mark_all_read_msg">Alle afleveringen zijn gemarkeerd als afgespeeld</string>
+ <string name="mark_all_read_confirmation_msg">Bevestig dat je alle afleveringen wilt markeren als afgespeeld.</string>
+ <string name="mark_all_read_feed_confirmation_msg">Bevestig dat je alle afleveringen van deze podcast wilt markeren als afgespeeld.</string>
+ <string name="mark_all_seen_label">Alles markeren als bekeken</string>
+ <string name="mark_all_seen_msg">Alle afleveringen zijn gemarkeerd als bekeken</string>
+ <string name="mark_all_seen_confirmation_msg">Bevestig dat je alle afleveringen wilt markeren als bekeken.</string>
+ <string name="show_info_label">Informatie tonen</string>
+ <string name="show_feed_settings_label">Podcast-instellingen tonen</string>
+ <string name="feed_info_label">Podcast-informatie</string>
+ <string name="feed_settings_label">Podcast-instellingen</string>
+ <string name="rename_feed_label">Podcastnaam wijzigen</string>
<string name="remove_feed_label">Podcast verwijderen</string>
- <string name="share_label">Delenā€¦</string>
- <string name="share_link_label">Link van de aflevering delen</string>
- <string name="share_file_label">Deel bestand</string>
- <string name="share_link_with_position_label">Link van de aflevering met tijdstip delen</string>
- <string name="share_feed_url_label">URL van de feed delen</string>
- <string name="share_item_url_label">URL van het mediabestand delen</string>
- <string name="share_item_url_with_position_label">URL van mediabestand met tijdstip delen</string>
- <string name="feed_delete_confirmation_msg">Bevestig dat u de feed <i>%1$s</i> en ALLE (ook gedownloade) afleveringen van deze podcast wilt verwijderen.</string>
- <string name="feed_remover_msg">Feed verwijderen</string>
- <string name="load_complete_feed">Hele feed vernieuwen</string>
+ <string name="share_label">Delen...</string>
+ <string name="share_link_label">URL van aflevering delen</string>
+ <string name="share_link_with_position_label">URL van aflevering delen, op specifieke positie</string>
+ <string name="share_file_label">Bestand delen</string>
+ <string name="share_feed_url_label">URL van feed delen</string>
+ <string name="share_item_url_label">URL van mediabestand delen</string>
+ <string name="share_item_url_with_position_label">URL van mediabestand delen, op specifieke positie</string>
+ <string name="feed_delete_confirmation_msg">Bevestig dat je de podcast \"%1$s\" en ALLE (ook gedownloade) bijbehorende afleveringen wilt verwijderen.</string>
+ <string name="feed_remover_msg">Podcast verwijderen</string>
+ <string name="load_complete_feed">Gehele podcast verversen</string>
<string name="hide_episodes_title">Afleveringen verbergen</string>
- <string name="episode_actions">Afleveringen beheren</string>
+ <string name="batch_edit">Bulkbewerking</string>
<string name="hide_unplayed_episodes_label">Niet afgespeeld</string>
<string name="hide_paused_episodes_label">Gepauzeerd</string>
<string name="hide_played_episodes_label">Afgespeeld</string>
@@ -132,335 +140,353 @@
<string name="hide_downloaded_episodes_label">Gedownload</string>
<string name="hide_not_downloaded_episodes_label">Niet gedownload</string>
<string name="hide_has_media_label">Bevat media</string>
+ <string name="hide_is_favorite_label">Gemarkeerd als favoriet</string>
<string name="filtered_label">Gefilterd</string>
- <string name="refresh_failed_msg">{fa-exclamation-circle} Laatste vernieuwing mislukt</string>
- <string name="open_podcast">Open podcast</string>
+ <string name="refresh_failed_msg">{fa-exclamation-circle} Vorige verversing mislukt</string>
+ <string name="open_podcast">Podcast openen</string>
<!--actions on feeditems-->
- <string name="download_label">Download</string>
- <string name="play_label">Spelen</string>
- <string name="pause_label">Pauze</string>
- <string name="stop_label">Stop</string>
- <string name="stream_label">Stream</string>
+ <string name="download_label">Downloaden</string>
+ <string name="play_label">Afspelen</string>
+ <string name="pause_label">Pauzeren</string>
+ <string name="stop_label">Stoppen</string>
+ <string name="stream_label">Streamen</string>
<string name="remove_label">Verwijderen</string>
<string name="delete_label">Verwijderen</string>
- <string name="delete_failed">Kan bestand niet verwijderen. Het kan misschien helpen om je apparaat opnieuw op te starten.</string>
- <string name="remove_episode_lable">Aflevering(en) verwijderen</string>
- <string name="marked_as_seen_label">Verwijder \'nieuw\' label</string>
- <string name="mark_read_label">Als afgespeeld markeren</string>
- <string name="marked_as_read_label">Als afgespeeld gemarkeerd</string>
- <string name="mark_unread_label">Als niet afgespeeld markeren</string>
- <string name="add_to_queue_label">Voeg toe aan wachtrij</string>
- <string name="added_to_queue_label">Aan wachtrij toegevoegd</string>
- <string name="remove_from_queue_label">Verwijder van wachtrij</string>
+ <string name="delete_failed">Kan bestand niet verwijderen; start je apparaat opnieuw op.</string>
+ <string name="remove_episode_lable">Aflevering verwijderen</string>
+ <string name="mark_as_seen_label">Markeren als bekeken</string>
+ <string name="marked_as_seen_label">Gemarkeerd als bekeken</string>
+ <string name="mark_read_label">Markeren als afgespeeld</string>
+ <string name="marked_as_read_label">Gemarkeerd als afgespeeld</string>
+ <string name="mark_unread_label">Markeren als niet-afgespeeld</string>
+ <string name="add_to_queue_label">Toevoegen aan wachtrij</string>
+ <string name="added_to_queue_label">Toegevoegd aan wachtrij</string>
+ <string name="remove_from_queue_label">Verwijderen uit wachtrij</string>
<string name="add_to_favorite_label">Toevoegen aan favorieten</string>
- <string name="added_to_favorites">Aan favorieten toegevoegd</string>
+ <string name="added_to_favorites">Toegevoegd aan favorieten</string>
<string name="remove_from_favorite_label">Verwijderen uit favorieten</string>
<string name="removed_from_favorites">Verwijderd uit favorieten</string>
<string name="visit_website_label">Website bezoeken</string>
<string name="support_label">Flattr dit</string>
<string name="skip_episode_label">Aflevering overslaan</string>
<string name="activate_auto_download">Automatisch downloaden activeren</string>
- <string name="deactivate_auto_download">Automatisch downloaden deactiveren</string>
- <string name="reset_position">Afspeelpositie resetten</string>
+ <string name="deactivate_auto_download">Automatisch downloaden de-activeren</string>
+ <string name="reset_position">Afspeelpositie herstellen</string>
<string name="removed_item">Aflevering verwijderd</string>
<!--Download messages and labels-->
- <string name="download_successful">succesvol</string>
+ <string name="download_successful">voltooid</string>
<string name="download_failed">mislukt</string>
- <string name="download_pending">Download in afwachting</string>
- <string name="download_running">Aan het downloaden</string>
- <string name="download_error_device_not_found">Opslagmedium niet gevonden</string>
+ <string name="download_pending">Download staat in wachtrij</string>
+ <string name="download_running">Bezig met downloaden</string>
+ <string name="download_error_details">Details</string>
+ <string name="download_error_details_message">%1$s \n\nURL van bestand:\n%2$s</string>
+ <string name="download_error_device_not_found">Opslagmedium niet aangetroffen</string>
<string name="download_error_insufficient_space">Onvoldoende ruimte</string>
<string name="download_error_file_error">Bestandsfout</string>
- <string name="download_error_http_data_error">HTTP data fout</string>
+ <string name="download_error_http_data_error">HTTP-gegevensfout</string>
<string name="download_error_error_unknown">Onbekende fout</string>
- <string name="download_error_parser_exception">Parser Exception</string>
- <string name="download_error_unsupported_type">Niet ondersteunde feed soort</string>
+ <string name="download_error_parser_exception">Verwerkingsuitzondering</string>
+ <string name="download_error_unsupported_type">Niet-ondersteunde feedsoort</string>
<string name="download_error_connection_error">Verbindingsfout</string>
<string name="download_error_unknown_host">Onbekende host</string>
- <string name="download_error_unauthorized">Authenticatie fout</string>
- <string name="download_error_file_type_type">Fout met bestandsformaat</string>
- <string name="download_error_forbidden">Actie niet mogelijk</string>
- <string name="cancel_all_downloads_label">Alle downloads annuleren</string>
- <string name="download_canceled_msg">Download geannuleerd</string>
- <string name="download_canceled_autodownload_enabled_msg">Downloaden geannuleerd\n<i>Automatisch downloaden</i> uitgezet voor deze aflevering</string>
- <string name="download_report_title">Downloads afgerond met fouten</string>
+ <string name="download_error_unauthorized">Authenticatiefout</string>
+ <string name="download_error_file_type_type">Bestandssoortfout</string>
+ <string name="download_error_forbidden">Niet mogelijk</string>
+ <string name="cancel_all_downloads_label">Alle downloads afbreken</string>
+ <string name="download_canceled_msg">Download afgebroken</string>
+ <string name="download_canceled_autodownload_enabled_msg">Download afgebroken\n<i>Automatisch downloaden</i> uitgeschakeld voor deze aflevering</string>
+ <string name="download_report_title">Downloads afgerond, maar met fout(en)</string>
<string name="download_report_content_title">Downloadrapport</string>
- <string name="download_error_malformed_url">Misvormde URL</string>
- <string name="download_error_io_error">IO fout</string>
- <string name="download_error_request_error">Fout in de aanvraag</string>
- <string name="download_error_db_access">Databasetoegangsfout</string>
+ <string name="download_error_malformed_url">Onjuist opgemaakte URL</string>
+ <string name="download_error_io_error">Invoer-/uitvoerfout</string>
+ <string name="download_error_request_error">Opvraagfout</string>
+ <string name="download_error_db_access">Fout bij databanktoegang</string>
<plurals name="downloads_left">
<item quantity="one">Nog %d download</item>
<item quantity="other">Nog %d downloads</item>
</plurals>
- <string name="downloads_processing">Downloads verwerken</string>
- <string name="download_notification_title">Podcastgegevens aan het downloaden</string>
- <string name="download_report_content">%1$d downloads geslaagd, %2$d mislukt</string>
+ <string name="downloads_processing">Bezig met verwerken van downloads</string>
+ <string name="download_notification_title">Bezig met downloaden van podcastgegevens</string>
+ <string name="download_report_content">%1$d downloads voltooid, %2$d mislukt</string>
<string name="download_log_title_unknown">Onbekende titel</string>
<string name="download_type_feed">Feed</string>
<string name="download_type_media">Mediabestand</string>
- <string name="download_type_image">Beeld</string>
- <string name="download_request_error_dialog_message_prefix">Er is een fout opgetreden bij het ā€‹ā€‹downloaden van bestand:\u0020</string>
+ <string name="download_type_image">Afbeelding</string>
+ <string name="download_request_error_dialog_message_prefix">Er is een fout opgetreden bij het ā€‹ā€‹downloaden van het bestand:\u0020</string>
<string name="authentication_notification_title">Authenticatie vereist</string>
- <string name="authentication_notification_msg">De opgevraagde bron vereist een gebruikersnaam en een wachtwoord</string>
- <string name="confirm_mobile_download_dialog_title">Bevestig downloaden over mobiel netwerk</string>
- <string name="confirm_mobile_download_dialog_message_not_in_queue">Het downloaden via mobiele verbindingen is uitgezet in de instellingen.\n\nU kunt er voor kiezen om slechts de aflevering aan de wachtrij toe te voegen, of om downloaden via mobiele netwerken tijdelijk toe te staan.\n<small>Uw keuze is 10 minuten geldig.</small></string>
- <string name="confirm_mobile_download_dialog_message">Het downloaden via mobiele verbindingen is uitgezet in de instellingen.\n\nWilt u dit tijdelijk toestaan?\n<small>Uw keuze is 10 minuten geldig.</small></string>
+ <string name="authentication_notification_msg">De opgevraagde bron vereist een gebruikersnaam en wachtwoord</string>
+ <string name="confirm_mobile_download_dialog_title">Bevestig downloaden via mobiel internet</string>
+ <string name="confirm_mobile_download_dialog_message_not_in_queue">Downloaden via mobiel internet is uitgeschakeld in de instellingen.\n\nJe kunt er voor kiezen om de aflevering alleen toe te voegen aan de wachtrij of om downloaden via mobiele internet tijdelijk toe te staan.\n<small>Je keuze wordt 10 minuten onthouden.</small></string>
+ <string name="confirm_mobile_download_dialog_message">Downloaden via mobiel internet is uitgeschakeld in de instellingen.\n\nWil je dit tijdelijk toestaan?\n<small>Je keuze wordt 10 minuten onthouden.</small></string>
<string name="confirm_mobile_download_dialog_only_add_to_queue">Toevoegen aan wachtrij</string>
<string name="confirm_mobile_download_dialog_enable_temporarily">Tijdelijk toestaan</string>
<!--Mediaplayer messages-->
<string name="player_error_msg">Fout!</string>
<string name="player_stopped_msg">Geen media aan het afspelen</string>
- <string name="player_preparing_msg">Voorbereiding</string>
+ <string name="player_preparing_msg">Bezig met voorbereiden</string>
<string name="player_ready_msg">Klaar</string>
- <string name="player_seeking_msg">Aan het opzoeken</string>
- <string name="playback_error_server_died">Server antwoord niet</string>
+ <string name="player_seeking_msg">Bezig met zoeken</string>
+ <string name="playback_error_server_died">Serververbinding verbroken</string>
<string name="playback_error_unknown">Onbekende fout</string>
<string name="no_media_playing_label">Geen media aan het afspelen</string>
- <string name="player_buffering_msg">Buffering</string>
- <string name="playbackservice_notification_title">Podcast aan het afspelen</string>
- <string name="unknown_media_key">AntennaPod - Mediaknop onbekend: %1$d</string>
+ <string name="player_buffering_msg">Bezig met bufferen</string>
+ <string name="player_go_to_picture_in_picture">Picture-in-picture-modus</string>
+ <string name="playbackservice_notification_title">Bezig met afspelen van podcast</string>
+ <string name="unknown_media_key">AntennaPod - onbekende mediatoets: %1$d</string>
<!--Queue operations-->
- <string name="lock_queue">Wachtrij vastzetten</string>
+ <string name="lock_queue">Wachtrij vergrendelen</string>
<string name="unlock_queue">Wachtrij ontgrendelen</string>
<string name="queue_locked">Wachtrij vergrendeld</string>
<string name="queue_unlocked">Wachtrij ontgrendeld</string>
- <string name="clear_queue_label">Wachtrij leeg maken</string>
+ <string name="clear_queue_label">Wachtrij leegmaken</string>
<string name="undo">Ongedaan maken</string>
<string name="removed_from_queue">Item verwijderd</string>
<string name="move_to_top_label">Naar boven verplaatsen</string>
<string name="move_to_bottom_label">Naar beneden verplaatsen</string>
<string name="sort">Sorteren</string>
<string name="date">Datum</string>
- <string name="duration">Lengte</string>
- <string name="episode_title">Afleveringtitel</string>
- <string name="feed_title">Feed-titel</string>
+ <string name="duration">Duur</string>
+ <string name="episode_title">Afleveringstitel</string>
+ <string name="feed_title">Podcast-titel</string>
+ <string name="random">Willekeurig</string>
+ <string name="smart_shuffle">Slim willekeurig afspelen</string>
<string name="ascending">Oplopend</string>
<string name="descending">Aflopend</string>
- <string name="clear_queue_confirmation_msg">Bevestig aub dat u alle afleveringen uit de wachtrij wilt verwijderen</string>
+ <string name="clear_queue_confirmation_msg">Bevestig dat je ALLE afleveringen wilt verwijderen uit de wachtrij</string>
<!--Flattr-->
- <string name="flattr_auth_label">Flattr login</string>
- <string name="flattr_auth_explanation">Druk op onderstaande knop om het verificatieproces te starten. U wordt doorgestuurd naar het Flattr inlogscherm in uw browser en u wordt gevraagd om toestemming aan AntennaPod te geven om dingen te Flattr\'en. Nadat u toestemming heeft gegeven, keert u automatisch terug naar dit scherm.</string>
+ <string name="flattr_auth_label">Inloggen op Flattr</string>
+ <string name="flattr_auth_explanation">Druk op onderstaande knop om het verificatieproces te starten. Het Flattr-inlogscherm wordt geopend in je browser en je wordt gevraagd om AntennaPod te machtigingen om dingen te Flattr\'en. Daarna keer je automatisch terug naar dit scherm.</string>
<string name="authenticate_label">Authenticeren</string>
- <string name="return_home_label">Terug naar de startscherm</string>
- <string name="flattr_auth_success">Authenticatie is geslaagd! U kunt nu dingen vanuit de app Flattr\'en.</string>
- <string name="no_flattr_token_title">Geen Flattr token gevonden</string>
- <string name="no_flattr_token_notification_msg">Het lijkt er op dat uw Flattr account niet is verbonden met AntennaPod. Klik hier om te authenticeren.</string>
- <string name="no_flattr_token_msg">Uw Flattr account lijkt niet aangesloten te zijn op AntennaPod. U kunt uw account aan AntennaPod sluiten om dingen vanuit de app te Flattr\'en, of u kunt op de website van het ding terecht om het daar te Flattr\'en.</string>
+ <string name="return_home_label">Terug naar startscherm</string>
+ <string name="flattr_auth_success">Authenticatie geslaagd! Je kunt nu dingen vanuit de app Flattr\'en.</string>
+ <string name="no_flattr_token_title">Geen Flattr-toegangssleutel gevonden</string>
+ <string name="no_flattr_token_notification_msg">Het lijkt er op dat je Flattr-account niet gekoppeld is aan AntennaPod. Druk hier om te authenticeren.</string>
+ <string name="no_flattr_token_msg">Je Flattr-account lijkt niet gekoppeld te zijn aan AntennaPod. Je kunt je account koppelen om dingen vanuit de app te Flattr\'en, of je kunt op de website van het ding terecht om het daar te Flattr\'en.</string>
<string name="authenticate_now_label">Authenticeren</string>
- <string name="action_forbidden_title">Actie verboden</string>
- <string name="action_forbidden_msg">AntennaPod heeft geen toestemming voor deze actie. De reden hiervoor zou kunnen zijn dat de toegang token van AntennaPod voor uw account ingetrokken is. U kunt opnieuw authenticeren, of de website van het ding bezoeken.</string>
+ <string name="action_forbidden_title">Niet toegestaan</string>
+ <string name="action_forbidden_msg">AntennaPod heeft geen toestemming voor deze actie. De reden hiervoor zou kunnen zijn dat de toegangssleutel van AntennaPod voor je account is ingetrokken. Je kunt opnieuw authenticeren, of de website van het ding bezoeken.</string>
<string name="access_revoked_title">Toegang ingetrokken</string>
- <string name="access_revoked_info">U heeft met succes het toegangstoken van AntennaPod tot uw account ingetrokken. Om het proces te voltooien, moet u deze app uit de lijst van goedgekeurde applicaties in uw accountinstellingen op de Flattr website verwijderen.</string>
+ <string name="access_revoked_info">Je heb de toegangssleutel van AntennaPod tot je account ingetrokken. Om het proces te voltooien, moet je deze app verwijderen uit de lijst met goedgekeurde applicaties in je accountinstellingen op de Flattr-website.</string>
<!--Flattr-->
- <string name="flattr_click_success">Een ding geflattr\'d</string>
+ <string name="flattr_click_success">Een ding geflattr\'d!</string>
<string name="flattr_click_success_count">%d dingen geflattr\'d!</string>
<string name="flattr_click_success_queue">Geflattr\'d: %s.</string>
- <string name="flattr_click_failure_count">Kon %d dingen niet flattr\'n!</string>
+ <string name="flattr_click_failure_count">Kan %d dingen niet flattr\'n!</string>
<string name="flattr_click_failure">Niet geflattr\'d: %s.</string>
<string name="flattr_click_enqueued">Ding wordt later geflattr\'d</string>
- <string name="flattring_thing">%s aan het flattren</string>
+ <string name="flattring_thing">Bezig met flattr\'n van%s</string>
<string name="flattring_label">AntennaPod is aan het flattren</string>
<string name="flattrd_label">AntennaPod heeft geflattr\'d</string>
- <string name="flattrd_failed_label">AntennaPod flattr niet gelukt</string>
- <string name="flattr_retrieving_status">Geflattr\'de dingen aan het ontvangen</string>
+ <string name="flattrd_failed_label">AntennaPod-flattr mislukt</string>
+ <string name="flattr_retrieving_status">Bezig met ontvangen van geflattr\'de dingen</string>
<!--Variable Speed-->
- <string name="download_plugin_label">Plugin downloaden</string>
- <string name="no_playback_plugin_title">Plugin niet geĆÆnstalleerd</string>
- <string name="no_playback_plugin_or_sonic_msg">Om variabele afspeelsnelheid te kunnen gebruiken, raden wij u aan om de ingebouwde Sonic mediaspeler te activeren [Android 4.1+]\n\nEventueel kunt u de externe plugin <i>Prestissimo</i> downloaden van de Play Store.\nProblemen bij het gebruik van deze plugin zijn niet de verantwoordelijkheid van AntennaPod en moeten gemeld worden bij de ontwikkelaar van de plugin.</string>
+ <string name="download_plugin_label">Plug-in downloaden</string>
+ <string name="no_playback_plugin_title">Plug-in niet geĆÆnstalleerd</string>
+ <string name="no_playback_plugin_or_sonic_msg">Om variabele afspeelsnelheid te kunnen gebruiken, bevelen wij aan om de ingebouwde Sonic-mediaspeler te activeren [Android 4.1 en hoger]\n\nEvt. kun je de externe plug-in <i>Prestissimo</i> downloaden via de Play Store.\nWij zijn niet verantwoordelijk voor problemen met deze plug-in zijn; meld ze bij de plug-inontwikkelaar.</string>
<string name="set_playback_speed_label">Afspeelsnelheden</string>
<string name="enable_sonic">Sonic inschakelen</string>
<!--Empty list labels-->
- <string name="no_items_label">Er zijn geen items in deze lijst.</string>
- <string name="no_feeds_label">U bent nog tot geen enkele feed geabonneerd.</string>
- <string name="no_chapters_label">Deze aflevering heeft geen hoofdstukken.</string>
- <string name="no_shownotes_label">Deze aflevering heeft geen shownotes.</string>
+ <string name="no_items_label">Er staan geen items op deze lijst.</string>
+ <string name="no_feeds_label">Je hebt nog geen abonnement op een podcast.</string>
+ <string name="no_chapters_label">Deze aflevering bevat geen hoofdstukken.</string>
+ <string name="no_shownotes_label">Deze aflevering bevat geen shownotities.</string>
<!--Preferences-->
- <string name="storage_pref">Geheugen</string>
+ <string name="storage_pref">Opslag</string>
<string name="project_pref">Project</string>
<string name="other_pref">Overig</string>
<string name="about_pref">Over AntennaPod</string>
<string name="queue_label">Wachtrij</string>
- <string name="services_label">Services</string>
+ <string name="integrations_label">Integraties</string>
<string name="flattr_label">Flattr</string>
+ <string name="flattr_summary">Dienst voor microbetalingen</string>
+ <string name="automation">Automatische acties</string>
+ <string name="download_pref_details">Details</string>
+ <string name="import_export_pref">Importeren/Exporteren</string>
+ <string name="appearance">Uiterlijk</string>
+ <string name="external_elements">Externe elementen</string>
+ <string name="interruptions">Onderbrekingen</string>
+ <string name="buttons">Knoppen voor afspeelbediening</string>
+ <string name="media_player">Mediaspeler</string>
<string name="pref_episode_cleanup_title">Automatisch opschonen</string>
- <string name="pref_episode_cleanup_summary">Afleveringen die niet in de wachtrij staan Ć©n niet als favoriet gemarkeerd zijn, mogen verwijderd worden als Automatisch Downloaden ruimte nodig heeft voor nieuwe afleveringen</string>
- <string name="pref_pauseOnDisconnect_sum">Afspelen pauzeren wanneer de koptelefoon wordt losgekoppeld of de bluetooth verbinding wordt verbroken</string>
- <string name="pref_unpauseOnHeadsetReconnect_sum">Afspelen hervatten wanneer de koptelefoon opnieuw wordt aangesloten</string>
- <string name="pref_unpauseOnBluetoothReconnect_sum">Afspelen hervatten wanneer de bluetooth verbinding hervat wordt</string>
- <string name="pref_hardwareForwardButtonSkips_title">\'Volgende\' knop voor overslaan</string>
- <string name="pref_hardwareForwardButtonSkips_sum">Aflevering overslaan ipv vooruitspoelen wanneer op een fysieke \'volgende\' knop wordt gedrukt</string>
- <string name="pref_hardwarePreviousButtonRestarts_title">Vorige voor opnieuw afspelen</string>
- <string name="pref_hardwarePreviousButtonRestarts_sum">Aflevering afspelen vanaf het begin ipv terugspoelen wanneer op een fysieke \'vorige\' knop wordt gedrukt</string>
+ <string name="pref_episode_cleanup_summary">Afleveringen die niet op de wachtrij staan Ć©n geen favoriet zijn, mogen verwijderd worden als Automatisch downloaden ruimte nodig heeft voor nieuwe afleveringen</string>
+ <string name="pref_pauseOnDisconnect_sum">Afspelen pauzeren als de koptelefoon wordt losgekoppeld of de Bluetooth-verbinding wordt verbroken</string>
+ <string name="pref_unpauseOnHeadsetReconnect_sum">Afspelen hervatten als de koptelefoon opnieuw wordt aangesloten</string>
+ <string name="pref_unpauseOnBluetoothReconnect_sum">Afspelen hervatten als de Bluetooth-verbinding hervat wordt</string>
+ <string name="pref_hardwareForwardButtonSkips_title">\'Volgende\' voor overslaan</string>
+ <string name="pref_hardwarePreviousButtonRestarts_title">\'Vorige\' voor opnieuw afspelen</string>
+ <string name="pref_hardwarePreviousButtonRestarts_sum">Aflevering afspelen vanaf het begin i.p.v. terugspoelen als er op een fysieke \'vorige\'-knop wordt gedrukt</string>
<string name="pref_followQueue_sum">Volgende item in de wachtrij afspelen als de aflevering voltooid is</string>
<string name="pref_auto_delete_sum">Afleveringen verwijderen als ze zijn afgespeeld</string>
<string name="pref_auto_delete_title">Automatisch verwijderen</string>
- <string name="pref_smart_mark_as_played_sum">Afleveringen als afgespeeld markeren wanneer deze nog maar een bepaald aantal seconden duurt</string>
- <string name="pref_smart_mark_as_played_title">Slimme afgespeeld markering</string>
- <string name="pref_skip_keeps_episodes_sum">Afleveringen bewaren en in de wachtrij houden als u op \'overslaan\' klikt</string>
+ <string name="pref_smart_mark_as_played_sum">Afleveringen als afgespeeld markeren als deze nog maar een bepaald aantal seconden duren</string>
+ <string name="pref_smart_mark_as_played_title">Slimme afgespeeld-markering</string>
+ <string name="pref_skip_keeps_episodes_sum">Afleveringen bewaren als ze worden overgeslagen</string>
<string name="pref_skip_keeps_episodes_title">Overgeslagen afleveringen bewaren</string>
<string name="pref_favorite_keeps_episodes_sum">Afleveringen bewaren als ze als favoriet gemarkeerd zijn</string>
<string name="pref_favorite_keeps_episodes_title">Favoriete afleveringen bewaren</string>
<string name="playback_pref">Afspelen</string>
<string name="network_pref">Netwerk</string>
- <string name="pref_autoUpdateIntervallOrTime_title">Feed update interval of tijdstip</string>
- <string name="pref_autoUpdateIntervallOrTime_sum">Specificeer een interval of tijdstip waarop feeds automatisch vernieuwd moeten worden</string>
- <string name="pref_autoUpdateIntervallOrTime_message">U kunt een <i>interval</i> zoals \'elke twee uur\' of een specifiek <i>tijdstip</i> zoals \'07:00 uur\' instellen, of het automatisch verversen van feeds uitzetten.\n\n<small>Let op: tijdstippen voor updates zijn niet precies. Er kan een kleine vertraging plaatsvinden.</small></string>
+ <string name="pref_autoUpdateIntervallOrTime_title">Bijwerktussenpoos of -tijdstip</string>
+ <string name="pref_autoUpdateIntervallOrTime_sum">Geef een tussenpoos of tijdstip op waarop feeds automatisch ververst moeten worden</string>
+ <string name="pref_autoUpdateIntervallOrTime_message">Je kunt een <i>tussenpoos</i> zoals \'elke twee uur\' instellen, een specifiek <i>tijdstip</i> zoals \'07:00 uur\' of het automatisch verversen van feeds uitschakelen.\n\n<small>Let op: tijdstippen zijn niet precies; er kan een kleine vertraging zijn.</small></string>
<string name="pref_autoUpdateIntervallOrTime_Disable">Uitschakelen</string>
- <string name="pref_autoUpdateIntervallOrTime_Interval">Interval instellen</string>
+ <string name="pref_autoUpdateIntervallOrTime_Interval">Tussenpoos instellen</string>
<string name="pref_autoUpdateIntervallOrTime_TimeOfDay">Tijdstip instellen</string>
<string name="pref_autoUpdateIntervallOrTime_every">elke %1$s</string>
- <string name="pref_autoUpdateIntervallOrTime_at">op %1$s</string>
- <string name="pref_downloadMediaOnWifiOnly_sum">Download mediabestanden alleen via WiFi</string>
- <string name="pref_followQueue_title">Continu afspelen</string>
- <string name="pref_downloadMediaOnWifiOnly_title">WiFi download van media</string>
- <string name="pref_pauseOnHeadsetDisconnect_title">Pauzeren bij loskoppeling</string>
- <string name="pref_unpauseOnHeadsetReconnect_title">Aansluiten koptelefoon</string>
- <string name="pref_unpauseOnBluetoothReconnect_title">Verbinden met bluetooth</string>
- <string name="pref_mobileUpdate_title">Mobiele updates</string>
- <string name="pref_mobileUpdate_sum">Updates toestaan ā€‹ā€‹via de mobiele dataverbinding</string>
- <string name="refreshing_label">Aan het verversen</string>
- <string name="flattr_settings_label">Flattr settings</string>
- <string name="pref_flattr_auth_title">Flattr accountgegevens</string>
- <string name="pref_flattr_auth_sum">Log in je Flattr account om dingen rechtstreeks vanuit de app te flattr\'en.</string>
+ <string name="pref_autoUpdateIntervallOrTime_at">om %1$s</string>
+ <string name="pref_downloadMediaOnWifiOnly_sum">Mediabestanden alleen downloaden via Wi-Fi</string>
+ <string name="pref_followQueue_title">Doorlopend afspelen</string>
+ <string name="pref_downloadMediaOnWifiOnly_title">Media downloaden via Wi-Fi</string>
+ <string name="pref_pauseOnHeadsetDisconnect_title">Loskoppelen van hoofdtelefoon</string>
+ <string name="pref_unpauseOnHeadsetReconnect_title">Opnieuw aansluiten van hoofdtelefoon</string>
+ <string name="pref_unpauseOnBluetoothReconnect_title">Opnieuw verbinden met Bluetooth</string>
+ <string name="pref_mobileUpdate_title">Bijwerken via mobiel internet</string>
+ <string name="pref_mobileUpdate_sum">Bijwerken toestaan via mobiele internetverbinding</string>
+ <string name="refreshing_label">Bezig met verversen...</string>
+ <string name="flattr_settings_label">Flattr-instellingen</string>
+ <string name="pref_flattr_auth_title">Inloggen op Flattr</string>
+ <string name="pref_flattr_auth_sum">Log in op je Flattr-account om dingen vanuit de app te flattr\'en.</string>
<string name="pref_flattr_this_app_title">Flattr deze app</string>
- <string name="pref_flattr_this_app_sum">Ondersteun de ontwikkeling van AntennaPod door het te flattr\'en. Bedankt!</string>
- <string name="pref_revokeAccess_title">Toegang intrekken</string>
- <string name="pref_revokeAccess_sum">Trek de toegang van deze app in tot je Flattr account.</string>
- <string name="pref_auto_flattr_title">Automatische Flattr</string>
+ <string name="pref_flattr_this_app_sum">Ondersteun de ontwikkeling van AntennaPod door te flattr\'en. Bedankt!</string>
+ <string name="pref_revokeAccess_title">Machtiging intrekken</string>
+ <string name="pref_revokeAccess_sum">Trek de machtiging van deze app in op je Flattr account.</string>
+ <string name="pref_auto_flattr_title">Automatisch flattr\'en</string>
<string name="pref_auto_flattr_sum">Automatisch flattr\'en instellen</string>
- <string name="user_interface_label">User Interface</string>
- <string name="pref_set_theme_title">Kies kleurschema</string>
- <string name="pref_nav_drawer_title">Menu aanpassen</string>
- <string name="pref_nav_drawer_sum">Het uiterlijk en andere instellingen van het menu aanpassen.</string>
- <string name="pref_nav_drawer_items_title">Menu-items instellen</string>
- <string name="pref_nav_drawer_items_sum">Aanpassen welke items in het menu worden getoond</string>
- <string name="pref_nav_drawer_feed_order_title">Feed volgorde instellen</string>
- <string name="pref_nav_drawer_feed_order_sum">De volgorde van uw feeds instellen</string>
+ <string name="user_interface_label">Uiterlijk</string>
+ <string name="pref_set_theme_title">Thema kiezen</string>
+ <string name="pref_nav_drawer_title">Navigatiemenu aanpassen</string>
+ <string name="pref_nav_drawer_sum">Pas het uiterlijk van het navigatiemenu aan.</string>
+ <string name="pref_nav_drawer_items_title">Menu-items kiezen</string>
+ <string name="pref_nav_drawer_items_sum">Kies welke items moeten worden getoond in het navigatiemenu.</string>
+ <string name="pref_nav_drawer_feed_order_title">Abonnementsvolgorde instellen</string>
+ <string name="pref_nav_drawer_feed_order_sum">Stel de volgorde van je abonnementen in</string>
<string name="pref_nav_drawer_feed_counter_title">Teller instellen</string>
- <string name="pref_nav_drawer_feed_counter_sum">Pas aan welke aantallen in het menu worden getoond</string>
- <string name="pref_set_theme_sum">Verander het uiterlijk van AntennaPod.</string>
+ <string name="pref_nav_drawer_feed_counter_sum">Wijzig de door de teller getoonde informatie. Is ook van toepassing op de sortering als \'Abonnementsvolgorde\' is ingesteld op \'Teller\'.</string>
+ <string name="pref_set_theme_sum">Pas het uiterlijk van AntennaPod aan.</string>
<string name="pref_automatic_download_title">Automatisch downloaden</string>
- <string name="pref_automatic_download_sum">Configureer het automatisch downloaden van afleveringen.</string>
- <string name="pref_autodl_wifi_filter_title">Wi-Fi filter inschakelen</string>
- <string name="pref_autodl_wifi_filter_sum">Automatisch downloaden alleen toestaan voor geselecteerde Wi-Fi-netwerken.</string>
- <string name="pref_autodl_allow_on_mobile_title">Downloaden via mobiele verbinding</string>
- <string name="pref_autodl_allow_on_mobile_sum">Het automatisch downloaden van afleveringen via een mobiele internetverbinding toestaan.</string>
- <string name="pref_automatic_download_on_battery_title">Downloaden zonder opladen</string>
+ <string name="pref_automatic_download_sum">Stel het automatisch downloaden van afleveringen in.</string>
+ <string name="pref_autodl_wifi_filter_title">Wi-Fi-filter inschakelen</string>
+ <string name="pref_autodl_wifi_filter_sum">Automatisch downloaden alleen toestaan via gekozen Wi-Fi-netwerken.</string>
+ <string name="pref_autodl_allow_on_mobile_title">Downloaden via mobiel internet</string>
+ <string name="pref_autodl_allow_on_mobile_sum">Automatisch downloaden toestaan via een mobiele internetverbinding.</string>
+ <string name="pref_automatic_download_on_battery_title">Downloaden als het apparaat niet wordt opgeladen</string>
<string name="pref_automatic_download_on_battery_sum">Downloaden toestaan als het apparaat niet wordt opgeladen</string>
<string name="pref_parallel_downloads_title">Gelijktijdige downloads</string>
- <string name="pref_episode_cache_title">Afleveringen cache</string>
+ <string name="pref_episode_cache_title">Afleveringscache</string>
<string name="pref_theme_title_light">Licht</string>
<string name="pref_theme_title_dark">Donker</string>
+ <string name="pref_theme_title_trueblack">Zwart (geschikt voor AMOLED)</string>
<string name="pref_episode_cache_unlimited">Onbeperkt</string>
<string name="pref_update_interval_hours_plural">uur</string>
<string name="pref_update_interval_hours_singular">uur</string>
<string name="pref_update_interval_hours_manual">Handmatig</string>
<string name="pref_gpodnet_authenticate_title">Inloggen</string>
- <string name="pref_gpodnet_authenticate_sum">Log in met je gpodder.net account om je abonnementen te synchroniseren.</string>
- <string name="pref_gpodnet_logout_title">Log uit</string>
- <string name="pref_gpodnet_logout_toast">Uitlog was succesvol</string>
- <string name="pref_gpodnet_setlogin_information_title">Aanmeldingsgegevens wijzigen</string>
- <string name="pref_gpodnet_setlogin_information_sum">Wijzig de aanmeldingsgegevens van je gpodder.net account.</string>
+ <string name="pref_gpodnet_authenticate_sum">Log in met je gpodder.net-account om je abonnementen te synchroniseren.</string>
+ <string name="pref_gpodnet_logout_title">Uitloggen</string>
+ <string name="pref_gpodnet_logout_toast">Uitgelogd</string>
+ <string name="pref_gpodnet_setlogin_information_title">Inloggegevens wijzigen</string>
+ <string name="pref_gpodnet_setlogin_information_sum">Wijzig de inloggegevens van je gpodder.net-account.</string>
<string name="pref_gpodnet_sync_changes_title">Wijzigingen nu synchroniseren</string>
- <string name="pref_gpodnet_sync_changes_sum">Synchroniseer veranderde abonnementen en aflevering-statussen met gpodder.net</string>
+ <string name="pref_gpodnet_sync_changes_sum">Synchroniseer gewijzigde abonnementen en afleveringsstatussen met gpodder.net.</string>
<string name="pref_gpodnet_full_sync_title">Nu alles synchroniseren</string>
- <string name="pref_gpodnet_full_sync_sum">Synchroniseer alle abonnementen en aflevering-statussen met gpodder.net</string>
- <string name="pref_gpodnet_sync_sum_last_sync_line">Laatste synchronisatie: %1$s (%2$s)</string>
+ <string name="pref_gpodnet_full_sync_sum">Synchroniseer alle abonnementen en afleveringsstatussen met gpodder.net.</string>
+ <string name="pref_gpodnet_sync_sum_last_sync_line">Vorige synchronisatie: %1$s (%2$s)</string>
<string name="pref_gpodnet_sync_started">Synchroniseren gestart</string>
<string name="pref_gpodnet_full_sync_started">Volledige synchronisatie gestart</string>
<string name="pref_gpodnet_login_status"><![CDATA[Ingelogd als <i>%1$s</i> met apparaat <i>%2$s</i>]]></string>
- <string name="pref_gpodnet_notifications_title">Toon synchronisatiefouten in melding</string>
+ <string name="pref_gpodnet_notifications_title">Melding tonen bij synchronisatiefouten</string>
<string name="pref_gpodnet_notifications_sum">Deze instelling is niet van toepassing op inlogfouten.</string>
<string name="pref_playback_speed_title">Afspeelsnelheden</string>
- <string name="pref_playback_speed_sum">Pas de beschikbare snelheden aan voor de variabele audio afspeelsnelheid</string>
+ <string name="pref_playback_speed_sum">Pas de beschikbare snelheden aan voor de variabele audio-afspeelsnelheid</string>
<string name="pref_fast_forward">Snelheid van vooruitspoelen</string>
- <string name="pref_fast_forward_sum">Pas het aantal seconden aan waarmee wordt vooruitgespoeld per klik op de knop</string>
- <string name="pref_rewind">Snelheid terugspoelen</string>
- <string name="pref_rewind_sum">Pas het aantal seconden aan waarmee wordt teruggespoeld per klik op de knop</string>
- <string name="pref_gpodnet_sethostname_title">Definieer hostname</string>
- <string name="pref_gpodnet_sethostname_use_default_host">Gebruik standaard host</string>
- <string name="pref_expandNotify_title">Bedienen via melding</string>
- <string name="pref_expandNotify_sum">Altijd de bedieningsknoppen tonen bij de melding in het notificatiecentrum.</string>
- <string name="pref_persistNotify_title">Behoud bedieningsknoppen</string>
- <string name="pref_persistNotify_sum">Ook bedieningsknoppen in het notificatiecentrum en op het vergrendelingsscherm behouden als het afspelen gepauzeerd wordt.</string>
+ <string name="pref_fast_forward_sum">Pas het aantal seconden aan waarmee wordt vooruitgespoeld per druk op de knop</string>
+ <string name="pref_rewind">Snelheid van terugspoelen</string>
+ <string name="pref_rewind_sum">Pas het aantal seconden aan waarmee wordt teruggespoeld per druk op de knop</string>
+ <string name="pref_gpodnet_sethostname_title">Hostnaam instellen</string>
+ <string name="pref_gpodnet_sethostname_use_default_host">Standaardhost gebruiken</string>
+ <string name="pref_persistNotify_title">Bedieningsknoppen behouden</string>
+ <string name="pref_persistNotify_sum">Ook bedieningsknoppen op het meldings- en vergrendelscherm behouden als het afspelen gepauzeerd wordt.</string>
<string name="pref_compact_notification_buttons_title">Bedieningsknoppen vergrendelscherm</string>
- <string name="pref_compact_notification_buttons_sum">Bedieningsknopppen voor op het vergrendelscherm kiezen. De play/pauze knop wordt altijd getoond.</string>
- <string name="pref_compact_notification_buttons_dialog_title">Selecteer maximaal %1$d knoppen.</string>
- <string name="pref_compact_notification_buttons_dialog_error">U kunt slechts maximaal %1$d knoppen selecteren.</string>
+ <string name="pref_compact_notification_buttons_sum">Kies de bedieningsknoppen voor het vergrendelscherm. De knop afspelen/pauzeren wordt altijd getoond.</string>
+ <string name="pref_compact_notification_buttons_dialog_title">Kies maximaal %1$d knoppen</string>
+ <string name="pref_compact_notification_buttons_dialog_error">Je kunt maximaal %1$d knoppen kiezen.</string>
<string name="pref_lockscreen_background_title">Achtergrondafbeelding vergrendelscherm</string>
- <string name="pref_lockscreen_background_sum">Laat de afbeelding van de huidige aflevering zien op het vergrendelscherm. Ten gevolge van deze functie is de afbeelding ook beschikbaar voor andere apps.</string>
- <string name="pref_showDownloadReport_title">Laat downloadrapport zien</string>
- <string name="pref_showDownloadReport_sum">Genereer een rapport met fout-details als downloads mislukken</string>
- <string name="pref_expand_notify_unsupport_toast">Android versies lager dan 4.1 ondersteunen geen knoppen in het notificatiecentrum.</string>
+ <string name="pref_lockscreen_background_sum">Toon de afbeelding van de huidige aflevering op het vergrendelscherm. Hierdoor is de afbeelding ook beschikbaar voor andere apps.</string>
+ <string name="pref_showDownloadReport_title">Downloadrapportage tonen</string>
+ <string name="pref_showDownloadReport_sum">Genereer een rapport met foutdetails als downloads mislukken.</string>
+ <string name="pref_expand_notify_unsupport_toast">Android-versies lager dan 4.1 ondersteunen geen knoppen op meldingen.</string>
<string name="pref_queueAddToFront_sum">Nieuwe afleveringen aan het begin van de wachtrij toevoegen.</string>
<string name="pref_queueAddToFront_title">Bovenaan wachtrij toevoegen</string>
<string name="pref_smart_mark_as_played_disabled">Uitgeschakeld</string>
- <string name="pref_image_cache_size_title">Grootte cachegeheugen</string>
- <string name="pref_image_cache_size_sum">De groote van het cachegeheugen voor afbeeldingen aanpassen.</string>
- <string name="crash_report_title">Crashreport</string>
- <string name="crash_report_sum">Verstuur laatste crashreport via email</string>
- <string name="send_email">Verstuur email</string>
- <string name="experimental_pref">Experimentele functie(s)</string>
- <string name="pref_sonic_title">Sonic mediaspeler</string>
- <string name="pref_sonic_message">Gebruik AntennaPod\'s ingebouwde Sonic mediaspeler als een alternatief voor Prestissimo en de mediaspeler van Android.</string>
+ <string name="pref_image_cache_size_title">Grootte van afbeeldingscache</string>
+ <string name="pref_image_cache_size_sum">Pas de grootte aan van het cachegeheugen voor afbeeldingen.</string>
+ <string name="crash_report_title">Crashrapportage</string>
+ <string name="crash_report_sum">Verstuur laatste crashrapportage via e-mail</string>
+ <string name="send_email">E-mail versturen</string>
+ <string name="experimental_pref">Experimenteel</string>
+ <string name="pref_media_player_message">Kies welke mediaspeler gebruikt moet worden voor het afspelen van bestanden</string>
<string name="pref_current_value">Huidige instelling: %1$s</string>
<string name="pref_proxy_title">Proxy</string>
<string name="pref_proxy_sum">Netwerkproxy instellen</string>
- <string name="pref_faq">FAQ - veelgestelde vragen</string>
- <string name="pref_known_issues">Reeds bekende bugs</string>
- <string name="pref_no_browser_found">Geen browser gevonden</string>
- <string name="pref_cast_title">Chromecast</string>
- <string name="pref_cast_message_play_flavor">Ondersteuning activeren voor draadloos afspelen via Cast apparaten (zoals Chromecast, Audio speakers en Android TV)</string>
- <string name="pref_cast_message_free_flavor">Voor Chromecast is software van derden vereist die niet beschikbaar zijn in deze versie van AntennaPod</string>
+ <string name="pref_faq">Veelgestelde vragen</string>
+ <string name="pref_known_issues">Bekende problemen</string>
+ <string name="pref_no_browser_found">Geen browser aangetroffen.</string>
+ <string name="pref_cast_title">Chromecast-ondersteuning</string>
+ <string name="pref_cast_message_play_flavor">Ondersteuning activeren voor draadloos afspelen via Cast-apparaten (zoals Chromecast, luidsprekers of Android TV)</string>
+ <string name="pref_cast_message_free_flavor">Voor Chromecast is software van derden vereist die niet beschikbaar is in deze versie van AntennaPod</string>
<string name="pref_enqueue_downloaded_title">Gedownloade afleveringen in wachtrij</string>
<string name="pref_enqueue_downloaded_summary">Voeg gedownloade afleveringen toe aan de wachtrij</string>
+ <string name="media_player_builtin">Ingebouwde Android-speler</string>
+ <string name="pref_videoBehavior_title">Bij verlaten van video</string>
+ <string name="pref_videoBehavior_sum">Wat te doen bij het verlaten van een spelende video</string>
+ <string name="stop_playback">Afspelen stoppen</string>
+ <string name="continue_playback">Audio af blijven spelen</string>
<!--Auto-Flattr dialog-->
- <string name="auto_flattr_enable">Automatisch flattr\'en aanzetten</string>
- <string name="auto_flattr_after_percent">Flattr een aflevering zodra %d procent is afgespeeld</string>
- <string name="auto_flattr_ater_beginning">Flattr de aflevering bij afspelen</string>
- <string name="auto_flattr_ater_end">Flattr aflevering als afspelen is gestopt</string>
+ <string name="auto_flattr_enable">Automatisch flattr\'en inschakelen</string>
+ <string name="auto_flattr_after_percent">Flattr een aflevering zodra deze %d procent is afgespeeld</string>
+ <string name="auto_flattr_ater_beginning">Flattr de aflevering als het afspelen begint</string>
+ <string name="auto_flattr_ater_end">Flattr de aflevering als afspelen is gestopt</string>
<!--Search-->
<string name="search_hint">Zoeken naar afleveringen</string>
- <string name="found_in_shownotes_label">Gevonden in de shownotes</string>
+ <string name="found_in_shownotes_label">Gevonden in de shownotities</string>
<string name="found_in_chapters_label">Gevonden in de hoofdstukken</string>
- <string name="found_in_authors_label">Gevonden in de makers</string>
- <string name="found_in_feeds_label">Gevonden in de feeds</string>
+ <string name="found_in_authors_label">Gevonden bij de maker(s)</string>
+ <string name="found_in_feeds_label">Gevonden in de podcast</string>
<string name="search_status_no_results">Er zijn geen resultaten gevonden</string>
<string name="search_label">Zoeken</string>
<string name="found_in_title_label">Gevonden in de titel</string>
<string name="no_results_for_query">Geen resultaten gevonden voor \"%1$s\"</string>
<!--OPML import and export-->
- <string name="opml_import_txtv_button_lable">Met OPML-bestanden kan je podcasts van de ene naar de andere podcatcher verplaatsen.</string>
+ <string name="opml_import_txtv_button_lable">Met OPML-bestanden kun je podcasts van de ene naar de andere podcatcher verplaatsen.</string>
<string name="opml_import_option">Optie %1$d</string>
- <string name="opml_import_explanation_1">Kies een bestand van een specifieke locatie via bestandsbeheer.</string>
- <string name="opml_import_explanation_2">Kies een OPML bestand via een andere app, zoals Dropbox en Google Drive, of via uw bestandsbeheerder.</string>
- <string name="opml_import_explanation_3">Ga naar een OPML bestand in apps zoals GMail, Dropbox en Google Drive om het met AntennaPod te openen.</string>
- <string name="start_import_label">Start importeren</string>
+ <string name="opml_import_explanation_1">Kies een bestand via de bestandsbeheer.</string>
+ <string name="opml_import_explanation_2">Kies een OPML-bestand via een andere app, zoals Dropbox of Google Drive, of via je bestandsbeheerder.</string>
+ <string name="opml_import_explanation_3">Apps as Gmail, Dropbox, Google Drive en de meeste bestandsbeheerders kunnen OPML-bestanden <i>openen</i> <i>met</i> AntennaPod.</string>
+ <string name="start_import_label">Importeren starten</string>
<string name="opml_import_label">OPML importeren</string>
<string name="opml_directory_error">FOUT!</string>
- <string name="reading_opml_label">OPML-bestand aan het lezen</string>
- <string name="opml_reader_error">Er is iets misgegaan met het lezen van het OPML-bestand:</string>
- <string name="opml_import_error_no_file">Geen bestand geselecteerd!</string>
+ <string name="reading_opml_label">Bezig met uitlezen van OPML-bestand...</string>
+ <string name="opml_reader_error">Er is iets misgegaan tijdens het lezen van het OPML-bestand:</string>
+ <string name="opml_import_error_no_file">Geen bestand gekozen!</string>
<string name="select_all_label">Alles selecteren</string>
- <string name="deselect_all_label">Alles deselecteren</string>
- <string name="select_options_label">Selecterenā€¦</string>
+ <string name="deselect_all_label">Alles de-selecteren</string>
+ <string name="select_options_label">Selecteren...</string>
<string name="choose_file_from_filesystem">Via bestandsbeheer</string>
<string name="choose_file_from_external_application">Via externe app</string>
- <string name="opml_export_label">OPML export</string>
- <string name="html_export_label">HTML export</string>
- <string name="exporting_label">Exporterenā€¦</string>
- <string name="export_error_label">Export fout</string>
- <string name="opml_export_success_title">OPML bestand succesvol geƫxporteerd.</string>
- <string name="opml_export_success_sum"> Het OPML-bestand is in \u0020 geplaatst</string>
+ <string name="opml_export_label">OPML exporteren</string>
+ <string name="html_export_label">HTML exporteren</string>
+ <string name="exporting_label">Bezig met exporteren...</string>
+ <string name="export_error_label">Exportfout</string>
+ <string name="export_success_title">Geƫxporteerd</string>
+ <string name="export_success_sum">Het geƫxporteerde bestand is opgeslagen in:\n\n%1$s</string>
<string name="opml_import_ask_read_permission">Toegang tot externe locaties is nodig om het OPML-bestand te kunnen lezen</string>
<!--Sleep timer-->
- <string name="set_sleeptimer_label">Slaap timer instellen</string>
- <string name="disable_sleeptimer_label">Slaap timer uitschakelen</string>
- <string name="enter_time_here_label">Voer tijd in</string>
- <string name="sleep_timer_label">Slaap timer</string>
+ <string name="set_sleeptimer_label">Slaaptimer instellen</string>
+ <string name="disable_sleeptimer_label">Slaaptimer uitschakelen</string>
+ <string name="enter_time_here_label">Voer een tijd in</string>
+ <string name="sleep_timer_label">Slaaptimer</string>
<string name="time_left_label">Resterende tijd:\u0020</string>
- <string name="time_dialog_invalid_input">Ongeldige invoer, de tijd moet een geheel getal zijn</string>
+ <string name="time_dialog_invalid_input">Ongeldige invoer; de tijd moet een geheel getal zijn</string>
<string name="timer_about_to_expire_label"><b>Als de timer bijna afloopt:</b></string>
<string name="shake_to_reset_label">Schudden om opnieuw in te stellen</string>
<string name="timer_vibration_label">Trillen</string>
@@ -480,65 +506,65 @@
<item quantity="other">%d uur</item>
</plurals>
<string name="auto_enable_label">Automatisch inschakelen</string>
- <string name="sleep_timer_enabled_label">Slaap timer ingeschakeld</string>
- <string name="sleep_timer_disabled_label">Slaap timer uitgeschakeld</string>
+ <string name="sleep_timer_enabled_label">Slaaptimer ingeschakeld</string>
+ <string name="sleep_timer_disabled_label">Slaaptimer uitgeschakeld</string>
<!--gpodder.net-->
<string name="gpodnet_taglist_header">CATEGORIEƋN</string>
- <string name="gpodnet_toplist_header">TOP PODCASTS</string>
+ <string name="gpodnet_toplist_header">POPULAIRE PODCASTS</string>
<string name="gpodnet_suggestions_header">SUGGESTIES</string>
- <string name="gpodnet_search_hint">Zoek gpodder.net</string>
- <string name="gpodnetauth_login_title">Log in</string>
- <string name="gpodnetauth_login_descr">Welkom bij het inlogproces van gpodder.net. Typ eerst je accountgegevens:</string>
- <string name="gpodnetauth_login_butLabel">Log in</string>
- <string name="gpodnetauth_login_register">Als u nog geen account heeft, kunt u er hier een aanmaken:\nhttps://gpodder.net/register/</string>
+ <string name="gpodnet_search_hint">gpodder.net doorzoeken</string>
+ <string name="gpodnetauth_login_title">Inloggen</string>
+ <string name="gpodnetauth_login_descr">Welkom bij het inlogproces van gpodder.net. Typ eerst je inloggegevens:</string>
+ <string name="gpodnetauth_login_butLabel">Inloggen</string>
+ <string name="gpodnetauth_login_register">Als je nog geen account hebt, dan kun je je hier registreren:\nhttps://gpodder.net/register/</string>
<string name="username_label">Gebruikersnaam</string>
<string name="password_label">Wachtwoord</string>
- <string name="gpodnetauth_device_title">Apparaatselectie</string>
- <string name="gpodnetauth_device_descr">Maak een nieuw apparaat aan om voor je gpodder.net account te gebruiken of kies een bestaande:</string>
- <string name="gpodnetauth_device_deviceID">Device ID:\u0020</string>
- <string name="gpodnetauth_device_caption">Apparaatnaam</string>
- <string name="gpodnetauth_device_butCreateNewDevice">Maak een nieuw apparaat aan</string>
- <string name="gpodnetauth_device_chooseExistingDevice">Kies een bestaand apparaat:</string>
- <string name="gpodnetauth_device_errorEmpty">Apparaat ID mag niet leeg zijn</string>
- <string name="gpodnetauth_device_errorAlreadyUsed">Apparaat ID al in gebruik</string>
- <string name="gpodnetauth_device_caption_errorEmpty">Apparaatomschrijving kan niet leeg zijn</string>
- <string name="gpodnetauth_device_butChoose">Kies</string>
- <string name="gpodnetauth_finish_title">Login succesvol</string>
- <string name="gpodnetauth_finish_descr">Gefeliciteerd! Jou gpodder.net account is nu verbonden met je apparaat. AntennaPod zal voortaan abonnementen op je apparaat automatisch met je gpodder.net account synchroniseren.</string>
- <string name="gpodnetauth_finish_butsyncnow">Synchronisatie nu starten</string>
+ <string name="gpodnetauth_device_title">Apparaatkeuze</string>
+ <string name="gpodnetauth_device_descr">Creƫer een nieuw apparaat voor je gpodder.net-account of kies een bestaand:</string>
+ <string name="gpodnetauth_device_deviceID">Apparaat-ID:\u0020</string>
+ <string name="gpodnetauth_device_caption">Omschrijving</string>
+ <string name="gpodnetauth_device_butCreateNewDevice">Nieuw apparaat creƫren</string>
+ <string name="gpodnetauth_device_chooseExistingDevice">Bestaand apparaat kiezen:</string>
+ <string name="gpodnetauth_device_errorEmpty">Apparaat-ID mag niet blanco zijn</string>
+ <string name="gpodnetauth_device_errorAlreadyUsed">Apparaat-ID wordt al gebruikt</string>
+ <string name="gpodnetauth_device_caption_errorEmpty">Apparaatomschrijving mag niet blanco zijn</string>
+ <string name="gpodnetauth_device_butChoose">Kiezen</string>
+ <string name="gpodnetauth_finish_title">Ingelogd!</string>
+ <string name="gpodnetauth_finish_descr">Gefeliciteerd! Je gpodder.net-account is nu gekoppeld aan je apparaat. AntennaPod zal voortaan abonnementen automatisch synchroniseren met je gpodder.net-account.</string>
+ <string name="gpodnetauth_finish_butsyncnow">Nu synchroniseren</string>
<string name="gpodnetauth_finish_butgomainscreen">Terug naar hoofdscherm</string>
- <string name="gpodnetsync_auth_error_title">gpodder.net authenticatie fout</string>
- <string name="gpodnetsync_auth_error_descr">Ongeldig gebruikersnaam of wachtwoord</string>
- <string name="gpodnetsync_error_title">gpodder.net synchronisatie fout</string>
+ <string name="gpodnetsync_auth_error_title">gpodder.net - authenticatiefout</string>
+ <string name="gpodnetsync_auth_error_descr">Onjuiste gebruikersnaam of wachtwoord</string>
+ <string name="gpodnetsync_error_title">gpodder.net - synchronisatiefout</string>
<string name="gpodnetsync_error_descr">Er is een fout opgetreden tijdens het synchroniseren:\u0020</string>
- <string name="gpodnetsync_pref_report_successful">Succesvol</string>
- <string name="gpodnetsync_pref_report_failed">Gefaald</string>
+ <string name="gpodnetsync_pref_report_successful">Voltooid</string>
+ <string name="gpodnetsync_pref_report_failed">Mislukt</string>
<!--Directory chooser-->
- <string name="selected_folder_label">Geselecteerde map:</string>
- <string name="create_folder_label">Map aanmaken</string>
- <string name="choose_data_directory">Kies data map</string>
- <string name="choose_data_directory_message">Kies de hoofdmap voor uw data. AntennaPod zal de benodigde submappen creeƫren.</string>
- <string name="choose_data_directory_permission_rationale">Toegang tot de externe opslag is nodig om de data-map aan te passen</string>
- <string name="create_folder_msg">Maak een nieuwe map aan met de naam \"%1$s\"?</string>
- <string name="create_folder_success">Nieuwe map aangemaakt</string>
- <string name="create_folder_error_no_write_access">Kan in deze map niet schrijven</string>
+ <string name="selected_folder_label">Gekozen map:</string>
+ <string name="create_folder_label">Map creƫren</string>
+ <string name="choose_data_directory">Kies de gegevensmap</string>
+ <string name="choose_data_directory_message">Kies de hoofdmap voor je gegevens. AntennaPod zal de benodigde submappen creƫren.</string>
+ <string name="choose_data_directory_permission_rationale">Toegang tot externe opslag is nodig om de gegevensmap te wijzigen</string>
+ <string name="create_folder_msg">Wil je een nieuwe map creƫren met de naam \"%1$s\"?</string>
+ <string name="create_folder_success">Nieuwe map gecreƫerd</string>
+ <string name="create_folder_error_no_write_access">Kan niet schrijven naar map</string>
<string name="create_folder_error_already_exists">Map bestaat al</string>
- <string name="create_folder_error">Kon map niet aanmaken</string>
+ <string name="create_folder_error">Kan map niet creƫren</string>
<string name="folder_does_not_exist_error">\"%1$s\" bestaat niet</string>
- <string name="folder_not_readable_error">\"%1$s\" kan niet gelezen worden</string>
- <string name="folder_not_writable_error">in \"%1$s\" kan geen data geschreven worden</string>
+ <string name="folder_not_readable_error">\"%1$s\" kan niet worden uitgelezen</string>
+ <string name="folder_not_writable_error">Kan niet wegschrijven naar \"%1$s\"</string>
<string name="folder_not_empty_dialog_title">Map is niet leeg</string>
- <string name="folder_not_empty_dialog_msg">De map die u heeft gekozen is niet leeg. Gedownloade media en andere bestanden zullen rechtstreeks in deze map geplaatst worden. Toch doorgaan?</string>
- <string name="set_to_default_folder">Kies default map</string>
- <string name="pref_pausePlaybackForFocusLoss_sum">Het afspelen onderbreken in plaats van het volume te verlagen wanneer er een andere app geluiden af wil spelen</string>
+ <string name="folder_not_empty_dialog_msg">De map die je hebt gekozen is niet leeg. Gedownloade media en andere bestanden worden rechtstreeks in deze map geplaatst. Wil je toch doorgaan?</string>
+ <string name="set_to_default_folder">Standaardmap kiezen</string>
+ <string name="pref_pausePlaybackForFocusLoss_sum">Het afspelen onderbreken in plaats van het volume te verlagen als een andere app geluiden wil afspelen</string>
<string name="pref_pausePlaybackForFocusLoss_title">Pauzeren bij onderbrekingen</string>
- <string name="pref_resumeAfterCall_sum">Afspelen hervatten na beƫindigen telefoongesprek</string>
+ <string name="pref_resumeAfterCall_sum">Afspelen hervatten na beƫindigen van telefoongesprek</string>
<string name="pref_resumeAfterCall_title">Hervatten na gesprek</string>
- <string name="pref_restart_required">AntennaPod moet opnieuw worden opgestart om deze wijziging door te voeren.</string>
+ <string name="pref_restart_required">AntennaPod moet opnieuw worden gestart om deze wijziging toe te passen.</string>
<!--Online feed view-->
<string name="subscribe_label">Abonneren</string>
<string name="subscribed_label">Geabonneerd</string>
- <string name="downloading_label">Downloadenā€¦</string>
+ <string name="downloading_label">Bezig met downloaden...</string>
<!--Content descriptions for image buttons-->
<string name="rewind_label">Terugspoelen</string>
<string name="fast_forward_label">Vooruitspoelen</string>
@@ -546,45 +572,45 @@
<string name="media_type_video_label">Video</string>
<string name="navigate_upwards_label">Navigeer naar boven</string>
<string name="status_downloading_label">Aflevering wordt gedownload</string>
- <string name="in_queue_label">Aflevering is in de queue</string>
- <string name="drag_handle_content_description">Item verslepen om het te verplaatsen</string>
+ <string name="in_queue_label">Aflevering staat in de wachtrij</string>
+ <string name="drag_handle_content_description">Versleep dit item om de positie te veranderen</string>
<string name="load_next_page_label">Volgende pagina laden</string>
<!--Feed information screen-->
<string name="authentication_label">Authenticatie</string>
- <string name="authentication_descr">Gebruikersnaam en wachtwoord aanpassen voor deze podcast</string>
+ <string name="authentication_descr">Gebruikersnaam en wachtwoord wijzigen voor deze podcast en bijbehorende afleveringen.</string>
<string name="auto_download_settings_label">Instellingen voor Automatisch downloaden</string>
- <string name="episode_filters_label">Afleveringenfilter</string>
+ <string name="episode_filters_label">Afleveringsfilter</string>
<string name="episode_filters_description">Lijst van zoektermen die bepalen of een aflevering meegenomen of uitgesloten wordt bij automatisch downloaden</string>
<string name="episode_filters_include">Meenemen</string>
<string name="episode_filters_exclude">Uitsluiten</string>
<string name="episode_filters_hint">Losse woorden \n\"Meerdere tussen aanhalingstekens\"</string>
- <string name="keep_updated">Up to date houden</string>
+ <string name="keep_updated">Bijgewerkt houden</string>
<!--Progress information-->
- <string name="progress_upgrading_database">Database upgraden</string>
+ <string name="progress_upgrading_database">Bezig met upgraden van databank...</string>
<!--AntennaPodSP-->
- <string name="sp_apps_importing_feeds_msg">Abonnementen aan het importeren vanuit single-purpose apps...</string>
- <string name="search_itunes_label">Zoeken in iTunes</string>
+ <string name="sp_apps_importing_feeds_msg">Bezig met importeren van abonnementen uit eenmalige apps...</string>
+ <string name="search_itunes_label">iTunes doorzoeken</string>
<string name="filter">Filter</string>
<string name="search_fyyd_label">Fyyd doorzoeken</string>
<!--Episodes apply actions-->
<string name="all_label">Alle</string>
- <string name="selected_all_label">Alle afleveringen selecteren</string>
+ <string name="selected_all_label">Alle afleveringen geselecteerd</string>
<string name="none_label">Geen</string>
- <string name="deselected_all_label">Alle afleveringen deselecteren</string>
+ <string name="deselected_all_label">Alle afleveringen gede-selecteerd</string>
<string name="played_label">Afgespeeld</string>
- <string name="selected_played_label">Alle afgespeelde afleveringen selecteren</string>
+ <string name="selected_played_label">Alle afgespeelde afleveringen geselecteerd</string>
<string name="unplayed_label">Niet afgespeeld</string>
- <string name="selected_unplayed_label">Niet afgespeelde afleveringen geselecteerd</string>
+ <string name="selected_unplayed_label">Niet-afgespeelde afleveringen geselecteerd</string>
<string name="downloaded_label">Gedownload</string>
- <string name="selected_downloaded_label">Gedownloadde afleveringen geselecteerd</string>
+ <string name="selected_downloaded_label">Gedownloade afleveringen geselecteerd</string>
<string name="not_downloaded_label">Niet gedownload</string>
- <string name="selected_not_downloaded_label">Niet gedownloadde afleveringen geselecteerd</string>
+ <string name="selected_not_downloaded_label">Niet-gedownloade afleveringen geselecteerd</string>
<string name="queued_label">In de wachtrij</string>
- <string name="selected_queued_label">Afleveringen in de wachtrij selecteren</string>
+ <string name="selected_queued_label">Afleveringen in de wachtrij geselecteerd</string>
<string name="not_queued_label">Niet in de wachtrij</string>
<string name="selected_not_queued_label">Afleveringen geselecteerd die niet in de wachtrij staan</string>
<string name="has_media">Bevat media</string>
- <string name="selected_has_media_label">Geselecteerde afleveringen met media</string>
+ <string name="selected_has_media_label">Afleveringen met media geselecteerd</string>
<!--Sort-->
<string name="sort_title_a_z">Titel (A \u2192 Z)</string>
<string name="sort_title_z_a">Titel (A \u2192 A)</string>
@@ -593,9 +619,9 @@
<string name="sort_duration_short_long">Lengte (kort \u2192 lang)</string>
<string name="sort_duration_long_short">Lengte (lang \u2192 kort)</string>
<!--Rating dialog-->
- <string name="rating_title">Wat vind u van AntennaPod?</string>
- <string name="rating_message">We zouden het op prijs stellen als u even de tijd kunt nemen om AntennaPod te beoordelen.</string>
- <string name="rating_never_label">Nee, bedankt.</string>
+ <string name="rating_title">Wat vind je van AntennaPod?</string>
+ <string name="rating_message">We stellen het op prijs als je even de tijd neemt om AntennaPod te beoordelen.</string>
+ <string name="rating_never_label">Nee, bedankt</string>
<string name="rating_later_label">Herinner me later</string>
<string name="rating_now_label">Ja, doen we!</string>
<!--Audio controls-->
@@ -604,43 +630,52 @@
<string name="volume">Volume</string>
<string name="left_short">L</string>
<string name="right_short">R</string>
- <string name="audio_effects">Terugmixen</string>
+ <string name="audio_effects">Audio-effecten</string>
<string name="stereo_to_mono">Stereo terugmixen tot monogeluid op beide kanalen</string>
<string name="sonic_only">Sonic vereist</string>
<!--proxy settings-->
<string name="proxy_type_label">Type</string>
<string name="host_label">Host</string>
<string name="port_label">Poort</string>
- <string name="optional_hint">(Optioneel)</string>
+ <string name="optional_hint">(optioneel)</string>
<string name="proxy_test_label">Testen</string>
- <string name="proxy_checking">Controlerenā€¦</string>
- <string name="proxy_test_successful">Test succesvol</string>
+ <string name="proxy_checking">Bezig met controleren...</string>
+ <string name="proxy_test_successful">Test geslaagd</string>
<string name="proxy_test_failed">Test mislukt</string>
- <string name="proxy_host_empty_error">Host kan niet leeg zijn</string>
- <string name="proxy_host_invalid_error">Host is geen geldig IP-adres of domein</string>
- <string name="proxy_port_invalid_error">Poortnummer ongeldig</string>
+ <string name="proxy_host_empty_error">Host mag niet blanco zijn</string>
+ <string name="proxy_host_invalid_error">Host is geen geldig IP-adres of domeinnaam</string>
+ <string name="proxy_port_invalid_error">Ongeldig poortnummer</string>
<!--Database import/export-->
- <string name="import_export">Database im-/exporteren</string>
- <string name="import_export_warning">Hiermee kun je de podcasts waarop je geabonneerd bent en de afgespeelde afleveringen naar een ander apparaat kopiĆ«ren\n\nGeĆ«xporteerde databases kunnen alleen geĆÆmporteerd worden in dezelfde versie van AntennaPod (zie \'Over AntennaPod\' in de instellingen). Het importeren naar een andere versie kan onverwachte problemen opleveren.\n\nNa het importeren kunnen afleveringen als \'gedownload\' aangemerkt zijn, terwijl dit niet het geval is. Druk op de afspeelknop naast de afleveringen om AntennaPod dit te laten detecteren.</string>
+ <string name="import_export">Databank im-/exporteren</string>
+ <string name="import_export_warning">Met deze experimentele functie kun je je abonnementen en afgespeelde afleveringen overzetten naar een ander apparaat.\n\nGeĆ«xporteerde databanken kunnen alleen worden geĆÆmporteerd in dezelfde versie van AntennaPod, anders kunnen zich problemen voordoen.\n\nNa het importeren kunnen afleveringen als \'gedownload\' aangemerkt zijn, terwijl dit niet het geval is. Druk op de afspeelknop om AntennaPod dit te laten detecteren.</string>
<string name="label_import">Importeren</string>
<string name="label_export">Exporteren</string>
- <string name="import_select_file">Selecteer bestand om te importeren</string>
- <string name="export_ok">Succesvol geƫxporteerd. De database is naar de SD-kaart geschreven.</string>
- <string name="import_ok">Succesvol geĆÆmporteerd\n\nDruk op OK om AntennaPod te herstarten.</string>
+ <string name="import_select_file">Kies een te importeren bestand</string>
+ <string name="export_ok">Export voltooid.</string>
+ <string name="import_ok">GeĆÆmporteerd.\n\nDruk op OkĆ© om AntennaPod opnieuw te starten.</string>
<!--Casting-->
<string name="cast_media_route_menu_title">Afspelen opā€¦</string>
- <string name="cast_disconnect_label">Cast loskoppelen</string>
- <string name="cast_not_castable">Dit bestand kan niet afgespeeld woorden door het Cast apparaat</string>
- <string name="cast_failed_to_play">Starten van afspelen is mislukt</string>
- <string name="cast_failed_to_stop">Stoppen van afspelen is mislukt</string>
- <string name="cast_failed_to_pause">Pauzeren van afspelen is mislukt</string>
+ <string name="cast_disconnect_label">Cast-verbinding verbreken</string>
+ <string name="cast_not_castable">De geselecteerde media is niet compatibel met het cast-apparaat</string>
+ <string name="cast_failed_to_play">Afspelen mislukt</string>
+ <string name="cast_failed_to_stop">Stoppen mislukt</string>
+ <string name="cast_failed_to_pause">Pauzeren mislukt</string>
<!--<string name="cast_failed_to_connect">Could not connect to the device</string>-->
- <string name="cast_failed_setting_volume">Het aanpassen van het volume is mislukt</string>
- <string name="cast_failed_no_connection">Er is geen verbinding met het Cast apparaat</string>
- <string name="cast_failed_no_connection_trans">De verbinding met het Cast apparaat is verloren. Antennapod probeert de verbinding te herstellen. Wacht aub een paar seconden en probeer opnieuw.</string>
- <string name="cast_failed_perform_action">Het uitvoeren van de actie is mislukt</string>
- <string name="cast_failed_status_request">Het synchroniseren met het Cast apparaat is mislukt</string>
- <string name="cast_failed_seek">Het opzoeken van het nieuwe tijdstip op het Cast apparaat is mislukt</string>
- <string name="cast_failed_receiver_player_error">Ernstige fout opgetreden bij het afspelende Cast apparaat</string>
- <string name="cast_failed_media_error_skipping">Er was een fout bij het afspelen; de aflevering wordt overgeslagenā€¦</string>
+ <string name="cast_failed_setting_volume">Volume aanpassen mislukt</string>
+ <string name="cast_failed_no_connection">Er is geen verbinding met het Cast-apparaat</string>
+ <string name="cast_failed_no_connection_trans">De verbinding met het Cast-apparaat is verbroken; Antennapod probeert de verbinding te herstellen. Wacht een paar seconden en probeer het opnieuw.</string>
+ <string name="cast_failed_perform_action">Actie kan niet worden uitgevoerd</string>
+ <string name="cast_failed_status_request">Synchroniseren met Cast-apparaat mislukt</string>
+ <string name="cast_failed_seek">Opzoeken van nieuwe positie op Cast-apparaat mislukt</string>
+ <string name="cast_failed_receiver_player_error">Ernstige fout opgetreden op het afspelende Cast-apparaat</string>
+ <string name="cast_failed_media_error_skipping">Kan media niet afspelen. Bezig met overslaan...</string>
+ <!--Notification channels-->
+ <string name="notification_channel_user_action">Actie vereist</string>
+ <string name="notification_channel_user_action_description">Tonen als een actie vereist is, bijvoorbeeld als je een wachtwoord moet invoeren.</string>
+ <string name="notification_channel_downloading">Bezig met downloaden...</string>
+ <string name="notification_channel_downloading_description">Tonen als er iets wordt gedownload.</string>
+ <string name="notification_channel_playing">Nu aan het afspelen</string>
+ <string name="notification_channel_playing_description">Hiermee kun je het afspelen bedienen. Dit is de voornaamste melding tijdens het afspelen van een podcast.</string>
+ <string name="notification_channel_error">Foutmeldingen</string>
+ <string name="notification_channel_error_description">Tonen als er iets is misgegaan, bijvoorbeeld als downloaden of synchroniseren mislukt is.</string>
</resources>
diff --git a/core/src/main/res/values-no-rNB/strings.xml b/core/src/main/res/values-no-rNB/strings.xml
index 2e3b9bd53..de0892b73 100644
--- a/core/src/main/res/values-no-rNB/strings.xml
+++ b/core/src/main/res/values-no-rNB/strings.xml
@@ -54,7 +54,6 @@
<string name="yes">Ja</string>
<string name="no">Nei</string>
<string name="reset">Tilbakestill</string>
- <string name="author_label">Opphavsperson</string>
<string name="language_label">SprƄk</string>
<string name="url_label">URL</string>
<string name="podcast_settings_label">Innstillinger</string>
@@ -102,25 +101,13 @@
<string name="mark_all_read_label">Marker alle som avspilt</string>
<string name="mark_all_read_msg">Marker alle episoder som avspilt</string>
<string name="mark_all_read_confirmation_msg">Vennligst bekreft at du Ćønsker Ć„ markere alle episoder som avspilt.</string>
- <string name="mark_all_read_feed_confirmation_msg">Vennligst bekreft at du Ćønsker Ć„ markere alle episoder i denne strĆømmen som avspilt.</string>
<string name="mark_all_seen_label">Marker alle som sett</string>
- <string name="mark_all_seen_msg">Marker alle episoder som sett</string>
<string name="mark_all_seen_confirmation_msg">Vennligst bekreft at du Ćønsker Ć„ markere alle episoder som sett.</string>
<string name="show_info_label">Vis informasjon</string>
- <string name="rename_feed_label">Endre navn pƄ podcast</string>
- <string name="remove_feed_label">Fjern podcast</string>
<string name="share_label">Del ...</string>
- <string name="share_link_label">Del lenke</string>
<string name="share_file_label">Del fil</string>
- <string name="share_link_with_position_label">Del lenke med plassering</string>
<string name="share_feed_url_label">Del strĆømmens URL</string>
- <string name="share_item_url_label">Del episodens URL</string>
- <string name="share_item_url_with_position_label">Del episodens URL med posisjon</string>
- <string name="feed_delete_confirmation_msg">Vennligst bekreft at du Ćønsker Ć„ slette strĆømmen \"%1$s\" og alle episoder fra denne strĆømmen som du har lastet ned.</string>
- <string name="feed_remover_msg">Fjerner strĆøm</string>
- <string name="load_complete_feed">Oppdater hele strĆømmen</string>
<string name="hide_episodes_title">Skjul episoder</string>
- <string name="episode_actions">Lagre handlinger</string>
<string name="hide_unplayed_episodes_label">Ikke avspilt</string>
<string name="hide_paused_episodes_label">Pauset</string>
<string name="hide_played_episodes_label">Avspilt</string>
@@ -227,7 +214,6 @@
<string name="date">PĆ„ dato</string>
<string name="duration">PĆ„ varighet</string>
<string name="episode_title">Episodetittel</string>
- <string name="feed_title">StrĆømtittel</string>
<string name="ascending">Ƙkende</string>
<string name="descending">Synkende</string>
<string name="clear_queue_confirmation_msg">Vennligst bekreft at du Ćønsker Ć„ slette ALLE elementer i kĆøen</string>
@@ -264,7 +250,6 @@
<string name="enable_sonic">Skru pƄ Sonic</string>
<!--Empty list labels-->
<string name="no_items_label">Det er ingen objekter pƄ denne listen.</string>
- <string name="no_feeds_label">Du abonnerer ikke pĆ„ noen strĆømmer enda.</string>
<string name="no_chapters_label">Denne episoden har ingen kapitler.</string>
<string name="no_shownotes_label">Denne episoden har ingen shownotater</string>
<!--Preferences-->
@@ -273,13 +258,11 @@
<string name="other_pref">Annet</string>
<string name="about_pref">Om</string>
<string name="queue_label">Queue</string>
- <string name="services_label">Tjenester</string>
<string name="flattr_label">Flattr</string>
<string name="pref_episode_cleanup_title">Episodeopprydding</string>
<string name="pref_pauseOnDisconnect_sum">Sett playback pƄ pause nƄr hodetelefoner eller bluetooth er frakoblet</string>
<string name="pref_unpauseOnHeadsetReconnect_sum">Gjenoppta avspilling nƄr hodetelefoner gjeninnkoples</string>
<string name="pref_unpauseOnBluetoothReconnect_sum">Fortsett avspilling nƄr bluetooth er tilkoblet igjen</string>
- <string name="pref_hardwareForwardButtonSkips_sum">Ved pressing av hardware forover-knapp hopp til neste episode istedenfor forover-spoling</string>
<string name="pref_hardwarePreviousButtonRestarts_title">Forriv</string>
<string name="pref_followQueue_sum">Hopp til neste element i kĆøen nĆ„r avspillingen er ferdig</string>
<string name="pref_auto_delete_sum">Slett episode nƄr avspillingen er ferdig</string>
@@ -327,7 +310,6 @@
<string name="pref_nav_drawer_feed_order_title">Velg rekkefĆølge pĆ„ abbonement</string>
<string name="pref_nav_drawer_feed_order_sum">Endre rekkefĆølgen pĆ„ abbonementene dine</string>
<string name="pref_nav_drawer_feed_counter_title">Velg abbonementsteller</string>
- <string name="pref_nav_drawer_feed_counter_sum">Endre informasjonen vist av abonnementstelleren</string>
<string name="pref_set_theme_sum">Endre utseendet til AntennaPod</string>
<string name="pref_automatic_download_title">Automatisk nedlasting</string>
<string name="pref_automatic_download_sum">Konfigurer automatisk nedlasting av episoder.</string>
@@ -362,8 +344,6 @@
<string name="pref_playback_speed_sum">Egendefiner hastighetene tilgjengelig for variabel avspillingshastighet</string>
<string name="pref_gpodnet_sethostname_title">Sett vertsnavn</string>
<string name="pref_gpodnet_sethostname_use_default_host">Bruk standard vert</string>
- <string name="pref_expandNotify_title">Utvid varsel</string>
- <string name="pref_expandNotify_sum">Utvider alltid varselet for Ć„ inkludere avspillingsknapper.</string>
<string name="pref_persistNotify_title">Vedvarende avspillingskontroller</string>
<string name="pref_persistNotify_sum">Behold varsel- og lƄseskjermkontroller nƄr avspilling er satt pƄ pause.</string>
<string name="pref_compact_notification_buttons_title">Velg lƄseskjermsknapper</string>
@@ -381,8 +361,6 @@
<string name="crash_report_sum">Send den siste krƦsj-rapporten via e-post</string>
<string name="send_email">Send e-post</string>
<string name="experimental_pref">Eksperimentell</string>
- <string name="pref_sonic_title">Sonic mediaspiller</string>
- <string name="pref_sonic_message">Bruk innebygd Sonic mediaspiller som en erstatning for Androids mediaspiller og Prestissimo</string>
<string name="pref_faq">FAQ</string>
<string name="pref_known_issues">Kjente problemer</string>
<string name="pref_no_browser_found">Ingen nettleser funnet.</string>
@@ -421,8 +399,6 @@
<string name="html_export_label">HTML eksport</string>
<string name="exporting_label">Eksporterer...</string>
<string name="export_error_label">Eksporteringserror</string>
- <string name="opml_export_success_title">OPML-import vellykket.</string>
- <string name="opml_export_success_sum">.opml-filen ble skrevet til:\u0020</string>
<string name="opml_import_ask_read_permission">Tilgang til ekstern lagring er nĆødvendig for Ć„ lese OPML filen</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">Sett opp sovetimer</string>
@@ -592,4 +568,5 @@
<string name="cast_failed_to_stop">Feilter Ć„ stoppe avspillingen av media</string>
<string name="cast_failed_to_pause">Feilet Ć„ pause avspillingen av media</string>
<!--<string name="cast_failed_to_connect">Could not connect to the device</string>-->
+ <!--Notification channels-->
</resources>
diff --git a/core/src/main/res/values-no/strings.xml b/core/src/main/res/values-no/strings.xml
index acf3abe75..2d9481b84 100644
--- a/core/src/main/res/values-no/strings.xml
+++ b/core/src/main/res/values-no/strings.xml
@@ -36,4 +36,5 @@
<!--Database import/export-->
<!--Casting-->
<!--<string name="cast_failed_to_connect">Could not connect to the device</string>-->
+ <!--Notification channels-->
</resources>
diff --git a/core/src/main/res/values-pl-rPL/strings.xml b/core/src/main/res/values-pl-rPL/strings.xml
index 4839ef60c..d77236577 100644
--- a/core/src/main/res/values-pl-rPL/strings.xml
+++ b/core/src/main/res/values-pl-rPL/strings.xml
@@ -22,6 +22,7 @@
<string name="free_space_label">%1$s wolnego miejsca</string>
<string name="episode_cache_full_title">Pełna pamięć cache</string>
<string name="episode_cache_full_message">Limit pamięci cache został osiągnięty. Możesz zwiększyć pojemność cache w ustawieniach aplikacji.</string>
+ <string name="synchronizing">Synchronizowanie...</string>
<!--Statistics fragment-->
<string name="total_time_listened_to_podcasts">Całkowity czas trwania podcastĆ³w:</string>
<string name="statistics_details_dialog">%1$d z %2$d odcinkĆ³w rozpoczęto.\n\nZagrano %3$s z %4$s.</string>
@@ -56,7 +57,6 @@
<string name="yes">Tak</string>
<string name="no">Nie</string>
<string name="reset">Reset</string>
- <string name="author_label">Autor</string>
<string name="language_label">Język</string>
<string name="url_label">URL</string>
<string name="podcast_settings_label">Ustawienia</string>
@@ -107,24 +107,13 @@
<string name="mark_all_read_label">Oznacz wszystkie jako odtworzone</string>
<string name="mark_all_read_msg">Wszystkie odcinki zaznaczono jako odtworzone</string>
<string name="mark_all_read_confirmation_msg">Proszę potwierdzić, że chcesz zaznaczyć wszystkie odcinki do odtworzenia.</string>
- <string name="mark_all_read_feed_confirmation_msg">Proszę potwierdzić, że chcesz zaznaczyć wszystkie odcinki na tym kanale do odtworzenia.</string>
<string name="mark_all_seen_label">Oznacz wszystkie jako widziane</string>
- <string name="mark_all_seen_msg">Zaznacz wszystkie Odcinki jako obejrzane</string>
<string name="mark_all_seen_confirmation_msg">Proszę potwierdzić chęć zaznaczenia wszystkich odcinkĆ³w jako obejrzanych.</string>
<string name="show_info_label">Pokaż informacje</string>
- <string name="rename_feed_label">Zmień nazwę podcast-u</string>
- <string name="remove_feed_label">Usuń podcast</string>
<string name="share_label">Udostępnij...</string>
- <string name="share_link_label">Udostępnij stronę</string>
- <string name="share_link_with_position_label">Udostępnij link z aktualną pozycją</string>
+ <string name="share_file_label">Udostępnij plik</string>
<string name="share_feed_url_label">Udostępnij adres kanału</string>
- <string name="share_item_url_label">Udostępnij plik URL odcinka</string>
- <string name="share_item_url_with_position_label">Udostępnik plik URL odcinka z pozycją</string>
- <string name="feed_delete_confirmation_msg">PotwierdÅŗ chęć usunięcia kanału \"%1$s\" wraz ze WSZYSTKIMI odcinkami, ktĆ³re zostały pobrane.</string>
- <string name="feed_remover_msg">Usuwanie kanału</string>
- <string name="load_complete_feed">Odśwież cały kanał</string>
<string name="hide_episodes_title">Ukryj odcinki</string>
- <string name="episode_actions">ZatwierdÅŗ czynności</string>
<string name="hide_unplayed_episodes_label">Nieodtworzone</string>
<string name="hide_paused_episodes_label">Zatrzymane</string>
<string name="hide_played_episodes_label">Odtworzone</string>
@@ -144,6 +133,7 @@
<string name="stream_label">Strumień</string>
<string name="remove_label">Usuń</string>
<string name="delete_label">Usuń</string>
+ <string name="delete_failed">Nie można usunąć pliku. Restart urządzenia może w tym pomĆ³c.</string>
<string name="remove_episode_lable">Usuń odcinek</string>
<string name="marked_as_seen_label">Zaznaczono jako wyświetlone</string>
<string name="mark_read_label">Oznacz jako odtworzone</string>
@@ -168,6 +158,9 @@
<string name="download_failed">Operacja nie powiodła się</string>
<string name="download_pending">Pobieranie w toku</string>
<string name="download_running">Pobieram</string>
+ <string name="download_error_details">SzczegĆ³Å‚y</string>
+ <string name="download_error_details_message">%1$s \n\nAdres pliku:\n%2$s
+</string>
<string name="download_error_device_not_found">Nie znaleziono urządzenia docelowego</string>
<string name="download_error_insufficient_space">Niewystarczająca ilość pamięci</string>
<string name="download_error_file_error">Błąd pliku</string>
@@ -236,7 +229,6 @@
<string name="date">Według daty</string>
<string name="duration">Według długości</string>
<string name="episode_title">Tytuł odcinka</string>
- <string name="feed_title">Tytuł kanału</string>
<string name="ascending">Rosnąco</string>
<string name="descending">Malejąco</string>
<string name="clear_queue_confirmation_msg">PotwierdÅŗ usunięcie WSZYSTKICH pozycji z kolejki</string>
@@ -274,7 +266,6 @@
<string name="enable_sonic">Włącz Sonic</string>
<!--Empty list labels-->
<string name="no_items_label">Brak elementĆ³w na tej liście.</string>
- <string name="no_feeds_label">Nie subskrybowałeś jeszcze żadnego kanału.</string>
<string name="no_chapters_label">Ten odcinek nie ma rozdziaÅ‚Ć³w.</string>
<string name="no_shownotes_label">Ten epizod nie ma notatek.</string>
<!--Preferences-->
@@ -283,7 +274,6 @@
<string name="other_pref">Inne</string>
<string name="about_pref">O...</string>
<string name="queue_label">Kolejka</string>
- <string name="services_label">Usługi</string>
<string name="flattr_label">Flattr</string>
<string name="pref_episode_cleanup_title">Usuwanie odcinkĆ³w</string>
<string name="pref_episode_cleanup_summary">Odcinki niebędące w kolejce i niebędące na liście ulubiobych powinny nadawać się do usunięcia, jeśli Automatyczne Pobieranie potrzebuje miejsca na nowe odcinki.</string>
@@ -291,7 +281,6 @@
<string name="pref_unpauseOnHeadsetReconnect_sum">WznĆ³w odtwarzanie kiedy słuchawki zostaną podłączone ponownie</string>
<string name="pref_unpauseOnBluetoothReconnect_sum">WznĆ³w odtwarzanie po przywrĆ³ceniu połączenia Bluetooth</string>
<string name="pref_hardwareForwardButtonSkips_title">Przycisk \'Do przodu\' pomija odcinek</string>
- <string name="pref_hardwareForwardButtonSkips_sum">Przyciśnięcie fizycznego przycisku \'Do przodu\' przeskakuje do następnego odcinka zamiast przewijania</string>
<string name="pref_hardwarePreviousButtonRestarts_title">Przycisk wstecz restartuje</string>
<string name="pref_hardwarePreviousButtonRestarts_sum">Podczas odtwarzania przycisk wstecz restartuje zamiast przewijać</string>
<string name="pref_followQueue_sum">Przeskocz do następnego elementu kolejki po zakończeniu odtwarzania</string>
@@ -301,6 +290,8 @@
<string name="pref_smart_mark_as_played_title">Inteligentnie oznacz jako odtworzone</string>
<string name="pref_skip_keeps_episodes_sum">Zachowuje pominięte odcinki w kolejce</string>
<string name="pref_skip_keeps_episodes_title">Zachowaj pominięte odcinki</string>
+ <string name="pref_favorite_keeps_episodes_sum">Zachowaj odcinki gdy są oznaczone jako Ulubione</string>
+ <string name="pref_favorite_keeps_episodes_title">Zachowaj Ulubione Odcinki</string>
<string name="playback_pref">Odtwarzanie</string>
<string name="network_pref">Sieć</string>
<string name="pref_autoUpdateIntervallOrTime_title">Częstotliwość aktualizacji lub Czas dnia</string>
@@ -338,12 +329,13 @@
<string name="pref_nav_drawer_feed_order_title">Ustaw kolejność subskrypcji</string>
<string name="pref_nav_drawer_feed_order_sum">Zmień kolejność subskrybowanych kanaÅ‚Ć³w</string>
<string name="pref_nav_drawer_feed_counter_title">Ustaw licznik subskrypcji</string>
- <string name="pref_nav_drawer_feed_counter_sum">Zmień informację wyświetlaną przez licznik subskrypcji</string>
<string name="pref_set_theme_sum">Zmień wygląd AntennaPod.</string>
<string name="pref_automatic_download_title">Automatyczne pobieranie</string>
<string name="pref_automatic_download_sum">Skonfiguruj automatyczne pobieranie odcinkĆ³w.</string>
<string name="pref_autodl_wifi_filter_title">Włącz filtr Wi-Fi</string>
<string name="pref_autodl_wifi_filter_sum">ZezwĆ³l na automatyczne pobieranie tylko dla określonych sieci Wi-Fi.</string>
+ <string name="pref_autodl_allow_on_mobile_title">Pobierz przy użyciu komĆ³rkowego transferu danych</string>
+ <string name="pref_autodl_allow_on_mobile_sum">ZezwĆ³l na automatyczne pobieranie przy użyciu komĆ³rkowego transferu danych</string>
<string name="pref_automatic_download_on_battery_title">Pobieraj, gdy nie ładuje</string>
<string name="pref_automatic_download_on_battery_sum">ZezwĆ³l na automatyczne pobieranie, gdy bateria nie jest ładowana.</string>
<string name="pref_parallel_downloads_title">Liczba rĆ³wnoległych pobierań</string>
@@ -378,8 +370,6 @@
<string name="pref_rewind_sum">Dostosuj liczbę sekund do przeskoczenia przy kliknięciu przewijania do tyłu</string>
<string name="pref_gpodnet_sethostname_title">Ustaw nazwę hosta</string>
<string name="pref_gpodnet_sethostname_use_default_host">Użyj domyślnego hosta</string>
- <string name="pref_expandNotify_title">Rozwiń Powiadomienia</string>
- <string name="pref_expandNotify_sum">Zawsze rozwijaj powiadomienie żeby pokazać przyciski odtwarzacza.</string>
<string name="pref_persistNotify_title">Stałe przyciski odtwarzacza</string>
<string name="pref_persistNotify_sum">Utrzymuj powiadomienie i przyciski odtwarzania na ekranie blokady gdy odtwarzanie jest wstrzymane.</string>
<string name="pref_compact_notification_buttons_title">Ustaw przyciski ekranu blokowania</string>
@@ -400,8 +390,6 @@
<string name="crash_report_sum">Wyślij ostatni raport o błędach przez e-mail</string>
<string name="send_email">Wyślij e-mail</string>
<string name="experimental_pref">Eksperymentalne</string>
- <string name="pref_sonic_title">Odtwarzacz mediĆ³w Sonic</string>
- <string name="pref_sonic_message">Użyj wbudowanego odtwarzacza Sonic jako oprogramowanie zastępcze do natywnego odtwarzacza Android i Prestissimo</string>
<string name="pref_current_value">Aktualna wartość: %1$s</string>
<string name="pref_proxy_title">Proxy</string>
<string name="pref_proxy_sum">Ustaw proxy sieciowe</string>
@@ -411,6 +399,7 @@
<string name="pref_cast_title">Obsługa Chromecast</string>
<string name="pref_cast_message_play_flavor">Uruchom obsługę dla zdalnego odtwarzania mediĆ³w na innych urządzeniach (takich jak Chromecast, Audio Speakers albo Android TV)</string>
<string name="pref_cast_message_free_flavor">Chromecast wymagadodatkowych bibliotek, ktĆ³re są zablokowane w tej wersji AntennaPod</string>
+ <string name="pref_enqueue_downloaded_title">Rzeczy z kolejki pobrane</string>
<string name="pref_enqueue_downloaded_summary">Dodaj pobrane odcinki do kolejki</string>
<!--Auto-Flattr dialog-->
<string name="auto_flattr_enable">Włącz automatyczne wspieranie na flattr.</string>
@@ -421,8 +410,6 @@
<string name="search_hint">Szukaj odcinkĆ³w</string>
<string name="found_in_shownotes_label">Znalezione w notatkach dotyczących show</string>
<string name="found_in_chapters_label">Znaleziono w rozdziałach</string>
- <string name="found_in_authors_label">Znaleziono wśrĆ³d autorĆ³w</string>
- <string name="found_in_feeds_label">Znaleziono wśrĆ³d kanaÅ‚Ć³w</string>
<string name="search_status_no_results">Brak wynikĆ³w</string>
<string name="search_label">Szukaj</string>
<string name="found_in_title_label">Znaleziono w tytułach</string>
@@ -448,8 +435,8 @@
<string name="html_export_label">Eksport HTML</string>
<string name="exporting_label">Eksportowanie...</string>
<string name="export_error_label">Błąd eksportu</string>
- <string name="opml_export_success_title">Eksport OPML udany.</string>
- <string name="opml_export_success_sum">Plik .opml został zapisany do:\u0020</string>
+ <string name="export_success_title">Export zakończony powodzeniem</string>
+ <string name="export_success_sum">Wyeksportowany plik został zapisany w:\n\n %1$s</string>
<string name="opml_import_ask_read_permission">Dostęp do zewnętrznej pamięci jest potrzebny do odczytywania plikĆ³w OPML</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">Ustaw czas do wyłączenia</string>
@@ -624,6 +611,13 @@ https://gpodder.net/register/</string>
<string name="proxy_host_invalid_error">Host nie jest prawidłowym adresem IP albo domeną</string>
<string name="proxy_port_invalid_error">Błędny port</string>
<!--Database import/export-->
+ <string name="import_export">Import/Export bazy danych</string>
+ <string name="import_export_warning">Ta eksperymentalna funkcja może zostać użyta do przeniesienia Twoich subskrypcji i już obejrzanych odcinkĆ³w na inne urządzenie.\n\n Wyeksportowana baza może zostać zaimportowana jedynie taką samą wersją programu AntennaPod. W innym przypadku może to spowodować nieprzewidziane zachowanie programu.\n\n Po zaimportowaniu, odcinki mogą być pokazane jako pobrane pomimo tego iż nie zostały pobrane. Wystarczy kliknąć odtwĆ³rz odcinek aby AntennaPod wykrył poprawny stan pliku.</string>
+ <string name="label_import">Import</string>
+ <string name="label_export">Export</string>
+ <string name="import_select_file">Wybierz plik do Importowania</string>
+ <string name="export_ok">Export zakończony powodzeniem</string>
+ <string name="import_ok">Import zakończony powodzeniem.\n\nNaciśnij OK aby zrestartować AntennaPod</string>
<!--Casting-->
<string name="cast_media_route_menu_title">Odtwarzaj na...</string>
<string name="cast_disconnect_label">Rozłącz sesję</string>
@@ -640,4 +634,5 @@ https://gpodder.net/register/</string>
<string name="cast_failed_seek">Wystąpił błąd podczas szukania nowej pozycji na urządzeniu nadającym.</string>
<string name="cast_failed_receiver_player_error">Urządzenie odbierające napotkało poważny problem</string>
<string name="cast_failed_media_error_skipping">Błąd podczas odtwarzania, pomijanie...</string>
+ <!--Notification channels-->
</resources>
diff --git a/core/src/main/res/values-pl/strings.xml b/core/src/main/res/values-pl/strings.xml
index 097417900..6a640a0ee 100644
--- a/core/src/main/res/values-pl/strings.xml
+++ b/core/src/main/res/values-pl/strings.xml
@@ -67,7 +67,6 @@
<!--Empty list labels-->
<!--Preferences-->
<string name="queue_label">Kolejka</string>
- <string name="services_label">Usługi</string>
<string name="pref_downloadMediaOnWifiOnly_sum">Pobieraj pliki tylko przez WiFi</string>
<string name="refreshing_label">Odświeżanie</string>
<string name="user_interface_label">Interfejs Użytkownika</string>
@@ -97,4 +96,5 @@
<!--Database import/export-->
<!--Casting-->
<!--<string name="cast_failed_to_connect">Could not connect to the device</string>-->
+ <!--Notification channels-->
</resources>
diff --git a/core/src/main/res/values-pt-rBR/strings.xml b/core/src/main/res/values-pt-rBR/strings.xml
index fc8633b1f..57ec3573c 100644
--- a/core/src/main/res/values-pt-rBR/strings.xml
+++ b/core/src/main/res/values-pt-rBR/strings.xml
@@ -1,6 +1,7 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources xmlns:tools="http://schemas.android.com/tools">
<!--Activitiy and fragment titles-->
+ <string name="feed_update_receiver_name">Atualizar Assinaturas</string>
<string name="feeds_label">Feeds</string>
<string name="statistics_label">EstatĆ­sticas</string>
<string name="add_feed_label">Adicionar Podcast</string>
@@ -56,7 +57,6 @@
<string name="yes">Sim</string>
<string name="no">NĆ£o</string>
<string name="reset">Resetar</string>
- <string name="author_label">Autor</string>
<string name="language_label">Idioma</string>
<string name="url_label">URL</string>
<string name="podcast_settings_label">ConfiguraƧƵes</string>
@@ -105,24 +105,12 @@
<string name="mark_all_read_label">Marcar todos como reproduzidos</string>
<string name="mark_all_read_msg">Marcar todos EpisĆ³dios como reproduzidos</string>
<string name="mark_all_read_confirmation_msg">Por favor, confirme que vocĆŖ deseja marcar todos os episĆ³dios como jĆ” reproduzidos.</string>
- <string name="mark_all_read_feed_confirmation_msg">Por favor confirme se vocĆŖ deseja marcar todos os episĆ³dios deste feed como jĆ” reproduzidos.</string>
<string name="mark_all_seen_label">Marcar todos como vistos</string>
- <string name="mark_all_seen_msg">Todos os episĆ³dios marcados como vistos</string>
<string name="mark_all_seen_confirmation_msg">Confirme se deseja marcar todos os episĆ³dios como vistos.</string>
<string name="show_info_label">Mostrar informaĆ§Ć£o</string>
- <string name="rename_feed_label">Renomear o Podcast</string>
- <string name="remove_feed_label">Remover Podcast</string>
<string name="share_label">Compartilhar...</string>
- <string name="share_link_label">Compartilhar Link</string>
- <string name="share_link_with_position_label">Compartilhar Link com posiĆ§Ć£o</string>
<string name="share_feed_url_label">Compartilhar Link do Feed</string>
- <string name="share_item_url_label">Compartilhar URL do arquivo do episĆ³dio</string>
- <string name="share_item_url_with_position_label">Compartilhar URL do arquivo do episĆ³dio com posiĆ§Ć£o</string>
- <string name="feed_delete_confirmation_msg">Confirme se deseja deletar o feed \"%1$s\" e todos os episĆ³dios baixados desse feed.</string>
- <string name="feed_remover_msg">Removendo feed</string>
- <string name="load_complete_feed">Atualizar feed completamente</string>
<string name="hide_episodes_title">Ocultar EpisĆ³dios</string>
- <string name="episode_actions">Aplicar aƧƵes</string>
<string name="hide_unplayed_episodes_label">NĆ£o reproduzido</string>
<string name="hide_paused_episodes_label">Pausado</string>
<string name="hide_played_episodes_label">Reproduzido</string>
@@ -232,7 +220,6 @@
<string name="date">Data</string>
<string name="duration">DuraĆ§Ć£o</string>
<string name="episode_title">Titulo do Episodio</string>
- <string name="feed_title">Titulo do Feed</string>
<string name="ascending">Crescente</string>
<string name="descending">Decrescente</string>
<string name="clear_queue_confirmation_msg">Por favor confirme que vocĆŖ deseja limpar TODOS episĆ³dios da fila</string>
@@ -270,7 +257,6 @@
<string name="enable_sonic">Habilitar Sonic</string>
<!--Empty list labels-->
<string name="no_items_label">NĆ£o existem itens nesta lista.</string>
- <string name="no_feeds_label">VocĆŖ ainda nĆ£o assinou nenhum feed.</string>
<string name="no_chapters_label">Este episĆ³dio nĆ£o possui capĆ­tulos</string>
<string name="no_shownotes_label">Este episĆ³dio nĆ£o possui notas.</string>
<!--Preferences-->
@@ -279,7 +265,6 @@
<string name="other_pref">Outros</string>
<string name="about_pref">Sobre</string>
<string name="queue_label">Fila</string>
- <string name="services_label">ServiƧos</string>
<string name="flattr_label">Flattr</string>
<string name="pref_episode_cleanup_title">Limpar EpisĆ³dio</string>
<string name="pref_episode_cleanup_summary">EpisĆ³dios que nĆ£o estĆ£o na fila e nĆ£o estĆ£o nos favoritos podem ser removidos se o Download AutomĆ”tico precisar de espaƧo para novos episĆ³dios</string>
@@ -287,7 +272,6 @@
<string name="pref_unpauseOnHeadsetReconnect_sum">Continuar a reproduĆ§Ć£o quando os fones de ouvido forem reconectados</string>
<string name="pref_unpauseOnBluetoothReconnect_sum">Continuar a reproduĆ§Ć£o quando o bluetooth reconectar</string>
<string name="pref_hardwareForwardButtonSkips_title">BotĆ£o avanƧar pula</string>
- <string name="pref_hardwareForwardButtonSkips_sum">Quando pressionar um botĆ£o fĆ­sico, avanƧar para o prĆ³ximo episĆ³dio ao invĆ©s de avanƧar a reproduĆ§Ć£o</string>
<string name="pref_hardwarePreviousButtonRestarts_title">BotĆ£o anterior reinicia</string>
<string name="pref_hardwarePreviousButtonRestarts_sum">Reinicia a reproduĆ§Ć£o atual ao pressionar o botĆ£o fĆ­sico anterior ao invĆ©s de retroceder</string>
<string name="pref_followQueue_sum">Pular para prĆ³ximo item da fila quando a reproduĆ§Ć£o terminar</string>
@@ -333,8 +317,7 @@
<string name="pref_nav_drawer_items_sum">Escolher quais itens irĆ£o aparecer na gaveta de navegaĆ§Ć£o.</string>
<string name="pref_nav_drawer_feed_order_title">Configurar Ordem de Assinaturas</string>
<string name="pref_nav_drawer_feed_order_sum">Mudar a ordem de suas assinaturas</string>
- <string name="pref_nav_drawer_feed_counter_title">Configurar um contador de assinaturas</string>
- <string name="pref_nav_drawer_feed_counter_sum">Mudar a informaĆ§Ć£o exibida pelo contador de assinaturas</string>
+ <string name="pref_nav_drawer_feed_counter_title">Configurar Contador de Assinaturas</string>
<string name="pref_set_theme_sum">Altera a aparĆŖncia do AntennaPod</string>
<string name="pref_automatic_download_title">Download automƔtico</string>
<string name="pref_automatic_download_sum">Configurar download automĆ”tico de episĆ³dios.</string>
@@ -374,8 +357,6 @@
<string name="pref_rewind_sum">Personalize os segundos para voltar quando o botĆ£o retroceder for clicado</string>
<string name="pref_gpodnet_sethostname_title">Configurar hostname</string>
<string name="pref_gpodnet_sethostname_use_default_host">Usar host padrĆ£o</string>
- <string name="pref_expandNotify_title">Expandir NotificaĆ§Ć£o</string>
- <string name="pref_expandNotify_sum">Sempre expandir a notificaĆ§Ć£o para mostrar os botƵes de reproduĆ§Ć£o.</string>
<string name="pref_persistNotify_title">Controles de ReproduĆ§Ć£o Persistentes</string>
<string name="pref_persistNotify_sum">Manter a notificaĆ§Ć£o e controles na tela de bloqueio enquanto a reproduĆ§Ć£o estĆ” pausada.</string>
<string name="pref_compact_notification_buttons_title">Configurar BotƵes da tela de bloqueio</string>
@@ -396,8 +377,6 @@
<string name="crash_report_sum">Enviar o relatĆ³rio da Ćŗltima falha por e-mail</string>
<string name="send_email">Enviar e-mail</string>
<string name="experimental_pref">Experimental</string>
- <string name="pref_sonic_title">Sonic Media Player</string>
- <string name="pref_sonic_message">Utilizar o reprodutor de mĆ­dia Sonic no lugar do reprodutor de mĆ­dia nativo do Android e do Prestissimo</string>
<string name="pref_current_value">Valor atual: %1$s</string>
<string name="pref_proxy_title">Proxy</string>
<string name="pref_proxy_sum">Configurar um proxy da rede</string>
@@ -417,8 +396,6 @@
<string name="search_hint">Buscar por episĆ³dios</string>
<string name="found_in_shownotes_label">Encontrados em exibir descriĆ§Ć£o</string>
<string name="found_in_chapters_label">Encontrado nos capĆ­tulos</string>
- <string name="found_in_authors_label">Encontrados em autores</string>
- <string name="found_in_feeds_label">Encontrados em feeds</string>
<string name="search_status_no_results">Nenhum resultado encontrado</string>
<string name="search_label">Pesquisar</string>
<string name="found_in_title_label">Encontrado no tĆ­tulo</string>
@@ -444,8 +421,6 @@
<string name="html_export_label">Exportar HTML</string>
<string name="exporting_label">Exportando...</string>
<string name="export_error_label">Erro na exportaĆ§Ć£o</string>
- <string name="opml_export_success_title">ExportaĆ§Ć£o do OPML realizada com sucesso.</string>
- <string name="opml_export_success_sum">O arquivo .opml foi gravado em:\u0020</string>
<string name="opml_import_ask_read_permission">Acesso ao armazenamento externo Ʃ necessƔria para ler o arquivo OPML</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">Configura desligamento automƔtico</string>
@@ -629,4 +604,5 @@
<string name="cast_failed_seek">Falha ao buscar uma nova posiĆ§Ć£o no dispositivo cast</string>
<string name="cast_failed_receiver_player_error">O receptor de reproduĆ§Ć£o encontrou um erro grave</string>
<string name="cast_failed_media_error_skipping">Erro ao reproduzir mĆ­dia. Pulando...</string>
+ <!--Notification channels-->
</resources>
diff --git a/core/src/main/res/values-pt/strings.xml b/core/src/main/res/values-pt/strings.xml
index 8be0b8443..2f7941097 100644
--- a/core/src/main/res/values-pt/strings.xml
+++ b/core/src/main/res/values-pt/strings.xml
@@ -1,11 +1,13 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources xmlns:tools="http://schemas.android.com/tools">
<!--Activitiy and fragment titles-->
+ <string name="feed_update_receiver_name">Atualizar subscriƧƵes</string>
<string name="feeds_label">Fontes</string>
<string name="statistics_label">EstatĆ­sticas</string>
<string name="add_feed_label">Adicionar podcast</string>
<string name="episodes_label">EpisĆ³dios</string>
<string name="all_episodes_short_label">Todos</string>
+ <string name="new_episodes_label">Novos</string>
<string name="favorite_episodes_label">Favoritos</string>
<string name="new_label">Novos</string>
<string name="settings_label">DefiniƧƵes</string>
@@ -18,10 +20,12 @@
<string name="cancel_download_label">Cancelar\ndescarga</string>
<string name="playback_history_label">HistĆ³rico de reproduĆ§Ć£o</string>
<string name="gpodnet_main_label">gpodder.net</string>
+ <string name="gpodnet_summary">Sincronizar com outros dispositivos</string>
<string name="gpodnet_auth_label">Dados gpodder.net</string>
<string name="free_space_label">%1$s disponĆ­vel</string>
<string name="episode_cache_full_title">Cache de episĆ³dios cheia</string>
<string name="episode_cache_full_message">Atingido o limite mƔximo de itens em cache. Pode aumentar o tamanho de cache nas definiƧƵes.</string>
+ <string name="synchronizing">A sincronizar...</string>
<!--Statistics fragment-->
<string name="total_time_listened_to_podcasts">Tempo total dos podcasts reproduzidos:</string>
<string name="statistics_details_dialog">%1$d de %2$d episĆ³dios iniciados.\n\nReproduzidos %3$s de %4$s.</string>
@@ -51,18 +55,19 @@
<!--Playback history-->
<string name="clear_history_label">Limpar histĆ³rico</string>
<!--Other-->
- <string name="confirm_label">Confirmar</string>
+ <string name="confirm_label">ConfirmaĆ§Ć£o</string>
<string name="cancel_label">Cancelar</string>
<string name="yes">Sim</string>
<string name="no">NĆ£o</string>
<string name="reset">Repor</string>
- <string name="author_label">Autor</string>
+ <string name="author_label">Autor(es)</string>
<string name="language_label">Idioma</string>
<string name="url_label">URL</string>
<string name="podcast_settings_label">DefiniƧƵes</string>
<string name="cover_label">Imagem</string>
<string name="error_label">Erro</string>
<string name="error_msg_prefix">Ocorreu um erro:</string>
+ <string name="needs_storage_permission">Tem que permitir o acesso ao armazenamento para esta operaĆ§Ć£o</string>
<string name="refresh_label">Atualizar</string>
<string name="external_storage_error_msg">CartĆ£o SD nĆ£o disponĆ­vel. Certifique-se de que inseriu o cartĆ£o corretamente para que a aplicaĆ§Ć£o funcione corretamente.</string>
<string name="chapters_label">CapĆ­tulos</string>
@@ -105,25 +110,28 @@
<string name="mark_all_read_label">Marcar tudo como reproduzido</string>
<string name="mark_all_read_msg">Marcar todos os episĆ³dios como reproduzidos</string>
<string name="mark_all_read_confirmation_msg">Tem a certeza de que deseja marcar todos os episĆ³dios como reproduzidos?</string>
- <string name="mark_all_read_feed_confirmation_msg">Tem a certeza de que deseja marcar todos os episĆ³dios desta fonte como reproduzidos?</string>
- <string name="mark_all_seen_label">Marcar tudo como visto</string>
- <string name="mark_all_seen_msg">Marcar todos os episĆ³dios como vistos</string>
- <string name="mark_all_seen_confirmation_msg">Confirma de que deseja marcar todos os episĆ³dios como vistos?</string>
+ <string name="mark_all_read_feed_confirmation_msg">Tem a certeza de que deseja marcar como reproduzidos todos os episĆ³dios deste podcast?</string>
+ <string name="mark_all_seen_label">Marcar tudo como reproduzido</string>
+ <string name="mark_all_seen_msg">Marcar todos como reproduzidos</string>
+ <string name="mark_all_seen_confirmation_msg">Tem a certeza de que deseja marcar todos os episĆ³dios como vistos?</string>
<string name="show_info_label">Mostrar informaƧƵes</string>
+ <string name="show_feed_settings_label">Mostrar definiƧƵes do podcast</string>
+ <string name="feed_info_label">InformaƧƵes do podcast</string>
+ <string name="feed_settings_label">DefiniƧƵes do podcast</string>
<string name="rename_feed_label">Renomear podcast</string>
<string name="remove_feed_label">Remover podcast</string>
<string name="share_label">Partilhar...</string>
- <string name="share_link_label">Partilhar ligaĆ§Ć£o</string>
+ <string name="share_link_label">Partilhar URL do episĆ³dio</string>
+ <string name="share_link_with_position_label">Partilhar URL do episĆ³dio (com posiĆ§Ć£o)</string>
<string name="share_file_label">Partilhar ficheiro</string>
- <string name="share_link_with_position_label">Partilhar ligaĆ§Ć£o com posiĆ§Ć£o</string>
<string name="share_feed_url_label">Partilhar URL da fonte</string>
- <string name="share_item_url_label">Partilhar URL do episĆ³dio</string>
- <string name="share_item_url_with_position_label">Partilhar URL do episĆ³dio com posiĆ§Ć£o</string>
- <string name="feed_delete_confirmation_msg">Tem a certeza de que deseja remover a fonte \"%1$s\" e TODOS os episĆ³dios descarregados?</string>
- <string name="feed_remover_msg">Remover fonte</string>
- <string name="load_complete_feed">Atualizar todas as pƔginas da fonte</string>
+ <string name="share_item_url_label">Partilhar URL do ficheiro multimƩdia</string>
+ <string name="share_item_url_with_position_label">Partilhar URL do ficheiro multimĆ©dia (com posiĆ§Ć£o)</string>
+ <string name="feed_delete_confirmation_msg">Tem a certeza de que deseja remover o podcast \"%1$s\" e TODOS os seus episĆ³dios (inclusive descarregados)?</string>
+ <string name="feed_remover_msg">A remover podcast</string>
+ <string name="load_complete_feed">Atualizar podcast</string>
<string name="hide_episodes_title">Ocultar episĆ³dios</string>
- <string name="episode_actions">Aplicar aƧƵes</string>
+ <string name="batch_edit">EdiĆ§Ć£o em lote</string>
<string name="hide_unplayed_episodes_label">NĆ£o reproduzidos</string>
<string name="hide_paused_episodes_label">Em pausa</string>
<string name="hide_played_episodes_label">Reproduzidos</string>
@@ -132,6 +140,7 @@
<string name="hide_downloaded_episodes_label">Descarregados</string>
<string name="hide_not_downloaded_episodes_label">NĆ£o descarregados</string>
<string name="hide_has_media_label">Tem ficheiro</string>
+ <string name="hide_is_favorite_label">Ɖ favorito</string>
<string name="filtered_label">Filtrados</string>
<string name="refresh_failed_msg">{fa-exclamation-circle} ƚltima atualizaĆ§Ć£o falhada</string>
<string name="open_podcast">Abrir podcast</string>
@@ -145,7 +154,8 @@
<string name="delete_label">Apagar</string>
<string name="delete_failed">EpisĆ³dio nĆ£o apagado. Experimente reiniciar o dispositivo.</string>
<string name="remove_episode_lable">Remover episĆ³dio</string>
- <string name="marked_as_seen_label">Marcar como visto</string>
+ <string name="mark_as_seen_label">Marcar como reproduzido</string>
+ <string name="marked_as_seen_label">Marcar como reproduzido</string>
<string name="mark_read_label">Marcar como reproduzido</string>
<string name="marked_as_read_label">Marcado como reproduzido</string>
<string name="mark_unread_label">Marcar como nĆ£o reproduzido</string>
@@ -168,6 +178,8 @@
<string name="download_failed">falha</string>
<string name="download_pending">Descarga pendente</string>
<string name="download_running">Descarga atual</string>
+ <string name="download_error_details">Detalhes</string>
+ <string name="download_error_details_message">%1$s \n\Ficheiro URL:\n%2$s</string>
<string name="download_error_device_not_found">CartĆ£o SD nĆ£o encontrado</string>
<string name="download_error_insufficient_space">EspaƧo insuficiente</string>
<string name="download_error_file_error">Erro no ficheiro</string>
@@ -218,6 +230,7 @@
<string name="playback_error_unknown">Erro desconhecido</string>
<string name="no_media_playing_label">Nada em reproduĆ§Ć£o</string>
<string name="player_buffering_msg">A processar...</string>
+ <string name="player_go_to_picture_in_picture">Modo \'picture-in-picture\'</string>
<string name="playbackservice_notification_title">Reproduzir podcast</string>
<string name="unknown_media_key">Tecla multimƩdia desconhecida: %1$d</string>
<!--Queue operations-->
@@ -234,7 +247,9 @@
<string name="date">Data</string>
<string name="duration">DuraĆ§Ć£o</string>
<string name="episode_title">TĆ­tulo do episĆ³dio</string>
- <string name="feed_title">TĆ­tulo da fonte</string>
+ <string name="feed_title">TĆ­tulo do podcast</string>
+ <string name="random">AleatĆ³rio</string>
+ <string name="smart_shuffle">Mistura inteligente</string>
<string name="ascending">Crescente</string>
<string name="descending">Decrescente</string>
<string name="clear_queue_confirmation_msg">Tem a certeza de que deseja remover todos os episĆ³dios da fila de reproduĆ§Ć£o?</string>
@@ -272,7 +287,7 @@
<string name="enable_sonic">Ativar Sonic</string>
<!--Empty list labels-->
<string name="no_items_label">NĆ£o existem itens nesta lista</string>
- <string name="no_feeds_label">Ainda nĆ£o possui quaisquer fontes</string>
+ <string name="no_feeds_label">Ainda nĆ£o tem quaisquer podcasts subscritos.</string>
<string name="no_chapters_label">Este episĆ³dio nĆ£o tem capĆ­tulos.</string>
<string name="no_shownotes_label">Este episĆ³dio nĆ£o tem notas.</string>
<!--Preferences-->
@@ -281,15 +296,23 @@
<string name="other_pref">Outras</string>
<string name="about_pref">Sobre</string>
<string name="queue_label">Fila</string>
- <string name="services_label">ServiƧos</string>
+ <string name="integrations_label">IntegraƧƵes</string>
<string name="flattr_label">Flattr</string>
+ <string name="flattr_summary">ServiƧo de micro pagamentos</string>
+ <string name="automation">AutomatizaĆ§Ć£o</string>
+ <string name="download_pref_details">Detalhes</string>
+ <string name="import_export_pref">Importar/Exportar</string>
+ <string name="appearance">AparĆŖncia</string>
+ <string name="external_elements">Elementos externos</string>
+ <string name="interruptions">InterrupƧƵes</string>
+ <string name="buttons">BotƵes para controlo de reproduĆ§Ć£o</string>
+ <string name="media_player">Reprodutor multimƩdia</string>
<string name="pref_episode_cleanup_title">Limpeza de episĆ³dios</string>
<string name="pref_episode_cleanup_summary">Os episĆ³dios que nĆ£o estejam na fila e nĆ£o sejam favoritos podem ser elegĆ­veis para serem removidos se a Descarga automĆ”tica necessitar de espaƧo para novos episĆ³dios.</string>
<string name="pref_pauseOnDisconnect_sum">Pausa na reproduĆ§Ć£o ao desligar os auscultadores ou o bluetooth</string>
<string name="pref_unpauseOnHeadsetReconnect_sum">Continuar reproduĆ§Ć£o ao ligar os auscultadores</string>
<string name="pref_unpauseOnBluetoothReconnect_sum">Continuar reproduĆ§Ć£o ao estabelecer a ligaĆ§Ć£o bluetooth</string>
<string name="pref_hardwareForwardButtonSkips_title">BotĆ£o para avanƧar</string>
- <string name="pref_hardwareForwardButtonSkips_sum">Ao premir o botĆ£o AvanƧar, ir para o episĆ³dio seguinte em vez de avanƧar a reproduĆ§Ć£o</string>
<string name="pref_hardwarePreviousButtonRestarts_title">BotĆ£o Anterior para reiniciar</string>
<string name="pref_hardwarePreviousButtonRestarts_sum">Ao premir o botĆ£o do telefone, reiniciar o episĆ³dio atual em vez de recuar para o episĆ³dio anterior</string>
<string name="pref_followQueue_sum">Ir para a episĆ³dio seguinte ao terminar a reproduĆ§Ć£o</string>
@@ -338,7 +361,7 @@
<string name="pref_nav_drawer_feed_order_title">Definir ordem de subscriĆ§Ć£o</string>
<string name="pref_nav_drawer_feed_order_sum">Alterar a ordem das suas subscriƧƵes</string>
<string name="pref_nav_drawer_feed_counter_title">Definir contador de subscriƧƵes</string>
- <string name="pref_nav_drawer_feed_counter_sum">Alterar a informaĆ§Ć£o mostrada no contador de subscriƧƵes</string>
+ <string name="pref_nav_drawer_feed_counter_sum">Alterar a informaĆ§Ć£o mostrada no contador de subscriƧƵes. TambĆ©m afeta as subscriƧƵes se \'Ordem de subscriĆ§Ć£o\' estiver definida como \'Contador\'.</string>
<string name="pref_set_theme_sum">Alterar a aparĆŖncia do AntennaPod</string>
<string name="pref_automatic_download_title">Descarga automƔtica</string>
<string name="pref_automatic_download_sum">Configurar a descarga automĆ”tica dos episĆ³dios</string>
@@ -352,12 +375,13 @@
<string name="pref_episode_cache_title">Cache de episĆ³dios</string>
<string name="pref_theme_title_light">Claro</string>
<string name="pref_theme_title_dark">Escuro</string>
+ <string name="pref_theme_title_trueblack">Preto (AMOLED)</string>
<string name="pref_episode_cache_unlimited">Sem limite</string>
<string name="pref_update_interval_hours_plural">horas</string>
<string name="pref_update_interval_hours_singular">hora</string>
<string name="pref_update_interval_hours_manual">Manual</string>
<string name="pref_gpodnet_authenticate_title">Acesso</string>
- <string name="pref_gpodnet_authenticate_sum">Aceda Ơ sua conta gpodder.net para poder sincronizar as subscriƧƵes</string>
+ <string name="pref_gpodnet_authenticate_sum">Aceda Ơ sua conta gpodder.net para poder sincronizar as subscriƧƵes.</string>
<string name="pref_gpodnet_logout_title">Sair</string>
<string name="pref_gpodnet_logout_toast">SessĆ£o terminada</string>
<string name="pref_gpodnet_setlogin_information_title">Alterar informaĆ§Ć£o de acesso</string>
@@ -380,8 +404,6 @@
<string name="pref_rewind_sum">Personalizar o nĆŗmero de segundos a recuar ao clicar no botĆ£o de recuo rĆ”pido</string>
<string name="pref_gpodnet_sethostname_title">Definir nome de servidor</string>
<string name="pref_gpodnet_sethostname_use_default_host">Utilizar predefiniƧƵes</string>
- <string name="pref_expandNotify_title">ExpansĆ£o de notificaĆ§Ć£o</string>
- <string name="pref_expandNotify_sum">Expandir sempre a notificaĆ§Ć£o para mostrar os botƵes de reproduĆ§Ć£o</string>
<string name="pref_persistNotify_title">Controlos de reproduĆ§Ć£o</string>
<string name="pref_persistNotify_sum">Manter controlos de notificaĆ§Ć£o e ecrĆ£ de bloqueio ao colocar a reproduĆ§Ć£o em pausa</string>
<string name="pref_compact_notification_buttons_title">Definir botƵes do ecrĆ£ de bloqueio</string>
@@ -402,8 +424,7 @@
<string name="crash_report_sum">Enviar o relatĆ³rio de erros por e-mail</string>
<string name="send_email">Enviar e-mail</string>
<string name="experimental_pref">Experimental</string>
- <string name="pref_sonic_title">Reprodutor multimƩdia Sonic</string>
- <string name="pref_sonic_message">Utilizar o Sonic Media Player como substituto do reprodutor nativo do Android e do Prestissimo</string>
+ <string name="pref_media_player_message">Selecione o reprodutor multimƩdia a utilizar</string>
<string name="pref_current_value">Valor atual: %1$s</string>
<string name="pref_proxy_title">Proxy</string>
<string name="pref_proxy_sum">Definir um proxy de rede</string>
@@ -415,6 +436,11 @@
<string name="pref_cast_message_free_flavor">O Chromecast necessita de bibliotecas proprietĆ”rias de terceiros que estĆ£o desativadas nesta versĆ£o do AntennaPod</string>
<string name="pref_enqueue_downloaded_title">Colocar descargas na fila</string>
<string name="pref_enqueue_downloaded_summary">Adicionar Ć  fila os episĆ³dios descarregados</string>
+ <string name="media_player_builtin">Reprodutor nativo Android</string>
+ <string name="pref_videoBehavior_title">Ao sair do vĆ­deo</string>
+ <string name="pref_videoBehavior_sum">Comportamento ao sair da reproduĆ§Ć£o do vĆ­deo</string>
+ <string name="stop_playback">Parar reproduĆ§Ć£o</string>
+ <string name="continue_playback">Continuar reproduĆ§Ć£o de Ć”udio</string>
<!--Auto-Flattr dialog-->
<string name="auto_flattr_enable">Ativar flattr automƔtico</string>
<string name="auto_flattr_after_percent">Flattr de episĆ³dios ao atingir %d porcento de reproduĆ§Ć£o</string>
@@ -424,8 +450,8 @@
<string name="search_hint">Pesquisar por episĆ³dios</string>
<string name="found_in_shownotes_label">Encontrado nas notas</string>
<string name="found_in_chapters_label">Encontrado nos capĆ­tulos</string>
- <string name="found_in_authors_label">Encontrado em autores</string>
- <string name="found_in_feeds_label">Encontrado em fontes</string>
+ <string name="found_in_authors_label">Localizado em autor(es)</string>
+ <string name="found_in_feeds_label">Localizado em podcast</string>
<string name="search_status_no_results">Nenhum resultado</string>
<string name="search_label">Pesquisar</string>
<string name="found_in_title_label">Encontrado no tĆ­tulo</string>
@@ -451,8 +477,8 @@
<string name="html_export_label">ExportaĆ§Ć£o HTML</string>
<string name="exporting_label">A exportar...</string>
<string name="export_error_label">Erro de exportaĆ§Ć£o</string>
- <string name="opml_export_success_title">ExportaĆ§Ć£o efetuada</string>
- <string name="opml_export_success_sum">O ficheiro .opml foi guardado em:\u0020</string>
+ <string name="export_success_title">ExportaĆ§Ć£o com sucesso</string>
+ <string name="export_success_sum">O ficheiro exportado foi guardado em:\n\n%1$s</string>
<string name="opml_import_ask_read_permission">Requer acesso ao armazenamento externo para ler o ficheiro OPML</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">Definir temporizador</string>
@@ -619,6 +645,14 @@
<string name="proxy_host_empty_error">Servidor nĆ£o pode estar vazio</string>
<string name="proxy_host_invalid_error">O servidor nĆ£o tem um endereƧo ou domĆ­nio vĆ”lido</string>
<string name="proxy_port_invalid_error">Porta invƔlido</string>
+ <!--Database import/export-->
+ <string name="import_export">ImportaĆ§Ć£o/exportaĆ§Ć£o da base de dados</string>
+ <string name="import_export_warning">Esta funĆ§Ć£o experimental pode ser usada para transferir as suas subscriƧƵes e episĆ³dios para outros dispositivos.\n\nAs bases de dados exportadas apenas podem ser importadas se usar a mesma versĆ£o do AntennaPod. Caso contrĆ”rio, esta funĆ§Ć£o poderĆ” produzir efeitos inesperados.\n\nDepois da importaĆ§Ć£o, os episĆ³dios poderĆ£o ser apresentados como tendo sido descarregados mesmo que nĆ£o seja verdade. Prima o botĆ£o de reproduĆ§Ć£o dos episĆ³dios para que o AntennaPod detete a situaĆ§Ć£o.</string>
+ <string name="label_import">Importar</string>
+ <string name="label_export">Exportar</string>
+ <string name="import_select_file">Selecione o ficheiro a importar</string>
+ <string name="export_ok">ExportaĆ§Ć£o com sucesso.</string>
+ <string name="import_ok">ImportaĆ§Ć£o bem sucedida.\n\nPor favor prima OK para reiniciar o AntennaPod</string>
<!--Casting-->
<string name="cast_media_route_menu_title">Reproduzir em...</string>
<string name="cast_disconnect_label">Desligar da Ćŗltima sessĆ£o</string>
@@ -635,4 +669,13 @@
<string name="cast_failed_seek">Falha ao procurar a nova posiĆ§Ć£o no dispositivo</string>
<string name="cast_failed_receiver_player_error">O reprodutor encontrou um erro crĆ­tico</string>
<string name="cast_failed_media_error_skipping">Erro de reproduĆ§Ć£o. A ignorar...</string>
+ <!--Notification channels-->
+ <string name="notification_channel_user_action">Requer aĆ§Ć£o</string>
+ <string name="notification_channel_user_action_description">Mostrar se for necessĆ”ria uma aĆ§Ć£o como, por exemplo, digitar uma palavra-passe.</string>
+ <string name="notification_channel_downloading">A descarregar</string>
+ <string name="notification_channel_downloading_description">Mostrar durante a descarga.</string>
+ <string name="notification_channel_playing">ReproduĆ§Ć£o atual</string>
+ <string name="notification_channel_playing_description">Permite o controlo da reproduĆ§Ć£o. Esta serĆ” a notificaĆ§Ć£o que verĆ” ao reproduzir um podcast.</string>
+ <string name="notification_channel_error">Erros</string>
+ <string name="notification_channel_error_description">Mostrar se ocorrerem erros como, por exemplo, nĆ£o for possĆ­vel a descarga.</string>
</resources>
diff --git a/core/src/main/res/values-ro-rRO/strings.xml b/core/src/main/res/values-ro-rRO/strings.xml
index d39e48bbc..92b2da8f9 100644
--- a/core/src/main/res/values-ro-rRO/strings.xml
+++ b/core/src/main/res/values-ro-rRO/strings.xml
@@ -2,25 +2,38 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<!--Activitiy and fragment titles-->
<string name="feeds_label">Feeduri</string>
+ <string name="statistics_label">Statistici</string>
+ <string name="add_feed_label">Adaugă podcast</string>
+ <string name="episodes_label">Episoade</string>
+ <string name="all_episodes_short_label">Toate</string>
+ <string name="favorite_episodes_label">Favorite</string>
<string name="new_label">Nou</string>
<string name="settings_label">Setări</string>
<string name="downloads_label">Descărcări</string>
+ <string name="downloads_running_label">Active</string>
+ <string name="downloads_completed_label">Complete</string>
+ <string name="downloads_log_label">Jurnal</string>
<string name="cancel_download_label">Anulează descărcare</string>
<string name="playback_history_label">Istorie ascultare</string>
<string name="gpodnet_main_label">gpodder.net</string>
<string name="gpodnet_auth_label">autentificare gpodder.net</string>
<!--Statistics fragment-->
<!--Main activity-->
+ <string name="drawer_open">Deschide meniul</string>
+ <string name="drawer_close">Ǝnchide meniul</string>
<!--Webview actions-->
<string name="open_in_browser_label">Deschide Ʈn browser</string>
<string name="copy_url_label">Copiază URL</string>
<string name="share_url_label">Ǝmparte URL</string>
<string name="copied_url_msg">URL copiat Ʈn clipboard</string>
+ <string name="go_to_position_label">Mergi la poziția</string>
<!--Playback history-->
<string name="clear_history_label">Golește istoric</string>
<!--Other-->
<string name="confirm_label">Confirmă</string>
<string name="cancel_label">Anulează</string>
+ <string name="yes">Da</string>
+ <string name="no">Nu</string>
<string name="author_label">Autor</string>
<string name="language_label">Limbă</string>
<string name="podcast_settings_label">Setări</string>
@@ -29,6 +42,7 @@
<string name="refresh_label">ReƮncarcă</string>
<string name="external_storage_error_msg">Nu exista stocare externă. Asigurați-vă că stocarea externă este conectată pentru ca aplicația să funcționeze corespunzător.</string>
<string name="chapters_label">Capitole</string>
+ <string name="chapter_duration">Durata: %1$s</string>
<string name="shownotes_label">Notițe</string>
<string name="description_label">Descriere</string>
<string name="most_recent_prefix">Cel mai recent episod:\u0020</string>
@@ -39,6 +53,13 @@
<string name="save_username_password_label">Salvează numele de utilizator și parola</string>
<string name="close_label">Ʈnchide</string>
<string name="retry_label">ReƮncearcă</string>
+ <string name="auto_delete_label">Șterge epidosul automat</string>
+ <string name="feed_auto_download_always">Ǝntotdeauna</string>
+ <string name="feed_auto_download_never">Niciodată</string>
+ <string name="send_label">Trimite...</string>
+ <string name="episode_cleanup_never">Niciodată</string>
+ <string name="episode_cleanup_queue_removal">CĆ¢nd nu e Ć®n coadă</string>
+ <string name="episode_cleanup_after_listening">După terminare</string>
<!--'Add Feed' Activity labels-->
<string name="feedurl_label">Adresă feed</string>
<!--Actions on feeds-->
@@ -123,7 +144,6 @@
<string name="other_pref">Altele</string>
<string name="about_pref">Despre</string>
<string name="queue_label">Coadă</string>
- <string name="services_label">Servicii</string>
<string name="flattr_label">Flattr</string>
<string name="pref_followQueue_sum">Sari la următorul element din coadă cand se termină ascultarea</string>
<string name="playback_pref">Ascultare</string>
@@ -174,7 +194,6 @@
<string name="deselect_all_label">Deselectează toate</string>
<string name="opml_export_label">Exportă OPML</string>
<string name="export_error_label">Eroare exportare</string>
- <string name="opml_export_success_sum">Fișierul .opml a fost scris Ć®n:\u0020</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">Setează cronometru somn</string>
<string name="disable_sleeptimer_label">Oprește cronometru somn</string>
@@ -227,4 +246,5 @@
<!--Database import/export-->
<!--Casting-->
<!--<string name="cast_failed_to_connect">Could not connect to the device</string>-->
+ <!--Notification channels-->
</resources>
diff --git a/core/src/main/res/values-ru/strings.xml b/core/src/main/res/values-ru/strings.xml
index 5e7f8dd73..076a54048 100644
--- a/core/src/main/res/values-ru/strings.xml
+++ b/core/src/main/res/values-ru/strings.xml
@@ -1,11 +1,13 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources xmlns:tools="http://schemas.android.com/tools">
<!--Activitiy and fragment titles-->
+ <string name="feed_update_receiver_name">ŠžŠ±Š½Š¾Š²Šøть ŠæŠ¾Š“ŠæŠøсŠŗŠø</string>
<string name="feeds_label">ŠšŠ°Š½Š°Š»Ń‹</string>
<string name="statistics_label">Š”тŠ°Ń‚ŠøстŠøŠŗŠ°</string>
<string name="add_feed_label">Š”Š¾Š±Š°Š²Šøть ŠæŠ¾Š“ŠŗŠ°ŃŃ‚</string>
<string name="episodes_label">Š’Ń‹ŠæусŠŗŠø</string>
<string name="all_episodes_short_label">Š’сŠµ</string>
+ <string name="new_episodes_label">ŠŠ¾Š²Ń‹Šµ</string>
<string name="favorite_episodes_label">Š˜Š·Š±Ń€Š°Š½Š½Š¾Šµ</string>
<string name="new_label">ŠŠ¾Š²Ń‹Šµ</string>
<string name="settings_label">ŠŠ°ŃŃ‚Ń€Š¾Š¹ŠŗŠø</string>
@@ -18,10 +20,12 @@
<string name="cancel_download_label">ŠžŃ‚Š¼ŠµŠ½Šøть Š·Š°Š³Ń€ŃƒŠ·Šŗу</string>
<string name="playback_history_label">Š–ŃƒŃ€Š½Š°Š»</string>
<string name="gpodnet_main_label">gpodder.net</string>
+ <string name="gpodnet_summary">Š”ŠøŠ½Ń…Ń€Š¾Š½ŠøŠ·ŠøрŠ¾Š²Š°Ń‚ŃŒ с Š“руŠ³ŠøŠ¼Šø устрŠ¾Š¹ŃŃ‚Š²Š°Š¼Šø</string>
<string name="gpodnet_auth_label">Š’Š¾Š¹Ń‚Šø Š½Š° gpodder.net</string>
<string name="free_space_label">сŠ²Š¾Š±Š¾Š“Š½Š¾ %1$s</string>
<string name="episode_cache_full_title">ŠšŃŃˆ Š²Ń‹ŠæусŠŗŠ¾Š² Š·Š°ŠæŠ¾Š»Š½ŠµŠ½</string>
<string name="episode_cache_full_message">Š”Š¾ŃŃ‚ŠøŠ³Š½ŃƒŃ‚ ŠæрŠµŠ“ŠµŠ» ŠŗэшŠ° Š²Ń‹ŠæусŠŗŠ¾Š². ŠžŠ±ŃŠŃ‘Š¼ ŠŗэшŠ° Š¼Š¾Š¶Š½Š¾ уŠ²ŠµŠ»ŠøчŠøть Š² ŠŠ°ŃŃ‚Ń€Š¾Š¹ŠŗŠ°Ń….</string>
+ <string name="synchronizing">Š”ŠøŠ½Ń…Ń€Š¾Š½ŠøŠ·Š°Ń†Šøяā€¦</string>
<!--Statistics fragment-->
<string name="total_time_listened_to_podcasts">ŠžŠ±Ń‰ŠµŠµ Š²Ń€ŠµŠ¼Ń ŠæрŠ¾ŃŠ»ŃƒŃˆŠøŠ²Š°Š½Šøя ŠæŠ¾Š“ŠŗŠ°ŃŃ‚Š¾Š²:</string>
<string name="statistics_details_dialog">%1$d ŠøŠ· %2$d Š²Ń‹ŠæусŠŗŠ¾Š² Š½Š°Ń‡Š°Ń‚Š¾.\n\nŠŸŃ€Š¾ŃŠ»ŃƒŃˆŠ°Š½Š¾ %3$s ŠøŠ· %4$s.</string>
@@ -56,13 +60,14 @@
<string name="yes">Š”Š°</string>
<string name="no">ŠŠµŃ‚</string>
<string name="reset">Š”Š±Ń€Š¾Ń</string>
- <string name="author_label">ŠŠ²Ń‚Š¾Ń€</string>
+ <string name="author_label">ŠŠ²Ń‚Š¾Ń€(ы)</string>
<string name="language_label">ŠÆŠ·Ń‹Šŗ</string>
<string name="url_label">ŠŠ“рŠµŃ</string>
<string name="podcast_settings_label">ŠŠ°ŃŃ‚Ń€Š¾Š¹ŠŗŠø</string>
<string name="cover_label">ŠžŠ±Š»Š¾Š¶ŠŗŠ°</string>
<string name="error_label">ŠžŃˆŠøŠ±ŠŗŠ°</string>
<string name="error_msg_prefix">ŠŸŃ€Š¾ŠøŠ·Š¾ŃˆŠ»Š° Š¾ŃˆŠøŠ±ŠŗŠ°:</string>
+ <string name="needs_storage_permission">Š”Š»Ń Š²Ń‹ŠæŠ¾Š»Š½ŠµŠ½Šøя этŠ¾Š¹ Š¾ŠæŠµŃ€Š°Ń†ŠøŠø Š½ŃƒŠ¶Š½Š¾ рŠ°Š·Ń€ŠµŃˆŠøть Š“Š¾ŃŃ‚ŃƒŠæ Šŗ хрŠ°Š½ŠøŠ»Šøщу</string>
<string name="refresh_label">ŠžŠ±Š½Š¾Š²Šøть</string>
<string name="external_storage_error_msg">Š’Š½ŠµŃˆŠ½ŠøŠ¹ Š½Š¾ŃŠøтŠµŠ»ŃŒ Š½ŠµŠ“Š¾ŃŃ‚ŃƒŠæŠµŠ½. Š£Š±ŠµŠ“ŠøтŠµŃŃŒ чтŠ¾ Š²Š½ŠµŃˆŠ½ŠøŠ¹ Š½Š¾ŃŠøтŠµŠ»ŃŒ устŠ°Š½Š¾Š²Š»ŠµŠ½, ŠøŠ½Š°Ń‡Šµ ŠæрŠøŠ»Š¾Š¶ŠµŠ½ŠøŠµ Š½Šµ сŠ¼Š¾Š¶ŠµŃ‚ Š½Š¾Ń€Š¼Š°Š»ŃŒŠ½Š¾ рŠ°Š±Š¾Ń‚Š°Ń‚ŃŒ.</string>
<string name="chapters_label">Š“Š»Š°Š²Ń‹</string>
@@ -107,25 +112,28 @@
<string name="mark_all_read_label">ŠžŃ‚Š¼ŠµŃ‚Šøть ŠŗŠ°Šŗ ŠæрŠ¾ŃŠ»ŃƒŃˆŠ°Š½Š½Š¾Šµ</string>
<string name="mark_all_read_msg">ŠžŃ‚Š¼ŠµŃ‚Šøть Š²ŃŠµ Š²Ń‹ŠæусŠŗŠø ŠŗŠ°Šŗ ŠæрŠ¾ŃŠ»ŃƒŃˆŠ°Š½Š½Ń‹Šµ</string>
<string name="mark_all_read_confirmation_msg">ŠŸŠ¾Š“тŠ²ŠµŃ€Š“ŠøтŠµ, чтŠ¾ хŠ¾Ń‚ŠøтŠµ ŠæŠ¾Š¼ŠµŃ‚Šøть Š²ŃŠµ эŠæŠøŠ·Š¾Š“ы ŠŗŠ°Šŗ ŠæрŠ¾ŃŠ»ŃƒŃˆŠ°Š½Š½Ń‹Šµ.</string>
- <string name="mark_all_read_feed_confirmation_msg">ŠŸŠ¾Š“тŠ²ŠµŃ€Š“ŠøтŠµ, чтŠ¾ хŠ¾Ń‚ŠøтŠµ ŠæŠ¾Š¼ŠµŃ‚Šøть Š²ŃŠµ эŠæŠøŠ·Š¾Š“ы Š² этŠ¾Š¼ ŠŗŠ°Š½Š°Š»Šµ ŠŗŠ°Šŗ ŠæрŠ¾ŃŠ»ŃƒŃˆŠ°Š½Š½Ń‹Šµ.</string>
+ <string name="mark_all_read_feed_confirmation_msg">ŠŸŠ¾Š¶Š°Š»ŃƒŠ¹ŃŃ‚Š°, ŠæŠ¾Š“тŠ²ŠµŃ€Š“ŠøтŠµ Š¶ŠµŠ»Š°Š½ŠøŠµ Š¾Ń‚Š¼ŠµŃ‚Šøть Š²ŃŠµ Š²Ń‹ŠæусŠŗŠø этŠ¾Š³Š¾ ŠæŠ¾Š“ŠŗŠ°ŃŃ‚Š° ŠŗŠ°Šŗ ŠæрŠ¾ŃŠ»ŃƒŃˆŠ°Š½Š½Ń‹Šµ.</string>
<string name="mark_all_seen_label">ŠžŃ‚Š¼ŠµŃ‚Šøть Š²ŃŠµ ŠŗŠ°Šŗ ŠæрŠ¾ŃŠ¼Š¾Ń‚Ń€ŠµŠ½Š½Š¾Šµ</string>
<string name="mark_all_seen_msg">Š’сŠµ Š²Ń‹ŠæусŠŗŠø Š¾Ń‚Š¼ŠµŃ‡ŠµŠ½Ń‹ ŠŗŠ°Šŗ ŠæрŠ¾ŃŠ¼Š¾Ń‚Ń€ŠµŠ½Š½Ń‹Šµ</string>
<string name="mark_all_seen_confirmation_msg">ŠŸŠ¾Š¶Š°Š»ŃƒŠ¹ŃŃ‚Š°, ŠæŠ¾Š“тŠ²ŠµŃ€Š“ŠøтŠµ Š½Š°Š¼ŠµŃ€ŠµŠ½ŠøŠµ Š¾Ń‚Š¼ŠµŃ‚Šøть Š²ŃŠµ Š²Ń‹ŠæусŠŗŠø ŠŗŠ°Šŗ ŠæрŠ¾ŃŠ¼Š¾Ń‚Ń€ŠµŠ½Š½Ń‹Šµ.</string>
<string name="show_info_label">ŠŸŠ¾ŠŗŠ°Š·Š°Ń‚ŃŒ ŠøŠ½Ń„Š¾Ń€Š¼Š°Ń†Šøю</string>
+ <string name="show_feed_settings_label">ŠŸŠ¾ŠŗŠ°Š·Š°Ń‚ŃŒ Š½Š°ŃŃ‚Ń€Š¾Š¹ŠŗŠø ŠæŠ¾Š“ŠŗŠ°ŃŃ‚Š°</string>
+ <string name="feed_info_label">Š”Š²ŠµŠ“ŠµŠ½Šøя Š¾ ŠæŠ¾Š“ŠŗŠ°ŃŃ‚Šµ</string>
+ <string name="feed_settings_label">ŠŠ°ŃŃ‚Ń€Š¾Š¹ŠŗŠø ŠæŠ¾Š“ŠŗŠ°ŃŃ‚Š°</string>
<string name="rename_feed_label">ŠŸŠµŃ€ŠµŠøŠ¼ŠµŠ½Š¾Š²Š°Ń‚ŃŒ ŠæŠ¾Š“ŠŗŠ°ŃŃ‚</string>
<string name="remove_feed_label">Š£Š“Š°Š»Šøть ŠæŠ¾Š“ŠŗŠ°ŃŃ‚</string>
<string name="share_label">ŠŸŠ¾Š“ŠµŠ»Šøтьсяā€¦</string>
- <string name="share_link_label">ŠŸŠ¾Š“ŠµŠ»Šøться ссыŠ»ŠŗŠ¾Š¹</string>
+ <string name="share_link_label">ŠŸŠ¾Š“ŠµŠ»Šøться ссыŠ»ŠŗŠ¾Š¹ Š½Š° Š²Ń‹ŠæусŠŗ</string>
+ <string name="share_link_with_position_label">ŠŸŠ¾Š“ŠµŠ»Šøться ссыŠ»ŠŗŠ¾Š¹ Š½Š° Š²Ń‹ŠæусŠŗ с Š¾Ń‚Š¼ŠµŃ‚ŠŗŠ¾Š¹ Š²Ń€ŠµŠ¼ŠµŠ½Šø</string>
<string name="share_file_label">ŠŸŠ¾Š“ŠµŠ»Šøться фŠ°Š¹Š»Š¾Š¼</string>
- <string name="share_link_with_position_label">ŠŸŠ¾Š“ŠµŠ»Šøться ссыŠ»ŠŗŠ¾Š¹ с Š¾Ń‚Š¼ŠµŃ‚ŠŗŠ¾Š¹ Š²Ń€ŠµŠ¼ŠµŠ½Šø</string>
<string name="share_feed_url_label">ŠŸŠ¾Š“ŠµŠ»Šøться ссыŠ»ŠŗŠ¾Š¹ Š½Š° ŠŗŠ°Š½Š°Š»</string>
- <string name="share_item_url_label">ŠŸŠ¾Š“ŠµŠ»Šøться ссыŠ»ŠŗŠ¾Š¹ Š½Š° фŠ°Š¹Š» Š²Ń‹ŠæусŠŗŠ°</string>
- <string name="share_item_url_with_position_label">ŠŸŠ¾Š“ŠµŠ»Šøться ссыŠ»ŠŗŠ¾Š¹ Š½Š° фŠ°Š¹Š» Š²Ń‹ŠæусŠŗŠ° с Š¾Ń‚Š¼ŠµŃ‚ŠŗŠ¾Š¹ Š²Ń€ŠµŠ¼ŠµŠ½Šø</string>
- <string name="feed_delete_confirmation_msg">ŠŸŠ¾Š“тŠ²ŠµŃ€Š“ŠøтŠµ, чтŠ¾ хŠ¾Ń‚ŠøтŠµ уŠ“Š°Š»Šøть ŠŗŠ°Š½Š°Š» \"%1$s\" Šø Š’Š”Š• сŠŗŠ°Ń‡Š°Š½Š½Ń‹Šµ эŠæŠøŠ·Š¾Š“ы этŠ¾Š³Š¾ ŠŗŠ°Š½Š°Š»Š°.</string>
- <string name="feed_remover_msg">Š£Š“Š°Š»ŠµŠ½ŠøŠµ ŠŗŠ°Š½Š°Š»Š°</string>
- <string name="load_complete_feed">ŠžŠ±Š½Š¾Š²Šøть Š²ŠµŃŃŒ ŠŗŠ°Š½Š°Š»</string>
+ <string name="share_item_url_label">ŠŸŠ¾Š“ŠµŠ»Šøться ссыŠ»ŠŗŠ¾Š¹ Š½Š° фŠ°Š¹Š»</string>
+ <string name="share_item_url_with_position_label">ŠŸŠ¾Š“ŠµŠ»Šøться ссыŠ»ŠŗŠ¾Š¹ Š½Š° фŠ°Š¹Š» с Š¾Ń‚Š¼ŠµŃ‚ŠŗŠ¾Š¹ Š²Ń€ŠµŠ¼ŠµŠ½Šø</string>
+ <string name="feed_delete_confirmation_msg">ŠŸŠ¾Š“тŠ²ŠµŃ€Š“ŠøтŠµ Š¶ŠµŠ»Š°Š½ŠøŠµ уŠ“Š°Š»Šøть ŠæŠ¾Š“ŠŗŠ°ŃŃ‚ \"%1$s\" Šø Š’Š”Š• ŠµŠ³Š¾ эŠæŠøŠ·Š¾Š“ы, Š² тŠ¾Š¼ чŠøсŠ»Šµ Šø сŠŗŠ°Ń‡Š°Š½Š½Ń‹Šµ.</string>
+ <string name="feed_remover_msg">Š£Š“Š°Š»ŠµŠ½ŠøŠµ ŠæŠ¾Š“ŠŗŠ°ŃŃ‚Š°</string>
+ <string name="load_complete_feed">ŠžŠ±Š½Š¾Š²Šøть Š²ŠµŃŃŒ ŠæŠ¾Š“ŠŗŠ°ŃŃ‚</string>
<string name="hide_episodes_title">Š”Šŗрыть Š²Ń‹ŠæусŠŗŠø</string>
- <string name="episode_actions">ŠŸŃ€ŠøŠ¼ŠµŠ½Šøть Š“ŠµŠ¹ŃŃ‚Š²Šøя</string>
+ <string name="batch_edit">Š“Ń€ŃƒŠæŠæŠ¾Š²Š°Ń Š¾Š±Ń€Š°Š±Š¾Ń‚ŠŗŠ°</string>
<string name="hide_unplayed_episodes_label">ŠŠµŠæрŠ¾ŃŠ»ŃƒŃˆŠ°Š½Š½Š¾Šµ</string>
<string name="hide_paused_episodes_label">ŠŸŃ€ŠøŠ¾ŃŃ‚Š°Š½Š¾Š²Š»ŠµŠ½Š½Š¾Šµ</string>
<string name="hide_played_episodes_label">ŠŸŃ€Š¾ŃŠ»ŃƒŃˆŠ°Š½Š½Š¾Šµ</string>
@@ -134,6 +142,7 @@
<string name="hide_downloaded_episodes_label">Š—Š°Š³Ń€ŃƒŠ¶ŠµŠ½Š¾</string>
<string name="hide_not_downloaded_episodes_label">ŠŠµ Š·Š°Š³Ń€ŃƒŠ¶ŠµŠ½Š¾</string>
<string name="hide_has_media_label">Š” фŠ°Š¹Š»Š°Š¼Šø</string>
+ <string name="hide_is_favorite_label">Š˜Š·Š±Ń€Š°Š½Š½Ń‹Šµ</string>
<string name="filtered_label">ŠžŃ‚Ń„ŠøŠ»ŃŒŃ‚Ń€Š¾Š²Š°Š½Š¾</string>
<string name="refresh_failed_msg">{fa-exclamation-circle} ŠŸŠ¾ŃŠ»ŠµŠ“Š½ŠµŠµ Š¾Š±Š½Š¾Š²Š»ŠµŠ½ŠøŠµ Š½Šµ уŠ“Š°Š»Š¾ŃŃŒ</string>
<string name="open_podcast">ŠžŃ‚Šŗрыть ŠæŠ¾Š“ŠŗŠ°ŃŃ‚</string>
@@ -147,6 +156,7 @@
<string name="delete_label">Š£Š“Š°Š»Šøть</string>
<string name="delete_failed">ŠŠµŠ²Š¾Š·Š¼Š¾Š¶Š½Š¾ уŠ“Š°Š»Šøть фŠ°Š¹Š». ŠŸŠ¾ŠæрŠ¾Š±ŃƒŠ¹Ń‚Šµ ŠæŠµŃ€ŠµŠ·Š°Š³Ń€ŃƒŠ·Šøть устрŠ¾Š¹ŃŃ‚Š²Š¾.</string>
<string name="remove_episode_lable">Š£Š“Š°Š»Šøть Š²Ń‹ŠæусŠŗ</string>
+ <string name="mark_as_seen_label">ŠŸŃ€Š¾ŃŠ¼Š¾Ń‚Ń€ŠµŠ½Š¾</string>
<string name="marked_as_seen_label">ŠžŃ‚Š¼ŠµŃ‡ŠµŠ½Š¾ ŠŗŠ°Šŗ ŠæрŠ¾ŃŠ¼Š¾Ń‚Ń€ŠµŠ½Š½Š¾Šµ</string>
<string name="mark_read_label">ŠžŃ‚Š¼ŠµŃ‚Šøть ŠŗŠ°Šŗ ŠæрŠ¾ŃŠ»ŃƒŃˆŠ°Š½Š½Š¾Šµ</string>
<string name="marked_as_read_label">ŠŸŠ¾Š¼ŠµŃ‡ŠµŠ½Š¾ ŠŗŠ°Šŗ ŠæрŠ¾ŃŠ»ŃƒŃˆŠ°Š½Š½Š¾Šµ</string>
@@ -170,6 +180,11 @@
<string name="download_failed">Š½Šµ уŠ“Š°Š»Š¾ŃŃŒ</string>
<string name="download_pending">Š—Š°Š³Ń€ŃƒŠ·ŠŗŠ° Š² Š¾Š¶ŠøŠ“Š°Š½ŠøŠø</string>
<string name="download_running">Š—Š°Š³Ń€ŃƒŠ·ŠŗŠ° Š² ŠæрŠ¾Ń†ŠµŃŃŠµ</string>
+ <string name="download_error_details">ŠŸŠ¾Š“рŠ¾Š±Š½ŠµŠµ</string>
+ <string name="download_error_details_message">%1$s
+
+URL фŠ°Š¹Š»Š°:
+%2$s</string>
<string name="download_error_device_not_found">Š£ŃŃ‚Ń€Š¾Š¹ŃŃ‚Š²Š¾ хрŠ°Š½ŠµŠ½Šøя Š½Šµ Š½Š°Š¹Š“ŠµŠ½Š¾</string>
<string name="download_error_insufficient_space">ŠŠµŠ“Š¾ŃŃ‚Š°Ń‚Š¾Ń‡Š½Š¾ Š¼ŠµŃŃ‚Š°</string>
<string name="download_error_file_error">ŠžŃˆŠøŠ±ŠŗŠ° фŠ°Š¹Š»Š°</string>
@@ -222,6 +237,7 @@
<string name="playback_error_unknown">ŠŠµŠøŠ·Š²ŠµŃŃ‚Š½Š°Ń Š¾ŃˆŠøŠ±ŠŗŠ°</string>
<string name="no_media_playing_label">ŠŠøчŠµŠ³Š¾ Š½Šµ Š²Š¾ŃŠæрŠ¾ŠøŠ·Š²Š¾Š“Šøтся</string>
<string name="player_buffering_msg">Š‘ŃƒŃ„ŠµŃ€ŠøŠ·Š°Ń†Šøя</string>
+ <string name="player_go_to_picture_in_picture">ŠšŠ°Ń€Ń‚ŠøŠ½ŠŗŠ° Š² ŠŗŠ°Ń€Ń‚ŠøŠ½ŠŗŠµ</string>
<string name="playbackservice_notification_title">Š’Š¾ŃŠæрŠ¾ŠøŠ·Š²ŠµŠ“ŠµŠ½ŠøŠµ ŠæŠ¾Š“ŠŗŠ°ŃŃ‚Š°</string>
<string name="unknown_media_key">AntennaPod - Š½ŠµŠøŠ·Š²ŠµŃŃ‚Š½Ń‹Š¹ ŠŗŠ»ŃŽŃ‡ Š½Š¾ŃŠøтŠµŠ»Ń: %1$d</string>
<!--Queue operations-->
@@ -238,7 +254,9 @@
<string name="date">ŠŸŠ¾ Š“Š°Ń‚Šµ</string>
<string name="duration">ŠŸŠ¾ ŠæрŠ¾Š“Š¾Š»Š¶ŠøтŠµŠ»ŃŒŠ½Š¾ŃŃ‚Šø</string>
<string name="episode_title">ŠŠ°Š·Š²Š°Š½ŠøŠµ Š²Ń‹ŠæусŠŗŠ°</string>
- <string name="feed_title">ŠŠ°Š·Š²Š°Š½ŠøŠµ ŠŗŠ°Š½Š°Š»Š°</string>
+ <string name="feed_title">ŠŠ°Š·Š²Š°Š½ŠøŠµ ŠæŠ¾Š“ŠŗŠ°ŃŃ‚Š°</string>
+ <string name="random">Š”Š»ŃƒŃ‡Š°Š¹Š½Š¾</string>
+ <string name="smart_shuffle">Š£Š¼Š½Š¾Šµ ŠæŠµŃ€ŠµŠ¼ŠµŃˆŠøŠ²Š°Š½ŠøŠµ</string>
<string name="ascending">ŠŸŠ¾ Š²Š¾Š·Ń€Š°ŃŃ‚Š°Š½Šøю</string>
<string name="descending">ŠŸŠ¾ уŠ±Ń‹Š²Š°Š½Šøю</string>
<string name="clear_queue_confirmation_msg">ŠŸŠ¾Š“тŠ²ŠµŃ€Š“ŠøтŠµ, чтŠ¾ хŠ¾Ń‚ŠøтŠµ Š¾Ń‡ŠøстŠøть Š¾Ń‡ŠµŃ€ŠµŠ“ь Š¾Ń‚ Š’Š”Š•Š„ эŠæŠøŠ·Š¾Š“Š¾Š².</string>
@@ -276,7 +294,7 @@
<string name="enable_sonic">Š’ŠŗŠ»ŃŽŃ‡Šøть Sonic</string>
<!--Empty list labels-->
<string name="no_items_label">Š”ŠæŠøсŠ¾Šŗ Šæуст</string>
- <string name="no_feeds_label">Š’Ń‹ ŠµŃ‰Ń‘ Š½Šµ ŠæŠ¾Š“ŠæŠøсŠ°Š½Ń‹ Š½Šø Š½Š° Š¾Š“ŠøŠ½ ŠŗŠ°Š½Š°Š».</string>
+ <string name="no_feeds_label">Š’Ń‹ ŠµŃ‰Ń‘ Š½Šµ ŠæŠ¾Š“ŠæŠøсŠ°Š½Ń‹ Š½Šø Š½Š° Š¾Š“ŠøŠ½ ŠæŠ¾Š“ŠŗŠ°ŃŃ‚.</string>
<string name="no_chapters_label">Š­Ń‚Š¾Ń‚ Š²Ń‹ŠæусŠŗ Š½Šµ сŠ¾Š“ŠµŃ€Š¶Šøт Š¾Š³Š»Š°Š²Š»ŠµŠ½Šøя.</string>
<string name="no_shownotes_label">Š­Ń‚Š¾Ń‚ Š²Ń‹ŠæусŠŗ Š½Šµ сŠ¾Š“ŠµŃ€Š¶Šøт ŠæрŠøŠ¼ŠµŃ‡Š°Š½ŠøŠ¹.</string>
<!--Preferences-->
@@ -285,15 +303,23 @@
<string name="other_pref">ŠŸŃ€Š¾Ń‡ŠµŠµ</string>
<string name="about_pref">Šž ŠæрŠ¾Š³Ń€Š°Š¼Š¼Šµ</string>
<string name="queue_label">ŠžŃ‡ŠµŃ€ŠµŠ“ь</string>
- <string name="services_label">Š”ŠµŃ€Š²Šøсы</string>
+ <string name="integrations_label">Š˜Š½Ń‚ŠµŠ³Ń€Š°Ń†Šøя</string>
<string name="flattr_label">Flattr</string>
+ <string name="flattr_summary">Š£ŃŠ»ŃƒŠ³Š° Š¼ŠøŠŗрŠ¾ŠæŠ»Š°Ń‚ŠµŠ¶ŠµŠ¹</string>
+ <string name="automation">ŠŠ²Ń‚Š¾Š¼Š°Ń‚ŠøŠ·Š°Ń†Šøя</string>
+ <string name="download_pref_details">ŠŸŠ¾Š“рŠ¾Š±Š½ŠµŠµ</string>
+ <string name="import_export_pref">Š˜Š¼ŠæŠ¾Ń€Ń‚/эŠŗсŠæŠ¾Ń€Ń‚</string>
+ <string name="appearance">Š’Š½ŠµŃˆŠ½ŠøŠ¹ Š²ŠøŠ“</string>
+ <string name="external_elements">Š’Š½ŠµŃˆŠ½ŠøŠµ Š¾Ń€Š³Š°Š½Ń‹ уŠæрŠ°Š²Š»ŠµŠ½Šøя</string>
+ <string name="interruptions">ŠŸŃ€ŠµŃ€Ń‹Š²Š°Š½Šøя</string>
+ <string name="buttons">ŠšŠ½Š¾ŠæŠŗŠø уŠæрŠ°Š²Š»ŠµŠ½Šøя Š²Š¾ŃŠæрŠ¾ŠøŠ·Š²ŠµŠ“ŠµŠ½ŠøŠµŠ¼</string>
+ <string name="media_player">ŠŸŃ€Š¾ŠøŠ³Ń€Ń‹Š²Š°Ń‚ŠµŠ»ŃŒ</string>
<string name="pref_episode_cleanup_title">Š£Š“Š°Š»ŠµŠ½ŠøŠµ Š²Ń‹ŠæусŠŗŠ¾Š²</string>
<string name="pref_episode_cleanup_summary">Š’Ń‹ŠæусŠŗŠø, ŠŗŠ¾Ń‚Š¾Ń€Ń‹Šµ Š½Šµ стŠ¾ŃŃ‚ Š² Š¾Ń‡ŠµŃ€ŠµŠ“Šø Šø Š½Šµ Š¾Ń‚Š¼ŠµŃ‡ŠµŠ½Ń‹ ŠŗŠ°Šŗ ŠøŠ·Š±Ń€Š°Š½Š½Ń‹Šµ Š¼Š¾Š³ŃƒŃ‚ Š±Ń‹Ń‚ŃŒ уŠ“Š°Š»ŠµŠ½Ń‹ Š“Š»Ń Š¾ŃŠ²Š¾Š±Š¾Š¶Š“ŠµŠ½Šøя Š¼ŠµŃŃ‚Š° ŠæŠ¾Š“ ŠŠ²Ń‚Š¾Š·Š°Š³Ń€ŃƒŠ·Šŗу.</string>
<string name="pref_pauseOnDisconnect_sum">ŠŸŃ€ŠøŠ¾ŃŃ‚Š°Š½Š¾Š²Šøть Š²Š¾ŃŠæрŠ¾ŠøŠ·Š²ŠµŠ“ŠµŠ½ŠøŠµ, ŠŗŠ¾Š³Š“Š° Š½Š°ŃƒŃˆŠ½ŠøŠŗŠø ŠøŠ»Šø bluetooth Š¾Ń‚ŠŗŠ»ŃŽŃ‡ŠµŠ½Ń‹</string>
<string name="pref_unpauseOnHeadsetReconnect_sum">ŠŸŃ€Š¾Š“Š¾Š»Š¶Š°Ń‚ŃŒ Š²Š¾ŃŠæрŠ¾ŠøŠ·Š²ŠµŠ“ŠµŠ½ŠøŠµ ŠæŠ¾ŃŠ»Šµ ŠæŠ¾Š“ŠŗŠ»ŃŽŃ‡ŠµŠ½Šøя Š½Š°ŃƒŃˆŠ½ŠøŠŗŠ¾Š²</string>
<string name="pref_unpauseOnBluetoothReconnect_sum">ŠŸŃ€Š¾Š“Š¾Š»Š¶Š°Ń‚ŃŒ Š²Š¾ŃŠæрŠ¾ŠøŠ·Š²ŠµŠ“ŠµŠ½ŠøŠµ ŠæŠ¾ŃŠ»Šµ Š²Š¾ŃŃŃ‚Š°Š½Š¾Š²Š»ŠµŠ½Šøя bluetooth-сŠ¾ŠµŠ“ŠøŠ½ŠµŠ½Šøя</string>
<string name="pref_hardwareForwardButtonSkips_title">ŠŸŃ€Š¾ŠæусŠŗŠ°Ń‚ŃŒ ŠŗŠ½Š¾ŠæŠŗŠ¾Š¹ ŠæŠµŃ€ŠµŠ¼Š¾Ń‚ŠŗŠø Š²ŠæŠµŃ€Ń‘Š“</string>
- <string name="pref_hardwareForwardButtonSkips_sum">ŠŸŃ€Šø Š½Š°Š¶Š°Ń‚ŠøŠø Š½Š° фŠøŠ·ŠøчŠµŃŠŗую ŠŗŠ½Š¾ŠæŠŗу ŠæŠµŃ€ŠµŠ¼Š¾Ń‚ŠŗŠø Š²ŠæŠµŃ€Ń‘Š“ ŠæŠµŃ€ŠµŃ…Š¾Š“Šøть Šŗ сŠ»ŠµŠ“ующŠµŠ¼Ńƒ Š²Ń‹ŠæусŠŗу Š²Š¼ŠµŃŃ‚Š¾ ŠæŠµŃ€ŠµŠ¼Š¾Ń‚ŠŗŠø</string>
<string name="pref_hardwarePreviousButtonRestarts_title">Š’ Š½Š°Ń‡Š°Š»Š¾ ŠŗŠ½Š¾ŠæŠŗŠ¾Š¹ ŠæŠµŃ€ŠµŠ¼Š¾Ń‚ŠŗŠø Š½Š°Š·Š°Š“</string>
<string name="pref_hardwarePreviousButtonRestarts_sum">ŠŸŃ€Šø Š½Š°Š¶Š°Ń‚ŠøŠø Š½Š° фŠøŠ·ŠøчŠµŃŠŗую ŠŗŠ½Š¾ŠæŠŗу ŠæŠµŃ€ŠµŠ¼Š¾Ń‚ŠŗŠø Š½Š°Š·Š°Š“ ŠæŠµŃ€ŠµŃ…Š¾Š“Šøть Šŗ Š½Š°Ń‡Š°Š»Ńƒ Š²Ń‹ŠæусŠŗŠ° Š²Š¼ŠµŃŃ‚Š¾ ŠæŠµŃ€ŠµŠ¼Š¾Ń‚ŠŗŠø Š½Š°Š·Š°Š“</string>
<string name="pref_followQueue_sum">ŠŸŠ¾ŃŠ»Šµ Š·Š°Š²ŠµŃ€ŃˆŠµŠ½Šøя Š²Š¾ŃŠæрŠ¾ŠøŠ·Š²ŠµŠ“ŠµŠ½Šøя ŠæŠµŃ€ŠµŠ¹Ń‚Šø Šŗ сŠ»ŠµŠ“ующŠµŠ¼Ńƒ Š² Š¾Ń‡ŠµŃ€ŠµŠ“Šø</string>
@@ -342,7 +368,7 @@
<string name="pref_nav_drawer_feed_order_title">Š£ŠæŠ¾Ń€ŃŠ“Š¾Ń‡Šøть ŠæŠ¾Š“ŠæŠøсŠŗŠø</string>
<string name="pref_nav_drawer_feed_order_sum">Š’Ń‹Š±Ń€Š°Ń‚ŃŒ ŠæŠ¾Ń€ŃŠ“Š¾Šŗ Š¾Ń‚Š¾Š±Ń€Š°Š¶ŠµŠ½Šøя ŠæŠ¾Š“ŠæŠøсŠ¾Šŗ</string>
<string name="pref_nav_drawer_feed_counter_title">Š’Ń‹Š±Ń€Š°Ń‚ŃŒ счётчŠøŠŗ ŠæŠ¾Š“ŠæŠøсŠ¾Šŗ</string>
- <string name="pref_nav_drawer_feed_counter_sum">Š’Ń‹Š±Ń€Š°Ń‚ŃŒ ŠŗŠ°Šŗую ŠøŠ½Ń„Š¾Ń€Š¼Š°Ń†Šøю ŠæŠ¾ŠŗŠ°Š·Ń‹Š²Š°Ń‚ŃŒ Š² счётчŠøŠŗŠµ ŠæŠ¾Š“ŠæŠøсŠ¾Šŗ</string>
+ <string name="pref_nav_drawer_feed_counter_sum">Š’Ń‹Š±Ń€Š°Ń‚ŃŒ ŠŗŠ°Šŗую ŠøŠ½Ń„Š¾Ń€Š¼Š°Ń†Šøю ŠæŠ¾ŠŗŠ°Š·Ń‹Š²Š°Ń‚ŃŒ Š² счётчŠøŠŗŠµ ŠæŠ¾Š“ŠæŠøсŠ¾Šŗ. Š’Š»ŠøяŠµŃ‚ тŠ°ŠŗŠ¶Šµ Š½Š° Š¾Ń‡ŠµŃ€Ń‘Š“Š½Š¾ŃŃ‚ŃŒ ŠæŠ¾Š“ŠæŠøсŠ¾Šŗ, ŠµŃŠ»Šø сŠ¾Ń€Ń‚ŠøрŠ¾Š²ŠŗŠ° ŠæŠ¾Š“ŠæŠøсŠ¾Šŗ ŠæрŠ¾ŠøŠ·Š²Š¾Š“Šøтся ŠæŠ¾ счётчŠøŠŗу.</string>
<string name="pref_set_theme_sum">Š˜Š·Š¼ŠµŠ½Šøть тŠµŠ¼Ńƒ Š¾Ń„Š¾Ń€Š¼Š»ŠµŠ½Šøя AntennaPod</string>
<string name="pref_automatic_download_title">ŠŠ²Ń‚Š¾Š¼Š°Ń‚ŠøчŠµŃŠŗŠ°Ń Š·Š°Š³Ń€ŃƒŠ·ŠŗŠ°</string>
<string name="pref_automatic_download_sum">ŠŠ°ŃŃ‚Ń€Š¾Šøть Š°Š²Ń‚Š¾Š¼Š°Ń‚ŠøчŠµŃŠŗую Š·Š°Š³Ń€ŃƒŠ·Šŗу Š²Ń‹ŠæусŠŗŠ¾Š².</string>
@@ -356,6 +382,7 @@
<string name="pref_episode_cache_title">ŠšŃŃˆ Š²Ń‹ŠæусŠŗŠ¾Š²</string>
<string name="pref_theme_title_light">Š”Š²ŠµŃ‚Š»Š°Ń</string>
<string name="pref_theme_title_dark">Š¢Ń‘Š¼Š½Š°Ń</string>
+ <string name="pref_theme_title_trueblack">Š§Ń‘Ń€Š½Š°Ń (Š“Š»Ń AMOLED)</string>
<string name="pref_episode_cache_unlimited">ŠŠµŠ¾Š³Ń€Š°Š½ŠøчŠµŠ½</string>
<string name="pref_update_interval_hours_plural">ч.</string>
<string name="pref_update_interval_hours_singular">ч.</string>
@@ -384,8 +411,6 @@
<string name="pref_rewind_sum">ŠŠ°ŃŃ‚Ń€Š¾Š¹Ń‚Šµ Š“Š»ŠøŠ½Ńƒ шŠ°Š³Š° Š² сŠµŠŗуŠ½Š“Š°Ń… ŠæрŠø Š½Š°Š¶Š°Ń‚ŠøŠø ŠŗŠ½Š¾ŠæŠŗŠø ŠæŠµŃ€ŠµŠ¼Š¾Ń‚ŠŗŠø Š½Š°Š·Š°Š“</string>
<string name="pref_gpodnet_sethostname_title">Š—Š°Š“Š°Ń‚ŃŒ ŠøŠ¼Ń уŠ·Š»Š°</string>
<string name="pref_gpodnet_sethostname_use_default_host">Š˜ŃŠæŠ¾Š»ŃŒŠ·Š¾Š²Š°Ń‚ŃŒ уŠ·ŠµŠ» ŠæŠ¾ уŠ¼Š¾Š»Ń‡Š°Š½Šøю</string>
- <string name="pref_expandNotify_title">Š Š°Š·Š²Ń‘Ń€Š½ŃƒŃ‚Š¾Šµ уŠ²ŠµŠ“Š¾Š¼Š»ŠµŠ½ŠøŠµ</string>
- <string name="pref_expandNotify_sum">Š’сŠµŠ³Š“Š° рŠ°Š·Š²Š¾Ń€Š°Ń‡ŠøŠ²Š°Ń‚ŃŒ уŠ²ŠµŠ“Š¾Š¼Š»ŠµŠ½ŠøŠµ, ŠæŠ¾ŠŗŠ°Š·Ń‹Š²Š°Ń ŠŗŠ½Š¾ŠæŠŗŠø уŠæрŠ°Š²Š»ŠµŠ½Šøя Š²Š¾ŃŠæрŠ¾ŠøŠ·Š²ŠµŠ“ŠµŠ½ŠøŠµŠ¼.</string>
<string name="pref_persistNotify_title">ŠŸŠ¾ŃŃ‚Š¾ŃŠ½Š½Ń‹Šµ ŠŗŠ½Š¾ŠæŠŗŠø Š²Š¾ŃŠæрŠ¾ŠøŠ·Š²ŠµŠ“ŠµŠ½Šøя</string>
<string name="pref_persistNotify_sum">Š”Š¾Ń…Ń€Š°Š½ŃŃ‚ŃŒ уŠ²ŠµŠ“Š¾Š¼Š»ŠµŠ½ŠøŠµ Šø ŠŗŠ½Š¾ŠæŠŗŠø Š²Š¾ŃŠæрŠ¾ŠøŠ·Š²ŠµŠ“ŠµŠ½Šøя Š½Š° эŠŗрŠ°Š½Šµ Š±Š»Š¾ŠŗŠøрŠ¾Š²ŠŗŠø Š²Š¾ Š²Ń€ŠµŠ¼Ń ŠæŠ°ŃƒŠ·Ń‹.</string>
<string name="pref_compact_notification_buttons_title">Š’Ń‹Š±Ń€Š°Ń‚ŃŒ ŠŗŠ½Š¾ŠæŠŗŠø эŠŗрŠ°Š½Š° Š±Š»Š¾ŠŗŠøрŠ¾Š²ŠŗŠø</string>
@@ -406,8 +431,7 @@
<string name="crash_report_sum">ŠžŃ‚Š¾ŃŠ»Š°Ń‚ŃŒ ŠæŠ¾ŃŠ»ŠµŠ“Š½ŠøŠ¹ Š¾Ń‚чёт Š¾ сŠ±Š¾Šµ ŠæŠ¾ e-mail</string>
<string name="send_email">ŠžŃ‚ŠæрŠ°Š²Šøть Email</string>
<string name="experimental_pref">Š­ŠŗсŠæŠµŃ€ŠøŠ¼ŠµŠ½Ń‚Š°Š»ŃŒŠ½Ń‹Šµ Š½Š°ŃŃ‚Ń€Š¾Š¹ŠŗŠø</string>
- <string name="pref_sonic_title">ŠŸŃ€Š¾ŠøŠ³Ń€Ń‹Š²Š°Ń‚ŃŒ чŠµŃ€ŠµŠ· Sonic</string>
- <string name="pref_sonic_message">Š—Š°Š“ŠµŠ¹ŃŃ‚Š²Š¾Š²Š°Ń‚ŃŒ Š²ŃŃ‚Ń€Š¾ŠµŠ½Š½Ń‹Š¹ Š¼ŠµŠ“ŠøŠ° ŠæрŠ¾ŠøŠ³Ń€Ń‹Š²Š°Ń‚ŠµŠ»ŃŒ Sonic Š²Š¼ŠµŃŃ‚Š¾ стŠ°Š½Š“Š°Ń€Ń‚Š½Š¾Š³Š¾ ŠøŠ· ŠžŠ” Android Šø Prestissimo</string>
+ <string name="pref_media_player_message">Š’Ń‹Š±ŠµŃ€ŠøтŠµ ŠŗŠ°ŠŗŠøŠ¼ ŠæрŠ¾ŠøŠ³Ń€Ń‹Š²Š°Ń‚ŠµŠ»ŠµŠ¼ сŠ»ŠµŠ“уŠµŃ‚ Š²Š¾ŃŠæрŠ¾ŠøŠ·Š²Š¾Š“Šøть фŠ°Š¹Š»Ń‹</string>
<string name="pref_current_value">Š¢ŠµŠŗущŠµŠµ Š·Š½Š°Ń‡ŠµŠ½ŠøŠµ: %1$s</string>
<string name="pref_proxy_title">ŠŸŃ€Š¾ŠŗсŠø</string>
<string name="pref_proxy_sum">ŠŠ°ŃŃ‚Ń€Š¾Š¹ŠŗŠø ŠæрŠ¾ŠŗсŠø</string>
@@ -419,6 +443,11 @@
<string name="pref_cast_message_free_flavor">Š”Š»Ń рŠ°Š±Š¾Ń‚Ń‹ Chromecast трŠµŠ±ŃƒŃŽŃ‚ся сŠ¾Š±ŃŃ‚Š²ŠµŠ½Š½ŠøчŠµŃŠŗŠøŠµ Š±ŠøŠ±Š»ŠøŠ¾Ń‚ŠµŠŗŠø трŠµŃ‚ŃŒŠµŠ¹ стŠ¾Ń€Š¾Š½Ń‹, ŠŗŠ¾Ń‚Š¾Ń€Ń‹Šµ Š½Šµ Š²ŠŗŠ»ŃŽŃ‡ŠµŠ½Ń‹ Š² Š“Š°Š½Š½ŃƒŃŽ Š²ŠµŃ€ŃŠøю AntennaPod</string>
<string name="pref_enqueue_downloaded_title">Š”Š¾Š±Š°Š²Š»ŃŃ‚ŃŒ Š·Š°Š³Ń€ŃƒŠ¶ŠµŠ½Š½Ń‹Šµ Š² Š¾Ń‡ŠµŃ€ŠµŠ“ь</string>
<string name="pref_enqueue_downloaded_summary">Š”Š¾Š±Š°Š²Š»ŃŃ‚ŃŒ Š·Š°Š³Ń€ŃƒŠ¶ŠµŠ½Š½Ń‹Šµ Š²Ń‹ŠæусŠŗŠø Š² Š¾Ń‡ŠµŃ€ŠµŠ“ь</string>
+ <string name="media_player_builtin">Š’стрŠ¾ŠµŠ½Š½Ń‹Š¹ Š² Android ŠæрŠ¾ŠøŠ³Ń€Ń‹Š²Š°Ń‚ŠµŠ»ŃŒ</string>
+ <string name="pref_videoBehavior_title">ŠŸŃ€Šø Š·Š°Š²ŠµŃ€ŃˆŠµŠ½ŠøŠø Š²ŠøŠ“ŠµŠ¾</string>
+ <string name="pref_videoBehavior_sum">ŠŸŃ€Šø сŠ²Š¾Ń€Š°Ń‡ŠøŠ²Š°Š½ŠøŠø ŠæрŠ¾ŠøŠ³Ń€Ń‹Š²Š°Ń‚ŠµŠ»Ń Š²ŠøŠ“ŠµŠ¾</string>
+ <string name="stop_playback">Š¾ŃŃ‚Š°Š½Š¾Š²Šøть Š²Š¾ŃŠæрŠ¾ŠøŠ·Š²ŠµŠ“ŠµŠ½ŠøŠµ</string>
+ <string name="continue_playback">ŠŸŃ€Š¾Š“Š¾Š»Š¶Šøть Š²Š¾ŃŠæрŠ¾ŠøŠ·Š²ŠµŠ“ŠµŠ½ŠøŠµ Š·Š²ŃƒŠŗŠ°</string>
<!--Auto-Flattr dialog-->
<string name="auto_flattr_enable">Š’ŠŗŠ»ŃŽŃ‡Šøть Š°Š²Ń‚Š¾Š¼Š°Ń‚ŠøчŠµŃŠŗую ŠæŠ¾Š“Š“ŠµŃ€Š¶Šŗу чŠµŃ€ŠµŠ· Flattr</string>
<string name="auto_flattr_after_percent">ŠŸŠ¾Š“Š“ŠµŃ€Š¶ŠøŠ²Š°Ń‚ŃŒ чŠµŃ€ŠµŠ· Flattr эŠæŠøŠ·Š¾Š“ы, ŠæрŠ¾ŃŠ»ŃƒŃˆŠ°Š½Š½Ń‹Šµ Š½Š° %d ŠæрŠ¾Ń†ŠµŠ½Ń‚Š¾Š²</string>
@@ -428,8 +457,8 @@
<string name="search_hint">ŠŠ°Š¹Ń‚Šø Š²Ń‹ŠæусŠŗŠø</string>
<string name="found_in_shownotes_label">ŠŠ°Š¹Š“ŠµŠ½Š¾ Š² ŠæрŠøŠ¼ŠµŃ‡Š°Š½Šøях Šŗ Š²Ń‹ŠæусŠŗу</string>
<string name="found_in_chapters_label">ŠŠ°Š¹Š“ŠµŠ½Š¾ Š² Š³Š»Š°Š²Š°Ń…</string>
- <string name="found_in_authors_label">ŠŠ°Š¹Š“ŠµŠ½Š¾ Š² Š°Š²Ń‚Š¾Ń€Š°Ń…</string>
- <string name="found_in_feeds_label">ŠŠ°Š¹Š“ŠµŠ½Š¾ Š² ŠŗŠ°Š½Š°Š»Š°Ń…</string>
+ <string name="found_in_authors_label">ŠŠ°Š¹Š“ŠµŠ½Š¾ срŠµŠ“Šø Š°Š²Ń‚Š¾Ń€Š¾Š²</string>
+ <string name="found_in_feeds_label">ŠŠ°Š¹Š“ŠµŠ½Š¾ Š² ŠæŠ¾Š“ŠŗŠ°ŃŃ‚Š°Ń…</string>
<string name="search_status_no_results">ŠŠøчŠµŠ³Š¾ Š½Šµ Š½Š°Š¹Š“ŠµŠ½Š¾</string>
<string name="search_label">ŠŸŠ¾ŠøсŠŗ</string>
<string name="found_in_title_label">ŠŠ°Š¹Š“ŠµŠ½Š¾ Š² Š·Š°Š³Š¾Š»Š¾Š²ŠŗŠµ</string>
@@ -455,8 +484,10 @@
<string name="html_export_label">Š­ŠŗсŠæŠ¾Ń€Ń‚ Š² HTML</string>
<string name="exporting_label">Š­ŠŗсŠæŠ¾Ń€Ń‚ŠøруŠµŃ‚ся...</string>
<string name="export_error_label">ŠžŃˆŠøŠ±ŠŗŠ° эŠŗсŠæŠ¾Ń€Ń‚Š°</string>
- <string name="opml_export_success_title">OPML усŠæŠµŃˆŠ½Š¾ эŠŗсŠæŠ¾Ń€Ń‚ŠøрŠ¾Š²Š°Š½.</string>
- <string name="opml_export_success_sum">Š¤Š°Š¹Š» OPML Š±Ń‹Š» Š·Š°ŠæŠøсŠ°Š½ Š²:\u0020</string>
+ <string name="export_success_title">Š­ŠŗсŠæŠ¾Ń€Ń‚ Š·Š°Š²ŠµŃ€ŃˆŃ‘Š½ усŠæŠµŃˆŠ½Š¾</string>
+ <string name="export_success_sum">Š­ŠŗсŠæŠ¾Ń€Ń‚ Š¾ŃŃƒŃ‰ŠµŃŃ‚Š²Š»Ń‘Š½ Š² фŠ°Š¹Š»:
+
+%1$s</string>
<string name="opml_import_ask_read_permission">Š”Š»Ń чтŠµŠ½Šøя фŠ°Š¹Š»Š° OPML Š½ŠµŠ¾Š±Ń…Š¾Š“ŠøŠ¼ Š“Š¾ŃŃ‚ŃƒŠæ Šŗ Š²Š½ŠµŃˆŠ½ŠµŠ¼Ńƒ хрŠ°Š½ŠøŠ»Šøщу</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">Š£ŃŃ‚Š°Š½Š¾Š²Šøть тŠ°Š¹Š¼ŠµŃ€ сŠ½Š°</string>
@@ -635,7 +666,7 @@
<string name="label_import">Š˜Š¼ŠæŠ¾Ń€Ń‚</string>
<string name="label_export">Š­ŠŗсŠæŠ¾Ń€Ń‚</string>
<string name="import_select_file">Š’Ń‹Š±ŠµŃ€ŠøтŠµ ŠøŠ¼ŠæŠ¾Ń€Ń‚ŠøруŠµŠ¼Ń‹Š¹ фŠ°Š¹Š»</string>
- <string name="export_ok">Š£ŃŠæŠµŃˆŠ½Š¾ эŠŗсŠæŠ¾Ń€Ń‚ŠøрŠ¾Š²Š°Š½Š¾. Š‘Š°Š·Š° Š“Š°Š½Š½Ń‹Ń… Š±Ń‹Š»Š° Š·Š°ŠæŠøсŠ°Š½Š° Š½Š° ŠŗŠ°Ń€Ń‚Ńƒ ŠæŠ°Š¼ŃŃ‚Šø.</string>
+ <string name="export_ok">Š£ŃŠæŠµŃˆŠ½Š¾ эŠŗсŠæŠ¾Ń€Ń‚ŠøрŠ¾Š²Š°Š½Š¾.</string>
<string name="import_ok">Š£ŃŠæŠµŃˆŠ½Š¾ ŠøŠ¼ŠæŠ¾Ń€Ń‚ŠøрŠ¾Š²Š°Š½Š¾.\n\nŠŸŠ¾Š¶Š°Š»ŃƒŠ¹ŃŃ‚Š°, Š½Š°Š¶Š¼ŠøтŠµ OK, чтŠ¾Š±Ń‹ ŠæŠµŃ€ŠµŠ·Š°ŠæустŠøть AntennaPod</string>
<!--Casting-->
<string name="cast_media_route_menu_title">Š’Š¾ŃŠæрŠ¾ŠøŠ·Š²ŠµŃŃ‚Šø Š½Š°ā€¦</string>
@@ -653,4 +684,13 @@
<string name="cast_failed_seek">ŠŠµ уŠ“Š°Š»Š¾ŃŃŒ Š²Ń‹ŠæŠ¾Š»Š½Šøть ŠæŠµŃ€ŠµŠ¼Š¾Ń‚Šŗу Š½Š° устрŠ¾Š¹ŃŃ‚Š²Šµ Google cast</string>
<string name="cast_failed_receiver_player_error">Š”ŠµŃ€ŃŒŃ‘Š·Š½Š°Ń Š¾ŃˆŠøŠ±ŠŗŠ° Š²Š¾ŃŠæрŠ¾ŠøŠ·Š²ŠµŠ“ŠµŠ½Šøя Š² устрŠ¾Š¹ŃŃ‚Š²Šµ Google cast</string>
<string name="cast_failed_media_error_skipping">ŠžŃˆŠøŠ±ŠŗŠ° Š²Š¾ŃŠæрŠ¾ŠøŠ·Š²ŠµŠ“ŠµŠ½Šøя. ŠŸŃ€Š¾ŠæусŠŗŠ°ŃŽā€¦</string>
+ <!--Notification channels-->
+ <string name="notification_channel_user_action">Š¢Ń€ŠµŠ±ŃƒŠµŃ‚ся Š“ŠµŠ¹ŃŃ‚Š²ŠøŠµ</string>
+ <string name="notification_channel_user_action_description">ŠŸŠ¾ŠŗŠ°Š·Ń‹Š²Š°ŠµŃ‚ся, ŠŗŠ¾Š³Š“Š° трŠµŠ±ŃƒŠµŃ‚ся Š“ŠµŠ¹ŃŃ‚Š²ŠøŠµ, Š½Š°ŠæрŠøŠ¼ŠµŃ€, Š“Š»Ń Š²Š²Š¾Š“Š° ŠæŠ°Ń€Š¾Š»Ń.</string>
+ <string name="notification_channel_downloading">Š˜Š“ёт Š·Š°Š³Ń€ŃƒŠ·ŠŗŠ°</string>
+ <string name="notification_channel_downloading_description">ŠŸŠ¾ŠŗŠ°Š·Ń‹Š²Š°ŠµŃ‚ся Š²Š¾ Š²Ń€ŠµŠ¼Ń Š·Š°Š³Ń€ŃƒŠ·ŠŗŠø.</string>
+ <string name="notification_channel_playing">Š˜Š“ёт Š²Š¾ŃŠæрŠ¾ŠøŠ·Š²ŠµŠ“ŠµŠ½ŠøŠµ</string>
+ <string name="notification_channel_playing_description">ŠŸŠ¾Š·Š²Š¾Š»ŃŠµŃ‚ уŠæрŠ°Š²Š»ŃŃ‚ŃŒ Š²Š¾ŃŠæрŠ¾ŠøŠ·Š²ŠµŠ“ŠµŠ½ŠøŠµŠ¼. ŠžŃŠ½Š¾Š²Š½Š¾Šµ уŠ²ŠµŠ“Š¾Š¼Š»ŠµŠ½ŠøŠµ, ŠæŠ¾ŠŗŠ°Š·Ń‹Š²Š°ŠµŃ‚ся ŠæрŠø Š²Š¾ŃŠæрŠ¾ŠøŠ·Š²ŠµŠ“ŠµŠ½ŠøŠø ŠæŠ¾Š“ŠŗŠ°ŃŃ‚Š°.</string>
+ <string name="notification_channel_error">ŠžŃˆŠøŠ±ŠŗŠø</string>
+ <string name="notification_channel_error_description">ŠŸŠ¾ŠŗŠ°Š·Ń‹Š²Š°ŠµŃ‚ся ŠµŃŠ»Šø чтŠ¾-тŠ¾ ŠæŠ¾ŃˆŠ»Š¾ Š½Šµ тŠ°Šŗ, Šŗ ŠæрŠøŠ¼ŠµŃ€Ńƒ, Š½ŠµŃƒŠ“Š°Š²ŃˆŠ°ŃŃŃ Š·Š°Š³Ń€ŃƒŠ·ŠŗŠ° ŠøŠ»Šø сŠøŠ½Ń…Ń€Š¾Š½ŠøŠ·Š°Ń†Šøя с gpodder.</string>
</resources>
diff --git a/core/src/main/res/values-sv-rSE/strings.xml b/core/src/main/res/values-sv-rSE/strings.xml
index cb7474ed4..d56307e07 100644
--- a/core/src/main/res/values-sv-rSE/strings.xml
+++ b/core/src/main/res/values-sv-rSE/strings.xml
@@ -1,11 +1,13 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources xmlns:tools="http://schemas.android.com/tools">
<!--Activitiy and fragment titles-->
+ <string name="feed_update_receiver_name">Uppdatera Prenumerationer</string>
<string name="feeds_label">Flƶden</string>
<string name="statistics_label">Statistik</string>
<string name="add_feed_label">LƤgg till Podcast</string>
<string name="episodes_label">Episoder</string>
<string name="all_episodes_short_label">Alla</string>
+ <string name="new_episodes_label">Nytt</string>
<string name="favorite_episodes_label">Favoriter</string>
<string name="new_label">Nya</string>
<string name="settings_label">InstƤllningar</string>
@@ -18,10 +20,12 @@
<string name="cancel_download_label">Avbryt\nNedladdning</string>
<string name="playback_history_label">Uppspelningshistorik</string>
<string name="gpodnet_main_label">gpodder.net</string>
+ <string name="gpodnet_summary">Synkronisera med andra enheter</string>
<string name="gpodnet_auth_label">Inloggning till gpodder.net</string>
<string name="free_space_label">%1$s kvar</string>
<string name="episode_cache_full_title">Episodcachen Ƥr full</string>
<string name="episode_cache_full_message">Episodcachens grƤns har nƄtts. Du kan ƶka cachens storlek i instƤllningarna.</string>
+ <string name="synchronizing">Synkroniserar...</string>
<!--Statistics fragment-->
<string name="total_time_listened_to_podcasts">Total uppspelningstid:</string>
<string name="statistics_details_dialog">%1$d av %2$d episoder startade.\n\nSpelat %3$s av %4$s.</string>
@@ -56,13 +60,14 @@
<string name="yes">Ja</string>
<string name="no">Nej</string>
<string name="reset">ƅterstƤll</string>
- <string name="author_label">Skapare</string>
+ <string name="author_label">Fƶrfattare</string>
<string name="language_label">SprƄk</string>
<string name="url_label">URL</string>
<string name="podcast_settings_label">InstƤllningar</string>
<string name="cover_label">Bild</string>
<string name="error_label">Fel</string>
<string name="error_msg_prefix">Ett fel intrƤffade:</string>
+ <string name="needs_storage_permission">LagringtillstƄnd behƶvs fƶr denna ƄtgƤrd</string>
<string name="refresh_label">Uppdatera</string>
<string name="external_storage_error_msg">Ingen extern lagring Ƥr tillgƤnglig. Se till att montera en extern lagringsenhet sƄ att appen kan fungera korrekt.</string>
<string name="chapters_label">Kapitel</string>
@@ -105,25 +110,28 @@
<string name="mark_all_read_label">Markera alla som spelade</string>
<string name="mark_all_read_msg">Markera alla Episoder som spelade</string>
<string name="mark_all_read_confirmation_msg">BekrƤfta att du verkligen vill markera alla episoder som spelade.</string>
- <string name="mark_all_read_feed_confirmation_msg">BekrƤfta att du verkligen vill markera alla episoder i detta flƶde som spelade.</string>
+ <string name="mark_all_read_feed_confirmation_msg">BekrƤfta att du vill markera alla episider i denna podcast som spelade.</string>
<string name="mark_all_seen_label">Markera alla som sedda</string>
- <string name="mark_all_seen_msg">Markera alla Episoder som sedda</string>
+ <string name="mark_all_seen_msg">Markerade alla episoder som sedda</string>
<string name="mark_all_seen_confirmation_msg">BekrƤfta att du vill markera alla episoder som sedda.</string>
<string name="show_info_label">Visa information</string>
- <string name="rename_feed_label">Byt namn pƄ Podcast</string>
- <string name="remove_feed_label">Ta bort Podcast</string>
+ <string name="show_feed_settings_label">Visa podcastinstƤllningar</string>
+ <string name="feed_info_label">Podcastinfo</string>
+ <string name="feed_settings_label">PodcastinstƤllningar</string>
+ <string name="rename_feed_label">Byt namn pƄ podcast</string>
+ <string name="remove_feed_label">Ta bort podcast</string>
<string name="share_label">Delaā€¦</string>
- <string name="share_link_label">Dela LƤnk</string>
+ <string name="share_link_label">Dela Episod-URL</string>
+ <string name="share_link_with_position_label">Dela Episod-URL med Position</string>
<string name="share_file_label">Dela Fil</string>
- <string name="share_link_with_position_label">Dela LƤnk med Position</string>
<string name="share_feed_url_label">Dela Flƶdets URL</string>
- <string name="share_item_url_label">Dela Episoden Fil-URL</string>
- <string name="share_item_url_with_position_label">Dela Episodens Fil-URL med Position</string>
- <string name="feed_delete_confirmation_msg">BekrƤfta att du vill ta bort flƶdet \"%1$s\" och ALLA episoder du laddat ned frƄn detta flƶde.</string>
- <string name="feed_remover_msg">Tar bort Flƶde</string>
- <string name="load_complete_feed">Uppdatera hela Flƶdet</string>
+ <string name="share_item_url_label">Dela Mediafilens URL</string>
+ <string name="share_item_url_with_position_label">Dela Mediafilens URL med Position</string>
+ <string name="feed_delete_confirmation_msg">BekrƤfta att du vill ta bort podcast \"%1$s\" och ALLA dess episoder (inklusive nedladdade episoder).</string>
+ <string name="feed_remover_msg">Tar bort podcast</string>
+ <string name="load_complete_feed">Uppdatera hela podcasten</string>
<string name="hide_episodes_title">Dƶlj Episoder</string>
- <string name="episode_actions">Applicera ƄtgƤrder</string>
+ <string name="batch_edit">Batchredigering</string>
<string name="hide_unplayed_episodes_label">Ospelade</string>
<string name="hide_paused_episodes_label">Pausade</string>
<string name="hide_played_episodes_label">Spelad</string>
@@ -132,6 +140,7 @@
<string name="hide_downloaded_episodes_label">Nedladdade</string>
<string name="hide_not_downloaded_episodes_label">Ej nedladdade</string>
<string name="hide_has_media_label">Har media</string>
+ <string name="hide_is_favorite_label">Ƅr favorit</string>
<string name="filtered_label">Filtrerad</string>
<string name="refresh_failed_msg">{fa-exclamation-circle} Senaste uppdateringen misslyckades</string>
<string name="open_podcast">Ɩppna Podcast</string>
@@ -145,6 +154,7 @@
<string name="delete_label">Ta bort</string>
<string name="delete_failed">Kunde inte ta bort filen. Testa att starta om enheten.</string>
<string name="remove_episode_lable">Ta bort Episod</string>
+ <string name="mark_as_seen_label">Markera som sedd</string>
<string name="marked_as_seen_label">Markera som sedd</string>
<string name="mark_read_label">Markera som spelad</string>
<string name="marked_as_read_label">Markera som spelad</string>
@@ -168,6 +178,8 @@
<string name="download_failed">misslyckades</string>
<string name="download_pending">Avvaktar nedladdning</string>
<string name="download_running">Nedladdning pƄgƄr</string>
+ <string name="download_error_details">Detaljer</string>
+ <string name="download_error_details_message">%1$s \n\nFil-URL:\n%2$s</string>
<string name="download_error_device_not_found">Hittade ingen lagringsenhet</string>
<string name="download_error_insufficient_space">OtillrƤckligt Utrymme</string>
<string name="download_error_file_error">Filfel</string>
@@ -218,6 +230,7 @@
<string name="playback_error_unknown">OkƤnt fel</string>
<string name="no_media_playing_label">Inget media spelar</string>
<string name="player_buffering_msg">Buffrar</string>
+ <string name="player_go_to_picture_in_picture">Bild-i-bild lƤge</string>
<string name="playbackservice_notification_title">Spelar podcast</string>
<string name="unknown_media_key">AntannaPod - OkƤnd mediaknapp: %1$d</string>
<!--Queue operations-->
@@ -234,7 +247,9 @@
<string name="date">Datum</string>
<string name="duration">LƤngd</string>
<string name="episode_title">Episodtitel</string>
- <string name="feed_title">Flƶdestitel</string>
+ <string name="feed_title">Podcasttitel</string>
+ <string name="random">Slumpa</string>
+ <string name="smart_shuffle">Smart Blandning</string>
<string name="ascending">Stigande</string>
<string name="descending">Fallande</string>
<string name="clear_queue_confirmation_msg">BekrƤfta att du vill rensa kƶn frƄn ALLA episoder.</string>
@@ -272,7 +287,7 @@
<string name="enable_sonic">Aktivera Sonic</string>
<!--Empty list labels-->
<string name="no_items_label">Det finns inget i denna lista.</string>
- <string name="no_feeds_label">Du har inte prenumererat pƄ nƄgot flƶde Ƥnnu.</string>
+ <string name="no_feeds_label">Du har inte prenumererat pƄ nƄgra podcasts Ƥn.</string>
<string name="no_chapters_label">Denna episod har inga kapitel.</string>
<string name="no_shownotes_label">Denna episod har inga shownotes.</string>
<!--Preferences-->
@@ -281,15 +296,23 @@
<string name="other_pref">Annat</string>
<string name="about_pref">Om</string>
<string name="queue_label">Kƶ</string>
- <string name="services_label">TjƤnster</string>
+ <string name="integrations_label">Integrationer</string>
<string name="flattr_label">Flattr</string>
+ <string name="flattr_summary">MikrobetalningstjƤnst</string>
+ <string name="automation">Automatisering</string>
+ <string name="download_pref_details">Detaljer</string>
+ <string name="import_export_pref">Importera/Exportera</string>
+ <string name="appearance">Utseende</string>
+ <string name="external_elements">Externa element</string>
+ <string name="interruptions">Avbrott</string>
+ <string name="buttons">Uppspelningsknappar</string>
+ <string name="media_player">Mediaspelare</string>
<string name="pref_episode_cleanup_title">Episodupprensning</string>
<string name="pref_episode_cleanup_summary">Episoder som inte Ƥr i kƶn och inte Ƥr favoriter kan tas bort om Automatisk Nedladdning behƶver utrymme fƶr nya episoder</string>
<string name="pref_pauseOnDisconnect_sum">Pausa uppspelningen nƤr hƶrlurar eller bluetooth kopplas ifrƄn.</string>
<string name="pref_unpauseOnHeadsetReconnect_sum">FortsƤtt uppspelningen nƤr hƶrlurarna Ƅteransluts</string>
<string name="pref_unpauseOnBluetoothReconnect_sum">FortsƤtt uppspelningen nƤr bluetooth Ƅteransluts</string>
<string name="pref_hardwareForwardButtonSkips_title">Knappen spola fram hoppar</string>
- <string name="pref_hardwareForwardButtonSkips_sum">Hoppa till nƤsta episod istƤllet fƶr att snabbspola vid tryck pƄ hƄrdvaruknappen</string>
<string name="pref_hardwarePreviousButtonRestarts_title">Knappen fƶregƄende startar om</string>
<string name="pref_hardwarePreviousButtonRestarts_sum">Starta om den nuvarande episoden nƤr du trycker pƄ hƄrdvaruknappen fƶr fƶregƄende istƤllet fƶr att spola tillbaka</string>
<string name="pref_followQueue_sum">Hoppa till nƤsta i kƶn nƤr uppspelningen Ƥr klar</string>
@@ -338,7 +361,7 @@
<string name="pref_nav_drawer_feed_order_title">VƤlj Prenumerationsordning</string>
<string name="pref_nav_drawer_feed_order_sum">Ƅndra ordningen pĆ„ dina prenumerationer</string>
<string name="pref_nav_drawer_feed_counter_title">Val Fƶr PrenumerationsrƤknaren</string>
- <string name="pref_nav_drawer_feed_counter_sum">Ƅndra informationen som visas av prenumerationsrƤknaren</string>
+ <string name="pref_nav_drawer_feed_counter_sum">Ƅndra informationen som visas vid prenumerationsrƤknaren. PĆ„verkar Ƥven sorteringen av prenumerationer om \'Prenumerationsordning\' Ƥr satt till \'RƤknare\'.</string>
<string name="pref_set_theme_sum">Ƅndra utseendet pĆ„ AntennaPod.</string>
<string name="pref_automatic_download_title">Automatisk Nedladdning</string>
<string name="pref_automatic_download_sum">Konfigurera automatisk nedladdning av episoder.</string>
@@ -352,6 +375,7 @@
<string name="pref_episode_cache_title">Episodcache</string>
<string name="pref_theme_title_light">Ljust</string>
<string name="pref_theme_title_dark">Mƶrkt</string>
+ <string name="pref_theme_title_trueblack">Svart (AMOLED redo)</string>
<string name="pref_episode_cache_unlimited">ObegrƤnsat</string>
<string name="pref_update_interval_hours_plural">timmar</string>
<string name="pref_update_interval_hours_singular">timme</string>
@@ -380,8 +404,6 @@
<string name="pref_rewind_sum">Anpassa antalet sekunder att hoppa bakƄt nƤr snabbspolningsknappen bakƄt anvƤnds</string>
<string name="pref_gpodnet_sethostname_title">SƤtt vƤrdnamn</string>
<string name="pref_gpodnet_sethostname_use_default_host">AnvƤnd standardvƤrden</string>
- <string name="pref_expandNotify_title">Expandera aviseringen</string>
- <string name="pref_expandNotify_sum">Expandera alltid aviseringen fƶr att visa uppspelningskontrollerna.</string>
<string name="pref_persistNotify_title">BestƄende Uppspelningskontroller</string>
<string name="pref_persistNotify_sum">BehƄll avisering och kontroller pƄ lƄsskƤrmen nƤr uppspelningen pausas.</string>
<string name="pref_compact_notification_buttons_title">SƤtt LƄsskƤrmens Knappar</string>
@@ -402,8 +424,7 @@
<string name="crash_report_sum">SƤnd den senaste krashrapporten via e-post</string>
<string name="send_email">SƤnd e-post</string>
<string name="experimental_pref">Experimentellt</string>
- <string name="pref_sonic_title">Sonic Mediaspelare</string>
- <string name="pref_sonic_message">AnvƤnd den inbyggda Sonic mediaspelare som ersƤttning fƶr Androids egna mediaspelare och Prestissimo</string>
+ <string name="pref_media_player_message">VƤlj vilken mediaspelare som ska spela filer</string>
<string name="pref_current_value">Nuvarande vƤrde: %1$s</string>
<string name="pref_proxy_title">Proxy</string>
<string name="pref_proxy_sum">AnvƤnd en nƤtverksproxy</string>
@@ -415,6 +436,11 @@
<string name="pref_cast_message_free_flavor">Chromecast krƤver propretiƤra tredjepartsbibliotek som inte Ƥr inkluderade i denna version av AntennaPod</string>
<string name="pref_enqueue_downloaded_title">Kƶa Nedladdade</string>
<string name="pref_enqueue_downloaded_summary">LƤgg nedladdade episoder i uppspelningskƶn</string>
+ <string name="media_player_builtin">Andriods inbyggda spelare</string>
+ <string name="pref_videoBehavior_title">Vid avslutande av video</string>
+ <string name="pref_videoBehavior_sum">Beteende nƤr videouppspelning avslutas</string>
+ <string name="stop_playback">Stoppa uppspelning</string>
+ <string name="continue_playback">FortsƤtt ljuduppspelning</string>
<!--Auto-Flattr dialog-->
<string name="auto_flattr_enable">Aktivera automatisk Flattring</string>
<string name="auto_flattr_after_percent">Flattra episoden sƄ snart %d procent har spelats</string>
@@ -424,8 +450,8 @@
<string name="search_hint">Sƶk efter episoder</string>
<string name="found_in_shownotes_label">Hittad i shownotes</string>
<string name="found_in_chapters_label">Hittad i kapitel</string>
- <string name="found_in_authors_label">Hittad i fƶrfattare</string>
- <string name="found_in_feeds_label">Hittad i flƶden</string>
+ <string name="found_in_authors_label">Hittade i fƶrfattare</string>
+ <string name="found_in_feeds_label">Hittade i podcast</string>
<string name="search_status_no_results">Inga resultat hittades</string>
<string name="search_label">Sƶk</string>
<string name="found_in_title_label">Hittad i titeln</string>
@@ -451,8 +477,8 @@
<string name="html_export_label">HTML export</string>
<string name="exporting_label">Exporterarā€¦</string>
<string name="export_error_label">Exporteringsfel</string>
- <string name="opml_export_success_title">OPML Exportering lyckades.</string>
- <string name="opml_export_success_sum">.opml filen skrevs till:\u0020</string>
+ <string name="export_success_title">Exporten lyckades</string>
+ <string name="export_success_sum">Den exporterade filen skrevs till:\n\n%1$s</string>
<string name="opml_import_ask_read_permission">TillgƄng till extern lagring krƤvs fƶr att lƤsa OPML-filen</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">StƤll in sƶmntimer</string>
@@ -619,6 +645,14 @@
<string name="proxy_host_empty_error">VƤrd mƄste fyllas i</string>
<string name="proxy_host_invalid_error">VƤrd Ƥr inte en giltig IP adress eller domƤn</string>
<string name="proxy_port_invalid_error">Porten Ƥr inte giltig</string>
+ <!--Database import/export-->
+ <string name="import_export">Databas-Import/Export</string>
+ <string name="import_export_warning">Denna experimentella funktion kan anvƤndas fƶr att fƶra ƶver dina prenumerationer och spelade episoder till en annan enhet.\n\nExporterade databaser kan bara importeras med samma version av AntennaPod. Annars kommer en import att leda till ofƶrutsƤgbara konsekvenser.\n\nEfter en import kan episoder visas som nedladdade Ƥven om de inte Ƥr det. Tryck bara pƄ uppspelningsknappen pƄ episoden fƶr att AntennaPod ska kolla det igen.</string>
+ <string name="label_import">Import</string>
+ <string name="label_export">Export</string>
+ <string name="import_select_file">VƤlj fil att importera</string>
+ <string name="export_ok">Exporten lyckades.</string>
+ <string name="import_ok">Importen lyckades.\n\nTryck OK fƶr att starta om AntennaPod</string>
<!--Casting-->
<string name="cast_media_route_menu_title">Spela pƄ...</string>
<string name="cast_disconnect_label">Koppla loss castningen</string>
@@ -635,4 +669,13 @@
<string name="cast_failed_seek">Misslyckades att sƶka till den nya positionen pƄ cast-enheten</string>
<string name="cast_failed_receiver_player_error">Mottagande uppspelaren har stƶtt pƄ ett allvarligt fel</string>
<string name="cast_failed_media_error_skipping">Fel vid uppspelning av media. Hoppar ƶver...</string>
+ <!--Notification channels-->
+ <string name="notification_channel_user_action">ƅtgƤrd krƤvs</string>
+ <string name="notification_channel_user_action_description">Visas om din ƄtgƤrd Ƥr obligatorisk, till exempel om du behƶver ange ett lƶsenord.</string>
+ <string name="notification_channel_downloading">Laddar ner</string>
+ <string name="notification_channel_downloading_description">Visas under tiden som nedladdning pƄgƄr.</string>
+ <string name="notification_channel_playing">Uppspelning pƄgƄr</string>
+ <string name="notification_channel_playing_description">Medger kontroll ƶver uppspelning. Detta Ƥr huvudnotifieringen som du ser nƤr en podcast spelas.</string>
+ <string name="notification_channel_error">Fel</string>
+ <string name="notification_channel_error_description">Visas om nƄgot blev fel, exempelvis om nedladdning eller gpodder synkronisering misslyckas.</string>
</resources>
diff --git a/core/src/main/res/values-sw-rKE/strings.xml b/core/src/main/res/values-sw-rKE/strings.xml
index acf3abe75..2d9481b84 100644
--- a/core/src/main/res/values-sw-rKE/strings.xml
+++ b/core/src/main/res/values-sw-rKE/strings.xml
@@ -36,4 +36,5 @@
<!--Database import/export-->
<!--Casting-->
<!--<string name="cast_failed_to_connect">Could not connect to the device</string>-->
+ <!--Notification channels-->
</resources>
diff --git a/core/src/main/res/values-te/strings.xml b/core/src/main/res/values-te/strings.xml
index 93db7b76f..d73db283a 100644
--- a/core/src/main/res/values-te/strings.xml
+++ b/core/src/main/res/values-te/strings.xml
@@ -3,6 +3,7 @@
<!--Activitiy and fragment titles-->
<string name="feeds_label">ą°«ą±€ą°”ą±ą°²ą±</string>
<string name="statistics_label">ą°—ą°£ą°¾ą°‚ą°•ą°¾ą°²ą±</string>
+ <string name="episodes_label">ą°Žą°Ŗą°æą°øą±‹ą°”ą±ą°²ą±</string>
<string name="all_episodes_short_label">ą°…ą°Øą±ą°Øą±€</string>
<string name="favorite_episodes_label">ą°‡ą°·ą±ą°Ÿą°¾ą°²ą±</string>
<string name="new_label">ą°•ą±Šą°¤ą±ą°¤ą°¦ą°æ</string>
@@ -13,33 +14,63 @@
<string name="downloads_log_label">ą°šą°æą°Ÿą±ą°Ÿą°¾</string>
<string name="subscriptions_label">ą°šą°‚ą°¦ą°¾ą°²ą±</string>
<string name="subscriptions_list_label">ą°šą°‚ą°¦ą°¾ą°² ą°œą°¾ą°¬ą°æą°¤ą°¾</string>
+ <string name="cancel_download_label">ą°¦ą°æą°‚ą°Ŗą±ą°•ą±‹ą°²ą±ą°Øą±\ną°°ą°¦ą±ą°¦ą±ą°šą±‡ą°Æą°æ</string>
+ <string name="playback_history_label">ą°†ą°”ą°æą°‚ą°Ŗą± ą°šą°°ą°æą°¤ą±ą°°</string>
+ <string name="gpodnet_main_label">gpodder.net</string>
+ <string name="gpodnet_auth_label">gpodder.net ą°Ŗą±ą°°ą°µą±‡ą°¶ą°‚</string>
<string name="free_space_label">%1$s ą°–ą°¾ą°³ą±€</string>
<!--Statistics fragment-->
+ <string name="statistics_mode">ą°—ą°£ą°¾ą°‚ą°•ą°¾ą°² ą°°ą±€ą°¤ą°æ</string>
<!--Main activity-->
+ <string name="drawer_open">ą°®ą±†ą°Øą±‚ą°Øą°æ ą°¤ą±†ą°°ą±ą°µą±</string>
+ <string name="drawer_close">ą°®ą±†ą°Øą±‚ą°Øą°æ ą°®ą±‚ą°øą°æą°µą±‡ą°Æą°æ</string>
<string name="drawer_feed_counter_none">ą°ą°®ą±€ą°²ą±‡ą°µą±</string>
<!--Webview actions-->
<!--Playback history-->
+ <string name="clear_history_label">ą°šą°°ą°æą°¤ą±ą°°ą°Øą± ą°¤ą±ą°”ą°æą°šą°æą°µą±‡ą°Æą°æ</string>
<!--Other-->
+ <string name="confirm_label">ą°Øą°æą°°ą±ą°§ą°¾ą°°ą°æą°‚ą°šą±</string>
<string name="cancel_label">ą°°ą°¦ą±ą°¦ą±ą°šą±‡ą°Æą°æ</string>
<string name="yes">ą°…ą°µą±ą°Øą±</string>
<string name="no">ą°•ą°¾ą°¦ą±</string>
<string name="language_label">ą°­ą°¾ą°·</string>
<string name="podcast_settings_label">ą°…ą°®ą°°ą°æą°•ą°²ą±</string>
+ <string name="cover_label">ą°¬ą±Šą°®ą±ą°®</string>
+ <string name="error_label">ą°Ŗą±Šą°°ą°Ŗą°¾ą°Ÿą±</string>
+ <string name="error_msg_prefix">ą°Ŗą±Šą°°ą°Ŗą°¾ą°Ÿą± ą°œą°°ą°æą°—ą°æą°‚ą°¦ą°æ:</string>
+ <string name="chapters_label">ą°šą°¾ą°Ŗą±ą°Ÿą°°ą±ą°²ą±</string>
+ <string name="chapter_duration">ą°Øą°æą°”ą°æą°µą°æ: %1$s</string>
<string name="description_label">ą°µą°æą°µą°°ą°£</string>
+ <string name="most_recent_prefix">ą°…ą°¤ą±ą°Æą°‚ą°¤ ą°‡ą°Ÿą±€ą°µą°²ą°æ ą°Žą°Ŗą°æą°øą±‹ą°”ą±:\u0020</string>
+ <string name="episodes_suffix">\u0020ą°Žą°Ŗą°æą°øą±‹ą°”ą±ą°²ą±</string>
<string name="length_prefix">ą°Øą°æą°”ą°æą°µą°æ:\u0020</string>
+ <string name="size_prefix">ą°Ŗą°°ą°æą°®ą°¾ą°£ą°‚:\u0020</string>
<string name="loading_label">ą°µą°øą±ą°¤ą±‹ą°‚ą°¦ą°æā€¦</string>
+ <string name="save_username_password_label">ą°µą°¾ą°”ą±ą°•ą°°ą°æ ą°Ŗą±‡ą°°ą±ą°Øą±€ ą°øą°‚ą°•ą±‡ą°¤ą°Ŗą°¦ą°¾ą°Øą±ą°Øą±€ ą°­ą°¦ą±ą°°ą°Ŗą°°ą°šą±</string>
<string name="close_label">ą°®ą±‚ą°øą°æą°µą±‡ą°Æą°æ</string>
+ <string name="retry_label">ą°®ą°³ą±ą°³ą±€ ą°Ŗą±ą°°ą°Æą°¤ą±ą°Øą°æą°‚ą°šą±</string>
<string name="feed_auto_download_always">ą°Žą°²ą±ą°²ą°Ŗą±ą°Ŗą±ą°”ą±‚</string>
<string name="send_label">ą°Ŗą°‚ą°Ŗą°æą°‚ą°šą±ā€¦</string>
+ <plurals name="episode_cleanup_days_after_listening">
+ <item quantity="one">ą°®ą±ą°—ą°æą°‚ą°šą°æą°Ø 1 ą°°ą±‹ą°œą± ą°¤ą°°ą±ą°µą°¾ą°¤</item>
+ <item quantity="other">ą°®ą±ą°—ą°æą°‚ą°šą°æą°Ø %d ą°°ą±‹ą°œą±ą°² ą°¤ą°°ą±ą°µą°¾ą°¤</item>
+ </plurals>
<!--'Add Feed' Activity labels-->
+ <string name="feedurl_label">ą°«ą±€ą°”ą± ą°šą°æą°°ą±ą°Øą°¾ą°®ą°¾</string>
+ <string name="etxtFeedurlHint">www.example.com/feed</string>
<!--Actions on feeds-->
+ <string name="show_info_label">ą°øą°®ą°¾ą°šą°¾ą°°ą°‚ ą°šą±‚ą°Ŗą°æą°‚ą°šą±</string>
<string name="share_label">ą°Ŗą°‚ą°šą±ą°•ą±‹ą°‚ą°”ą°æā€¦</string>
<!--actions on feeditems-->
+ <string name="download_label">ą°¦ą°æą°‚ą°Ŗą±ą°•ą±‹</string>
<string name="play_label">ą°†ą°”ą°æą°‚ą°šą±</string>
<string name="pause_label">ą°Øą°æą°²ą±ą°Ŗą±</string>
<string name="stop_label">ą°†ą°Ŗą°æą°µą±‡ą°Æą°æ</string>
+ <string name="remove_label">ą°¤ą±Šą°²ą°—ą°æą°‚ą°šą±</string>
<string name="delete_label">ą°¤ą±Šą°²ą°—ą°æą°‚ą°šą±</string>
<!--Download messages and labels-->
+ <string name="download_error_details">ą°µą°æą°µą°°ą°¾ą°²ą±</string>
+ <string name="download_type_feed">ą°«ą±€ą°”ą±</string>
<!--Mediaplayer messages-->
<!--Queue operations-->
<string name="date">ą°¤ą±‡ą°¦ą±€</string>
@@ -51,15 +82,22 @@
<!--Variable Speed-->
<!--Empty list labels-->
<!--Preferences-->
+ <string name="other_pref">ą°‡ą°¤ą°°</string>
<string name="about_pref">ą°—ą±ą°°ą°æą°‚ą°šą°æ</string>
- <string name="services_label">ą°øą±‡ą°µą°²ą±</string>
<string name="network_pref">ą°Øą±†ą°Ÿą±ā€Œą°µą°°ą±ą°•ą±</string>
+ <string name="pref_autoUpdateIntervallOrTime_Disable">ą°…ą°šą±‡ą°¤ą°Øą°æą°‚ą°šą±</string>
+ <string name="pref_autoUpdateIntervallOrTime_every">ą°Ŗą±ą°°ą°¤ą±€ %1$s</string>
+ <string name="pref_theme_title_light">ą°²ą±‡ą°¤</string>
+ <string name="pref_theme_title_dark">ą°Øą°²ą±ą°²ą°Øą°æ</string>
+ <string name="pref_episode_cache_unlimited">ą°…ą°Ŗą°°ą°æą°®ą°æą°¤ą°‚</string>
<string name="pref_update_interval_hours_plural">ą°—ą°‚ą°Ÿą°²ą±</string>
<string name="pref_update_interval_hours_singular">ą°—ą°‚ą°Ÿ</string>
<string name="experimental_pref">ą°Ŗą±ą°°ą°Æą±‹ą°—ą°¾ą°¤ą±ą°®ą°•ą°‚</string>
<string name="pref_proxy_title">ą°Ŗą±ą°°ą°¾ą°•ą±ą°øą±€</string>
+ <string name="pref_known_issues">ą°¤ą±†ą°²ą°æą°øą°æą°Ø ą°øą°®ą°øą±ą°Æą°²ą±</string>
<!--Auto-Flattr dialog-->
<!--Search-->
+ <string name="search_label">ą°µą±†ą°¤ą±ą°•ą±</string>
<!--OPML import and export-->
<string name="select_all_label">ą°…ą°Øą±ą°Øą±€ ą°Žą°‚ą°šą±ą°•ą±‹ą°‚ą°”ą°æ</string>
<!--Sleep timer-->
@@ -80,9 +118,14 @@
</plurals>
<!--gpodder.net-->
<string name="gpodnet_taglist_header">ą°µą°°ą±ą°—ą°¾ą°²ą±</string>
+ <string name="gpodnet_toplist_header">ą°®ą±‡ą°Ÿą°æ ą°Ŗą°¾ą°”ą±ā€Œą°•ą°¾ą°øą±ą°Ÿą±ą°²ą±</string>
+ <string name="gpodnet_suggestions_header">ą°øą°²ą°¹ą°¾ą°²ą±</string>
<string name="username_label">ą°µą°¾ą°”ą±ą°•ą°°ą°æ ą°Ŗą±‡ą°°ą±</string>
<string name="password_label">ą°øą°‚ą°•ą±‡ą°¤ą°Ŗą°¦ą°‚</string>
+ <string name="gpodnetsync_pref_report_successful">ą°µą°æą°œą°Æą°µą°‚ą°¤ą°‚</string>
+ <string name="gpodnetsync_pref_report_failed">ą°µą°æą°«ą°²ą°®ą±ˆą°‚ą°¦ą°æ</string>
<!--Directory chooser-->
+ <string name="folder_not_empty_dialog_title">ą°øą°‚ą°šą°Æą°‚ ą°–ą°¾ą°³ą±€ą°—ą°¾ ą°²ą±‡ą°¦ą±</string>
<!--Online feed view-->
<!--Content descriptions for image buttons-->
<!--Feed information screen-->
@@ -99,6 +142,10 @@
<string name="proxy_type_label">ą°°ą°•ą°‚</string>
<string name="optional_hint">(ą°ą°šą±ą°šą°æą°•ą°‚)</string>
<!--Database import/export-->
+ <string name="label_import">ą°¦ą°æą°—ą±ą°®ą°¤ą°æ</string>
+ <string name="label_export">ą°¦ą°æą°—ą±ą°®ą°¤ą°æ</string>
+ <string name="export_ok">ą°Žą°—ą±ą°®ą°¤ą°æ ą°µą°æą°œą°Æą°µą°‚ą°¤ą°‚.</string>
<!--Casting-->
<!--<string name="cast_failed_to_connect">Could not connect to the device</string>-->
+ <!--Notification channels-->
</resources>
diff --git a/core/src/main/res/values-tr/strings.xml b/core/src/main/res/values-tr/strings.xml
index 9d9aa95e8..a980a1224 100644
--- a/core/src/main/res/values-tr/strings.xml
+++ b/core/src/main/res/values-tr/strings.xml
@@ -48,7 +48,6 @@
<string name="yes">Evet</string>
<string name="no">Hayır</string>
<string name="reset">Sıfırla</string>
- <string name="author_label">Yayıncı</string>
<string name="language_label">Dil</string>
<string name="url_label">URL</string>
<string name="podcast_settings_label">Ayarlar</string>
@@ -94,23 +93,12 @@
<string name="mark_all_read_label">Hepsini oynatıldı olarak işaretle</string>
<string name="mark_all_read_msg">TĆ¼m bƶlĆ¼mleri oynatıldı olarak işaretle</string>
<string name="mark_all_read_confirmation_msg">LĆ¼tfen tĆ¼m bƶlĆ¼mleri oynatıldı olarak işaretlemek istediğinizi onaylayın.</string>
- <string name="mark_all_read_feed_confirmation_msg">LĆ¼tfen bu besleme iƧindeki tĆ¼m bƶlĆ¼mleri oynatıldı olarak işaretlemek istediğinizi onaylayın.</string>
<string name="mark_all_seen_label">Hepsini gƶrĆ¼ldĆ¼ olarak işaretle</string>
- <string name="mark_all_seen_msg">TĆ¼m bƶlĆ¼mler gƶrĆ¼ldĆ¼ olarak işaretlendi</string>
<string name="mark_all_seen_confirmation_msg">LĆ¼tfen tĆ¼m bƶlĆ¼mleri gƶrĆ¼ldĆ¼ olarak işaretlemek istediğinizi onaylayın.</string>
<string name="show_info_label">Bilgiyi gƶster</string>
- <string name="rename_feed_label">Cep yayınını yeniden adlandır</string>
- <string name="remove_feed_label">Cep yayını kaldır</string>
<string name="share_label">Paylaş...</string>
- <string name="share_link_label">Link\'i paylaş</string>
- <string name="share_link_with_position_label">Link\'i Konumla birlikte paylaş</string>
<string name="share_feed_url_label">Besleme Adresini Paylaş</string>
- <string name="share_item_url_label">BƶlĆ¼m Dosyası Adresini Paylaş</string>
- <string name="share_item_url_with_position_label">BƶlĆ¼m Dosyası Adresini Konumla birlikte paylaş</string>
- <string name="feed_remover_msg">Besleme kaldırılıyor</string>
- <string name="load_complete_feed">TĆ¼m beslemeyi yenile</string>
<string name="hide_episodes_title">BƶlĆ¼mleri gizle</string>
- <string name="episode_actions">Eylemleri uygula</string>
<string name="hide_unplayed_episodes_label">Oynatılmadı</string>
<string name="hide_paused_episodes_label">Duraklatıldı</string>
<string name="hide_played_episodes_label">Oynatıldı</string>
@@ -220,7 +208,6 @@
<string name="date">Tarih</string>
<string name="duration">SĆ¼re</string>
<string name="episode_title">BlĆ¼m başlığı</string>
- <string name="feed_title">Besleme başlığı</string>
<string name="ascending">Artan</string>
<string name="descending">Azalan</string>
<string name="clear_queue_confirmation_msg">LĆ¼tfen iƧerisindeki BƜTƜN ƶlĆ¼mlerle birlikte kuyruğu temizleme isteğinizi onaylayın.</string>
@@ -257,14 +244,12 @@
<string name="enable_sonic">Sonic\'i Etkinleştir</string>
<!--Empty list labels-->
<string name="no_items_label">Bu listede hiƧ ƶge yok.</string>
- <string name="no_feeds_label">HenĆ¼z hiƧbir beslemeye abone değilsiniz.</string>
<!--Preferences-->
<string name="storage_pref">Depolama</string>
<string name="project_pref">Proje</string>
<string name="other_pref">Diğer</string>
<string name="about_pref">Hakkında</string>
<string name="queue_label">Kuyruk</string>
- <string name="services_label">Servisler</string>
<string name="flattr_label">Flattr</string>
<string name="pref_episode_cleanup_title">BƶlĆ¼m Temizliği</string>
<string name="pref_pauseOnDisconnect_sum">Kulaklıklar Ƨıkarıldığında veya bluetooth bağlantısı kesildiğinde Ƨalmayı duraklat</string>
@@ -330,8 +315,6 @@
<string name="pref_playback_speed_sum">Değişken hızlı ses yĆ¼rĆ¼tmesi iƧin kullanılabilir hızları ƶzelleştirin</string>
<string name="pref_gpodnet_sethostname_title">Sunucu ismini ayarla</string>
<string name="pref_gpodnet_sethostname_use_default_host">Varsayılan sunucuyu kullan</string>
- <string name="pref_expandNotify_title">Bildirimi Genişlet</string>
- <string name="pref_expandNotify_sum">Ƈalma tuşlarını gƶstermek iƧin bildirimi her zaman genişlet.</string>
<string name="pref_persistNotify_title">Kalıcı oynatma kontrolleri</string>
<string name="pref_persistNotify_sum">Ƈalma duraklatıldığında bildirim ve ekran kilidi ayarlarını sakla.</string>
<string name="pref_showDownloadReport_title">İndirme Raporunu Gƶster</string>
@@ -374,8 +357,6 @@
<string name="choose_file_from_external_application">Harici uygulama kullan</string>
<string name="opml_export_label">OPML dışa aktar</string>
<string name="export_error_label">Dışa aktarma hatası</string>
- <string name="opml_export_success_title">Opml dışa aktarma başarılı.</string>
- <string name="opml_export_success_sum">.opml dosyasy yazıldı: \u0020</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">Zamanlayıcıyı ayarla</string>
<string name="disable_sleeptimer_label">Zamanlayıcıyı devre dışı bırak</string>
@@ -508,4 +489,5 @@
<!--Database import/export-->
<!--Casting-->
<!--<string name="cast_failed_to_connect">Could not connect to the device</string>-->
+ <!--Notification channels-->
</resources>
diff --git a/core/src/main/res/values-uk-rUA/strings.xml b/core/src/main/res/values-uk-rUA/strings.xml
index 18ca0713b..0afc1e8c2 100644
--- a/core/src/main/res/values-uk-rUA/strings.xml
+++ b/core/src/main/res/values-uk-rUA/strings.xml
@@ -1,11 +1,13 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources xmlns:tools="http://schemas.android.com/tools">
<!--Activitiy and fragment titles-->
+ <string name="feed_update_receiver_name">ŠžŠ½Š¾Š²ŠøтŠø ŠæіŠ“ŠæŠøсŠŗŠø</string>
<string name="feeds_label">ŠšŠ°Š½Š°Š»Šø</string>
<string name="statistics_label">Š”тŠ°Ń‚ŠøстŠøŠŗŠ°</string>
<string name="add_feed_label">Š”Š¾Š“Š°Ń‚Šø ŠæŠ¾Š“ŠŗŠ°ŃŃ‚</string>
<string name="episodes_label">Š•ŠæіŠ·Š¾Š“Šø</string>
<string name="all_episodes_short_label">Š’сі</string>
+ <string name="new_episodes_label">ŠŠ¾Š²Ń–</string>
<string name="favorite_episodes_label">Š£Š»ŃŽŠ±Š»ŠµŠ½Ń–</string>
<string name="new_label">ŠŠ¾Š²Ń–</string>
<string name="settings_label">ŠŠ°Š»Š°ŃˆŃ‚ŃƒŠ²Š°Š½Š½Ń</string>
@@ -15,18 +17,20 @@
<string name="downloads_log_label">Š–ŃƒŃ€Š½Š°Š»</string>
<string name="subscriptions_label">ŠŸŃ–Š“ŠæŠøсŠŗŠø</string>
<string name="subscriptions_list_label">ŠŸŠµŃ€ŠµŠ»Ń–Šŗ ŠæіŠ“ŠæŠøсŠ¾Šŗ</string>
- <string name="cancel_download_label">Š”ŠŗŠ°ŃŃƒŠ²Š°Ń‚Šø Š·Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½Š½Ń</string>
- <string name="playback_history_label">Š©Š¾ Š³Ń€Š°Š»Š¾</string>
+ <string name="cancel_download_label">Š”ŠŗŠ°ŃŃƒŠ²Š°Ń‚Šø\nŠ·Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½Š½Ń</string>
+ <string name="playback_history_label">Š†ŃŃ‚Š¾Ń€Ń–я Š²Ń–Š“тŠ²Š¾Ń€ŠµŠ½Š½Ń</string>
<string name="gpodnet_main_label">gpodder.net</string>
+ <string name="gpodnet_summary">Š”ŠøŠ½Ń…Ń€Š¾Š½ŠøŠ·Š°Ń†Ń–я Š· іŠ½ŃˆŠøŠ¼Šø ŠæрŠøстрŠ¾ŃŠ¼Šø</string>
<string name="gpodnet_auth_label">gpodder.net Š»Š¾Š³Ń–Š½</string>
<string name="free_space_label">%1$s Š²Ń–Š»ŃŒŠ½Š¾</string>
<string name="episode_cache_full_title">ŠšŠµŃˆ ŠµŠæіŠ·Š¾Š“іŠ² Š·Š°ŠæŠ¾Š²Š½ŠµŠ½ŠøŠ¹</string>
<string name="episode_cache_full_message">Š”Š¾ŃŃŠ³Š½ŃƒŃ‚Š° Š¼ŠµŠ¶Š° рŠ¾Š·Š¼Ń–Ń€Š° ŠŗŠµŃˆŠ° ŠµŠæіŠ·Š¾Š“іŠ². Š Š¾Š·Š¼Ń–Ń€ ŠŗŠµŃˆŠ° Š¼Š¾Š¶Š½Š° Š·Š±Ń–Š»ŃŒŃˆŠøтŠø Š² Š½Š°Š»Š°ŃˆŃ‚ŃƒŠ²Š°Š½Š½ŃŃ….</string>
+ <string name="synchronizing">Š”ŠøŠ½Ń…Ń€Š¾Š½Ń–Š·ŃƒŃ”Ń‚ŃŒŃŃā€¦</string>
<!--Statistics fragment-->
<string name="total_time_listened_to_podcasts">Š—Š°Š³Š°Š»ŃŒŠ½ŠøŠ¹ чŠ°Ń ŠæрŠ¾ŃŠ»ŃƒŃ…Š°Š½Šøх ŠæŠ¾Š“ŠŗŠ°ŃŃ‚Ń–Š²:</string>
<string name="statistics_details_dialog">%1$d Š· %2$d ŠµŠæіŠ·Š¾Š“іŠ² ŠæŠ¾Ń‡Š°Ń‚Š¾.\n\nŠŸŃ€Š¾ŃŠ»ŃƒŃ…Š°Š½Š¾ %3$s Š· %4$s.</string>
<string name="statistics_mode">Š ŠµŠ¶ŠøŠ¼ стŠ°Ń‚ŠøстŠøŠŗŠø</string>
- <string name="statistics_mode_normal">ŠžŠ±Ń‡ŠøсŠ»ŠøтŠø трŠøŠ²Š°Š»Ń–ŃŃ‚ŃŒ ŠæрŠ¾ŃŠ»ŃƒŃ…Š°Š½Š¾Š³Š¾. ŠŸŃ€Š¾ŃŠ»ŃƒŃ…Š°Š½Šµ Š“Š²Ń–чі Š²Ń€Š°Ń…Š¾Š²ŃƒŃ”Ń‚ŃŒŃŃ Š“Š²Ń–чŠø, Š°Š»Šµ ŠæрŠ¾ŃŃ‚Š¾ ŠæŠ¾Š·Š½Š°Ń‡ŠµŠ½Šµ яŠŗ ŠæрŠ¾ŃŠ»ŃƒŃ…Š°Š½Šµ Š½Šµ Š²Ń€Š°Ń…Š¾Š²ŃƒŃ”Ń‚ŃŒŃŃ </string>
+ <string name="statistics_mode_normal">ŠžŠ±Ń‡ŠøсŠ»ŠøтŠø трŠøŠ²Š°Š»Ń–ŃŃ‚ŃŒ Š“іŠ¹ŃŠ½Š¾ ŠæрŠ¾ŃŠ»ŃƒŃ…Š°Š½Š¾Š³Š¾. ŠŸŃ€Š¾ŃŠ»ŃƒŃ…Š°Š½Šµ Š“Š²Ń–чі Š²Ń€Š°Ń…Š¾Š²ŃƒŃ”Ń‚ŃŒŃŃ Š“Š²Ń–чі, Š°Š»Šµ ŠæрŠ¾ŃŃ‚Š¾ ŠæŠ¾Š·Š½Š°Ń‡ŠµŠ½Šµ яŠŗ ŠæрŠ¾ŃŠ»ŃƒŃ…Š°Š½Šµ Š½Šµ Š²Ń€Š°Ń…Š¾Š²ŃƒŃ”Ń‚ŃŒŃŃ </string>
<string name="statistics_mode_count_all">ŠŸŃ–Š“суŠ¼ŃƒŠ²Š°Ń‚Šø Š²ŃŃ– ŠæŠ¾Š“ŠŗŠ°ŃŃ‚Šø ŠæŠ¾Š·Š½Š°Ń‡ŠµŠ½Ń– яŠŗ ŠæрŠ¾ŃŠ»ŃƒŃ…Š°Š½Ń–</string>
<string name="statistics_speed_not_counted">Š—Š°ŃƒŠ²Š°Š¶ŠµŠ½Š½Ń: ŠØŠ²ŠøŠ“Šŗість ŠæрŠ¾Š³Ń€Š°Š²Š°Š½Š½Ń Š½Šµ Š±ŠµŃ€ŠµŃ‚ŃŒŃŃ Š“Š¾ уŠ²Š°Š³Šø.</string>
<!--Main activity-->
@@ -34,9 +38,9 @@
<string name="drawer_close">Š”хŠ¾Š²Š°Ń‚Šø Š¼ŠµŠ½ŃŽ</string>
<string name="drawer_preferences">ŠŠ°ŃŃ‚Ń€Š¾Š¹ŠŗŠø Š¼ŠµŠ½ŃŽ Š½Š°Š²Ń–Š³Š°Ń†Ń–Ń—</string>
<string name="drawer_feed_order_unplayed_episodes">Š”Š¾Ń€Ń‚ŃƒŠ²Š°Ń‚Šø Š·Š° Š»Ń–чŠøŠ»ŃŒŠ½ŠøŠŗŠ¾Š¼</string>
- <string name="drawer_feed_order_alphabetical">Š”Š¾Ń€Ń‚ŃƒŠ²Š°Š½Š½Ń Š·Š° Š°Š±ŠµŃ‚ŠŗŠ¾ŃŽ</string>
+ <string name="drawer_feed_order_alphabetical">Š”Š¾Ń€Ń‚ŃƒŠ²Š°Ń‚Šø Š·Š° Š°Š±ŠµŃ‚ŠŗŠ¾ŃŽ</string>
<string name="drawer_feed_order_last_update">Š”Š¾Ń€Ń‚ŃƒŠ²Š°Ń‚Šø Š·Š° Š“Š°Ń‚Š¾ŃŽ ŠæуŠ±Š»Ń–ŠŗŠ°Ń†Ń–Ń—</string>
- <string name="drawer_feed_order_most_played">Š”Š¾Ń€Ń‚ŃƒŠ²Š°Š½Š½Ń Š·Š° ŠŗіŠ»ŃŒŠŗістю ŠæрŠ¾ŃŠ»ŃƒŃ…Š°Š½Šøх ŠµŠæіŠ·Š¾Š“іŠ²</string>
+ <string name="drawer_feed_order_most_played">Š”Š¾Ń€Ń‚ŃƒŠ²Š°Ń‚Šø Š·Š° ŠŗіŠ»ŃŒŠŗістю ŠæрŠ¾ŃŠ»ŃƒŃ…Š°Š½Šøх ŠµŠæіŠ·Š¾Š“іŠ²</string>
<string name="drawer_feed_counter_new_unplayed">ŠšŃ–Š»ŃŒŠŗість Š½Š¾Š²Šøх тŠ° Š½ŠµŠæрŠ¾ŃŠ»ŃƒŃ…Š°Š½Šøх ŠµŠæіŠ·Š¾Š“іŠ²</string>
<string name="drawer_feed_counter_new">ŠšŃ–Š»ŃŒŠŗість Š½Š¾Š²Šøх ŠµŠæіŠ·Š¾Š“іŠ²</string>
<string name="drawer_feed_counter_unplayed">ŠšŃ–Š»ŃŒŠŗість Š½ŠµŠæрŠ¾ŃŠ»ŃƒŃ…Š°Š½Šøх ŠµŠæіŠ·Š¾Š“іŠ²</string>
@@ -49,20 +53,21 @@
<string name="copied_url_msg">URL сŠŗŠ¾ŠæіŠ¹Š¾Š²Š°Š½Š¾ Š² Š±ŃƒŃ„ŠµŃ€</string>
<string name="go_to_position_label">Š”Š¾ цієї ŠæŠ¾Š·Šøції</string>
<!--Playback history-->
- <string name="clear_history_label">Š—Š°Š±ŃƒŃ‚Šø</string>
+ <string name="clear_history_label">ŠžŃ‡ŠøстŠøтŠø істŠ¾Ń€Ń–ŃŽ</string>
<!--Other-->
<string name="confirm_label"> ŠŸŃ–Š“тŠ²ŠµŃ€Š“ŠøтŠø</string>
<string name="cancel_label">Š”ŠŗŠ°ŃŃƒŠ²Š°Ń‚Šø</string>
<string name="yes">Š¢Š°Šŗ</string>
<string name="no">ŠŃ–</string>
<string name="reset">ŠŸŠµŃ€ŠµŠ·Š°ŠæусŠŗ</string>
- <string name="author_label">ŠŠ²Ń‚Š¾Ń€</string>
+ <string name="author_label">ŠŠ²Ń‚Š¾Ń€(Šø)</string>
<string name="language_label">ŠœŠ¾Š²Š°</string>
<string name="url_label">URL</string>
<string name="podcast_settings_label">ŠŠ°Š»Š°ŃˆŃ‚ŃƒŠ²Š°Š½Š½Ń</string>
<string name="cover_label">Š—Š¾Š±Ń€Š°Š¶ŠµŠ½Š½Ń</string>
<string name="error_label">ŠŸŠ¾Š¼ŠøŠ»ŠŗŠ°</string>
<string name="error_msg_prefix">Š¢Ń€Š°ŠæŠøŠ»Š°ŃŃŒ ŠæŠ¾Š¼Ń–Š»ŠŗŠ°:</string>
+ <string name="needs_storage_permission">Š”Š»Ń цієї Š¾ŠæŠµŃ€Š°Ń†Ń–Ń— ŠæŠ¾Ń‚ріŠ±ŠµŠ½ Š“Š¾Š·Š²Ń–Š» Š½Š° Š“Š¾ŃŃ‚ŃƒŠæ Š“Š¾ ŠæŠ°Š¼ā€™ŃŃ‚Ń–</string>
<string name="refresh_label">ŠžŠ½Š¾Š²ŠøтŠø</string>
<string name="external_storage_error_msg">ŠŠµŠ¼Š°Ń” Š“Š¾ŃŃ‚ŃƒŠæŠ½Š¾Ń— ŠŗŠ°Ń€Ń‚Šø ŠæŠ°Š¼\'яті. Š—Š¾Š²Š½Ń–ŃˆŠ½Ń–Š¹ Š½Š¾ŃŃ–Š¹ ŠæŠ¾Ń‚ріŠ±ŠµŠ½ Š“Š»Ń ŠŗŠ¾Ń€ŠµŠŗтŠ½Š¾Ń— рŠ¾Š±Š¾Ń‚Šø Š“Š¾Š“Š°Ń‚Šŗу</string>
<string name="chapters_label">Š“Š»Š°Š²Šø</string>
@@ -80,10 +85,10 @@
<string name="retry_label">ŠŸŠ¾Š²Ń‚Š¾Ń€ŠøтŠø Š·Š½Š¾Š²Ńƒ</string>
<string name="auto_download_label">Š’ŠŗŠ»ŃŽŃ‡ŠøтŠø Š“Š¾ Š°Š²Ń‚Š¾Š·Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½Š½Ń</string>
<string name="auto_download_apply_to_items_title">Š—Š°ŃŃ‚Š¾ŃŃƒŠ²Š°Ń‚Šø Š“Š¾ ŠæŠ¾ŠæŠµŃ€ŠµŠ“Š½Ń–Ń… ŠµŠæіŠ·Š¾Š“іŠ²</string>
- <string name="auto_download_apply_to_items_message">ŠŠ¾Š²Šµ Š½Š°Š»Š°ŃˆŃ‚ŃƒŠ²Š°Š½Š½Ń <i>ŠŠ²Ń‚Š¾Š·Š°Š³Ń€ŃƒŠ·ŠŗŠ°</i> Š±ŃƒŠ“Šµ Š°Š²Ń‚Š¾Š¼Š°Ń‚ŠøчŠ½Š¾ Š·Š°ŃŃ‚Š¾ŃŠ¾Š²Š°Š½Šµ Š“Š¾ Š½Š¾Š²Šøх ŠµŠæіŠ·Š¾Š“іŠ².\nŠ‘Š°Š¶Š°Ń”Ń‚Šµ тŠ°ŠŗŠ¾Š¶ Š·Š°ŃŃ‚Š¾ŃŃƒŠ²Š°Ń‚Šø Š¹Š¾Š³Š¾ Š“Š¾ тŠøх ŠµŠæіŠ·Š¾Š“іŠ² щŠ¾ Š±ŃƒŠ»Š¾ Š¾ŠæуŠ±Š»Ń–ŠŗŠ¾Š²Š°Š½Š¾ рŠ°Š½Ń–ŃˆŠµ?</string>
+ <string name="auto_download_apply_to_items_message">ŠŠ¾Š²Šµ Š½Š°Š»Š°ŃˆŃ‚ŃƒŠ²Š°Š½Š½Ń <i>ŠŠ²Ń‚Š¾Š·Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½Š½Ń</i> Š±ŃƒŠ“Šµ Š°Š²Ń‚Š¾Š¼Š°Ń‚ŠøчŠ½Š¾ Š·Š°ŃŃ‚Š¾ŃŠ¾Š²Š°Š½Šµ Š“Š¾ Š½Š¾Š²Šøх ŠµŠæіŠ·Š¾Š“іŠ².\nŠ‘Š°Š¶Š°Ń”Ń‚Šµ тŠ°ŠŗŠ¾Š¶ Š·Š°ŃŃ‚Š¾ŃŃƒŠ²Š°Ń‚Šø Š¹Š¾Š³Š¾ Š“Š¾ тŠøх ŠµŠæіŠ·Š¾Š“іŠ² щŠ¾ Š±ŃƒŠ»Šø Š¾ŠæуŠ±Š»Ń–ŠŗŠ¾Š²Š°Š½Ń– рŠ°Š½Ń–ŃˆŠµ?</string>
<string name="auto_delete_label">ŠŠ²Ń‚Š¾Š²ŠøŠ“Š°Š»ŠµŠ½Š½Ń ŠµŠæіŠ·Š¾Š“Š°</string>
<string name="parallel_downloads_suffix">\u0020ŠæŠ°Ń€Š°Š»ŠµŠ»ŃŒŠ½Šøх Š·Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½ŃŒ</string>
- <string name="feed_auto_download_global">Š—Š° Š·Š°Š¼Š¾Š²Ń‡Š°Š½Š½ŃŠ¼</string>
+ <string name="feed_auto_download_global">Š—Š° Š·Š°Š¼Š¾Š²Ń‡ŃƒŠ²Š°Š½Š½ŃŠ¼</string>
<string name="feed_auto_download_always">Š—Š°Š²Š¶Š“Šø</string>
<string name="feed_auto_download_never">ŠŃ–ŠŗŠ¾Š»Šø</string>
<string name="send_label">Š’Ń–Š“ŠæрŠ°Š²ŠøтŠøā€¦</string>
@@ -93,6 +98,7 @@
<plurals name="episode_cleanup_days_after_listening">
<item quantity="one">1 Š“ŠµŠ½ŃŒ ŠæісŠ»Ń Š·Š°ŠŗіŠ½Ń‡ŠµŠ½Š½Ń</item>
<item quantity="few">%d Š“Š½Ń– ŠæісŠ»Ń Š·Š°ŠŗіŠ½Ń‡ŠµŠ½Š½Ń</item>
+ <item quantity="many">%d Š“Š½Ń–Š² ŠæісŠ»Ń Š·Š°ŠŗіŠ½Ń‡ŠµŠ½Š½Ń</item>
<item quantity="other">%d Š“Š½Ń–Š² ŠæісŠ»Ń Š·Š°ŠŗіŠ½Ń‡ŠµŠ½Š½Ń</item>
</plurals>
<!--'Add Feed' Activity labels-->
@@ -103,36 +109,42 @@
<string name="podcastdirectories_descr">ŠŠ¾Š²Ń– ŠæŠ¾Š“ŠŗŠ°ŃŃ‚Šø Š¼Š¾Š¶Š½Š° шуŠŗŠ°Ń‚Šø Š½Š° iTunes Š°Š±Š¾ fyyd, Š°Š±Š¾ ŠæŠµŃ€ŠµŠ³Š»ŃŠ½ŃƒŃ‚Šø gpodder.net Š·Š° іŠ¼ŠµŠ½Š°Š¼Šø, ŠŗŠ°Ń‚ŠµŠ³Š¾Ń€Ń–яŠ¼Šø Š°Š±Š¾ ŠæŠ¾ŠæуŠ»ŃŃ€Š½Ń–стю.</string>
<string name="browse_gpoddernet_label">ŠŸŠµŃ€ŠµŠ³Š»ŃŠ½ŃƒŃ‚Šø gpodder.net</string>
<!--Actions on feeds-->
- <string name="mark_all_read_label">ŠŸŠ¾Š·Š½Š°Ń‡ŠøтŠø Š²ŃŃ– яŠŗ Š³Ń€Š°Š½Ń–</string>
- <string name="mark_all_read_msg">ŠŸŠ¾Š·Š½Š°Ń‡ŠµŠ½Š¾ Š²ŃŃ– ŠµŠæіŠ·Š¾Š“Šø яŠŗ Š³Ń€Š°Š½Ń–</string>
- <string name="mark_all_read_confirmation_msg">Š‘ŃƒŠ“ь Š»Š°ŃŠŗŠ°, ŠæіŠ“тŠ²ŠµŃ€Š“іть щŠ¾ Š²Šø Š±Š°Š¶Š°Ń”Ń‚Šµ ŠæŠ¾Š·Š½Š°Ń‡ŠøтŠø Š²ŃŃ– ŠµŠæіŠ·Š¾Š“Šø яŠŗ Š³Ń€Š°Š½Ń–.</string>
- <string name="mark_all_read_feed_confirmation_msg">Š‘ŃƒŠ“ь Š»Š°ŃŠŗŠ°, ŠæіŠ“тŠ²ŠµŃ€Š“іть щŠ¾ Š²Šø Š±Š°Š¶Š°Ń”Ń‚Šµ ŠæŠ¾Š·Š½Š°Ń‡ŠøтŠø Š²ŃŃ– ŠµŠæіŠ·Š¾Š“Šø цьŠ¾Š³Š¾ ŠŗŠ°Š½Š°Š»Š° яŠŗ Š³Ń€Š°Š½Ń–.</string>
+ <string name="mark_all_read_label">ŠŸŠ¾Š·Š½Š°Ń‡ŠøтŠø Š²ŃŃ– яŠŗ Š²Ń–Š“тŠ²Š¾Ń€ŠµŠ½Ń–</string>
+ <string name="mark_all_read_msg">ŠŸŠ¾Š·Š½Š°Ń‡ŠµŠ½Š¾ Š²ŃŃ– ŠµŠæіŠ·Š¾Š“Šø яŠŗ Š²Ń–Š“тŠ²Š¾Ń€ŠµŠ½Ń–</string>
+ <string name="mark_all_read_confirmation_msg">Š‘ŃƒŠ“ь Š»Š°ŃŠŗŠ°, ŠæіŠ“тŠ²ŠµŃ€Š“іть щŠ¾ Š²Šø Š±Š°Š¶Š°Ń”Ń‚Šµ ŠæŠ¾Š·Š½Š°Ń‡ŠøтŠø Š²ŃŃ– ŠµŠæіŠ·Š¾Š“Šø яŠŗ Š²Ń–Š“тŠ²Š¾Ń€ŠµŠ½Ń–.</string>
+ <string name="mark_all_read_feed_confirmation_msg">Š‘ŃƒŠ“ь Š»Š°ŃŠŗŠ°, ŠæіŠ“тŠ²ŠµŃ€Š“іть, щŠ¾ Š²Šø Š±Š°Š¶Š°Ń”Ń‚Šµ ŠæŠ¾Š·Š½Š°Ń‡ŠøтŠø Š²ŃŃ– ŠµŠæіŠ·Š¾Š“Šø цьŠ¾Š³Š¾ ŠæŠ¾Š“ŠŗŠ°ŃŃ‚Ńƒ яŠŗ Š²Ń–Š“тŠ²Š¾Ń€ŠµŠ½Ń–. </string>
<string name="mark_all_seen_label">ŠŸŠ¾Š·Š½Š°Ń‡ŠøтŠø Š²ŃŃ– яŠŗ ŠæŠµŃ€ŠµŠ³Š»ŃŠ½ŃƒŃ‚Ń–</string>
<string name="mark_all_seen_msg">Š’сі ŠµŠæіŠ·Š¾Š“Šø ŠæŠ¾Š·Š½Š°Ń‡ŠµŠ½Š¾ яŠŗ ŠæŠµŃ€ŠµŠ³Š»ŃŠ½ŃƒŃ‚Ń–</string>
<string name="mark_all_seen_confirmation_msg">Š‘ŃƒŠ“ь Š»Š°ŃŠŗŠ°, ŠæіŠ“тŠ²ŠµŃ€Š“іть щŠ¾ Š²Šø Š±Š°Š¶Š°Ń”Ń‚Šµ ŠæŠ¾Š·Š½Š°Ń‡ŠøтŠø Š²ŃŃ– ŠµŠæіŠ·Š¾Š“Šø яŠŗ ŠæŠµŃ€ŠµŠ³Š»ŃŠ½ŃƒŃ‚Ń–.</string>
<string name="show_info_label">Š†Š½Ń„Š¾Ń€Š¼Š°Ń†Ń–я</string>
+ <string name="show_feed_settings_label">ŠŸŠ¾ŠŗŠ°Š·Š°Ń‚Šø Š½Š°Š»Š°ŃˆŃ‚ŃƒŠ²Š°Š½Š½Ń ŠæŠ¾Š“ŠŗŠ°ŃŃ‚Ńƒ</string>
+ <string name="feed_info_label">Š†Š½Ń„Š¾Ń€Š¼Š°Ń†Ń–я ŠæрŠ¾ ŠæŠ¾Š“ŠŗŠ°ŃŃ‚</string>
+ <string name="feed_settings_label">ŠŠ°Š»Š°ŃˆŃ‚ŃƒŠ²Š°Š½Š½Ń ŠæŠ¾Š“ŠŗŠ°ŃŃ‚Š°</string>
<string name="rename_feed_label">ŠŸŠµŃ€ŠµŠ¹Š¼ŠµŠ½ŃƒŠ²Š°Ń‚Šø ŠæŠ¾Š“ŠŗŠ°ŃŃ‚</string>
<string name="remove_feed_label">Š’ŠøŠ“Š°Š»ŠøтŠø ŠæŠ¾Š“ŠŗŠ°ŃŃ‚</string>
<string name="share_label">ŠŸŠ¾Š“іŠ»ŠøтŠøсяā€¦</string>
- <string name="share_link_label">ŠŸŠ¾Š“іŠ»ŠøтŠøся URL сŠ°Š¹Ń‚Ńƒ</string>
+ <string name="share_link_label">ŠŸŠ¾Š“іŠ»ŠøтŠøсь ŠæŠ¾ŃŠøŠ»Š°Š½Š½ŃŠ¼ Š½Š° ŠµŠæіŠ·Š¾Š“</string>
+ <string name="share_link_with_position_label">ŠŸŠ¾Š“іŠ»Ń–Ń‚ŃŒŃŃ ŠæŠ¾ŃŠøŠ»Š°Š½Š½ŃŠ¼ Š½Š° ŠµŠæіŠ·Š¾Š“ Š· ŠæŠ¾Š·Šøцією</string>
<string name="share_file_label">ŠŸŠ¾Š“іŠ»ŠøтŠøсь фŠ°Š¹Š»Š¾Š¼</string>
- <string name="share_link_with_position_label">ŠŸŠ¾Š“іŠ»ŠøтŠøсь ŠæŠ¾ŃŠøŠ»Š°Š½Š½ŃŠ¼ Š½Š° ŠæŠ¾Š·Šøцію</string>
<string name="share_feed_url_label">ŠŸŠ¾Š“іŠ»ŠøтŠøсь ŠæŠ¾ŃŠøŠ»Š°Š½Š½ŃŠ¼ Š½Š° ŠŗŠ°Š½Š°Š»</string>
- <string name="share_item_url_label">ŠŸŠ¾Š“іŠ»ŠøтŠøсь ŠæŠ¾ŃŠøŠ»Š°Š½Š½ŃŠ¼ Š½Š° фŠ°Š¹Š» ŠµŠæіŠ·Š¾Š“Š°</string>
- <string name="share_item_url_with_position_label">ŠŸŠ¾Š“іŠ»ŠøтŠøсь ŠæŠ¾ŃŠøŠ»Š°Š½Š½ŃŠ¼ Š½Š° фŠ°Š¹Š» ŠµŠæіŠ·Š¾Š“Š° Š· ŠæŠ¾Š·Šøцією</string>
- <string name="feed_delete_confirmation_msg">Š‘ŃƒŠ“ь Š»Š°ŃŠŗŠ°, ŠæіŠ“тŠ²ŠµŃ€Š“іть щŠ¾ Š²Šø Š±Š°Š¶Š°Ń”Ń‚Šµ Š²ŠøŠ“Š°Š»ŠøтŠø ŠŗŠ°Š½Š°Š» \"%1$s\" і Š’Š”Š† ŠµŠæіŠ·Š¾Š“Šø цьŠ¾Š³Š¾ ŠŗŠ°Š½Š°Š»Š° яŠŗі Š²Šø Š·Š°Š²Š°Š½Ń‚Š°Š¶ŠøŠ»Šø.</string>
- <string name="feed_remover_msg">Š£Š“Š°Š»ŃŃŽ ŠŗŠ°Š½Š°Š»</string>
- <string name="load_complete_feed">ŠžŠ½Š¾Š²ŠøтŠø ŠŗŠ°Š½Š°Š» ціŠ»ŠŗŠ¾Š¼</string>
+ <string name="share_item_url_label">ŠŸŠ¾Š“іŠ»ŠøтŠøсь ŠæŠ¾ŃŠøŠ»Š°Š½Š½ŃŠ¼ Š½Š° Š¼ŠµŠ“іŠ°-фŠ°Š¹Š»</string>
+ <string name="share_item_url_with_position_label">ŠŸŠ¾Š“іŠ»ŠøтŠøсь ŠæŠ¾ŃŠøŠ»Š°Š½Š½ŃŠ¼ Š½Š° Š¼ŠµŠ“іŠ°-фŠ°Š¹Š» Š· ŠæŠ¾Š·Šøцією</string>
+ <string name="feed_delete_confirmation_msg">Š‘ŃƒŠ“ь Š»Š°ŃŠŗŠ°, ŠæіŠ“тŠ²ŠµŃ€Š“іть щŠ¾ Š²Šø Š±Š°Š¶Š°Ń”Ń‚Šµ Š²ŠøŠ“Š°Š»ŠøтŠø ŠæŠ¾Š“ŠŗŠ°ŃŃ‚ \"%1$s\" і Š’Š”Š† Š¹Š¾Š³Š¾ ŠµŠæіŠ·Š¾Š“Šø (рŠ°Š·Š¾Š¼ Š· Š·Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½ŠøŠ¼Šø).</string>
+ <string name="feed_remover_msg">Š’ŠøŠ“Š°Š»ŠµŠ½Š½Ń ŠæŠ¾Š“ŠŗŠ°ŃŃ‚Š°</string>
+ <string name="load_complete_feed">ŠžŠ½Š¾Š²ŠøтŠø Š²ŠµŃŃŒ ŠæŠ¾Š“ŠŗŠ°ŃŃ‚</string>
<string name="hide_episodes_title">ŠŸŃ€ŠøхŠ¾Š²Š°Ń‚Šø ŠµŠæіŠ·Š¾Š“Šø</string>
- <string name="episode_actions">Š—Š°ŃŃ‚Š¾ŃŃƒŠ²Š°Ń‚Šø Š“ії</string>
- <string name="hide_unplayed_episodes_label">ŠŠµŠ³Ń€Š°Š½Ń–</string>
- <string name="hide_paused_episodes_label">ŠŠ° ŠæŠ°ŃƒŠ·Ń–</string>
- <string name="hide_played_episodes_label">Š“Ń€Š°Š½Ń–</string>
+ <string name="batch_edit">Š“Ń€ŃƒŠæŠ¾Š²Šµ рŠµŠ“Š°Š³ŃƒŠ²Š°Š½Š½Ń</string>
+ <string name="select_all_above">Š’ŠøŠ±Ń€Š°Ń‚Šø Š²ŃŠµ Š²ŠøщŠµ</string>
+ <string name="select_all_below">Š’ŠøŠ±Ń€Š°Ń‚Šø Š²ŃŠµ Š½ŠøŠ¶Ń‡Šµ</string>
+ <string name="hide_unplayed_episodes_label">ŠŠµŠ²Ń–Š“тŠ²Š¾Ń€ŠµŠ½Ń–</string>
+ <string name="hide_paused_episodes_label">ŠŸŃ€ŠøŠ·ŃƒŠæŠøŠ½ŠµŠ½Ń–</string>
+ <string name="hide_played_episodes_label">Š’Ń–Š“тŠ²Š¾Ń€ŠµŠ½Ń–</string>
<string name="hide_queued_episodes_label">Š’ чŠµŃ€Š·Ń–</string>
<string name="hide_not_queued_episodes_label">ŠŠµ Š² чŠµŃ€Š·Ń–</string>
<string name="hide_downloaded_episodes_label">Š—Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½Ń–</string>
<string name="hide_not_downloaded_episodes_label">ŠŠµ Š·Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½Ń–</string>
- <string name="hide_has_media_label">Š†Š· Š·Š²ŃƒŠŗŠ¾Š¼ Š°Š±Š¾ Š²Ń–Š“ŠµŠ¾</string>
+ <string name="hide_has_media_label">Š—Ń– Š·Š²ŃƒŠŗŠ¾Š¼ Š°Š±Š¾ Š²Ń–Š“ŠµŠ¾</string>
+ <string name="hide_is_favorite_label">Š’ уŠ»ŃŽŠ±Š»ŠµŠ½Šøх</string>
<string name="filtered_label">Š¤Ń–Š»ŃŒŃ‚Ń€Š¾Š²Š°Š½Ń–</string>
<string name="refresh_failed_msg">{fa-exclamation-circle} ŠžŃŃ‚Š°Š½Š½Ń” Š¾Š½Š¾Š²Š»ŠµŠ½Š½Ń Š±ŃƒŠ»Š¾ Š½ŠµŠ²Š“Š°Š»ŠøŠ¼</string>
<string name="open_podcast">Š’Ń–Š“ŠŗрŠøтŠø ŠæŠ¾Š“ŠŗŠ°ŃŃ‚</string>
@@ -146,10 +158,11 @@
<string name="delete_label">Š’ŠøŠ“Š°Š»ŠøтŠø</string>
<string name="delete_failed">Š¤Š°Š¹Š» Š½Šµ Š²ŠøŠ“Š°Š»ŠµŠ½Š¾. ŠœŠ¾Š¶Š»ŠøŠ²Š¾, ŠæŠµŃ€ŠµŠ·Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½Š½Ń ŠæрŠøстрŠ¾ŃŽ Š“Š¾ŠæŠ¾Š¼Š¾Š¶Šµ.</string>
<string name="remove_episode_lable">Š’ŠøŠ“Š°Š»ŠøтŠø ŠµŠæіŠ·Š¾Š“</string>
+ <string name="mark_as_seen_label">ŠŸŠ¾Š·Š½Š°Ń‡ŠøтŠø яŠŗ ŠæŠµŃ€ŠµŠ³Š»ŃŠ½ŃƒŃ‚ŠøŠ¹</string>
<string name="marked_as_seen_label">ŠŸŠ¾Š·Š½Š°Ń‡ŠµŠ½Š¾ яŠŗ ŠæŠµŃ€ŠµŠ³Š»ŃŠ½ŃƒŃ‚ŠøŠ¹</string>
- <string name="mark_read_label">ŠŸŠ¾Š·Š½Š°Ń‡ŠøтŠø яŠŗ Š³Ń€Š°Š½ŠøŠ¹</string>
- <string name="marked_as_read_label">ŠŸŠ¾Š·Š½Š°Ń‡ŠµŠ½Š¾ яŠŗ Š³Ń€Š°Š½ŠøŠ¹</string>
- <string name="mark_unread_label">ŠŸŠ¾Š·Š½Š°Ń‡ŠøтŠø яŠŗ Š½Šµ Š³Ń€Š°Š½ŠøŠ¹</string>
+ <string name="mark_read_label">ŠŸŠ¾Š·Š½Š°Ń‡ŠøтŠø яŠŗ Š²Ń–Š“тŠ²Š¾Ń€ŠµŠ½ŠøŠ¹</string>
+ <string name="marked_as_read_label">ŠŸŠ¾Š·Š½Š°Ń‡ŠµŠ½Š¾ яŠŗ Š²Ń–Š“тŠ²Š¾Ń€ŠµŠ½ŠøŠ¹</string>
+ <string name="mark_unread_label">ŠŸŠ¾Š·Š½Š°Ń‡ŠøтŠø яŠŗ Š½Šµ Š²Ń–Š“тŠ²Š¾Ń€ŠµŠ½ŠøŠ¹</string>
<string name="add_to_queue_label">Š”Š¾Š“Š°Ń‚Šø Š“Š¾ чŠµŃ€Š³Šø</string>
<string name="added_to_queue_label">Š”Š¾Š“Š°Š½Š¾ Š“Š¾ чŠµŃ€Š³Šø</string>
<string name="remove_from_queue_label">Š’ŠøŠ“Š°Š»ŠøтŠø Š· чŠµŃ€Š³Šø</string>
@@ -162,24 +175,26 @@
<string name="skip_episode_label">ŠŸŃ€Š¾ŠæустŠøтŠø ŠµŠæіŠ·Š¾Š“</string>
<string name="activate_auto_download">Š’ŠŗŠ»ŃŽŃ‡ŠøтŠø Š°Š²Ń‚Š¾Š·Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½Š½Ń</string>
<string name="deactivate_auto_download">Š’ŠøŠŗŠ»ŃŽŃ‡ŠøтŠø Š°Š²Ń‚Š¾Š·Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½Š½Ń</string>
- <string name="reset_position">Š’ŠµŃ€Š½ŃƒŃ‚Šø ŠæŠ¾Ń‡Š°Ń‚ŠŗŠ¾Š²Ńƒ ŠæŠ¾Š·Šøцію Š²Ń–Š“тŠ²Š¾Ń€ŠµŠ½Š½Ń</string>
+ <string name="reset_position">Š”ŠŗŠøŠ½ŃƒŃ‚Šø ŠæŠ¾Š·Šøцію Š²Ń–Š“тŠ²Š¾Ń€ŠµŠ½Š½Ń</string>
<string name="removed_item">Š’ŠøŠ“Š°Š»ŠµŠ½Š¾</string>
<!--Download messages and labels-->
<string name="download_successful">усŠæішŠ½Š¾</string>
<string name="download_failed">Š· ŠæŠ¾Š¼ŠøŠ»ŠŗŠ°Š¼Šø</string>
<string name="download_pending">ŠŸŠ¾Ń‚ріŠ±Š½Š¾ Š·Š°Š²Š°Š½Ń‚Š°Š¶ŠøтŠø</string>
<string name="download_running">Š—Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½Š½Ń</string>
- <string name="download_error_device_not_found">ŠŠµŠ¼Š°Ń” ŠŗуŠ“Šø Š·Š±ŠµŃ€Ń–Š³Š°Ń‚Šø</string>
- <string name="download_error_insufficient_space">ŠœŠ°Š»Š¾ Š¼Ń–ŃŃ†Ń</string>
+ <string name="download_error_details">Š”Š¾ŠŗŠ»Š°Š“Š½Š¾</string>
+ <string name="download_error_details_message">%1$s \n\nŠŸŠ¾ŃŠøŠ»Š°Š½Š½Ń Š½Š° фŠ°Š¹Š»:\n%2$s</string>
+ <string name="download_error_device_not_found">ŠŸŃ€ŠøстріŠ¹ Š·Š±ŠµŃ€Ń–Š³Š°Š½Š½Ń Š“Š°Š½Šøх Š½Šµ Š·Š½Š°Š¹Š“ŠµŠ½Š¾</string>
+ <string name="download_error_insufficient_space">ŠŠµŠ“Š¾ŃŃ‚Š°Ń‚Š½Ń–Š¹ ŠæрŠ¾ŃŃ‚Ń–Ń€ Š“Š»Ń Š·Š±ŠµŃ€Ń–Š³Š°Š½Š½Ń</string>
<string name="download_error_file_error">ŠŸŠ¾Š¼ŠøŠ»ŠŗŠ° фŠ°Š¹Š»Ńƒ</string>
<string name="download_error_http_data_error">ŠŸŠ¾Š¼ŠøŠ»ŠŗŠ° HTTP</string>
<string name="download_error_error_unknown">Š©Š¾ŃŃŒ трŠ°ŠæŠøŠ»Š¾ŃŃŒ</string>
<string name="download_error_parser_exception">ŠŸŠ¾Š¼ŠøŠ»ŠŗŠ° ŠæŠ°Ń€ŃŠµŃ€Š°</string>
- <string name="download_error_unsupported_type">ŠŠµ ŠæіŠ“трŠøŠ¼ŃƒŃŽ ŠŗŠ°Š½Š°Š»Šø тŠ°ŠŗŠ¾Š³Š¾ тŠøŠæŠ°</string>
+ <string name="download_error_unsupported_type">ŠŠµŠæіŠ“трŠøŠ¼ŃƒŠ²Š°Š½ŠøŠ¹ тŠøŠæ ŠŗŠ°Š½Š°Š»Ńƒ</string>
<string name="download_error_connection_error">ŠŸŠ¾Š¼ŠøŠ»ŠŗŠ° Š·\'єŠ“Š½Š°Š½Š½Ń</string>
- <string name="download_error_unknown_host">ŠŠµŠ²Ń–Š“Š¾Š¼ŠøŠ¹ host</string>
- <string name="download_error_unauthorized">ŠŸŠ¾Š¼ŠøŠ»ŠŗŠ° Š°Š²Ń‚ŠµŠ½Ń‚ŠøфіŠŗŠ°Ń†Ń–Ń—</string>
- <string name="download_error_file_type_type">ŠŸŠ¾Š¼ŠøŠ»ŠŗŠ° тŠøŠæŠ° фŠ°Š¹Š»Š°</string>
+ <string name="download_error_unknown_host">ŠŠµŠ²Ń–Š“Š¾Š¼ŠøŠ¹ хŠ¾ŃŃ‚</string>
+ <string name="download_error_unauthorized">ŠŸŠ¾Š¼ŠøŠ»ŠŗŠ° Š°ŃƒŃ‚ŠµŠ½Ń‚ŠøфіŠŗŠ°Ń†Ń–Ń—</string>
+ <string name="download_error_file_type_type">ŠŸŠ¾Š¼ŠøŠ»ŠŗŠ° тŠøŠæу фŠ°Š¹Š»Ńƒ</string>
<string name="download_error_forbidden">Š—Š°Š±Š¾Ń€Š¾Š½ŠµŠ½Š¾</string>
<string name="cancel_all_downloads_label">Š”ŠŗŠ°ŃŃƒŠ²Š°Ń‚Šø Š²ŃŃ– Š·Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½Š½Ń</string>
<string name="download_canceled_msg">Š—Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½Š½Ń сŠŗŠ°ŃŠ¾Š²Š°Š½Šµ</string>
@@ -193,21 +208,22 @@
<plurals name="downloads_left">
<item quantity="one">%d Š·Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½Š½Ń Š·Š°Š»ŠøшŠøŠ»Š¾ŃŃŒ</item>
<item quantity="few">%d Š·Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½Š½Ń Š·Š°Š»ŠøшŠøŠ»Š¾ŃŃŒ</item>
+ <item quantity="many">%d Š·Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½ŃŒ Š·Š°Š»ŠøшŠøŠ»Š¾ŃŃŒ</item>
<item quantity="other">%d Š·Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½ŃŒ Š·Š°Š»ŠøшŠøŠ»Š¾ŃŃŒ</item>
</plurals>
<string name="downloads_processing">ŠžŠ±Ń€Š¾Š±ŠŗŠ° Š·Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½Š¾Š³Š¾</string>
<string name="download_notification_title">Š—Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½Š½Ń Š“Š°Š½Šøх ŠæŠ¾Š“ŠŗŠ°ŃŃ‚Ńƒ</string>
<string name="download_report_content">Š—Š°Š²Š°Š½Ń‚Š°Š¶ŠøŠ»Š¾ŃŃŒ %1$d усŠæішŠ½Š¾, %2$d Š· ŠæŠ¾Š¼ŠøŠ»ŠŗŠ°Š¼Šø</string>
- <string name="download_log_title_unknown">ŠŠµŠ²Ń–Š“Š¾Š¼Š° Š½Š°Š·Š²Š°</string>
+ <string name="download_log_title_unknown">ŠŠµŠ²Ń–Š“Š¾Š¼ŠøŠ¹ Š·Š°Š³Š¾Š»Š¾Š²Š¾Šŗ</string>
<string name="download_type_feed">ŠšŠ°Š½Š°Š»</string>
<string name="download_type_media">Š¤Š°Š¹Š» Š· Š¼ŠµŠ“іŠ°</string>
<string name="download_type_image">Š—Š¾Š±Ń€Š°Š¶ŠµŠ½Š½Ń</string>
<string name="download_request_error_dialog_message_prefix">ŠŸŠ¾Š¼ŠøŠ»ŠŗŠ° ŠæрŠø Š·Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½Ń– фŠ°Š¹Š»Ńƒ:\u0020</string>
<string name="authentication_notification_title">ŠŸŠ¾Ń‚ріŠ±Š½Š° Š°Š²Ń‚ŠµŠ½Ń‚ŠøфіŠŗŠ°Ń†Ń–я</string>
<string name="authentication_notification_msg">Š”Š»Ń Š“Š¾ŃŃ‚ŃƒŠæŠ° Š“Š¾ цьŠ¾Š³Š¾ рŠµŃŃƒŃ€ŃŠ° ŠæŠ¾Ń‚ріŠ±Š½Ń– іŠ¼\'я тŠ° ŠæŠ°Ń€Š¾Š»ŃŒ </string>
- <string name="confirm_mobile_download_dialog_title">ŠŸŃ–Š“тŠ²ŠµŃ€Š“Š¶ŠµŠ½Š½Ń Š¼Š¾Š±Ń–Š»ŃŒŠ½Šøх Š·Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½ŃŒ</string>
- <string name="confirm_mobile_download_dialog_message_not_in_queue">Š—Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½Š½Ń чŠµŃ€ŠµŠ· Š¼Š¾Š±Ń–Š»ŃŒŠ½ŠøŠ¹ Š·Š²\'яŠ·Š¾Šŗ Š²ŠøŠ¼ŠŗŠ½ŠµŠ½Š¾ Š² Š½Š°ŃŃ‚Ń€Š¾Š¹ŠŗŠ°Ń….\n\nŠ£Š²Ń–Š¼ŠŗŠ½ŃƒŃ‚Šø тŠøŠ¼Ń‡Š°ŃŠ¾Š²Š¾ Š°Š±Š¾ тіŠ»ŃŒŠŗŠø Š“Š¾Š“Š°Ń‚Šø Š“Š¾ чŠµŃ€Š³Šø?\n\n<small>Š’Š°Ńˆ Š²ŠøŠ±Ń–Ń€ Š±ŃƒŠ“Šµ Š·Š°ŠæŠ°Š¼\'ятŠ¾Š²Š°Š½Š¾ Š½Š° 10 хŠ²ŠøŠ»ŠøŠ½.</small></string>
- <string name="confirm_mobile_download_dialog_message">Š—Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½Š½Ń чŠµŃ€ŠµŠ· Š¼Š¾Š±Ń–Š»ŃŒŠ½ŠøŠ¹ Š·Š²\'яŠ·Š¾Šŗ Š²ŠøŠ¼ŠŗŠ½ŠµŠ½Š¾ Š² Š½Š°ŃŃ‚Ń€Š¾Š¹ŠŗŠ°Ń….\n\nŠ£Š²Ń–Š¼ŠŗŠ½ŃƒŃ‚Šø тŠøŠ¼Ń‡Š°ŃŠ¾Š²Š¾?\n\n<small>Š’Š°Ńˆ Š²ŠøŠ±Ń–Ń€ Š±ŃƒŠ“Šµ Š·Š°ŠæŠ°Š¼\'ятŠ¾Š²Š°Š½Š¾ Š½Š° 10 хŠ²ŠøŠ»ŠøŠ½.</small></string>
+ <string name="confirm_mobile_download_dialog_title">ŠŸŃ–Š“тŠ²ŠµŃ€Š“Š¶ŠµŠ½Š½Ń Š·Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½ŃŒ чŠµŃ€ŠµŠ· Š¼Š¾Š±Ń–Š»ŃŒŠ½Ń– Š¼ŠµŃ€ŠµŠ¶Ń–</string>
+ <string name="confirm_mobile_download_dialog_message_not_in_queue">Š—Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½Š½Ń чŠµŃ€ŠµŠ· Š¼Š¾Š±Ń–Š»ŃŒŠ½Ń– Š¼ŠµŃ€ŠµŠ¶Ń– Š²ŠøŠ¼ŠŗŠ½ŠµŠ½Š¾ Š² Š½Š°ŃŃ‚Ń€Š¾Š¹ŠŗŠ°Ń….\n\nŠ’ŠøŠ±Ń€Š°Ń‚Šø Š“Š¾Š“Š°Š²Š°Š½Š½Ń ŠµŠæіŠ·Š¾Š“у Š“Š¾ чŠµŃ€Š³Šø чŠø тŠøŠ¼Ń‡Š°ŃŠ¾Š²Šµ Š·Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½Š½Ń?\n\n<small>Š’Š°Ńˆ Š²ŠøŠ±Ń–Ń€ Š·Š°ŠæŠ°Š¼\'ятŠ°Ń”Ń‚ŃŒŃŃ Š½Š° 10 хŠ²ŠøŠ»ŠøŠ½.</small></string>
+ <string name="confirm_mobile_download_dialog_message">Š—Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½Š½Ń чŠµŃ€ŠµŠ· Š¼Š¾Š±Ń–Š»ŃŒŠ½Ń– Š¼ŠµŃ€ŠµŠ¶Ń– Š²ŠøŠ¼ŠŗŠ½ŠµŠ½Š¾ Š² Š½Š°ŃŃ‚Ń€Š¾Š¹ŠŗŠ°Ń….\n\nŠ£Š²Ń–Š¼ŠŗŠ½ŃƒŃ‚Šø тŠøŠ¼Ń‡Š°ŃŠ¾Š²Š¾?\n\n<small>Š’Š°Ńˆ Š²ŠøŠ±Ń–Ń€ Š·Š°ŠæŠ°Š¼\'ятŠ°Ń”Ń‚ŃŒŃŃ Š½Š° 10 хŠ²ŠøŠ»ŠøŠ½.</small></string>
<string name="confirm_mobile_download_dialog_only_add_to_queue">Š›ŠøшŠµ Š“Š¾Š“Š°Ń‚Šø Š“Š¾ чŠµŃ€Š³Šø</string>
<string name="confirm_mobile_download_dialog_enable_temporarily">Š£Š²Ń–Š¼ŠŗŠ½ŃƒŃ‚Šø тŠøŠ¼Ń‡Š°ŃŠ¾Š²Š¾</string>
<!--Mediaplayer messages-->
@@ -220,13 +236,14 @@
<string name="playback_error_unknown">ŠŠµŠ²Ń–Š“Š¾Š¼Š° ŠæŠ¾Š¼ŠøŠ»ŠŗŠ°</string>
<string name="no_media_playing_label">ŠŠµŠ¼Š°Ń” щŠ¾ Š³Ń€Š°Ń‚Šø</string>
<string name="player_buffering_msg">Š‘ŃƒŃ„ŠµŃ€Ń–Š·ŃƒŃŽ</string>
+ <string name="player_go_to_picture_in_picture">Š ŠµŠ¶ŠøŠ¼ Š·Š¾Š±Ń€Š°Š¶ŠµŠ½Š½Ń Š² Š·Š¾Š±Ń€Š°Š¶ŠµŠ½Š½Ń–</string>
<string name="playbackservice_notification_title">Š“Ń€Š°Ń” ŠæŠ¾Š“ŠŗŠ°ŃŃ‚</string>
<string name="unknown_media_key">AntennaPod - ŠŠµŠ²Ń–Š“Š¾Š¼ŠøŠ¹ Š¼ŠµŠ“іŠ° ŠŗŠ»ŃŽŃ‡: %1$d</string>
<!--Queue operations-->
<string name="lock_queue">Š—Š°Š±Š»Š¾ŠŗуŠ²Š°Ń‚Šø чŠµŃ€Š³Ńƒ</string>
<string name="unlock_queue">Š Š¾Š·Š±Š»Š¾ŠŗуŠ²Š°Ń‚Šø чŠµŃ€Š³Ńƒ</string>
<string name="queue_locked">Š§ŠµŃ€Š³Ńƒ Š·Š°Š±Š»Š¾ŠŗŠ¾Š²Š°Š½Š¾</string>
- <string name="queue_unlocked">Š§ŠµŃ€Š³Ńƒ рŠ°Š·Š±Š»Š¾ŠŗŠ¾Š²Š°Š½Š¾</string>
+ <string name="queue_unlocked">Š§ŠµŃ€Š³Ńƒ рŠ¾Š·Š±Š»Š¾ŠŗŠ¾Š²Š°Š½Š¾</string>
<string name="clear_queue_label">ŠžŃ‡ŠøстŠøтŠø чŠµŃ€Š³Ńƒ</string>
<string name="undo">Š”ŠŗŠ°ŃŃƒŠ²Š°Ń‚Šø</string>
<string name="removed_from_queue">Š’ŠøŠ“Š°Š»ŠµŠ½Š¾</string>
@@ -235,8 +252,10 @@
<string name="sort">Š’ŠæŠ¾Ń€ŃŠ“ŠŗуŠ²Š°Ń‚Šø</string>
<string name="date">Š—Š° Š“Š°Ń‚Š¾ŃŽ</string>
<string name="duration">Š—Š° трŠøŠ²Š°Š»Ń–стю</string>
- <string name="episode_title">ŠŠ°Š·Š²Š° ŠµŠæіŠ·Š¾Š“Š°</string>
- <string name="feed_title">ŠŠ°Š·Š²Š° ŠŗŠ°Š½Š°Š»Š°</string>
+ <string name="episode_title">ŠŠ°Š·Š²Š° ŠµŠæіŠ·Š¾Š“у</string>
+ <string name="feed_title">ŠŠ°Š·Š²Š° ŠæŠ¾Š“ŠŗŠ°ŃŃ‚Š°</string>
+ <string name="random">Š’ŠøŠæŠ°Š“ŠŗŠ¾Š²Š¾</string>
+ <string name="smart_shuffle">Š Š¾Š·ŃƒŠ¼Š½Šµ ŠæŠµŃ€ŠµŠ¼Ń–ŃˆŃƒŠ²Š°Š½Š½Ń</string>
<string name="ascending">Š—Š° Š·Ń€Š¾ŃŃ‚Š°Š½Š½ŃŠ¼</string>
<string name="descending">Š—Š° сŠæŠ°Š“Š°Š½Š½ŃŠ¼</string>
<string name="clear_queue_confirmation_msg">Š‘ŃƒŠ“ь Š»Š°ŃŠŗŠ°, ŠæіŠ“тŠ²ŠµŃ€Š“іть щŠ¾ Š²Šø Š±Š°Š¶Š°Ń”Ń‚Šµ Š²ŠøŠ»ŃƒŃ‡ŠøтŠø Š²ŃŃ– ŠµŠæіŠ·Š¾Š“Šø Š· чŠµŃ€Š³Šø.</string>
@@ -274,7 +293,7 @@
<string name="enable_sonic">Š’ŠŗŠ»ŃŽŃ‡ŠøтŠø Sonic</string>
<!--Empty list labels-->
<string name="no_items_label">ŠŃ–чŠ¾Š³Š¾ Š² цьŠ¾Š¼Ńƒ сŠæŠøсŠŗу</string>
- <string name="no_feeds_label">ŠŠµŠ¼Š°Ń” ŠæіŠ“ŠæŠøсŠ°Š½Šøх ŠŗŠ°Š½Š°Š»Ń–Š² </string>
+ <string name="no_feeds_label">Š’Šø щŠµ Š½Šµ ŠæіŠ“ŠæŠøсŠ°Š»Šøся Š½Š° Š¶Š¾Š“Š½Ń– ŠæŠ¾Š“ŠŗŠ°ŃŃ‚Šø.</string>
<string name="no_chapters_label">Š’ цьŠ¾Š¼Ńƒ ŠµŠæіŠ·Š¾Š“і Š½ŠµŠ¼Š°Ń” рŠ¾Š·Š“іŠ»Ń–Š².</string>
<string name="no_shownotes_label">Š”Š¾ цьŠ¾Š³Š¾ ŠµŠæіŠ·Š¾Š“Š° Š½ŠµŠ¼Š°Ń” Š½Š¾Ń‚Š°Ń‚Š¾Šŗ.</string>
<!--Preferences-->
@@ -283,40 +302,49 @@
<string name="other_pref">Š†Š½ŃˆŠµ</string>
<string name="about_pref">ŠŸŃ€Š¾ ŠæрŠ¾Š³Ń€Š°Š¼Ńƒ</string>
<string name="queue_label">Š§ŠµŃ€Š³Š°</string>
- <string name="services_label">Š”ŠµŃ€Š²Ń–сŠø</string>
+ <string name="integrations_label">Š†Š½Ń‚ŠµŠ³Ń€Š°Ń†Ń–Ń—</string>
<string name="flattr_label">Flattr</string>
- <string name="pref_episode_cleanup_title">Š§ŠøщŠµŠ½Š½Ń ŠµŠæіŠ·Š¾Š“іŠ²</string>
+ <string name="flattr_summary">Š”ŠµŃ€Š²Ń–с Š¼Ń–ŠŗрŠ¾ŠæŠ»Š°Ń‚ŠµŠ¶Ń–Š²</string>
+ <string name="automation">ŠŠ²Ń‚Š¾Š¼Š°Ń‚ŠøŠ·Š°Ń†Ń–я</string>
+ <string name="download_pref_details">Š”ŠµŃ‚Š°Š»ŃŒŠ½Š¾</string>
+ <string name="import_export_pref">Š†Š¼ŠæŠ¾Ń€Ń‚/Š•ŠŗсŠæŠ¾Ń€Ń‚</string>
+ <string name="appearance">Š’ŠøŠ³Š»ŃŠ“</string>
+ <string name="external_elements">Š—Š¾Š²Š½Ń–ŃˆŠ½Ń– ŠµŠ»ŠµŠ¼ŠµŠ½Ń‚Šø</string>
+ <string name="interruptions">Š¢ŠøŠ¼Ń‡Š°ŃŠ¾Š²Ń– ŠæŠ°ŃƒŠ·Šø</string>
+ <string name="buttons">ŠšŠ½Š¾ŠæŠŗŠø ŠŗŠµŃ€ŃƒŠ²Š°Š½Š½Ń Š²Ń–Š“тŠ²Š¾Ń€ŠµŠ½Š½ŃŠ¼</string>
+ <string name="media_player">ŠœŠµŠ“іŠ° ŠæрŠ¾Š³Ń€Š°Š²Š°Ń‡</string>
+ <string name="pref_episode_cleanup_title">ŠžŃ‡ŠøщŠµŠ½Š½Ń ŠµŠæіŠ·Š¾Š“іŠ²</string>
<string name="pref_episode_cleanup_summary">Š•ŠæіŠ·Š¾Š“Šø щŠ¾ Š½Šµ Š·Š½Š°Ń…Š¾Š“яться Š² чŠµŃ€Š·Ń– тŠ° Š½Šµ ŠæŠ¾Š¼Ń–чŠµŠ½Ń– яŠŗ уŠ»ŃŽŠ±Š»ŠµŠ½Ń– Š¼Š¾Š¶ŃƒŃ‚ŃŒ Š±ŃƒŃ‚Šø Š²ŠøŠ“Š°Š»ŠµŠ½Ń– яŠŗщŠ¾ ŠŠ²Ń‚Š¾Š·Š°Š²Š°Š½Ń‚Š°Š¶ŃƒŠ²Š°Ń‡ ŠæŠ¾Ń‚Ń€ŠµŠ±ŃƒŠ²Š°Ń‚ŠøŠ¼Šµ Š¼Ń–сцŠµ Š“Š»Ń Š½Š¾Š²Šøх ŠµŠæіŠ·Š¾Š“іŠ².</string>
- <string name="pref_pauseOnDisconnect_sum">Š—ŃƒŠæŠøŠ½ŃŃ‚Šøсь ŠŗŠ¾Š»Šø Š½Š°Š²ŃƒŃˆŠ½ŠøŠŗŠø Š°Š±Š¾ Š±Š»ŃŽŃ‚ŃƒŠ· Š²Ń–Š“ā€™Ń”Š“Š½Š°Š½Š¾</string>
+ <string name="pref_pauseOnDisconnect_sum">Š—ŃƒŠæŠøŠ½ŃŃ‚Šø Š²Ń–Š“тŠ²Š¾Ń€ŠµŠ½Š½Ń ŠŗŠ¾Š»Šø Š½Š°Š²ŃƒŃˆŠ½ŠøŠŗŠø Š°Š±Š¾ Š±Š»ŃŽŃ‚ŃƒŠ· Š²Ń–Š“ā€™Ń”Š“Š½Š°Š½Š¾</string>
<string name="pref_unpauseOnHeadsetReconnect_sum">ŠŸŠ¾Š½Š¾Š²ŠøтŠø Š²Ń–Š“тŠ²Š¾Ń€ŠµŠ½Š½Ń ŠŗŠ¾Š»Šø Š½Š°Š²ŃƒŃˆŠ½ŠøŠŗŠø ŠæŠ¾Š²Ń‚Š¾Ń€Š½Š¾ ŠæіŠ“ā€™Ń”Š“Š½Š°Š½Š¾</string>
<string name="pref_unpauseOnBluetoothReconnect_sum">ŠŸŠ¾Š½Š¾Š²ŠøтŠø Š²Ń–Š“тŠ²Š¾Ń€ŠµŠ½Š½Ń ŠŗŠ¾Š»Šø Š±Š»ŃŽŃ‚ŃƒŠ· ŠæŠ¾Š²Ń‚Š¾Ń€Š½Š¾ ŠæіŠ“ā€™Ń”Š“Š½Š°Š½Š¾</string>
<string name="pref_hardwareForwardButtonSkips_title">ŠšŠ½Š¾ŠæŠŗŠ° ŠæŠµŃ€ŠµŠ¼Š¾Ń‚ŠŗŠø ŠæрŠ¾ŠæусŠŗŠ°Ń”</string>
- <string name="pref_hardwareForwardButtonSkips_sum">ŠŸŃ€Šø Š½Š°Ń‚ŠøсŠŗŠ°Š½Š½Ń– Š°ŠæŠ°Ń€Š°Ń‚Š½Š¾Ń— ŠŗŠ½Š¾ŠæŠŗŠø ŠæŠµŃ€ŠµŠ¼Š¾Ń‚ŠŗŠø ŠæŠµŃ€ŠµŠ¹Ń‚Šø Š“Š¾ Š½Š°ŃŃ‚ŃƒŠæŠ½Š¾Š³Š¾ ŠµŠæіŠ·Š¾Š“Š° Š·Š°Š¼Ń–ŃŃ‚ŃŒ ŠæŠµŃ€ŠµŠ¼Š¾Ń‚ŠŗŠø.</string>
+ <string name="pref_hardwareForwardButtonSkips_sum">ŠŸŃ€Šø Š½Š°Ń‚ŠøсŠŗŠ°Š½Š½Ń– ŠŗŠ½Š¾ŠæŠŗŠø Š²ŠæŠµŃ€ŠµŠ“ Š½Š° Š±Š»ŃŽŃ‚ŃƒŃ ŠæрŠøстрŠ¾Ń—, ŠæŠµŃ€ŠµŃ…Š¾Š“ьтŠµ Š“Š¾ Š½Š°ŃŃ‚ŃƒŠæŠ½Š¾Š³Š¾ ŠµŠæіŠ·Š¾Š“у Š·Š°Š¼Ń–ŃŃ‚ŃŒ шŠ²ŠøŠ“ŠŗŠ¾Š³Š¾ ŠæŠµŃ€ŠµŠ¼Š¾Ń‚ŃƒŠ²Š°Š½Š½Ń</string>
<string name="pref_hardwarePreviousButtonRestarts_title">ŠšŠ½Š¾ŠæŠŗŠ° \"Š½Š°Š·Š°Š“\" ŠæŠ¾Š²ŠµŃ€Ń‚Š°Ń” Š“Š¾ ŠæŠ¾Ń‡Š°Ń‚Šŗу</string>
<string name="pref_hardwarePreviousButtonRestarts_sum">ŠŸŃ€Šø Š½Š°Ń‚ŠøсŠŗŠ°Š½Š½Ń– Š°ŠæŠ°Ń€Š°Ń‚Š½Š¾Ń— ŠŗŠ½Š¾ŠæŠŗŠø \"Š½Š°Š·Š°Š“\", Š·Š°Š¼Ń–ŃŃ‚ŃŒ ŠæŠµŃ€ŠµŠ¼Š¾Ń‚ŠŗŠø, рŠ¾Š·ŠæŠ¾Ń‡Š°Ń‚Šø ŠæрŠ¾Š³Ń€Š°Š²Š°Š½Š½Ń ŠæŠ¾Ń‚Š¾Ń‡Š½Š¾Š³Š¾ ŠµŠæіŠ·Š¾Š“Š° Š·Š°Š½Š¾Š²Š¾</string>
<string name="pref_followQueue_sum">ŠŸŠµŃ€ŠµŠ¹Ń‚Šø Š“Š¾ Š½Š°ŃŃ‚ŃƒŠæŠ½Š¾Š³Š¾ ŠµŠæіŠ·Š¾Š“Š° Š² чŠµŃ€Š·Ń– ŠŗŠ¾Š»Šø ŠæŠ¾Ń‚Š¾Ń‡Š½ŠøŠ¹ Š·Š°ŠŗіŠ½Ń‡ŠµŠ½Š¾</string>
<string name="pref_auto_delete_sum">Š’ŠøŠ“Š°Š»ŠøтŠø ŠµŠæіŠ·Š¾Š“ ŠæісŠ»Ń ŠæŠ¾Š²Š½Š¾Š³Š¾ Š²Ń–Š“тŠ²Š¾Ń€ŠµŠ½Š½Ń</string>
<string name="pref_auto_delete_title">ŠŠ²Ń‚Š¾Š²ŠøŠ“Š°Š»ŠµŠ½Š½Ń</string>
- <string name="pref_smart_mark_as_played_sum">ŠŸŠ¾Š·Š½Š°Ń‡ŠøтŠø ŠµŠæіŠ·Š¾Š“Šø яŠŗ Š³Ń€Š°Š½Ń– Š½Š°Š²Ń–Ń‚ŃŒ яŠŗщŠ¾ Š·Š°Š»ŠøшŠøŠ»Š¾ŃŃŒ Š¼ŠµŠ½Ńˆ Š½Ń–Š¶ Š·Š°Š·Š½Š°Ń‡ŠµŠ½Šµ чŠøсŠ»Š¾ сŠµŠŗуŠ½Š“ Š“Š¾ ŠŗіŠ½Ń†Ń Š²Ń–Š“тŠ²Š¾Ń€ŠµŠ½Š½Ń</string>
+ <string name="pref_smart_mark_as_played_sum">ŠŸŠ¾Š·Š½Š°Ń‡ŠøтŠø ŠµŠæіŠ·Š¾Š“Šø яŠŗ Š²Ń–Š“тŠ²Š¾Ń€ŠµŠ½Ń–, Š½Š°Š²Ń–Ń‚ŃŒ яŠŗщŠ¾ Š·Š°Š»ŠøшŠøŠ»Š¾ŃŃŒ Š¼ŠµŠ½Ńˆ Š½Ń–Š¶ Š·Š°Š·Š½Š°Ń‡ŠµŠ½Šµ чŠøсŠ»Š¾ сŠµŠŗуŠ½Š“ Š“Š¾ ŠŗіŠ½Ń†Ń Š²Ń–Š“тŠ²Š¾Ń€ŠµŠ½Š½Ń</string>
<string name="pref_smart_mark_as_played_title">Š Š¾Š·ŃƒŠ¼Š½Šµ ŠæŠ¾Š·Š½Š°Ń‡ŠµŠ½Š½Ń ŠæрŠ¾ŃŠ»ŃƒŃ…Š°Š½Šøх ŠµŠæіŠ·Š¾Š“іŠ²</string>
- <string name="pref_skip_keeps_episodes_sum">Š—Š±ŠµŃ€Ń–Š³Š°Ń‚Šø ŠµŠæіŠ·Š¾Š“Šø щŠ¾ ŠæрŠ¾ŠæущŠµŠ½Ń– ŠæрŠø ŠæрŠ¾Š³Ń€Š°Š²Š°Š½Š½Ń– </string>
- <string name="pref_skip_keeps_episodes_title">Š—Š±ŠµŃ€Ń–Š³Š°Ń‚Šø ŠæрŠ¾ŠæущŠµŠ½Ń– ŠæрŠø ŠæрŠ¾Š³Ń€Š°Š²Š°Š½Š½Ń– ŠµŠæіŠ·Š¾Š“Šø </string>
+ <string name="pref_skip_keeps_episodes_sum">Š—Š±ŠµŃ€Ń–Š³Š°Ń‚Šø ŠæрŠ¾ŠæущŠµŠ½Ń– ŠµŠæіŠ·Š¾Š“Šø ŠæрŠø ŠæрŠ¾Š³Ń€Š°Š²Š°Š½Š½Ń– </string>
+ <string name="pref_skip_keeps_episodes_title">Š—Š±ŠµŃ€Ń–Š³Š°Ń‚Šø ŠæрŠ¾ŠæущŠµŠ½Ń– ŠµŠæіŠ·Š¾Š“Šø</string>
<string name="pref_favorite_keeps_episodes_sum">Š—Š±ŠµŃ€Ń–Š³Š°Ń‚Šø ŠµŠæіŠ·Š¾Š“Šø щŠ¾ ŠæŠ¾Š¼Ń–чŠµŠ½Ń– яŠŗ уŠ»ŃŽŠ±Š»ŠµŠ½Ń–</string>
<string name="pref_favorite_keeps_episodes_title">Š—Š±ŠµŃ€Ń–Š³Š°Ń‚Šø уŠ»ŃŽŠ±Š»ŠµŠ½Ń– ŠµŠæіŠ·Š¾Š“Šø</string>
<string name="playback_pref">Š’Ń–Š“тŠ²Š¾Ń€ŠµŠ½Š½Ń</string>
<string name="network_pref">ŠœŠµŃ€ŠµŠ¶Š°</string>
<string name="pref_autoUpdateIntervallOrTime_title">Š§Š°ŃŃ‚Š¾Ń‚Š° Š¾Š½Š¾Š²Š»ŠµŠ½ŃŒ Š°Š±Š¾ Š¾Š½Š¾Š²Š»ŠµŠ½Š½Ń Š² Š·Š°Š·Š½Š°Ń‡ŠµŠ½ŠøŠ¹ чŠ°Ń</string>
- <string name="pref_autoUpdateIntervallOrTime_sum">Š’ŠøŠ·Š½Š°Ń‡ŠøтŠø іŠ½Ń‚ŠµŃ€Š²Š°Š» чŠ°ŃŃƒ Š°Š±Š¾ Š²ŠøŠ·Š½Š°Ń‡ŠøтŠø чŠ°Ń щŠ¾Š“Š½Ń Š“Š»Ń Š°Š²Ń‚Š¾Š¾Š½Š¾Š²Š»ŠµŠ½Š½Ń</string>
- <string name="pref_autoUpdateIntervallOrTime_message">ŠœŠ¾Š¶Š»ŠøŠ²Š¾ Š²ŃŃ‚Š°Š½Š¾Š²ŠøтŠø <i>іŠ½Ń‚ŠµŃ€Š²Š°Š»</i> яŠŗ тŠ¾ \"ŠŗŠ¾Š¶Š½Ń– 2 Š³Š¾Š“ŠøŠ½Šø\", Š²ŃŃ‚Š°Š½Š¾Š²ŠøтŠø <i>чŠ°Ń щŠ¾Š“Š½Ń</i> яŠŗ тŠ¾ \"7:00\" Š°Š±Š¾ <i>Š²Ń–Š“ŠŗŠ»ŃŽŃ‡ŠøтŠø</i> Š°Š²Ń‚Š¾Š¼Š°Ń‚ŠøчŠ½Šµ Š¾Š½Š¾Š²Š»ŠµŠ½Š½Ń Š²Š·Š°Š³Š°Š»Ń–.\n\n<small>Š—Š²ŠµŃ€Š½Ń–Ń‚ŃŒ уŠ²Š°Š³Ńƒ: Š§Š°Ń Š¾Š½Š¾Š²Š»ŠµŠ½Š½Ń Š½Šµ є тŠ¾Ń‡Š½ŠøŠ¼. ŠœŠ¾Š¶Š»ŠøŠ²Ń– ŠŗŠ¾Ń€Š¾Ń‚Šŗі Š·Š°Ń‚Ń€ŠøŠ¼ŠŗŠø.</small></string>
+ <string name="pref_autoUpdateIntervallOrTime_sum">Š’ŠŗŠ°Š¶Ń–Ń‚ŃŒ іŠ½Ń‚ŠµŃ€Š²Š°Š» Š°Š±Š¾ ŠæŠµŠ²Š½ŠøŠ¹ чŠ°Ń Š“Š¾Š±Šø, щŠ¾Š± Š¾Š½Š¾Š²ŠøтŠø ŠŗŠ°Š½Š°Š»Šø Š°Š²Ń‚Š¾Š¼Š°Ń‚ŠøчŠ½Š¾</string>
+ <string name="pref_autoUpdateIntervallOrTime_message">ŠœŠ¾Š¶Š»ŠøŠ²Š¾ Š²ŃŃ‚Š°Š½Š¾Š²ŠøтŠø <i>іŠ½Ń‚ŠµŃ€Š²Š°Š»</i> яŠŗ тŠ¾ \"ŠŗŠ¾Š¶Š½Ń– 2 Š³Š¾Š“ŠøŠ½Šø\", Š²ŃŃ‚Š°Š½Š¾Š²ŠøтŠø <i>чŠ°Ń Š“Š½Ń</i> яŠŗ тŠ¾ \"7:00\" Š°Š±Š¾ ŠæŠ¾Š²Š½Ń–стю <i>Š²ŠøŠ¼ŠŗŠ½ŃƒŃ‚Šø</i> Š°Š²Ń‚Š¾Š¼Š°Ń‚ŠøчŠ½Šµ Š¾Š½Š¾Š²Š»ŠµŠ½Š½Ń.\n\n<small>Š—Š²ŠµŃ€Š½Ń–Ń‚ŃŒ уŠ²Š°Š³Ńƒ: Š§Š°ŃŠø Š¾Š½Š¾Š²Š»ŠµŠ½Š½Ń Š½Šµ є тŠ¾Ń‡Š½ŠøŠ¼Šø. ŠœŠ¾Š¶Š»ŠøŠ²Ń– ŠŗŠ¾Ń€Š¾Ń‚Šŗі Š·Š°Ń‚Ń€ŠøŠ¼ŠŗŠø.</small></string>
<string name="pref_autoUpdateIntervallOrTime_Disable">Š’ŠøŠ¼ŠŗŠ½ŃƒŃ‚Šø</string>
<string name="pref_autoUpdateIntervallOrTime_Interval">Š†Š½Ń‚ŠµŃ€Š²Š°Š»</string>
- <string name="pref_autoUpdateIntervallOrTime_TimeOfDay">Š’стŠ°Š½Š¾Š²ŠøтŠø чŠ°Ń щŠ¾Š“Š½Ń</string>
+ <string name="pref_autoUpdateIntervallOrTime_TimeOfDay">Š’стŠ°Š½Š¾Š²ŠøтŠø Š³Š¾Š“ŠøŠ½Ńƒ</string>
<string name="pref_autoUpdateIntervallOrTime_every">ŠŗŠ¾Š¶Š½Ń– %1$s</string>
- <string name="pref_autoUpdateIntervallOrTime_at">Š½Š° %1$s</string>
+ <string name="pref_autoUpdateIntervallOrTime_at">Š¾ %1$s</string>
<string name="pref_downloadMediaOnWifiOnly_sum">Š—Š°Š²Š°Š½Ń‚Š°Š¶ŃƒŠ²Š°Ń‚Šø тіŠ»ŃŒŠŗŠø чŠµŃ€ŠµŠ· Wifi</string>
<string name="pref_followQueue_title">Š“Ń€Š°Ń‚Šø Š±ŠµŠ·ŠæŠµŃ€ŠµŃ€Š²Š½Š¾</string>
<string name="pref_downloadMediaOnWifiOnly_title">Š—Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½Š½Ń чŠµŃ€ŠµŠ· Wifi</string>
- <string name="pref_pauseOnHeadsetDisconnect_title">ŠŠ°Š²ŃƒŃˆŠ½ŠøŠŗŠø Š²ŠøтяŠ³Š½ŃƒŃ‚Ń–</string>
+ <string name="pref_pauseOnHeadsetDisconnect_title">ŠŠ°Š²ŃƒŃˆŠ½ŠøŠŗŠø Š²Ń–Š“\'єŠ“Š½Š°Š½Ń–</string>
<string name="pref_unpauseOnHeadsetReconnect_title">ŠŸŠ¾Š²Ń‚Š¾Ń€Š½Šµ ŠæіŠ“ā€™Ń”Š“Š½Š°Š½Š½Ń Š½Š°Š²ŃƒŃˆŠ½ŠøŠŗіŠ²</string>
<string name="pref_unpauseOnBluetoothReconnect_title">ŠŸŠ¾Š²Ń‚Š¾Ń€Š½Šµ ŠæіŠ“ā€™Ń”Š“Š½Š°Š½Š½Ń Š±Š»ŃŽŃ‚ŃƒŠ·</string>
<string name="pref_mobileUpdate_title">ŠœŠ¾Š±Ń–Š»ŃŒŠ½Šµ Š¾Š½Š¾Š²Š»ŠµŠ½Š½Ń</string>
@@ -325,7 +353,7 @@
<string name="flattr_settings_label">ŠŠ°Š»Š°ŃˆŃ‚ŃƒŠ²Š°Š½Š½Ń Flattr</string>
<string name="pref_flattr_auth_title">Š£Š²Ń–Š¹Ń‚Šø Š“Š¾ Flattr</string>
<string name="pref_flattr_auth_sum">Š£Š²Ń–Š¹Ń‚Šø Š² Š¾Š±Š»Ń–ŠŗŠ¾Š²Ńƒ flattr Š“Š»Ń ŠæіŠ“трŠøŠ¼ŠŗŠø Š°Š²Ń‚Š¾Ń€Ń–Š² Š½Š°ŠæряŠ¼Ńƒ Š· Š“Š¾Š“Š°Ń‚Šŗу</string>
- <string name="pref_flattr_this_app_title">Flattr ціŠ¹ Š“Š¾Š“Š°Ń‚Š¾Šŗ</string>
+ <string name="pref_flattr_this_app_title">ŠŸŃ–Š“трŠøŠ¼Š°Ń‚Šø цŠµŠ¹ Š“Š¾Š“Š°Ń‚Š¾Šŗ Š·Š° Š“Š¾ŠæŠ¾Š¼Š¾Š³Š¾ŃŽ Flattr</string>
<string name="pref_flattr_this_app_sum">ŠŸŃ–Š“трŠøŠ¼Š°Š¹Ń‚Šµ рŠ¾Š·Ń€Š¾Š±Šŗу AntennaPod Š·Š° Š“Š¾ŠæŠ¾Š¼Š¾Š³Š¾ŃŽ flattr. Š”яŠŗую!</string>
<string name="pref_revokeAccess_title">Š’Ń–Š“ŠŗŠ»ŠøŠŗŠ°Ń‚Šø Š“Š¾ŃŃ‚ŃƒŠæ</string>
<string name="pref_revokeAccess_sum">Š’Ń–Š“ŠŗŠ»ŠøŠŗŠ°Ń‚Šø Š“Š¾Š·Š²Ń–Š» Š½Š° Š“Š¾ŃŃ‚ŃƒŠæ Š“Š¾ Š²Š°ŃˆŠ¾Š³Š¾ flattr Š· цьŠ¾Š³Š¾ Š“Š¾Š“Š°Ń‚Šŗу</string>
@@ -340,20 +368,21 @@
<string name="pref_nav_drawer_feed_order_title">Š’стŠ°Š½Š¾Š²ŠøтŠø ŠæŠ¾Ń€ŃŠ“Š¾Šŗ ŠæіŠ“ŠæŠøсŠ¾Šŗ</string>
<string name="pref_nav_drawer_feed_order_sum">Š—Š¼Ń–Š½ŠøтŠø ŠæŠ¾Ń€ŃŠ“Š¾Šŗ Š²Š°ŃˆŠøх ŠæіŠ“ŠæŠøсŠ¾Šŗ</string>
<string name="pref_nav_drawer_feed_counter_title">ŠŠ°Š»Š°ŃˆŃ‚ŃƒŠ²Š°Ń‚Šø Š»Ń–чŠøŠ»ŃŒŠ½ŠøŠŗ ŠæіŠ“ŠæŠøсŠ¾Šŗ</string>
- <string name="pref_nav_drawer_feed_counter_sum">Š—Š¼Ń–Š½ŠøтŠø іŠ½Ń„Š¾Ń€Š¼Š°Ń†Ń–ŃŽ яŠŗу Š²Ń–Š“Š¾Š±Ń€Š°Š¶Š°Ń” Š»Ń–чŠøŠ»ŃŒŠ½ŠøŠŗ ŠæіŠ“ŠæŠøсŠ¾Šŗ</string>
+ <string name="pref_nav_drawer_feed_counter_sum">Š—Š¼Ń–Š½Ń–Ń‚ŃŒ іŠ½Ń„Š¾Ń€Š¼Š°Ń†Ń–ŃŽ, щŠ¾ Š²Ń–Š“Š¾Š±Ń€Š°Š¶Š°Ń”Ń‚ŃŒŃŃ Š»Ń–чŠøŠ»ŃŒŠ½ŠøŠŗŠ¾Š¼ ŠæіŠ“ŠæŠøсŠŗŠø. Š¢Š°ŠŗŠ¾Š¶ Š²ŠæŠ»ŠøŠ²Š°Ń” Š½Š° сŠ¾Ń€Ń‚ŃƒŠ²Š°Š½Š½Ń ŠæіŠ“ŠæŠøсŠ¾Šŗ, яŠŗщŠ¾ Š“Š»Ń ŠæŠ°Ń€Š°Š¼ŠµŃ‚Ń€Š° \"ŠŸŠ¾Ń€ŃŠ“Š¾Šŗ ŠæіŠ“ŠæŠøсŠ¾Šŗ\" Š²ŃŃ‚Š°Š½Š¾Š²Š»ŠµŠ½Š¾ Š·Š½Š°Ń‡ŠµŠ½Š½Ń \"Š›Ń–чŠøŠ»ŃŒŠ½ŠøŠŗ\".</string>
<string name="pref_set_theme_sum">Š—Š¼Ń–Š½ŠøтŠø Š²ŠøŠ³Š»ŃŠ“ AntennaPod</string>
<string name="pref_automatic_download_title">ŠŠ²Ń‚Š¾Š·Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½Š½Ń</string>
<string name="pref_automatic_download_sum">ŠŠ°Š»Š°ŃˆŃ‚ŃƒŠ²Š°Š½Š½Ń Š°Š²Ń‚Š¾Š·Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½Š½Ń ŠµŠæіŠ·Š¾Š“іŠ²</string>
<string name="pref_autodl_wifi_filter_title">Š£Š²Ń–Š¼ŠŗŠ½ŃƒŃ‚Šø фіŠ»ŃŒŃ‚Ń€ Wi-Fi</string>
<string name="pref_autodl_wifi_filter_sum">Š”Š¾Š·Š²Š¾Š»ŠøтŠø Š°Š²Ń‚Š¾Š·Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½Š½Ń тіŠ»ŃŒŠŗŠø Š² цŠøх Wi-Fi Š¼ŠµŃ€ŠµŠ¶Š°Ń…</string>
- <string name="pref_autodl_allow_on_mobile_title">Š—Š°Š²Š°Š½Ń‚Š°Š¶ŃƒŠ²Š°Ń‚Šø чŠµŃ€ŠµŠ· Š¼Š¾Š±Ń–Š»ŃŒŠ½Šµ Š·ā€™Ń”Š“Š½Š°Š½Š½Ń</string>
- <string name="pref_autodl_allow_on_mobile_sum">Š”Š¾Š·Š²Š¾Š»ŠøтŠø Š°Š²Ń‚Š¾Š¼Š°Ń‚ŠøчŠ½Šµ Š·Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½Š½Ń чŠµŃ€ŠµŠ· Š¼Š¾Š±Ń–Š»ŃŒŠ½Šµ Š·ā€™Ń”Š“Š½Š°Š½Š½Ń.</string>
+ <string name="pref_autodl_allow_on_mobile_title">Š—Š°Š²Š°Š½Ń‚Š°Š¶ŃƒŠ²Š°Ń‚Šø чŠµŃ€ŠµŠ· Š¼Š¾Š±Ń–Š»ŃŒŠ½Ń– Š¼ŠµŃ€ŠµŠ¶Ń–</string>
+ <string name="pref_autodl_allow_on_mobile_sum">Š”Š¾Š·Š²Š¾Š»ŠøтŠø Š°Š²Ń‚Š¾Š¼Š°Ń‚ŠøчŠ½Šµ Š·Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½Š½Ń чŠµŃ€ŠµŠ· Š¼Š¾Š±Ń–Š»ŃŒŠ½Ń– Š¼ŠµŃ€ŠµŠ¶Ń–.</string>
<string name="pref_automatic_download_on_battery_title">Š—Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½Š½Ń Š±ŠµŠ· Š·Š°Ń€ŃŠ“Š½Š¾Š³Š¾ ŠæрŠøстрŠ¾ŃŽ</string>
- <string name="pref_automatic_download_on_battery_sum">Š”Š¾Š·Š²Š¾Š»ŠøтŠø Š°Š²Ń‚Š¾Š·Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½Š½Ń ŠŗŠ¾Š»Šø Š·Š°Ń€ŃŠ“Š½ŠøŠ¹ ŠæрŠøстріŠ¹ Š½Šµ ŠæіŠ“ŠŗŠ»ŃŽŃ‡ŠµŠ½Š¾</string>
+ <string name="pref_automatic_download_on_battery_sum">Š”Š¾Š·Š²Š¾Š»ŠøтŠø Š°Š²Ń‚Š¾Š·Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½Š½Ń ŠŗŠ¾Š»Šø Š·Š°Ń€ŃŠ“Š½ŠøŠ¹ ŠæрŠøстріŠ¹ Š½Šµ ŠæіŠ“ŠŗŠ»ŃŽŃ‡ŠµŠ½ŠøŠ¹</string>
<string name="pref_parallel_downloads_title">ŠŸŠ°Ń€Š°Š»ŠµŠ»ŃŒŠ½Ń– Š·Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½Š½Ń</string>
<string name="pref_episode_cache_title">ŠšŠµŃˆ ŠµŠæіŠ·Š¾Š“іŠ²</string>
<string name="pref_theme_title_light">Š”Š²Ń–Ń‚Š»Š°</string>
<string name="pref_theme_title_dark">Š¢ŠµŠ¼Š½Š°</string>
+ <string name="pref_theme_title_trueblack">Š§Š¾Ń€Š½Š° (Š“Š»Ń AMOLED)</string>
<string name="pref_episode_cache_unlimited">Š‘ŠµŠ· Š¾Š±Š¼ŠµŠ¶ŠµŠ½ŃŒ</string>
<string name="pref_update_interval_hours_plural">Š³Š¾Š“ŠøŠ½</string>
<string name="pref_update_interval_hours_singular">Š³Š¾Š“ŠøŠ½Š°</string>
@@ -365,33 +394,33 @@
<string name="pref_gpodnet_setlogin_information_title">Š—Š¼Ń–Š½ŠøтŠø іŠ½Ń„Š¾Ń€Š¼Š°Ń†Ń–ŃŽ Š“Š»Ń Š²Ń…Š¾Š“у</string>
<string name="pref_gpodnet_setlogin_information_sum">Š—Š¼Ń–Š½ŠøтŠø іŠ½Ń„Š¾Ń€Š¼Š°Ń†Ń–ŃŽ щŠ¾Š“Š¾ Š¾Š±Š»Ń–ŠŗŠ¾Š²Š¾Š³Š¾ Š·Š°ŠæŠøсу gpodder.net</string>
<string name="pref_gpodnet_sync_changes_title">Š”ŠøŠ½Ń…Ń€Š¾Š½Ń–Š·ŃƒŠ²Š°Ń‚Šø Š·Š¼Ń–Š½Šø Š½ŠµŠ³Š°Š¹Š½Š¾</string>
- <string name="pref_gpodnet_sync_changes_sum">Š”ŠøŠ½Ń…Ń€Š¾Š½Ń–Š·ŃƒŠ²Š°Ń‚Šø ŠæіŠ“ŠæŠøсŠŗŠø тŠ° Š·Š¼Ń–Š½Šø стŠ°Š½Š° ŠµŠæіŠ·Š¾Š“іŠ² Š· gpodder.net</string>
+ <string name="pref_gpodnet_sync_changes_sum">Š”ŠøŠ½Ń…Ń€Š¾Š½Ń–Š·ŃƒŠ²Š°Ń‚Šø ŠæіŠ“ŠæŠøсŠŗŠø тŠ° Š·Š¼Ń–Š½Šø стŠ°Š½Ńƒ ŠµŠæіŠ·Š¾Š“іŠ² Š· gpodder.net</string>
<string name="pref_gpodnet_full_sync_title">Š’ŠøŠŗŠ¾Š½Š°Ń‚Šø ŠæŠ¾Š²Š½Ńƒ сŠøŠ½Ń…Ń€Š¾Š½Ń–Š·Š°Ń†Ń–ŃŽ Š½ŠµŠ³Š°Š¹Š½Š¾</string>
<string name="pref_gpodnet_full_sync_sum">Š”ŠøŠ½Ń…Ń€Š¾Š½Ń–Š·ŃƒŠ²Š°Ń‚Šø Š²ŃŃ– ŠæіŠ“ŠæŠøсŠŗŠø тŠ° стŠ°Š½ ŠµŠæіŠ·Š¾Š“іŠ² Š· gpodder.net.</string>
<string name="pref_gpodnet_sync_sum_last_sync_line">ŠžŃŃ‚Š°Š½Š½Ń сŠæрŠ¾Š±Š° сŠøŠ½Ń…Ń€Š¾Š½Ń–Š·Š°Ń†Ń–Ń—: %1$s (%2$s)</string>
<string name="pref_gpodnet_sync_started">CŠøŠ½Ń…Ń€Š¾Š½Ń–Š·Š°Ń†Ń–я ŠæŠ¾Ń‡Š°Š»Š°ŃŃŒ</string>
<string name="pref_gpodnet_full_sync_started">ŠŸŠ¾Š²Š½Ńƒ сŠøŠ½Ń…Ń€Š¾Š½Ń–Š·Š°Ń†Ń–ŃŽ рŠ¾Š·ŠæŠ¾Ń‡Š°Ń‚Š¾</string>
- <string name="pref_gpodnet_login_status"><![CDATA[Š’Šø уŠ²Ń–Š¹ŃˆŠ»Šø яŠŗ <i>%1$s</i> Š· ŠæрŠøстрŠ¾Ń <i>%2$s</i>]]></string>
+ <string name="pref_gpodnet_login_status"><![CDATA[Š’Šø уŠ²Ń–Š¹ŃˆŠ»Šø яŠŗ <i>%1$s</i> Š· ŠæрŠøстрŠ¾ŃŽ <i>%2$s</i>]]></string>
<string name="pref_gpodnet_notifications_title">ŠŸŠ¾Š²Ń–Š“Š¾Š¼Š»ŃŃ‚Šø ŠæрŠ¾ ŠæŠ¾Š¼ŠøŠ»ŠŗŠø сŠøŠ½Ń…Ń€Š¾Š½Ń–Š·Š°Ń†Ń–Ń—</string>
<string name="pref_gpodnet_notifications_sum">Š¦Šµ Š½Š°Š»Š°ŃˆŃ‚ŃƒŠ²Š°Š½Š½Ń Š½Šµ Š·Š°ŃŃ‚Š¾ŃŠ¾Š²ŃƒŃ”Ń‚ŃŒŃŃ Š“Š¾ ŠæŠ¾Š¼ŠøŠ»Š¾Šŗ Š°Š²Ń‚ŠµŠ½Ń‚ŠøфіŠŗŠ°Ń†Ń–Ń—.</string>
<string name="pref_playback_speed_title">ŠØŠ²ŠøŠ“Šŗість ŠæрŠ¾Š³Ń€Š°Š²Š°Š½Š½Ń</string>
<string name="pref_playback_speed_sum">ŠŠ°Š»Š°ŃˆŃ‚ŃƒŠ²Š°Š½Š½Ń шŠ²Ń–Š“ŠŗŠ¾ŃŃ‚Ń– Š“Š¾ŃŃ‚ŃƒŠæŠ½Š¾ Š“Š»Ń Š·Š¼Ń–Š½Š½Š¾Ń— шŠ²ŠøŠ“ŠŗŠ¾ŃŃ‚Ń– ŠæрŠ¾Š³Ń€Š°Š²Š°Š½Š½Ń</string>
- <string name="pref_fast_forward">Š§Š°Ń ŠæрŠ¾ŠæусŠŗŠ° ŠŗŠ½Š¾ŠæŠŗŠ¾Š¹ ŠæŠµŃ€ŠµŠ¼Š¾Ń‚ŠŗŠø Š²ŠæŠµŃ€ŠµŠ“</string>
- <string name="pref_fast_forward_sum">ŠŠ°Š»Š°ŃˆŃ‚ŃƒŠ²Š°Ń‚Šø ŠŗіŠ»ŃŒŠŗість сŠµŠŗуŠ½Š“ яŠŗі ŠæрŠ¾ŠæусŠŗŠ°ŃŽŃ‚ŃŒŃŃ ŠæрŠø Š½Š°Ń‚ŠøсŠŗŠ°Š½Š½Ń– ŠŗŠ½Š¾ŠæŠŗŠø ŠæŠµŃ€ŠµŠ¼Š¾Ń‚ŠŗŠø Š²ŠæŠµŃ€ŠµŠ“</string>
- <string name="pref_rewind">Š§Š°Ń ŠæрŠ¾ŠæусŠŗŠ° ŠŗŠ½Š¾ŠæŠŗŠ¾Š¹ ŠæŠµŃ€ŠµŠ¼Š¾Ń‚ŠŗŠø Š½Š°Š·Š°Š“</string>
- <string name="pref_rewind_sum">ŠŠ°Š»Š°ŃˆŃ‚ŃƒŠ²Š°Ń‚Šø ŠŗіŠ»ŃŒŠŗість сŠµŠŗуŠ½Š“ яŠŗі Š²Ń–Š“Š¼Š¾Ń‚ŃƒŃŽŃ‚ŃŒŃŃ ŠæрŠø Š½Š°Ń‚ŠøсŠŗŠ°Š½Š½Ń– ŠŗŠ½Š¾ŠæŠŗŠø ŠæŠµŃ€ŠµŠ¼Š¾Ń‚ŠŗŠø Š½Š°Š·Š°Š“</string>
+ <string name="pref_fast_forward">Š§Š°Ń, щŠ¾ ŠæрŠ¾ŠæусŠŗŠ°Ń”Ń‚ŃŒŃŃ ŠŗŠ½Š¾ŠæŠŗŠ¾ŃŽ ŠæŠµŃ€ŠµŠ¼Š¾Ń‚ŠŗŠø Š²ŠæŠµŃ€ŠµŠ“</string>
+ <string name="pref_fast_forward_sum">ŠŠ°Š»Š°ŃˆŃ‚ŃƒŠ²Š°Ń‚Šø ŠŗіŠ»ŃŒŠŗість сŠµŠŗуŠ½Š“, яŠŗі ŠæрŠ¾ŠæусŠŗŠ°ŃŽŃ‚ŃŒŃŃ ŠæрŠø Š½Š°Ń‚ŠøсŠŗŠ°Š½Š½Ń– ŠŗŠ½Š¾ŠæŠŗŠø ŠæŠµŃ€ŠµŠ¼Š¾Ń‚ŠŗŠø Š²ŠæŠµŃ€ŠµŠ“</string>
+ <string name="pref_rewind">Š§Š°Ń, щŠ¾ ŠæрŠ¾ŠæусŠŗŠ°Ń”Ń‚ŃŒŃŃ ŠŗŠ½Š¾ŠæŠŗŠ¾ŃŽ Š²Ń–Š“Š¼Š¾Ń‚ŠŗŠø Š½Š°Š·Š°Š“</string>
+ <string name="pref_rewind_sum">ŠŠ°Š»Š°ŃˆŃ‚ŃƒŠ²Š°Ń‚Šø ŠŗіŠ»ŃŒŠŗість сŠµŠŗуŠ½Š“ яŠŗі Š²Ń–Š“Š¼Š¾Ń‚ŃƒŃŽŃ‚ŃŒŃŃ ŠæрŠø Š½Š°Ń‚ŠøсŠŗŠ°Š½Š½Ń– ŠŗŠ½Š¾ŠæŠŗŠø Š²Ń–Š“Š¼Š¾Ń‚ŠŗŠø Š½Š°Š·Š°Š“</string>
<string name="pref_gpodnet_sethostname_title">Š’стŠ°Š½Š¾Š²ŠøтŠø іŠ¼\'я хŠ¾ŃŃ‚Š°</string>
<string name="pref_gpodnet_sethostname_use_default_host">Š’ŠøŠŗŠ¾Ń€ŠøстŠ°Ń‚Šø хŠ¾ŃŃ‚ ŠæŠ¾ Š·Š°Š¼Š¾Š²Ń‡Š°Š½Š½ŃŽ</string>
- <string name="pref_expandNotify_title">Š Š¾Š·Š³Š¾Ń€Š½ŃƒŃ‚Šø ŠæŠ¾Š²Ń–Š“Š¾Š¼Š»ŠµŠ½Š½Ń</string>
- <string name="pref_expandNotify_sum">Š—Š°Š²Š¶Š“Šø рŠ¾Š·Š³Š¾Ń€Ń‚Š°Ń‚Šø ŠæŠ¾Š²Ń–Š“Š¾Š¼Š»ŠµŠ½Š½Ń, щŠ¾Š± ŠæŠ¾ŠŗŠ°Š·Š°Ń‚Šø ŠŗŠ½Š¾ŠæŠŗŠø ŠŗŠµŃ€ŃƒŠ²Š°Š½Š½Ń.</string>
+ <string name="pref_expandNotify_title">Š’ŠøсŠ¾ŠŗŠøŠ¹ ŠæріŠ¾Ń€ŠøтŠµŃ‚ сŠæŠ¾Š²Ń–щŠµŠ½Š½Ń</string>
+ <string name="pref_expandNotify_sum">Š—Š°Š·Š²ŠøчŠ°Š¹ цŠµ рŠ¾Š·ŃˆŠøрює сŠæŠ¾Š²Ń–щŠµŠ½Š½Ń, щŠ¾Š± ŠæŠ¾ŠŗŠ°Š·Š°Ń‚Šø ŠŗŠ½Š¾ŠæŠŗŠø Š²Ń–Š“тŠ²Š¾Ń€ŠµŠ½Š½Ń.</string>
<string name="pref_persistNotify_title">Š—Š°Š²Š¶Š“Šø ŠæŠ¾ŠŗŠ°Š·ŃƒŠ²Š°Ń‚Šø ŠµŠ»ŠµŠ¼ŠµŠ½Ń‚Šø ŠŗŠµŃ€ŃƒŠ²Š°Š½Š½Ń Š²Ń–Š“тŠ²Š¾Ń€ŠµŠ½Š½ŃŠ¼</string>
<string name="pref_persistNotify_sum">ŠŸŠ¾ŠŗŠ°Š·ŃƒŠ²Š°Ń‚Šø ŠæŠ¾Š²Ń–Š“Š¾Š¼Š»ŠµŠ½Š½Ń тŠ° ŠµŠ»ŠµŠ¼ŠµŠ½Ń‚Šø ŠŗŠµŃ€ŃƒŠ²Š°Š½Š½Ń Š½Š° ŠµŠŗрŠ°Š½Ń– Š±Š»Š¾ŠŗуŠ²Š°Š½Š½Ń Š² рŠµŠ¶ŠøŠ¼Ń– ŠæŠ°ŃƒŠ·Šø.</string>
<string name="pref_compact_notification_buttons_title">ŠŠ°Š»Š°ŃˆŃ‚ŃƒŠ²Š°Ń‚Šø ŠŗŠ½Š¾ŠæŠŗŠø Š½Š° ŠµŠŗрŠ°Š½Ń– Š±Š»Š¾ŠŗуŠ²Š°Š½Š½Ń</string>
<string name="pref_compact_notification_buttons_sum">Š—Š¼Ń–Š½ŠøтŠø ŠŗŠ½Š¾ŠæŠŗŠø Š½Š° ŠµŠŗрŠ°Š½Ń– Š±Š»Š¾ŠŗуŠ²Š°Š½Š½Ń. ŠšŠ½Š¾ŠæŠŗŠø ŠæрŠ¾Š³Ń€Š°Š²Š°Š½Š½Ń/ŠæŠ°ŃƒŠ·Š° Š·Š°Š²Š¶Š“Šø Š²ŠŗŠ»ŃŽŃ‡ŠµŠ½Ń–.</string>
<string name="pref_compact_notification_buttons_dialog_title">ŠžŠ±ŠµŃ€Ń–Ń‚ŃŒ Š½Šµ Š±Ń–Š»ŃŒŃˆŠµ Š½Ń–Š¶ %1$d ŠŗŠ½Š¾ŠæŠ¾Šŗ</string>
<string name="pref_compact_notification_buttons_dialog_error">Š’Šø Š¼Š¾Š¶ŠµŃ‚Šµ Š¾Š±Ń€Š°Ń‚Šø Š½Šµ Š±Ń–Š»ŃŒŃˆŠµ Š½Ń–Š¶ %1$d ŠŗŠ½Š¾ŠæŠ¾Šŗ.</string>
- <string name="pref_lockscreen_background_title">Š—Š¼Ń–Š½ŃŽŠ²Š°Ń‚Šø фŠ¾Š½ ŠµŠŗрŠ°Š½Š° Š±Š»Š¾ŠŗуŠ²Š°Š½Š½Ń</string>
- <string name="pref_lockscreen_background_sum">Š’стŠ°Š½Š¾Š²ŠøтŠø ŠŗŠ°Ń€Ń‚ŠøŠ½Šŗу ŠæŠ¾Ń‚Š¾Ń‡Š½Š¾Š³Š¾ ŠµŠæіŠ·Š¾Š“Š° яŠŗ фŠ¾Š½ ŠµŠŗрŠ°Š½Š° Š±Š»Š¾ŠŗуŠ²Š°Š½Š½Ń. ŠŸŠ¾Š±Ń–чŠ½ŠøŠ¹ ŠµŃ„ŠµŠŗт - цŠµ Š·Š¾Š±Ń€Š°Š¶ŠµŠ½Š½Ń Š±ŃƒŠ“Šµ тŠ°ŠŗŠ¾Š¶ Š²ŠøŠ“Š½Š¾ Š² іŠ½ŃˆŠøх Š“Š¾Š“Š°Ń‚ŠŗŠ°Ń….</string>
+ <string name="pref_lockscreen_background_title">Š’стŠ°Š½Š¾Š²ŠøтŠø фŠ¾Š½ ŠµŠŗрŠ°Š½Š° Š±Š»Š¾ŠŗуŠ²Š°Š½Š½Ń</string>
+ <string name="pref_lockscreen_background_sum">Š’стŠ°Š½Š¾Š²ŠøтŠø ŠŗŠ°Ń€Ń‚ŠøŠ½Šŗу ŠæŠ¾Ń‚Š¾Ń‡Š½Š¾Š³Š¾ ŠµŠæіŠ·Š¾Š“у яŠŗ фŠ¾Š½ ŠµŠŗрŠ°Š½Š° Š±Š»Š¾ŠŗуŠ²Š°Š½Š½Ń. ŠŸŠ¾Š±Ń–чŠ½ŠøŠ¹ ŠµŃ„ŠµŠŗт - цŠµ Š·Š¾Š±Ń€Š°Š¶ŠµŠ½Š½Ń тŠ°ŠŗŠ¾Š¶ Š±ŃƒŠ“Šµ Š²ŠøŠ“ŠøŠ¼ŠøŠ¼ Š² іŠ½ŃˆŠøх Š“Š¾Š“Š°Ń‚ŠŗŠ°Ń….</string>
<string name="pref_showDownloadReport_title">ŠŸŠ¾ŠŗŠ°Š·Š°Ń‚Šø Š·Š²Ń–Ń‚ ŠæрŠ¾ Š·Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½Š½Ń</string>
<string name="pref_showDownloadReport_sum">Š£ рŠ°Š·Ń– ŠæŠ¾Š¼ŠøŠ»ŠŗŠø ŠæрŠø Š·Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½Š½Ń– стŠ²Š¾Ń€ŠøтŠø Š“ŠµŃ‚Š°Š»ŃŒŠ½ŠøŠ¹ Š·Š²Ń–Ń‚ ŠæрŠ¾ ŠæŠ¾Š¼ŠøŠ»Šŗу.</string>
<string name="pref_expand_notify_unsupport_toast">Android Š“Š¾ Š²ŠµŃ€ŃŃ–Ń— 4.1 Š½Šµ ŠæіŠ“трŠøŠ¼ŃƒŃ” рŠ¾Š·ŃˆŠøрŠµŠ½Ń– ŠæŠ¾Š²Ń–Š“Š¾Š¼Š»ŠµŠ½Š½Ń.</string>
@@ -404,8 +433,7 @@
<string name="crash_report_sum">ŠŠ°Š“ісŠ»Š°Ń‚Šø Šµ-ŠæŠ¾ŃˆŃ‚Ńƒ Š·Ń– Š·Š²Ń–Ń‚Š¾Š¼ ŠæрŠ¾ Š¾ŃŃ‚Š°Š½Š½Ń–Š¹ Š·Š±Ń–Š¹</string>
<string name="send_email">ŠŠ°Š“ісŠ»Š°Ń‚Šø Šµ-ŠæŠ¾ŃˆŃ‚Ńƒ</string>
<string name="experimental_pref">Š•ŠŗсŠæŠµŃ€ŠøŠ¼ŠµŠ½Ń‚Š°Š»ŃŒŠ½Ń–</string>
- <string name="pref_sonic_title">Sonic Media Player</string>
- <string name="pref_sonic_message">Š—Š°ŃŃ‚Š¾ŃŃƒŠ²Š°Ń‚Šø Š²Š±ŃƒŠ“Š¾Š²Š°Š½ŠøŠ¹ ŠæрŠ¾Š³Ń€Š°Š²Š°Ń‡ sonic Š·Š°Š¼Ń–ŃŃ‚ŃŒ ŠæрŠ¾Š³Ń€Š°Š²Š°Ń‡Š° Android тŠ° Prestissimo</string>
+ <string name="pref_media_player_message">ŠžŠ±ŠµŃ€Ń–Ń‚ŃŒ Š¼ŠµŠ“іŠ° ŠæŠ»ŠµŃ”Ń€ Š“Š»Ń ŠæрŠ¾Š³Ń€Š°Š²Š°Š½Š½Ń фŠ°Š¹Š»Ń–Š²</string>
<string name="pref_current_value">ŠŸŠ¾Ń‚Š¾Ń‡Š½Šµ Š·Š½Š°Ń‡ŠµŠ½Š½Ń: %1$s</string>
<string name="pref_proxy_title">ŠŸŃ€Š¾Šŗсі</string>
<string name="pref_proxy_sum">Š—Š°ŃŃ‚Š¾ŃŃƒŠ²Š°Ń‚Šø ŠæрŠ¾Šŗсі сŠµŃ€Š²ŠµŃ€</string>
@@ -417,6 +445,22 @@
<string name="pref_cast_message_free_flavor">Š”Š»Ń ŠæіŠ“трŠøŠ¼ŠŗŠø Chromecast ŠæŠ¾Ń‚ріŠ±Š½Ń– Š±Ń–Š±Š»Ń–Š¾Ń‚ŠµŠŗŠø яŠŗі Š½Šµ Š²ŠŗŠ»ŃŽŃ‡ŠµŠ½Ń– Š² цю Š²ŠµŃ€ŃŃ–ŃŽ AntennaPod</string>
<string name="pref_enqueue_downloaded_title">Š”Š¾Š“Š°Ń‚Šø Š·Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½Š½Ń Š“Š¾ чŠµŃ€Š³Šø</string>
<string name="pref_enqueue_downloaded_summary">Š”Š¾Š“Š°Š²Š°Ń‚Šø Š·Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½Ń– ŠµŠæіŠ·Š¾Š“Šø Š“Š¾ чŠµŃ€Š³Šø</string>
+ <string name="media_player_builtin">Š”тŠ°Š½Š“Š°Ń€Ń‚Š½ŠøŠ¹ ŠæŠ»ŠµŃ”Ń€ Android</string>
+ <string name="pref_videoBehavior_title"> ŠŸŃ€Šø Š²ŠøхŠ¾Š“і Š· Š²Ń–Š“ŠµŠ¾Ń€ŠµŠ¶ŠøŠ¼Ńƒ</string>
+ <string name="pref_videoBehavior_sum">ŠŸŠ¾Š²ŠµŠ“іŠ½ŠŗŠ° ŠæрŠø Š²ŠøхŠ¾Š“і Š· Š²Ń–Š“ŠµŠ¾</string>
+ <string name="stop_playback">Š—ŃƒŠæŠøŠ½ŠøтŠø ŠæрŠ¾Š³Ń€Š°Š²Š°Š½Š½Ń</string>
+ <string name="continue_playback">ŠŸŃ€Š¾Š“Š¾Š²Š¶ŠøтŠø Š²Ń–Š“тŠ²Š¾Ń€ŠµŠ½Š½Ń Š°ŃƒŠ“іŠ¾</string>
+ <string name="behavior">ŠŸŠ¾Š²ŠµŠ“іŠ½ŠŗŠ°</string>
+ <string name="pref_back_button_behavior_title">ŠŸŠ¾Š²ŠµŠ“іŠ½ŠŗŠ° ŠŗŠ½Š¾ŠæŠŗŠø \"ŠŠ°Š·Š°Š“\"</string>
+ <string name="pref_back_button_behavior_sum">Š—Š¼Ń–Š½Š° ŠæŠ¾Š²ŠµŠ“іŠ½ŠŗŠø ŠŗŠ½Š¾ŠæŠŗŠø \"ŠŠ°Š·Š°Š“\".</string>
+ <string name="back_button_default">Š—Š° Š·Š°Š¼Š¾Š²Ń‡ŃƒŠ²Š°Š½Š½ŃŠ¼</string>
+ <string name="back_button_open_drawer">Š’Ń–Š“ŠŗрŠøтŠø Š¼ŠµŠ½ŃŽ Š½Š°Š²Ń–Š³Š°Ń†Ń–Ń—</string>
+ <string name="back_button_double_tap">ŠŠ°Ń‚ŠøсŠ½Ń–Ń‚ŃŒ Š“Š²Ń–чі, щŠ¾Š± Š²ŠøŠ¹Ń‚Šø</string>
+ <string name="back_button_show_prompt">ŠŸŃ–Š“тŠ²ŠµŃ€Š“іть Š²ŠøхіŠ“</string>
+ <string name="close_prompt">Š”Ń–Š¹ŃŠ½Š¾ Š·Š°ŠŗрŠøтŠø AntennaPod?</string>
+ <string name="double_tap_toast">ŠŠ°Ń‚ŠøсŠ½Ń–Ń‚ŃŒ ŠŗŠ½Š¾ŠæŠŗу Š½Š°Š·Š°Š“ щŠµ рŠ°Š·, щŠ¾Š± Š²ŠøŠ¹Ń‚Šø</string>
+ <string name="back_button_go_to_page">ŠŸŠµŃ€ŠµŠ¹Ń‚Šø Š½Š° стŠ¾Ń€Ń–Š½Šŗуā€¦</string>
+ <string name="back_button_go_to_page_title">Š’ŠøŠ±Ń€Š°Ń‚Šø стŠ¾Ń€Ń–Š½Šŗу</string>
<!--Auto-Flattr dialog-->
<string name="auto_flattr_enable">Š’ŠŗŠ»ŃŽŃ‡ŠøтŠø Š°Š²Ń‚Š¾Š¼Š°Ń‚ŠøчŠ½Šµ Š·Š°Š¾Ń…Š¾Ń‡ŠµŠ½Š½Ń Š°Š²Ń‚Š¾Ń€Ń–Š² чŠµŃ€ŠµŠ· сŠµŃ€Š²Ń–с flattr</string>
<string name="auto_flattr_after_percent">Š—Š°Š¾Ń…Š¾Ń‚ŠøтŠø Š°Š²Ń‚Š¾Ń€Š° чŠµŃ€ŠµŠ· Flattr щŠ¾Š¹Š½Š¾ %d Š²Ń–Š“сŠ¾Ń‚ŠŗіŠ² ŠµŠæіŠ·Š¾Š“Š° Š±ŃƒŠ»Š¾ Š²Ń–Š“тŠ²Š¾Ń€ŠµŠ½Š¾</string>
@@ -427,7 +471,7 @@
<string name="found_in_shownotes_label">Š—Š½Š°Š¹Š“ŠµŠ½Š¾ Š² Š½Š¾Ń‚Š°Ń‚ŠŗŠ°Ń… ŠµŠæіŠ·Š¾Š“Š°</string>
<string name="found_in_chapters_label">Š—Š½Š°Š¹Š“ŠµŠ½Š¾ Š² Š³Š»Š°Š²Š°Ń…</string>
<string name="found_in_authors_label">Š—Š½Š°Š¹Š“ŠµŠ½Š¾ Š² Š°Š²Ń‚Š¾Ń€Š°Ń…</string>
- <string name="found_in_feeds_label">Š—Š½Š°Š¹Š“ŠµŠ½Š¾ Š² ŠŗŠ°Š½Š°Š»Š°Ń…</string>
+ <string name="found_in_feeds_label">Š—Š½Š°Š¹Š“ŠµŠ½Š¾ Š² ŠæŠ¾Š“ŠŗŠ°ŃŃ‚Ń–</string>
<string name="search_status_no_results">Š–Š¾Š“Š½Šøх рŠµŠ·ŃƒŠ»ŃŒŃ‚Š°Ń‚Ń–Š² Š½ŠµŠ¼Š°Ń”</string>
<string name="search_label">ŠŸŠ¾ŃˆŃƒŠŗ</string>
<string name="found_in_title_label">Š—Š½Š°Š¹Š“ŠµŠ½Š¾ у Š½Š°Š·Š²Ń–</string>
@@ -435,15 +479,15 @@
<!--OPML import and export-->
<string name="opml_import_txtv_button_lable">OPML фŠ°Š¹Š»Šø Š“Š¾Š·Š²Š¾Š»ŃŃŽŃ‚ Š²Š°Š¼ ŠæŠµŃ€ŠµŠ½ŠµŃŃ‚Šø ŠæŠ¾Š“ŠŗŠ°ŃŃ‚Šø Š· Š¾Š“Š½Ń–єї ŠæрŠ¾Š³Ń€Š°Š¼Š¼Šø Š“Š¾ іŠ½ŃˆŠ¾Ń—</string>
<string name="opml_import_option">Š’Š°Ń€Ń–Š°Š½Ń‚ %1$d</string>
- <string name="opml_import_explanation_1">Š’ŠøŠ±ŠµŃ€Ń–Ń‚ŃŒ Š»Š¾ŠŗŠ°Š»ŃŒŠ½Ńƒ ŠæŠ°ŠæŠŗу.</string>
+ <string name="opml_import_explanation_1">Š’ŠøŠ±ŠµŃ€Ń–Ń‚ŃŒ шŠ»ŃŃ… Š“Š¾ фŠ°Š¹Š»Ńƒ Š· Š»Š¾ŠŗŠ°Š»ŃŒŠ½Š¾Ń— фŠ°Š¹Š»Š¾Š²Š¾Ń— сŠøстŠµŠ¼Šø.</string>
<string name="opml_import_explanation_2">Š’ŠøŠ±Ń€Š°Ń‚Šø OPML фŠ°Š¹Š» Š·Š° Š“Š¾ŠæŠ¾Š¼Š¾Š³Š¾ŃŽ тŠ°ŠŗŠøх Š“Š¾Š“Š°Ń‚ŠŗіŠ² яŠŗ Dropbox, Google Drive Š°Š±Š¾ фŠ°Š¹Š»Š¾Š²ŠøŠ¹ Š¼ŠµŠ½ŠµŠ“Š¶ŠµŃ€.</string>
- <string name="opml_import_explanation_3">Š‘Š°Š³Š°Ń‚Š¾ Š“Š¾Š“Š°Ń‚ŠŗіŠ² тŠ°ŠŗŠøх яŠŗ Google Mail, Dropbox, Google Drive тŠ° Š±Ń–Š»ŃŒŃˆŃ–ŃŃ‚ŃŒ фŠ°Š¹Š»Š¾Š²Šøх Š¼ŠµŠ½ŠµŠ“Š¶ŠµŃ€Ń–Š² Š·Š“Š°Ń‚Š½Ń– <i>Š²Ń–Š“ŠŗрŠøтŠø</i> OPML фŠ°Š¹Š»Šø <i>Š“Š»Ń</i> AntennaPod.</string>
+ <string name="opml_import_explanation_3">Š‘Š°Š³Š°Ń‚Š¾ Š“Š¾Š“Š°Ń‚ŠŗіŠ², тŠ°ŠŗŠøх яŠŗ Google Mail, Dropbox, Google Drive тŠ° Š±Ń–Š»ŃŒŃˆŃ–ŃŃ‚ŃŒ фŠ°Š¹Š»Š¾Š²Šøх Š¼ŠµŠ½ŠµŠ“Š¶ŠµŃ€Ń–Š², Š·Š“Š°Ń‚Š½Ń– <i>Š²Ń–Š“ŠŗрŠøŠ²Š°Ń‚Šø</i> OPML фŠ°Š¹Š»Šø <i>Š·Š° Š“Š¾ŠæŠ¾Š¼Š¾Š³Š¾ŃŽ</i> AntennaPod.</string>
<string name="start_import_label">ŠŸŠ¾Ń‡Š°Ń‚Šø іŠ¼ŠæŠ¾Ń€Ń‚</string>
- <string name="opml_import_label">OPML іŠ¼ŠæŠ¾Ń€Ń‚</string>
+ <string name="opml_import_label">Š†Š¼ŠæŠ¾Ń€Ń‚ OPML</string>
<string name="opml_directory_error">ŠŸŠ¾Š¼ŠøŠ»ŠŗŠ°!</string>
<string name="reading_opml_label">Š§ŠøтŠ°Ń”Š¼Š¾ OPML фŠ°Š¹Š»</string>
<string name="opml_reader_error">ŠŸŠ¾Š¼ŠøŠ»ŠŗŠ° ŠæрŠø чŠøтŠ°Š½Š½Ń– Š“Š¾ŠŗуŠ¼ŠµŠ½Ń‚Š° OPML:</string>
- <string name="opml_import_error_no_file">Š–Š¾Š“Š½Š¾Š³Š¾ фŠ°Š¹Š»Š° Š½Šµ Š¾Š±Ń€Š°Š½Š¾!</string>
+ <string name="opml_import_error_no_file">Š–Š¾Š“Š½Š¾Š³Š¾ фŠ°Š¹Š»Ńƒ Š½Šµ Š¾Š±Ń€Š°Š½Š¾!</string>
<string name="select_all_label">ŠžŠ±Ń€Š°Ń‚Šø Š²ŃŠµ</string>
<string name="deselect_all_label">Š£Š±Ń€Š°Ń‚Šø Š²ŠøŠ“іŠ»ŠµŠ½Š½Ń</string>
<string name="select_options_label">ŠžŠ±Ń€Š°Ń‚Šøā€¦</string>
@@ -453,9 +497,9 @@
<string name="html_export_label">Š•ŠŗсŠæŠ¾Ń€Ń‚ Š“Š¾ HTML</string>
<string name="exporting_label">Š•ŠŗсŠæŠ¾Ń€Ń‚ŃƒŃ”Ń‚ŃŒŃŃā€¦</string>
<string name="export_error_label">ŠŸŠ¾Š¼ŠøŠ»ŠŗŠ° ŠµŠŗсŠæŠ¾Ń€Ń‚Ńƒ</string>
- <string name="opml_export_success_title">OPML ŠµŠŗсŠæŠ¾Ń€Ń‚ усŠæішŠ½ŠøŠ¹</string>
- <string name="opml_export_success_sum">OPML фŠ°Š¹Š» Š·Š°ŠæŠøсŠ°Š½ŠøŠ¹ Š²:\u0020</string>
- <string name="opml_import_ask_read_permission">Š©Š¾Š± ŠæрŠ¾Ń‡ŠøтŠ°Ń‚Šø фŠ°Š¹Š» OPML ŠæŠ¾Ń‚ріŠ±ŠµŠ½ Š“Š¾ŃŃ‚ŃƒŠæ Š“Š¾ Š·Š¾Š²Š½Ń–ŃˆŠ½ŃŒŠ¾Ń— ŠæŠ°Š¼ā€™ŃŃ‚Šø</string>
+ <string name="export_success_title">Š£ŃŠæішŠ½ŠøŠ¹ ŠµŠŗсŠæŠ¾Ń€Ń‚</string>
+ <string name="export_success_sum">Š¤Š°Š¹Š» Š±ŃƒŠ»Š¾ Š·Š°ŠæŠøсŠ°Š½Š¾ Š²:\n\n%1$s</string>
+ <string name="opml_import_ask_read_permission">Š©Š¾Š± ŠæрŠ¾Ń‡ŠøтŠ°Ń‚Šø фŠ°Š¹Š» OPML ŠæŠ¾Ń‚ріŠ±ŠµŠ½ Š“Š¾ŃŃ‚ŃƒŠæ Š“Š¾ Š·Š¾Š²Š½Ń–ŃˆŠ½ŃŒŠ¾Š³Š¾ Š½Š¾ŃŃ–я</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">Š¢Š°Š¹Š¼ŠµŃ€ сŠ½Ńƒ</string>
<string name="disable_sleeptimer_label">Š’ŠøŠ¼ŠŗŠ½ŃƒŃ‚Šø Š·Š°ŃŠøŠ½Š°Š½Š½Ń</string>
@@ -472,16 +516,19 @@
<plurals name="time_seconds_quantified">
<item quantity="one">1 сŠµŠŗуŠ½Š“Š°</item>
<item quantity="few">%d сŠµŠŗуŠ½Š“Šø</item>
+ <item quantity="many">%d сŠµŠŗуŠ½Š“</item>
<item quantity="other">%d сŠµŠŗуŠ½Š“</item>
</plurals>
<plurals name="time_minutes_quantified">
<item quantity="one">1 хŠ²ŠøŠ»ŠøŠ½Š°</item>
<item quantity="few">%d хŠ²ŠøŠ»ŠøŠ½Šø</item>
+ <item quantity="many">%d хŠ²ŠøŠ»ŠøŠ½</item>
<item quantity="other">%d хŠ²ŠøŠ»ŠøŠ½</item>
</plurals>
<plurals name="time_hours_quantified">
<item quantity="one">1 Š³Š¾Š“ŠøŠ½Š°</item>
<item quantity="few">%d Š³Š¾Š“ŠøŠ½Šø</item>
+ <item quantity="many">%d Š³Š¾Š“ŠøŠ½</item>
<item quantity="other">%d Š³Š¾Š“ŠøŠ½</item>
</plurals>
<string name="auto_enable_label">Š£Š²Ń–Š¼ŠŗŠ½ŃƒŃ‚Šø Š°Š²Ń‚Š¾Š¼Š°Ń‚ŠøчŠ½Š¾</string>
@@ -522,7 +569,7 @@
<string name="selected_folder_label">ŠžŠ±Ń€Š°Ń‚Šø ŠæŠ°ŠæŠŗу:</string>
<string name="create_folder_label">ŠŠ¾Š²Š° ŠæŠ°ŠæŠŗŠ°</string>
<string name="choose_data_directory">ŠžŠ±Ń€Š°Ń‚Šø ŠæŠ°ŠæŠŗу</string>
- <string name="choose_data_directory_message">ŠžŠ±ŠµŃ€Ń–Ń‚ŃŒ, Š±ŃƒŠ“ь Š»Š°ŃŠŗŠ°, Š±Š°Š·Š¾Š²ŠøŠ¹ ŠŗŠ°Ń‚Š°Š»Š¾Š³ Š“Š»Ń Š“Š°Š½Šøх. AntennaPod стŠ²Š¾Ń€Šøть Š²Ń–Š“ŠæŠ¾Š²Ń–Š“Š½Ń– ŠæіŠ“рŠ¾Š·Š“іŠ»Šø. </string>
+ <string name="choose_data_directory_message">ŠžŠ±ŠµŃ€Ń–Ń‚ŃŒ, Š±ŃƒŠ“ь Š»Š°ŃŠŗŠ°, Š±Š°Š·Š¾Š²ŠøŠ¹ ŠŗŠ°Ń‚Š°Š»Š¾Š³ Š“Š°Š½Šøх. AntennaPod стŠ²Š¾Ń€Šøть Š²Ń–Š“ŠæŠ¾Š²Ń–Š“Š½Ń– ŠæіŠ“рŠ¾Š·Š“іŠ»Šø.</string>
<string name="choose_data_directory_permission_rationale">Š”Š»Ń Š·Š¼Ń–Š½Šø ŠæŠ°ŠæŠŗŠø Š·Š±ŠµŃ€Ń–Š³Š°Š½Š½Ń Š“Š°Š½Šøх ŠæŠ¾Ń‚ріŠ±ŠµŠ½ Š“Š¾ŃŃ‚ŃƒŠæ Š“Š¾ Š·Š¾Š²Š½Ń–ŃˆŠ½ŃŒŠ¾Š³Š¾ Š½Š¾ŃŃ–я</string>
<string name="create_folder_msg">Š”тŠ²Š¾Ń€ŠøтŠø ŠæŠ°ŠæŠŗу Š· іŠ¼\'яŠ¼ \"%1$s\"?</string>
<string name="create_folder_success">Š”тŠ²Š¾Ń€ŠµŠ½Š° Š½Š¾Š²Š° ŠæŠ°ŠæŠŗŠ°</string>
@@ -537,8 +584,8 @@
<string name="set_to_default_folder">ŠžŠ±Ń€Š°Ń‚Šø ŠæŠ°ŠæŠŗу ŠæŠ¾ Š·Š°Š¼Š¾Š²Ń‡Š°Š½Š½ŃŽ</string>
<string name="pref_pausePlaybackForFocusLoss_sum">ŠŸŃ€ŠøŠ·ŃƒŠæŠøŠ½ŃŃ‚Šø ŠæрŠ¾Š³Ń€Š°Š²Š°Š½Š½Ń Š·Š°Š¼Ń–ŃŃ‚ŃŒ Š·Š½ŠøŠ¶ŠµŠ½Š½Ń Š³ŃƒŃ‡Š½Š¾ŃŃ‚Ń– ŠŗŠ¾Š»Šø іŠ½ŃˆŠ° ŠæрŠ¾Š³Ń€Š°Š¼Š° хŠ¾Ń‡Šµ ŠæрŠ¾Š³Ń€Š°Ń‚Šø Š·Š²ŃƒŠŗ</string>
<string name="pref_pausePlaybackForFocusLoss_title">ŠŸŠ°ŃƒŠ·Š° Š² рŠ°Š·Ń– ŠæŠµŃ€ŠµŃ€ŠøŠ²Š°Š½Š½Ń</string>
- <string name="pref_resumeAfterCall_sum">Š’Ń–Š“Š½Š¾Š²ŠøтŠø Š²Ń–Š“тŠ²Š¾Ń€ŠµŠ½Š½Ń ŠæісŠ»Ń Š·Š°ŠŗіŠ½Ń‡ŠµŠ½Š½Ń Š“Š·Š²Ń–Š½ŠŗŠ°</string>
- <string name="pref_resumeAfterCall_title">Š’Ń–Š“Š½Š¾Š²ŠøтŠø ŠæісŠ»Ń Š“Š·Š²Ń–Š½ŠŗŠ°</string>
+ <string name="pref_resumeAfterCall_sum">ŠŸŠ¾Š½Š¾Š²ŠøтŠø Š²Ń–Š“тŠ²Š¾Ń€ŠµŠ½Š½Ń ŠæісŠ»Ń Š·Š°ŠŗіŠ½Ń‡ŠµŠ½Š½Ń Š“Š·Š²Ń–Š½ŠŗŠ°</string>
+ <string name="pref_resumeAfterCall_title">ŠŸŠ¾Š½Š¾Š²ŠøтŠø ŠæісŠ»Ń Š“Š·Š²Ń–Š½ŠŗŠ°</string>
<string name="pref_restart_required">Š”Š»Ń Š·Š°ŃŃ‚Š¾ŃŃƒŠ²Š°Š½Š½Ń Š·Š¼Ń–Š½ ŠæŠ¾Ń‚ріŠ±Š½Š¾ ŠæŠµŃ€ŠµŠ·Š°ŠæустŠøтŠø AntennaPod</string>
<!--Online feed view-->
<string name="subscribe_label">ŠŸŃ–Š“ŠæŠøсŠ°Ń‚Šøся</string>
@@ -559,10 +606,10 @@
<string name="authentication_descr">Š—Š¼Ń–Š½ŠøтŠø Š²Š°ŃˆŃ– Š»Š¾Š³Ń–Š½ тŠ° ŠæŠ°Ń€Š¾Š»ŃŒ Š“Š»Ń ŠæŠ¾Š“ŠŗŠ°ŃŃ‚Š° тŠ° ŠµŠæіŠ·Š¾Š“іŠ²</string>
<string name="auto_download_settings_label">ŠŠ°Š»Š°ŃˆŃ‚ŃƒŠ²Š°Š½Š½Ń Š°Š²Ń‚Š¾Š·Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½Š½Ń</string>
<string name="episode_filters_label">Š¤Ń–Š»ŃŒŃ‚Ń€ ŠµŠæіŠ·Š¾Š“іŠ²</string>
- <string name="episode_filters_description">ŠŸŠµŃ€ŠµŠ»Ń–Šŗ тŠµŃ€Š¼Ń–Š½Ń–Š² щŠ¾ Š²ŠøŠŗŠ¾Ń€ŠøстŠ¾Š²ŃƒŃŽŃ‚ŃŒŃŃ Š“Š»Ń Š²ŠøрішŠµŠ½Š½Ń чŠø Š·Š°Š²Š°Š½Ń‚Š°Š¶ŃƒŠ²Š°Ń‚Šø ŠµŠæіŠ·Š¾Š“ Š°Š²Ń‚Š¾Š¼Š°Ń‚ŠøчŠ½Š¾</string>
+ <string name="episode_filters_description">ŠŸŠµŃ€ŠµŠ»Ń–Šŗ тŠµŃ€Š¼Ń–Š½Ń–Š², щŠ¾ Š²ŠøŠŗŠ¾Ń€ŠøстŠ¾Š²ŃƒŃŽŃ‚ŃŒŃŃ Š“Š»Ń Š²ŠøрішŠµŠ½Š½Ń чŠø сŠ»Ń–Š“ Š·Š°Š²Š°Š½Ń‚Š°Š¶ŃƒŠ²Š°Ń‚Šø ŠµŠæіŠ·Š¾Š“ Š°Š²Ń‚Š¾Š¼Š°Ń‚ŠøчŠ½Š¾</string>
<string name="episode_filters_include">Š’ŠŗŠ»ŃŽŃ‡ŠøтŠø</string>
- <string name="episode_filters_exclude">Š’ŠøŠ»ŃƒŃ‡ŠøтŠø</string>
- <string name="episode_filters_hint">ŠžŠŗрŠµŠ¼Ń– сŠ»Š¾Š²Š° \n\"Š”Š»Š¾Š²Š° Š Š°Š·Š¾Š¼\"</string>
+ <string name="episode_filters_exclude">Š’ŠøŠŗŠ»ŃŽŃ‡ŠøтŠø</string>
+ <string name="episode_filters_hint">ŠžŠŗрŠµŠ¼Ń– сŠ»Š¾Š²Š° \n\"ŠšŃ–Š»ŃŒŠŗŠ° сŠ»Ń–Š²\"</string>
<string name="keep_updated">ŠŸŃ–Š“трŠøŠ¼ŃƒŠ²Š°Ń‚Šø Š¾Š½Š¾Š²Š»ŠµŠ½ŠøŠ¼</string>
<!--Progress information-->
<string name="progress_upgrading_database">ŠžŠ½Š¾Š²Š»ŠµŠ½Š½Ń Š±Š°Š·Šø Š“Š°Š½Šøх</string>
@@ -575,11 +622,11 @@
<string name="all_label">Š’сі</string>
<string name="selected_all_label">ŠžŠ±Ń€Š°Š½Š¾ Š²ŃŃ– ŠµŠæіŠ·Š¾Š“Šø</string>
<string name="none_label">Š–Š¾Š“Š½Š¾Š³Š¾</string>
- <string name="deselected_all_label">Š–Š¾Š“Š½Š¾Š³Š¾ ŠµŠæіŠ·Š¾Š“Š° Š¾Š±Ń€Š°Š½Š¾</string>
- <string name="played_label">ŠŸŠµŃ€ŠµŠ³Š»ŃŠ½ŃƒŃ‚Ń–</string>
- <string name="selected_played_label">ŠžŠ±Ń€Š°Š½Š¾ ŠæŠµŃ€ŠµŠ³Š»ŃŠ½ŃƒŃ‚Ń– ŠµŠæіŠ·Š¾Š“Šø</string>
- <string name="unplayed_label">ŠŠµŠæŠµŃ€ŠµŠ³Š»ŃŠ½ŃƒŃ‚Ń–</string>
- <string name="selected_unplayed_label">ŠžŠ±Ń€Š°Š½Š¾ Š½ŠµŠæŠµŃ€ŠµŠ³Š»ŃŠ½ŃƒŃ‚Ń– ŠµŠæіŠ·Š¾Š“Šø</string>
+ <string name="deselected_all_label">Š–Š¾Š“Š½Š¾Š³Š¾ ŠµŠæіŠ·Š¾Š“Š° Š½Šµ Š¾Š±Ń€Š°Š½Š¾</string>
+ <string name="played_label">Š’Ń–Š“тŠ²Š¾Ń€ŠµŠ½Ń–</string>
+ <string name="selected_played_label">ŠžŠ±Ń€Š°Š½Š¾ Š²Ń–Š“тŠ²Š¾Ń€ŠµŠ½Ń– ŠµŠæіŠ·Š¾Š“Šø</string>
+ <string name="unplayed_label">ŠŠµŠ²Ń–Š“тŠ²Š¾Ń€ŠµŠ½Ń–</string>
+ <string name="selected_unplayed_label">ŠžŠ±Ń€Š°Š½Š¾ Š½ŠµŠ²Ń–Š“тŠ²Š¾Ń€ŠµŠ½Ń– ŠµŠæіŠ·Š¾Š“Šø</string>
<string name="downloaded_label">Š—Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½Ń–</string>
<string name="selected_downloaded_label">ŠžŠ±Ń€Š°Š½Š¾ Š·Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½Ń– ŠµŠæіŠ·Š¾Š“Šø</string>
<string name="not_downloaded_label">ŠŠµŠ·Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½Ń–</string>
@@ -588,8 +635,8 @@
<string name="selected_queued_label">ŠžŠ±Ń€Š°Š½Š¾ ŠµŠæіŠ·Š¾Š“Šø щŠ¾ Š² чŠµŃ€Š·Ń–</string>
<string name="not_queued_label">ŠŠµ Š² чŠµŃ€Š·Ń–</string>
<string name="selected_not_queued_label">ŠžŠ±Ń€Š°Š½Š¾ ŠµŠæіŠ·Š¾Š“Šø щŠ¾ Š½Šµ Š² чŠµŃ€Š·Ń–</string>
- <string name="has_media">Š†Š· Š·Š²ŃƒŠŗŠ¾Š¼ Š°Š±Š¾ Š²Ń–Š“ŠµŠ¾</string>
- <string name="selected_has_media_label">ŠžŠ±Ń€Š°Š½Š¾ ŠµŠæіŠ·Š¾Š“Šø іŠ· Š·Š²ŃƒŠŗŠ¾Š¼ Š°Š±Š¾ Š²Ń–Š“ŠµŠ¾</string>
+ <string name="has_media">Š—Ń– Š·Š²ŃƒŠŗŠ¾Š¼ Š°Š±Š¾ Š²Ń–Š“ŠµŠ¾</string>
+ <string name="selected_has_media_label">ŠžŠ±Ń€Š°Š½Š¾ ŠµŠæіŠ·Š¾Š“Šø Š·Ń– Š·Š²ŃƒŠŗŠ¾Š¼ Š°Š±Š¾ Š²Ń–Š“ŠµŠ¾</string>
<!--Sort-->
<string name="sort_title_a_z">ŠŠ°Š·Š²Š° (Š \u2192 ŠÆ)</string>
<string name="sort_title_z_a">ŠŠ°Š·Š²Š° (ŠÆ \u2192 Š)</string>
@@ -598,7 +645,7 @@
<string name="sort_duration_short_long">Š¢Ń€ŠøŠ²Š°Š»Ń–ŃŃ‚ŃŒ (ŠšŠ¾Ń€Š¾Ń‚Šŗі \u2192 Š”Š¾Š²Š³Ń–)</string>
<string name="sort_duration_long_short">Š¢Ń€ŠøŠ²Š°Š»Ń–ŃŃ‚ŃŒ (Š”Š¾Š²Š³Ń– \u2192 ŠšŠ¾Ń€Š¾Ń‚Šŗі)</string>
<!--Rating dialog-->
- <string name="rating_title">ŠžŃ†Ń–Š½ŠøтŠø AntennaPod?</string>
+ <string name="rating_title">ŠŸŠ¾Š“Š¾Š±Š°Ń”Ń‚ŃŒŃŃ AntennaPod?</string>
<string name="rating_message">ŠœŠø Š±ŃƒŠ“ŠµŠ¼Š¾ Š²Š“ячŠ½Ń– яŠŗщŠ¾ Š²Šø ŠæŠ¾ŃŃ‚Š°Š²ŠøтŠµ сŠ²Š¾ŃŽ Š¾Ń†Ń–Š½Šŗу AntennaPod.</string>
<string name="rating_never_label">ŠŠµ Š·Š°Ń€Š°Š·</string>
<string name="rating_later_label">ŠŠ°Š³Š°Š“Š°Ń‚Šø Š·Š³Š¾Š“Š¾Š¼</string>
@@ -623,10 +670,18 @@
<string name="proxy_test_failed">ŠŸŃ€Š¾Ń‚ŠµŃŃ‚Š¾Š²Š°Š½Š¾ Š· ŠæŠ¾Š¼ŠøŠ»ŠŗŠ°Š¼Šø</string>
<string name="proxy_host_empty_error">Š„Š¾ŃŃ‚ Š½Šµ Š¼Š¾Š¶Šµ Š±ŃƒŃ‚Šø ŠæустŠøŠ¼</string>
<string name="proxy_host_invalid_error">Š„Š¾ŃŃ‚ Š½Šµ є ŠæрŠ°Š²ŠøŠ»ŃŒŠ½Š¾ŃŽ IP-Š°Š“рŠµŃŠ¾ŃŽ Š°Š±Š¾ Š“Š¾Š¼ŠµŠ½Š½ŠøŠ¼ іŠ¼ā€™ŃŠ¼</string>
- <string name="proxy_port_invalid_error">ŠŠµŠæрŠ°Š²ŠøŠ»ŃŒŠ½ŠøŠ¹ ŠæŠ¾Ń€Ń‚</string>
+ <string name="proxy_port_invalid_error">ŠŸŠ¾Ń€Ń‚ Š½ŠµŠ“іŠ¹ŃŠ½ŠøŠ¹</string>
+ <!--Database import/export-->
+ <string name="import_export">Š†Š¼ŠæŠ¾Ń€Ń‚ŃƒŠ²Š°Ń‚Šø/Š•ŠŗсŠæŠ¾Ń€Ń‚ŃƒŠ²Š°Ń‚Šø Š±Š°Š·Ńƒ Š“Š°Š½Š½Šøх</string>
+ <string name="import_export_warning">Š¦Ń ŠµŠŗсŠæŠµŃ€ŠøŠ¼ŠµŠ½Ń‚Š°Š»ŃŒŠ½Š° фуŠ½Šŗція Š²ŠøŠŗŠ¾Ń€ŠøстŠ¾Š²ŃƒŃ”Ń‚ŃŒŃŃ Š“Š»Ń ŠæŠµŃ€ŠµŠ½ŠµŃŠµŠ½Š½Ń Š²Š°ŃˆŠøх ŠæіŠ“ŠæŠøсŠ¾Šŗ тŠ° Š²Š¶Šµ ŠæрŠ¾ŃŠ»ŃƒŃ…Š°Š½Šøх ŠµŠæіŠ·Š¾Š“іŠ² Š“Š¾ іŠ½ŃˆŠ¾Š³Š¾ ŠæрŠøстрŠ¾ŃŽ.\n\nŠ•ŠŗсŠæŠ¾Ń€Ń‚Š¾Š²Š°Š½Š° Š±Š°Š·Š° Š“Š°Š½Šøх Š¼Š¾Š¶Šµ Š±ŃƒŃ‚Šø іŠ¼ŠæŠ¾Ń€Ń‚Š¾Š²Š°Š½Š° тією Š¶ сŠ°Š¼Š¾ŃŽ Š²ŠµŃ€ŃŃ–єю AntennaPod. Š†Š½Š°ŠŗшŠµ, рŠµŠ·ŃƒŠ»ŃŒŃ‚Š°Ń‚ Š¼Š¾Š¶Šµ Š±ŃƒŃ‚Šø Š½ŠµŠæŠµŃ€ŠµŠ“Š±Š°Ń‡ŠµŠ½ŠøŠ¼.\n\nŠŸŃ–сŠ»Ń іŠ¼ŠæŠ¾Ń€Ń‚ŃƒŠ²Š°Š½Š½Ń, ŠµŠæіŠ·Š¾Š“Šø Š¼Š¾Š¶ŃƒŃ‚ŃŒ Š²Ń–Š“Š¾Š±Ń€Š°Š¶Š°Ń‚Šøся яŠŗ Š·Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½Ń–, Š½Š°Š²Ń–Ń‚ŃŒ яŠŗщŠ¾ Š²Š¾Š½Šø тŠ°ŠŗŠøŠ¼Šø Š½Šµ є. ŠŸŃ€Š¾ŃŃ‚Š¾ Š½Š°Ń‚ŠøсŠ½Ń–Ń‚ŃŒ ŠŗŠ½Š¾ŠæŠŗу Š²Ń–Š“тŠ²Š¾Ń€ŠµŠ½Š½Ń ŠµŠæіŠ·Š¾Š“іŠ², щŠ¾Š± AntennaPod Š²ŠøяŠ²ŠøŠ² цŠµ.</string>
+ <string name="label_import">Š†Š¼ŠæŠ¾Ń€Ń‚ŃƒŠ²Š°Ń‚Šø</string>
+ <string name="label_export">Š•ŠŗсŠæŠ¾Ń€Ń‚ŃƒŠ²Š°Ń‚Šø</string>
+ <string name="import_select_file">ŠžŠ±Ń€Š°Ń‚Šø фŠ°Š¹Š» Š“Š»Ń іŠ¼ŠæŠ¾Ń€Ń‚Ńƒ</string>
+ <string name="export_ok">Š£ŃŠæішŠ½ŠøŠ¹ ŠµŠŗсŠæŠ¾Ń€Ń‚</string>
+ <string name="import_ok">Š†Š¼ŠæŠ¾Ń€Ń‚ ŠæрŠ¾Š¹ŃˆŠ¾Š² усŠæішŠ½Š¾.\n\nŠ‘ŃƒŠ“ь Š»Š°ŃŠŗŠ°, Š½Š°Ń‚ŠøсŠ½Ń–Ń‚ŃŒ ŠžŠš щŠ¾Š± ŠæŠµŃ€ŠµŠ·Š°ŠæустŠøтŠø AntennaPod</string>
<!--Casting-->
<string name="cast_media_route_menu_title">Š“Ń€Š°Ń‚Šø Š½Š°ā€¦</string>
- <string name="cast_disconnect_label">Š’Ń–Š“ā€™Ń”Š“Š½Š°Ń‚Šøсь Š²Ń–Š“ ŠæрŠøстрŠ¾Ń ŠæрŠ¾Š³Ń€Š°Š²Š°Š½Š½Ń</string>
+ <string name="cast_disconnect_label">Š’Ń–Š“ā€™Ń”Š“Š½Š°Ń‚Šøсь Š²Ń–Š“ ŠæрŠøстрŠ¾ŃŽ ŠæрŠ¾Š³Ń€Š°Š²Š°Š½Š½Ń</string>
<string name="cast_not_castable">ŠžŠ±Ń€Š°Š½ŠøŠ¹ фŠ°Š¹Š» Š½Šµ суŠ¼Ń–сŠ½ŠøŠ¹ Š· ŠæрŠøстрŠ¾Ń”Š¼ ŠæрŠ¾Š³Ń€Š°Š²Š°Š½Š½Ń</string>
<string name="cast_failed_to_play">ŠŸŠ¾Š¼ŠøŠ»ŠŗŠ° ŠæрŠ¾Š³Ń€Š°Š²Š°Š½Š½Ń фŠ°Š¹Š»Š°</string>
<string name="cast_failed_to_stop">ŠŸŠ¾Š¼ŠøŠ»ŠŗŠ° сŠæрŠ¾Š±Šø Š·ŃƒŠæŠøŠ½ŠŗŠø ŠæрŠ¾Š³Ń€Š°Š²Š°Š½Š½Ń</string>
@@ -634,10 +689,19 @@
<!--<string name="cast_failed_to_connect">Could not connect to the device</string>-->
<string name="cast_failed_setting_volume">ŠŸŠ¾Š¼ŠøŠ»ŠŗŠ° Š²ŃŃ‚Š°Š½Š¾Š²Š»ŠµŠ½Š½Ń Š³ŃƒŃ‡Š½Š¾ŃŃ‚Ń–</string>
<string name="cast_failed_no_connection">ŠŠµŠ¼Š°Ń” Š·ā€™Ń”Š“Š½Š°Š½Š½Ń Š· ŠæрŠøстрŠ¾Ń”Š¼ ŠæрŠ¾Š³Ń€Š°Š²Š°Š½Š½Ń</string>
- <string name="cast_failed_no_connection_trans">Š—Š²ā€™ŃŠ·Š¾Šŗ Š· ŠæрŠøстрŠ¾Ń”Š¼ ŠæрŠ¾Š³Ń€Š°Š²Š°Š½Š½Ń Š²Ń‚Ń€Š°Ń‡ŠµŠ½Š¾. ŠŸŃ€Š¾Š³Ń€Š°Š¼Š° Š½Š°Š¼Š°Š³Š°Ń”Ń‚ŃŒŃŃ ŠæŠ¾Š½Š¾Š²ŠøтŠø Š·Š²ā€™ŃŠ·Š¾Šŗ, яŠŗщŠ¾ цŠµ Š¼Š¾Š¶Š»ŠøŠ²Š¾. Š‘ŃƒŠ“ь Š»Š°ŃŠŗŠ° Š·Š°Ń‡ŠµŠŗŠ°Š¹Ń‚Šµ ŠŗіŠ»ŃŒŠŗŠ° сŠµŠŗуŠ½Š“ і сŠæрŠ¾Š±ŃƒŠ¹Ń‚Šµ Š·Š½Š¾Š².</string>
+ <string name="cast_failed_no_connection_trans">Š—Š²ā€™ŃŠ·Š¾Šŗ Š· ŠæрŠøстрŠ¾Ń”Š¼ ŠæрŠ¾Š³Ń€Š°Š²Š°Š½Š½Ń Š²Ń‚Ń€Š°Ń‡ŠµŠ½Š¾. ŠŸŃ€Š¾Š³Ń€Š°Š¼Š° Š½Š°Š¼Š°Š³Š°Ń”Ń‚ŃŒŃŃ ŠæŠ¾Š½Š¾Š²ŠøтŠø Š·\'єŠ“Š½Š°Š½Š½Ń, яŠŗщŠ¾ цŠµ Š¼Š¾Š¶Š»ŠøŠ²Š¾. Š‘ŃƒŠ“ь Š»Š°ŃŠŗŠ° Š·Š°Ń‡ŠµŠŗŠ°Š¹Ń‚Šµ ŠŗіŠ»ŃŒŠŗŠ° сŠµŠŗуŠ½Š“ і сŠæрŠ¾Š±ŃƒŠ¹Ń‚Šµ Š·Š½Š¾Š².</string>
<string name="cast_failed_perform_action">ŠŸŠ¾Š¼ŠøŠ»ŠŗŠ° Š²ŠøŠŗŠ¾Š½Š°Š½Š½Ń Š“ії</string>
<string name="cast_failed_status_request">ŠŸŠ¾Š¼ŠøŠ»ŠŗŠ° сŠøŠ½Ń…Ń€Š¾Š½ŠøŠ·Š°Ń†Ń–Ń— Š· ŠæрŠøстрŠ¾Ń”Š¼ ŠæрŠ¾Š³Ń€Š°Š²Š°Š½Š½Ń</string>
<string name="cast_failed_seek">ŠŸŠ¾Š¼ŠøŠ»ŠŗŠ° ŠæŠµŃ€ŠµŃ…Š¾Š“Š° Š½Š° Š½Š¾Š²Ńƒ ŠæŠ¾Š·Šøцію ŠæрŠ¾Š³Ń€Š°Š²Š°Š½Š½Ń Š½Š° ŠæрŠøстрŠ¾Ń—.</string>
<string name="cast_failed_receiver_player_error">Š”ŠµŃ€Š¹Š¾Š·Š½Š° ŠæŠ¾Š¼ŠøŠ»ŠŗŠ° ŠæрŠ¾Š³Ń€Š°Š²Š°Š½Š½Ń Š½Š° ŠæрŠøстрŠ¾Ń—</string>
<string name="cast_failed_media_error_skipping">ŠŸŠ¾Š¼ŠøŠ»ŠŗŠ° ŠæрŠ¾Š³Ń€Š°Š²Š°Š½Š½Ń фŠ°Š¹Š»Š°. ŠŸŃ€Š¾ŠæусŠŗŠ°ŃŽ...</string>
+ <!--Notification channels-->
+ <string name="notification_channel_user_action">ŠŸŠ¾Ń‚ріŠ±Š½Š° Š“ія</string>
+ <string name="notification_channel_user_action_description">Š’Ń–Š“Š¾Š±Ń€Š°Š¶Š°Ń”Ń‚ŃŒŃŃ, яŠŗщŠ¾ ŠæŠ¾Ń‚ріŠ±Š½Š° Š²Š°ŃˆŠ° Š“ія, Š½Š°ŠæрŠøŠŗŠ»Š°Š“, яŠŗщŠ¾ ŠæŠ¾Ń‚ріŠ±Š½Š¾ Š²Š²ŠµŃŃ‚Šø ŠæŠ°Ń€Š¾Š»ŃŒ.</string>
+ <string name="notification_channel_downloading">Š—Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½Š½Ń</string>
+ <string name="notification_channel_downloading_description">ŠŸŠ¾ŠŗŠ°Š·ŃƒŃ”Ń‚ŃŒŃŃ ŠæіŠ“ чŠ°Ń Š·Š°Š²Š°Š½Ń‚Š°Š¶ŠµŠ½Š½Ń.</string>
+ <string name="notification_channel_playing">ŠŸŃ€Š¾Š³Ń€Š°Ń”Ń‚ŃŒŃŃ Š·Š°Ń€Š°Š·</string>
+ <string name="notification_channel_playing_description">Š”Š¾Š·Š²Š¾Š»ŃŃ” ŠŗŠµŃ€ŃƒŠ²Š°Ń‚Šø Š²Ń–Š“тŠ²Š¾Ń€ŠµŠ½Š½ŃŠ¼. Š¦Šµ Š¾ŃŠ½Š¾Š²Š½Šµ сŠæŠ¾Š²Ń–щŠµŠ½Š½Ń, яŠŗŠµ Š²Šø Š±Š°Ń‡ŠøтŠµ ŠæіŠ“ чŠ°Ń Š²Ń–Š“тŠ²Š¾Ń€ŠµŠ½Š½Ń ŠæŠ¾Š“ŠŗŠ°ŃŃ‚Ńƒ.</string>
+ <string name="notification_channel_error">ŠŸŠ¾Š¼ŠøŠ»ŠŗŠø</string>
+ <string name="notification_channel_error_description">Š’Ń–Š“Š¾Š±Ń€Š°Š¶Š°Ń”Ń‚ŃŒŃŃ, яŠŗщŠ¾ щŠ¾ŃŃŒ ŠæішŠ»Š¾ Š½Šµ тŠ°Šŗ, Š½Š°ŠæрŠøŠŗŠ»Š°Š“, яŠŗщŠ¾ Š½Šµ Š²Š“Š°Š»Š¾ŃŃ Š·Š°Š²Š°Š½Ń‚Š°Š¶ŠøтŠø Š°Š±Š¾ сŠøŠ½Ń…Ń€Š¾Š½Ń–Š·ŃƒŠ²Š°Ń‚Šø Š· gpodder.</string>
</resources>
diff --git a/core/src/main/res/values-v21/styles.xml b/core/src/main/res/values-v21/styles.xml
index 503337c95..c53000c4f 100644
--- a/core/src/main/res/values-v21/styles.xml
+++ b/core/src/main/res/values-v21/styles.xml
@@ -6,6 +6,19 @@
<style name="Theme.AntennaPod.Dark" parent="Theme.Base.AntennaPod.Dark">
<item name="android:windowContentTransitions">true</item>
</style>
+ <style name="Theme.AntennaPod.TrueBlack" parent="Theme.Base.AntennaPod.TrueBlack">
+ <item name="android:windowContentTransitions">true</item>
+ <item name="android:navigationBarColor">@color/black</item>
+ <item name="android:colorAccent">@color/white</item>
+ <item name="android:colorPrimary">@color/black</item>
+ <item name="android:colorPrimaryDark">@color/black</item>
+ </style>
+ <style name="Theme.AntennaPod.TrueBlack.NoTitle" parent="Theme.Base.AntennaPod.TrueBlack.NoTitle">
+ <item name="android:navigationBarColor">@color/black</item>
+ <item name="android:colorAccent">@color/white</item>
+ <item name="android:colorPrimary">@color/black</item>
+ <item name="android:colorPrimaryDark">@color/black</item>
+ </style>
<style name="Widget.AntennaPod.Button" parent="Widget.AppCompat.Button">
<item name="textAllCaps">true</item>
diff --git a/core/src/main/res/values-v23/styles.xml b/core/src/main/res/values-v23/styles.xml
new file mode 100644
index 000000000..5cd274e68
--- /dev/null
+++ b/core/src/main/res/values-v23/styles.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+ <style name="Theme.AntennaPod.Light.NoTitle" parent="Theme.Base.AntennaPod.Light.NoTitle">
+ <item name="android:windowLightStatusBar">true</item>
+ <item name="colorPrimaryDark">@color/primary_light</item>
+ </style>
+
+ <style name="Theme.AntennaPod.Light" parent="Theme.Base.AntennaPod.Light">
+ <item name="android:windowLightStatusBar">true</item>
+ <item name="colorPrimaryDark">@color/primary_light</item>
+ </style>
+</resources>
diff --git a/core/src/main/res/values-vi-rVN/strings.xml b/core/src/main/res/values-vi-rVN/strings.xml
index acf3abe75..2d9481b84 100644
--- a/core/src/main/res/values-vi-rVN/strings.xml
+++ b/core/src/main/res/values-vi-rVN/strings.xml
@@ -36,4 +36,5 @@
<!--Database import/export-->
<!--Casting-->
<!--<string name="cast_failed_to_connect">Could not connect to the device</string>-->
+ <!--Notification channels-->
</resources>
diff --git a/core/src/main/res/values-vi/strings.xml b/core/src/main/res/values-vi/strings.xml
index 00ed733d1..0982d2b14 100644
--- a/core/src/main/res/values-vi/strings.xml
+++ b/core/src/main/res/values-vi/strings.xml
@@ -48,7 +48,6 @@
<string name="yes">CĆ³</string>
<string name="no">KhƓng</string>
<string name="reset">Đįŗ·t lįŗ”i</string>
- <string name="author_label">TĆ”c giįŗ£</string>
<string name="language_label">NgĆ“n ngį»Æ</string>
<string name="url_label">LiĆŖn kįŗæt</string>
<string name="podcast_settings_label">Thiįŗæt lįŗ­p</string>
@@ -93,20 +92,11 @@
<string name="mark_all_read_msg">ĐƔnh dįŗ„u Ä‘Ć£ nghe tįŗ„t cįŗ£ cĆ”c tįŗ­p</string>
<string name="mark_all_read_confirmation_msg">HĆ£y xĆ”c nhįŗ­n bįŗ”n muį»‘n Ä‘Ć”nh dįŗ„u Ä‘Ć£ nghe tįŗ„t cįŗ£ cĆ”c tįŗ­p.</string>
<string name="mark_all_seen_label">ĐƔnh dįŗ„u Ä‘Ć£ xem tįŗ„t cįŗ£</string>
- <string name="mark_all_seen_msg">ĐƔnh dįŗ„u Ä‘Ć£ xem tįŗ„t cįŗ£ cĆ”c tįŗ­p</string>
<string name="mark_all_seen_confirmation_msg">HĆ£y xĆ”c nhįŗ­n bįŗ”n muį»‘n Ä‘Ć”nh dįŗ„u Ä‘Ć£ xem tįŗ„t cįŗ£ cĆ”c tįŗ­p.</string>
<string name="show_info_label">Hiį»‡n thĆ“ng tin</string>
- <string name="rename_feed_label">Đį»•i tĆŖn podcast</string>
- <string name="remove_feed_label">XoĆ” podcast</string>
<string name="share_label">Chia sįŗ»ā€¦</string>
- <string name="share_link_label">Chia sįŗ» liĆŖn kįŗæt</string>
- <string name="share_link_with_position_label">Chia sįŗ» liĆŖn kįŗæt cĆ¹ng vį»‹ trĆ­ phĆ”t</string>
<string name="share_feed_url_label">Chia sįŗ» liĆŖn kįŗæt feed</string>
- <string name="share_item_url_label">Chia sįŗ» liĆŖn kįŗæt cį»§a tįŗ­p nĆ y</string>
- <string name="share_item_url_with_position_label">Chia sįŗ» liĆŖn kįŗæt vĆ  vį»‹ trĆ­ phĆ”t tįŗ­p nĆ y</string>
- <string name="feed_remover_msg">Đang xoƔ feed</string>
<string name="hide_episodes_title">įŗØn cĆ”c tįŗ­p</string>
- <string name="episode_actions">Ɓp dį»„ng hĆ nh đį»™ng</string>
<string name="hide_unplayed_episodes_label">ChĘ°a nghe</string>
<string name="hide_paused_episodes_label">Đang tįŗ”m dį»«ng</string>
<string name="hide_played_episodes_label">ÄĆ£ nghe</string>
@@ -204,7 +194,6 @@
<string name="date">NgĆ y</string>
<string name="duration">Thį»i lĘ°į»£ng</string>
<string name="episode_title">TiĆŖu đį» tįŗ­p</string>
- <string name="feed_title">TiĆŖu đį» feed</string>
<string name="ascending">Tăng dįŗ§n</string>
<string name="descending">Giįŗ£m dįŗ§n</string>
<!--Flattr-->
@@ -233,7 +222,6 @@
<string name="pref_pauseOnDisconnect_sum">Tįŗ”m dį»«ng khi tai nghe hoįŗ·c thiįŗæt bį»‹ Bluetooth bį»‹ ngįŗÆt kįŗæt nį»‘i</string>
<string name="pref_unpauseOnHeadsetReconnect_sum">Tiįŗæp tį»„c phĆ”t khi tai nghe đʰį»£c kįŗæt nį»‘i lįŗ”i</string>
<string name="pref_unpauseOnBluetoothReconnect_sum">Tiįŗæp tį»„c phĆ”t khi thiįŗæt bį»‹ Bluetooth đʰį»£c kįŗæt nį»‘i lįŗ”i</string>
- <string name="pref_hardwareForwardButtonSkips_sum">Khi įŗ„n nĆŗt tua nhanh (nĆŗt cį»©ng), khĆ“ng tua mĆ  chuyįŗæn sang tįŗ­p tiįŗæp theo</string>
<string name="pref_hardwarePreviousButtonRestarts_title">Nghe lįŗ”i khi įŗ„n nĆŗt tua lįŗ”i</string>
<string name="pref_hardwarePreviousButtonRestarts_sum">Khi įŗ„n nĆŗt tua lįŗ”i (nĆŗt cį»©ng), khĆ“ng tua lįŗ”i mĆ  phĆ”t lįŗ”i tįŗ­p đang nghe</string>
<string name="pref_followQueue_sum">Chuyį»ƒn đįŗæn mį»„c đį»£i phĆ”t tiįŗæp theo khi nghe xong</string>
@@ -309,4 +297,5 @@
<!--Database import/export-->
<!--Casting-->
<!--<string name="cast_failed_to_connect">Could not connect to the device</string>-->
+ <!--Notification channels-->
</resources>
diff --git a/core/src/main/res/values-zh-rCN/strings.xml b/core/src/main/res/values-zh-rCN/strings.xml
index 3eda888f9..02e78171c 100644
--- a/core/src/main/res/values-zh-rCN/strings.xml
+++ b/core/src/main/res/values-zh-rCN/strings.xml
@@ -18,17 +18,19 @@
<string name="cancel_download_label">å–ę¶ˆäø‹č½½</string>
<string name="playback_history_label">ę’­ę”¾åŽ†å²</string>
<string name="gpodnet_main_label">gpodder.net</string>
+ <string name="gpodnet_summary">äøŽå…¶ä»–č®¾å¤‡åŒę­„</string>
<string name="gpodnet_auth_label">gpodder.net ē™»å½•</string>
- <string name="free_space_label">%1$såÆē”Ø</string>
+ <string name="free_space_label">%1$s åÆē”Ø</string>
<string name="episode_cache_full_title">ę›²ē›®ē¼“å­˜å·²ę»”</string>
<string name="episode_cache_full_message">å·²č¾¾åˆ°ę›²ē›®ē¼“存限制ļ¼ŒåÆ仄åœØč®¾ē½®äø­ęé«˜ē¼“å­˜å¤§å°ć€‚</string>
+ <string name="synchronizing">ę­£åœØåŒę­„ā€¦</string>
<!--Statistics fragment-->
<string name="total_time_listened_to_podcasts">ę€»ę’­ę”¾ę—¶é•æļ¼š</string>
- <string name="statistics_details_dialog">%1$d out of %2$d episodes started.\n\nPlayed %3$s out of %4$s.</string>
+ <string name="statistics_details_dialog">听čæ‡äŗ†ę€»č®” %2$d ęœŸę’­å®¢äø­ēš„ %1$d ꜟ怂\n\nę’­ę”¾äŗ†ę€»č®” %4$s äø­ēš„Ā %3$s怂</string>
<string name="statistics_mode">ē»Ÿč®”ęؔ式</string>
- <string name="statistics_mode_normal">č®”ē®—å®žé™…ę’­ę”¾ę—¶é•æć€‚ę’­ę”¾äø¤ę¬”ēš„ęƒ…å†µč¢«ę­£ē”®čƆ别äøŗäø¤ę¬”ļ¼Œä½†ę˜Æč¢«ę ‡č®°äøŗęœŖę’­ę”¾ēŠ¶ę€ēš„éƒ½ę²”ęœ‰č¢«ę­£ē”®čÆ†åˆ«ę”¶å¬ę¬”ę•°ć€‚</string>
- <string name="statistics_mode_count_all">ē»Ÿč®”ꉀ꜉åø¦ęœ‰å·²ę’­ę”¾ę’­å®¢ę ‡č®°ēš„ę•°é‡</string>
- <string name="statistics_speed_not_counted">ę³Øꄏļ¼šå›žę”¾é€Ÿåŗ¦äøåœØč€ƒč™‘čŒƒå›“ä¹‹å†…ć€‚</string>
+ <string name="statistics_mode_normal">č®”ē®—实际äøŠēš„ę’­ę”¾ę¬”ꕰäøŽę—¶é•æć€‚ę’­ę”¾čæ‡äø¤ę¬”åˆ™å°†č¢«čƆ别äøŗäø¤ę¬”ļ¼Œä½†ę˜Æč¢«ę‰‹åŠØꠇ记äøŗå·²ę’­ę”¾ēŠ¶ę€ēš„äøē®—怂</string>
+ <string name="statistics_mode_count_all">ē»Ÿč®”ę’­ę”¾ę¬”ę•°ę—¶ä»…ē»Ÿč®”ꉀ꜉åø¦ęœ‰å·²ę’­ę”¾ę’­å®¢ę ‡č®°ēš„ę•°é‡</string>
+ <string name="statistics_speed_not_counted">ę³Øꄏļ¼šę’­ę”¾é€Ÿåŗ¦äøåœØč€ƒč™‘čŒƒå›“ä¹‹å†…ć€‚</string>
<!--Main activity-->
<string name="drawer_open">ę‰“å¼€čœå•</string>
<string name="drawer_close">å…³é—­čœå•</string>
@@ -63,10 +65,11 @@
<string name="cover_label">图ē‰‡</string>
<string name="error_label">错čÆÆ</string>
<string name="error_msg_prefix">å‡ŗ错:</string>
+ <string name="needs_storage_permission">ę­¤ę“ä½œéœ€č¦å­˜å‚Øꝃ限怂</string>
<string name="refresh_label">åˆ·ę–°</string>
<string name="external_storage_error_msg">ę²”ęœ‰åÆē”Øēš„外éƒØ存å‚Ø. čÆ·ē”®äæå®‰č£…外éƒØ存å‚Øå™Ø, čæ™ę ·ęœ¬åŗ”ē”ØꉍåÆä»„ę­£åøø巄作.</string>
<string name="chapters_label">ē« čŠ‚</string>
- <string name="chapter_duration">ę—¶é•æļ¼š %1$s</string>
+ <string name="chapter_duration">ę—¶é•æļ¼š%1$s</string>
<string name="shownotes_label">ē¬”č®°</string>
<string name="description_label">ꏏčæ°</string>
<string name="most_recent_prefix">꜀čæ‘ę›²ē›®:\u0020</string>
@@ -74,13 +77,13 @@
<string name="length_prefix">é•æåŗ¦:\u0020</string>
<string name="size_prefix">大小:\u0020</string>
<string name="processing_label">处ē†äø­</string>
- <string name="loading_label">ę­£åœØåŠ č½½</string>
+ <string name="loading_label">ę­£åœØåŠ č½½ā€¦</string>
<string name="save_username_password_label">äæå­˜ē”Øęˆ·ååƆē </string>
<string name="close_label">关闭</string>
<string name="retry_label">重čƕ</string>
<string name="auto_download_label">包含到č‡ŖåŠØäø‹č½½</string>
<string name="auto_download_apply_to_items_title"> åŗ”ē”Ø到之前ēš„ę›²ē›®äø­</string>
- <string name="auto_download_apply_to_items_message">ꖰēš„ <i>č‡ŖåŠØäø‹č½½</i> ēš„č®¾å®šå°†ä¼šč‡ŖåŠØåŗ”ē”Øåˆ°ę–°ę›²ē›®äø­ć€‚\nä½ ęƒ³åŗ”ē”Ø到之前ēš„ę›²ē›®å—ļ¼Ÿ</string>
+ <string name="auto_download_apply_to_items_message">ꖰēš„ <i>č‡ŖåŠØäø‹č½½</i> č®¾ē½®å°†ä¼šč‡ŖåŠØåŗ”ē”Øåˆ°ę–°ēš„节ē›®äøŠć€‚\nä½ ęƒ³åŗ”ē”Ø到之前ēš„节ē›®å—ļ¼Ÿ</string>
<string name="auto_delete_label">č‡ŖåŠØ删除剧集</string>
<string name="parallel_downloads_suffix">\u0020 å¹¶č”Œäø‹č½½</string>
<string name="feed_auto_download_global">å…Øå±€é»˜č®¤</string>
@@ -104,25 +107,13 @@
<string name="mark_all_read_label">å…ØéƒØꠇčƆ已čÆ»</string>
<string name="mark_all_read_msg">å°†ę‰€ęœ‰ę›²ē›®ę ‡č®°äøŗå·²ę’­ę”¾</string>
<string name="mark_all_read_confirmation_msg">čÆ·ē”®č®¤ę‚Øč¦å°†ę‰€ęœ‰ę›²ē›®ę ‡äøŗå·²ę’­ę”¾</string>
- <string name="mark_all_read_feed_confirmation_msg">čÆ·ē”®č®¤ę‚Øč¦å°†čÆ„č®¢é˜…äø‹ēš„ę‰€ęœ‰ę›²ē›®ę ‡äøŗå·²ę’­ę”¾</string>
<string name="mark_all_seen_label">ꉀ꜉åÆ见</string>
- <string name="mark_all_seen_msg">å°†ę‰€ęœ‰ę›²ē›®ę ‡č®°äøŗå·²čÆ»</string>
<string name="mark_all_seen_confirmation_msg">čÆ·ē”®č®¤ę‚Øč¦å°†ę‰€ęœ‰ę›²ē›®ę ‡č®°äøŗå·²čÆ»ć€‚</string>
<string name="show_info_label">ęŸ„ēœ‹äæ”ęÆ</string>
- <string name="rename_feed_label">é‡å‘½åę’­å®¢</string>
- <string name="remove_feed_label">åˆ é™¤ę’­å®¢</string>
<string name="share_label">分äŗ«</string>
- <string name="share_link_label">分äŗ«ē½‘ē«™é“¾ęŽ„</string>
<string name="share_file_label">分äŗ«ę–‡ä»¶</string>
- <string name="share_link_with_position_label">分äŗ«ē½‘ē«™é“¾ęŽ„äøŽä½ē½®</string>
<string name="share_feed_url_label">分äŗ«č®¢é˜…地址</string>
- <string name="share_item_url_label">分äŗ«å‰§é›†ę–‡ä»¶URL</string>
- <string name="share_item_url_with_position_label">分äŗ«å‰§é›†ę–‡ä»¶URL及其ēŠ¶ę€</string>
- <string name="feed_delete_confirmation_msg">čÆ·ē”®č®¤ę‚Øč¦åˆ é™¤č®¢é˜… \"%1$s\" åŒ…ę‹¬ ꉀ꜉ ę­¤č®¢é˜…äø­ēš„å·²äø‹č½½ę›²ē›®ć€‚</string>
- <string name="feed_remover_msg">åˆ é™¤č®¢é˜…</string>
- <string name="load_complete_feed">åˆ·ę–°å…ØéƒØč®¢é˜…</string>
<string name="hide_episodes_title">éšč—ę›²ē›®</string>
- <string name="episode_actions">åÆē”Ø</string>
<string name="hide_unplayed_episodes_label">ęœŖę’­ę”¾</string>
<string name="hide_paused_episodes_label">å·²ęš‚åœ</string>
<string name="hide_played_episodes_label">å·²ę’­ę”¾</string>
@@ -231,7 +222,6 @@
<string name="date">ęŒ‰ę—„ęœŸ</string>
<string name="duration">ęŒ‰ę—¶é•æ</string>
<string name="episode_title">å‰§é›†ę ‡é¢˜</string>
- <string name="feed_title">č®¢é˜…ę ‡é¢˜</string>
<string name="ascending">升åŗ</string>
<string name="descending">降åŗ</string>
<string name="clear_queue_confirmation_msg">čÆ·ē”®č®¤ę‚Ø要ęø…除队列äø­ēš„å…ØéƒØę›²ē›®</string>
@@ -268,7 +258,6 @@
<string name="enable_sonic">允č®ø声音</string>
<!--Empty list labels-->
<string name="no_items_label">列č”Øäøŗē©ŗ.</string>
- <string name="no_feeds_label">čæ˜ę²”ęœ‰ä»»ä½•č®¢é˜….</string>
<string name="no_chapters_label">ę­¤ę›²ē›®ę²”꜉ē« čŠ‚äæ”ęÆ</string>
<string name="no_shownotes_label">ęœ¬é›†äøåŒ…含展ē¤ŗäæ”ęÆ</string>
<!--Preferences-->
@@ -277,7 +266,6 @@
<string name="other_pref">其他</string>
<string name="about_pref">关äŗŽ</string>
<string name="queue_label">ę’­ę”¾åˆ—č”Ø</string>
- <string name="services_label">ęœåŠ”</string>
<string name="flattr_label">Flattr</string>
<string name="pref_episode_cleanup_title">ęø…ē†ę›²ē›®</string>
<string name="pref_pauseOnDisconnect_sum">ęš‚åœę’­ę”¾ę›²ē›®å½“č€³ęœŗꈖ蓝ē‰™é‡ę–°čæžęŽ„</string>
@@ -326,7 +314,6 @@
<string name="pref_nav_drawer_feed_order_title">č®¾ē½®č®¢é˜…ēš„ꎒåŗę–¹å¼</string>
<string name="pref_nav_drawer_feed_order_sum">ę”¹å˜ä½ ēš„č®¢é˜…ēš„ꎒåŗę–¹å¼</string>
<string name="pref_nav_drawer_feed_counter_title">č®¾å®šč®¢é˜…ę•°</string>
- <string name="pref_nav_drawer_feed_counter_sum">ę”¹å˜č®¢é˜…ę•°ę‰€ä»£č”Øēš„äæ”ęÆ</string>
<string name="pref_set_theme_sum">ę”¹å˜ AntennaPod å¤–č§‚</string>
<string name="pref_automatic_download_title">č‡ŖåŠØäø‹č½½</string>
<string name="pref_automatic_download_sum">配ē½®č‡ŖåŠØäø‹č½½ēš„ę›²ē›®</string>
@@ -362,8 +349,6 @@
<string name="pref_rewind_sum">č‡Ŗ定义ęÆę¬”å€’å›žčŠ‚ē›®ēš„ē§’ę•°</string>
<string name="pref_gpodnet_sethostname_title">č®¾ē½®äø»ęœŗ名</string>
<string name="pref_gpodnet_sethostname_use_default_host">ä½æē”Ø默认äø»ęœŗ</string>
- <string name="pref_expandNotify_title">ę‰©å±•é€šēŸ„</string>
- <string name="pref_expandNotify_sum">ꀻę˜Æę‰©å±•é€šēŸ„ä»„ę˜¾ē¤ŗę’­ę”¾ęŒ‰é’®</string>
<string name="pref_persistNotify_title">äæęŒę’­ę”¾ęŽ§åˆ¶</string>
<string name="pref_persistNotify_sum">åœØęš‚åœę—¶äæęŒé€šēŸ„和锁屏ē•Œé¢ēš„ęŽ§åˆ¶ć€‚</string>
<string name="pref_compact_notification_buttons_title">č®¾ē½®é”å±ęŒ‰é’®</string>
@@ -384,8 +369,6 @@
<string name="crash_report_sum">通čæ‡ E-mail å‘é€ęœ€åŽå“©ęŗƒęŠ„告</string>
<string name="send_email">发送 E-mail</string>
<string name="experimental_pref">实éŖŒę€§</string>
- <string name="pref_sonic_title">音频åŖ’ä½“ę’­ę”¾å™Ø</string>
- <string name="pref_sonic_message">ä½æē”Ø内ē½®éŸ³é¢‘åŖ’ä½“ę’­ę”¾å™Ø代ę›æ Android 原ē”ŸåŖ’ä½“ę’­ę”¾å™Ø</string>
<string name="pref_current_value">当前值ļ¼š%1$s</string>
<string name="pref_proxy_title">代ē†</string>
<string name="pref_proxy_sum">选ꋩäø€äøŖē½‘ē»œä»£ē†</string>
@@ -404,7 +387,6 @@
<!--Search-->
<string name="search_hint">ęŸ„ę‰¾čŠ‚ē›®</string>
<string name="found_in_chapters_label">ē« čŠ‚äø­ęŸ„ę‰¾</string>
- <string name="found_in_feeds_label">Feeds äø­ęŸ„ę‰¾</string>
<string name="search_status_no_results">ę²”ęœ‰ę‰¾åˆ°ä»»ä½•ē»“ęžœ</string>
<string name="search_label">ꐜē“¢</string>
<string name="found_in_title_label">ę ‡é¢˜äø­ęŸ„ę‰¾</string>
@@ -430,8 +412,6 @@
<string name="html_export_label">åƼå‡ŗäøŗ HTML ꖇ件</string>
<string name="exporting_label">ę­£åœØåƼå‡ŗ</string>
<string name="export_error_label">åƼå‡ŗå‡ŗ错</string>
- <string name="opml_export_success_title">OPML åƼå‡ŗęˆåŠŸ.</string>
- <string name="opml_export_success_sum">.opml ę–‡ä»¶å·²äæå­˜åˆ°:\u0020</string>
<string name="opml_import_ask_read_permission">čƻ取 OPML ę–‡ä»¶éœ€č¦č®æ问外éƒØ存å‚Øēš„ęƒé™</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">č®¾ē½®ä¼‘ēœ č®”ę—¶å™Ø</string>
@@ -598,4 +578,5 @@
<!--<string name="cast_failed_to_connect">Could not connect to the device</string>-->
<string name="cast_failed_setting_volume">éŸ³é‡č®¾ē½®å¤±č“„</string>
<string name="cast_failed_media_error_skipping">åŖ’ä½“ę’­ę”¾å‡ŗ错.č·³č½¬äø­...</string>
+ <!--Notification channels-->
</resources>
diff --git a/core/src/main/res/values-zh-rHK/strings.xml b/core/src/main/res/values-zh-rHK/strings.xml
index acf3abe75..2d9481b84 100644
--- a/core/src/main/res/values-zh-rHK/strings.xml
+++ b/core/src/main/res/values-zh-rHK/strings.xml
@@ -36,4 +36,5 @@
<!--Database import/export-->
<!--Casting-->
<!--<string name="cast_failed_to_connect">Could not connect to the device</string>-->
+ <!--Notification channels-->
</resources>
diff --git a/core/src/main/res/values-zh-rTW/strings.xml b/core/src/main/res/values-zh-rTW/strings.xml
index 87f749c37..f00904eda 100644
--- a/core/src/main/res/values-zh-rTW/strings.xml
+++ b/core/src/main/res/values-zh-rTW/strings.xml
@@ -56,7 +56,6 @@
<string name="yes">ę˜Æ</string>
<string name="no">否</string>
<string name="reset">重ē½®</string>
- <string name="author_label">ä½œč€…</string>
<string name="language_label">čŖžč؀</string>
<string name="url_label">éˆęŽ„</string>
<string name="podcast_settings_label">čØ­ē½®</string>
@@ -104,25 +103,13 @@
<string name="mark_all_read_label">å…ØéƒØęؙčؘē‚ŗå·²ę’­ę”¾</string>
<string name="mark_all_read_msg">å…ØéƒØ劇集ęؙčؘē‚ŗå·²ę’­ę”¾</string>
<string name="mark_all_read_confirmation_msg">č«‹ē¢ŗčŖä½ č¦å°‡ę‰€ęœ‰åŠ‡é›†ęؙčؘē‚ŗå·²ę’­ę”¾ć€‚</string>
- <string name="mark_all_read_feed_confirmation_msg">č«‹ē¢ŗčŖä½ č¦å°‡ę­¤ę’­ę”¾ęŗēš„ę‰€ęœ‰åŠ‡é›†ęؙčؘē‚ŗå·²ę’­ę”¾ć€‚</string>
<string name="mark_all_seen_label">ęؙčؘē‚ŗå·²č®€</string>
- <string name="mark_all_seen_msg">å…ØéƒØ劇集ęؙčؘē‚ŗå·²č®€</string>
<string name="mark_all_seen_confirmation_msg">č«‹ē¢ŗčŖä½ č¦å°‡ę‰€ęœ‰åŠ‡é›†ęؙčؘē‚ŗå·²č®€ć€‚</string>
<string name="show_info_label">é”Æē¤ŗč³‡ę–™</string>
- <string name="rename_feed_label">é‡å‘½åę’­å®¢</string>
- <string name="remove_feed_label">ē§»é™¤ę’­å®¢</string>
<string name="share_label">分äŗ«</string>
- <string name="share_link_label">分äŗ«éˆęŽ„</string>
<string name="share_file_label">分äŗ«ę–‡ä»¶</string>
- <string name="share_link_with_position_label">分äŗ«éˆęŽ„čˆ‡ä½ē½®</string>
<string name="share_feed_url_label">分äŗ«ę’­å®¢ęŗéˆęŽ„</string>
- <string name="share_item_url_label">分äŗ«åŠ‡é›†ę–‡ä»¶éˆęŽ„</string>
- <string name="share_item_url_with_position_label">分äŗ«åŠ‡é›†ę–‡ä»¶éˆęŽ„和位ē½®</string>
- <string name="feed_delete_confirmation_msg">č«‹ē¢ŗčŖę‚Ø即將åˆŖé™¤ę’­å®¢ęŗ\"%1$s\" å’Œå®ƒę‰€ęœ‰ēš„åŠ‡é›†ć€‚</string>
- <string name="feed_remover_msg">ē§»é™¤ę’­å®¢ęŗ</string>
- <string name="load_complete_feed">åˆ·ę–°å®Œęˆę’­å®¢ęŗ</string>
<string name="hide_episodes_title">éš±č—åŠ‡é›†</string>
- <string name="episode_actions">ꇉē”Ø</string>
<string name="hide_unplayed_episodes_label">ęœŖę’­ę”¾</string>
<string name="hide_paused_episodes_label">ęš«åœ</string>
<string name="hide_played_episodes_label">å·²ę’­ę”¾</string>
@@ -232,7 +219,6 @@
<string name="date">ę—„ęœŸ</string>
<string name="duration">Ꙃ長</string>
<string name="episode_title">劇集ęؙ锌</string>
- <string name="feed_title">ęŗęؙ锌</string>
<string name="ascending">升åŗ</string>
<string name="descending">降åŗ</string>
<string name="clear_queue_confirmation_msg">č«‹ē¢ŗčŖę‚Ø要ęø…除隊列仄及其äø­ę‰€ęœ‰ēš„劇集</string>
@@ -270,7 +256,6 @@
<string name="enable_sonic">啟ē”ØSonic</string>
<!--Empty list labels-->
<string name="no_items_label">列č”Øč£”ę²’ęœ‰é …ē›®ć€‚</string>
- <string name="no_feeds_label">ę‚Ø還ęœŖč؂閱任何ęŗć€‚</string>
<string name="no_chapters_label">ęœ¬åŠ‡é›†ę²’ęœ‰ē« ēÆ€ć€‚</string>
<string name="no_shownotes_label">ęœ¬åŠ‡é›†ę²’ęœ‰ē­†čØ˜ć€‚</string>
<!--Preferences-->
@@ -279,7 +264,6 @@
<string name="other_pref">其他</string>
<string name="about_pref">é—œę–¼</string>
<string name="queue_label">隊列</string>
- <string name="services_label">ęœå‹™</string>
<string name="flattr_label">Flattr</string>
<string name="pref_episode_cleanup_title">劇集ęø…ē†</string>
<string name="pref_episode_cleanup_summary">å¦‚ęžœč‡Ŗ動äø‹č¼‰éœ€č¦ē©ŗ間ē”Øę–¼ę–°ēš„劇集ļ¼Œå‰‡äøåœØ隊列äø­äø¦äø”äøę˜Æ꜀ꄛēš„åŠ‡é›†å°‡č¢«ē§»é™¤ć€‚</string>
@@ -287,7 +271,6 @@
<string name="pref_unpauseOnHeadsetReconnect_sum">ē•¶č€³ę©Ÿå†ę¬”é€£ęŽ„ę™‚ē¹¼ēŗŒę’­ę”¾</string>
<string name="pref_unpauseOnBluetoothReconnect_sum">ē•¶č—ē‰™å†ę¬”é€£ęŽ„ę™‚ē¹¼ēŗŒę’­ę”¾</string>
<string name="pref_hardwareForwardButtonSkips_title">åæ«é€²ęŒ‰éˆ•č·³éŽ</string>
- <string name="pref_hardwareForwardButtonSkips_sum">ē•¶ęŒ‰äø‹äø€å€‹åƦ體ēš„åæ«é€²ęŒ‰éˆ•ę™‚ļ¼Œč·³éŽäø‹äø€å€‹åŠ‡é›†č€Œäøé€²č”Œåæ«é€²</string>
<string name="pref_hardwarePreviousButtonRestarts_title">å¾Œé€€éµé‡ę–°ę’­ę”¾</string>
<string name="pref_hardwarePreviousButtonRestarts_sum">ē•¶ęŒ‰äø‹äø€å€‹åƦ體鍵ēš„å¾Œé€€ęŒ‰éˆ•ę™‚ļ¼Œé‡ę–°ę’­ę”¾ęœ¬åŠ‡é›†č€Œäøę˜Æ後退</string>
<string name="pref_followQueue_sum">ē•¶ę’­ę”¾å®Œē•¢ę™‚č‡Ŗå‹•č·³č‡³åˆ—č”Øäø­ēš„äø‹äø€å€‹é …ē›®</string>
@@ -319,4 +302,5 @@
<!--Database import/export-->
<!--Casting-->
<!--<string name="cast_failed_to_connect">Could not connect to the device</string>-->
+ <!--Notification channels-->
</resources>
diff --git a/core/src/main/res/values/arrays.xml b/core/src/main/res/values/arrays.xml
index 9d9a2453d..6d310e0e5 100644
--- a/core/src/main/res/values/arrays.xml
+++ b/core/src/main/res/values/arrays.xml
@@ -55,6 +55,18 @@
<item>-1</item>
</string-array>
+ <string-array name="mobile_update_entries">
+ <item>@string/pref_mobileUpdate_nothing</item>
+ <item>@string/pref_mobileUpdate_images</item>
+ <item>@string/pref_mobileUpdate_everything</item>
+ </string-array>
+
+ <string-array name="mobile_update_values">
+ <item>nothing</item>
+ <item>images</item>
+ <item>everything</item>
+ </string-array>
+
<string-array name="episode_cleanup_entries">
<item>@string/episode_cleanup_queue_removal</item>
<item>0</item>
@@ -68,10 +80,11 @@
<string-array name="episode_cleanup_values">
<item>-1</item>
<item>0</item>
- <item>1</item>
- <item>3</item>
- <item>5</item>
- <item>7</item>
+ <item>12</item>
+ <item>24</item>
+ <item>72</item>
+ <item>120</item>
+ <item>168</item>
<item>-2</item>
</string-array>
@@ -137,10 +150,12 @@
<string-array name="theme_options">
<item>@string/pref_theme_title_light</item>
<item>@string/pref_theme_title_dark</item>
+ <item>@string/pref_theme_title_trueblack</item>
</string-array>
<string-array name="theme_values">
<item>0</item>
<item>1</item>
+ <item>2</item>
</string-array>
<string-array name="nav_drawer_titles">
@@ -181,6 +196,28 @@
<item>3</item>
</string-array>
+ <string-array name="media_player_options">
+ <item>@string/media_player_builtin</item>
+ <item>@string/media_player_sonic</item>
+ <item>@string/media_player_exoplayer</item>
+ </string-array>
+
+ <string-array name="media_player_values">
+ <item>builtin</item>
+ <item>sonic</item>
+ <item>exoplayer</item>
+ </string-array>
+
+ <string-array name="media_player_options_no_sonic">
+ <item>@string/media_player_builtin</item>
+ <item>@string/media_player_exoplayer</item>
+ </string-array>
+
+ <string-array name="media_player_values_no_sonic">
+ <item>builtin</item>
+ <item>exoplayer</item>
+ </string-array>
+
<string-array name="episode_filter_options">
<item>@string/hide_unplayed_episodes_label</item>
<item>@string/hide_paused_episodes_label</item>
@@ -190,6 +227,7 @@
<item>@string/hide_downloaded_episodes_label</item>
<item>@string/hide_not_downloaded_episodes_label</item>
<item>@string/hide_has_media_label</item>
+ <item>@string/hide_is_favorite_label</item>
</string-array>
<string-array name="episode_filter_values">
@@ -201,6 +239,7 @@
<item>downloaded</item>
<item>not_downloaded</item>
<item>has_media</item>
+ <item>is_favorite</item>
</string-array>
<string-array name="image_cache_size_options">
@@ -246,4 +285,37 @@
<item>stop</item>
<item>continue</item>
</string-array>
+
+ <string-array name="batch_long_press_options">
+ <item>@string/select_all_above</item>
+ <item>@string/select_all_below</item>
+ </string-array>
+
+ <string-array name="back_button_behavior_options">
+ <item>@string/back_button_default</item>
+ <item>@string/back_button_go_to_page</item>
+ <item>@string/back_button_open_drawer</item>
+ <item>@string/back_button_double_tap</item>
+ <item>@string/back_button_show_prompt</item>
+ </string-array>
+
+ <string-array name="back_button_behavior_values">
+ <item>default</item>
+ <item>page</item>
+ <item>drawer</item>
+ <item>doubletap</item>
+ <item>prompt</item>
+ </string-array>
+
+ <string-array name="back_button_go_to_pages">
+ <item>@string/queue_label</item>
+ <item>@string/episodes_label</item>
+ <item>@string/subscriptions_label</item>
+ </string-array>
+
+ <string-array name="back_button_go_to_pages_tags">
+ <item>QueueFragment</item>
+ <item>EpisodesFragment</item>
+ <item>SubscriptionFragment</item>
+ </string-array>
</resources>
diff --git a/core/src/main/res/values/attrs.xml b/core/src/main/res/values/attrs.xml
index b005d4dc3..5311d6cd2 100644
--- a/core/src/main/res/values/attrs.xml
+++ b/core/src/main/res/values/attrs.xml
@@ -12,6 +12,7 @@
<attr name="av_rewind" format="reference"/>
<attr name="content_discard" format="reference"/>
<attr name="content_new" format="reference"/>
+ <attr name="content_remove_from_queue" format="reference"/>
<attr name="storage" format="reference"/>
<attr name="statistics" format="reference"/>
<attr name="feed" format="reference"/>
@@ -47,19 +48,29 @@
<attr name="ic_sleep" format="reference"/>
<attr name="ic_sleep_off" format="reference"/>
<attr name="checkbox_multiple" format="reference"/>
- <attr name="ic_check_box" format="reference"/>
- <attr name="ic_check_box_outline" format="reference"/>
- <attr name="ic_indeterminate_check_box" format="reference"/>
+ <attr name="ic_select_all" format="reference"/>
+ <attr name="ic_select_none" format="reference"/>
<attr name="ic_sort" format="reference"/>
<attr name="ic_sd_storage" format="reference"/>
<attr name="ic_create_new_folder" format="reference"/>
<attr name="ic_cast_disconnect" format="reference"/>
<attr name="ic_swap" format="reference"/>
+ <attr name="ic_cellphone_text" format="reference"/>
+ <attr name="ic_question_answer" format="reference" />
+ <attr name="ic_bug" format="reference" />
+ <attr name="ic_known_issues" format="reference" />
<attr name="master_switch_background" format="color"/>
+ <attr name="currently_playing_background" format="color"/>
<!-- Used in itemdescription -->
<attr name="non_transparent_background" format="reference"/>
<attr name="overlay_background" format="color"/>
<attr name="nav_drawer_background" format="color"/>
+ <attr name="drawer_activated_color" format="color"/>
+
+ <attr name="about_screen_background" format="color"/>
+ <attr name="about_screen_card_background" format="color"/>
+ <attr name="about_screen_card_border" format="color"/>
+ <attr name="about_screen_font_color" format="color"/>
</resources>
diff --git a/core/src/main/res/values/colors.xml b/core/src/main/res/values/colors.xml
index c9a5b3d6a..5d820f3cf 100644
--- a/core/src/main/res/values/colors.xml
+++ b/core/src/main/res/values/colors.xml
@@ -22,14 +22,18 @@
<color name="image_readability_tint">#80000000</color>
<color name="feed_image_bg">#50000000</color>
+ <color name="selection_background_color_trueblack">#286E8A</color>
<color name="selection_background_color_dark">#286E8A</color>
<color name="selection_background_color_light">#81CFEA</color>
<!-- Theme colors -->
<color name="primary_light">#FFFFFF</color>
-
+ <color name="primary_darktheme">#212121</color>
+ <color name="nav_drawer_background_dark">#3B3B3B</color>
+ <color name="nav_drawer_highlighted_dark">#212121</color>
<color name="highlight_light">#DDDDDD</color>
<color name="highlight_dark">#414141</color>
+ <color name="highlight_trueblack">#414141</color>
<color name="antennapod_blue">#147BAF</color>
diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml
index 44288b24a..3d730516e 100644
--- a/core/src/main/res/values/strings.xml
+++ b/core/src/main/res/values/strings.xml
@@ -70,13 +70,14 @@
<string name="yes">Yes</string>
<string name="no">No</string>
<string name="reset">Reset</string>
- <string name="author_label">Author</string>
+ <string name="author_label">Author(s)</string>
<string name="language_label">Language</string>
<string name="url_label">URL</string>
<string name="podcast_settings_label">Settings</string>
<string name="cover_label">Picture</string>
<string name="error_label">Error</string>
<string name="error_msg_prefix">An error occurred:</string>
+ <string name="needs_storage_permission">Storage permission is needed for this operation</string>
<string name="refresh_label">Refresh</string>
<string name="external_storage_error_msg">No external storage is available. Please make sure that external storage is mounted so that the app can work properly.</string>
<string name="chapters_label">Chapters</string>
@@ -104,10 +105,15 @@
<string name="episode_cleanup_never">Never</string>
<string name="episode_cleanup_queue_removal">When not in queue</string>
<string name="episode_cleanup_after_listening">After finishing</string>
+ <plurals name="episode_cleanup_hours_after_listening">
+ <item quantity="one">1 hour after finishing</item>
+ <item quantity="other">%d hours after finishing</item>
+ </plurals>
<plurals name="episode_cleanup_days_after_listening">
<item quantity="one">1 day after finishing</item>
<item quantity="other">%d days after finishing</item>
</plurals>
+ <string name="num_selected_label">%d selected</string>
<!-- 'Add Feed' Activity labels -->
<string name="feedurl_label">Feed URL</string>
@@ -121,28 +127,30 @@
<string name="mark_all_read_label">Mark all as played</string>
<string name="mark_all_read_msg">Marked all Episodes as played</string>
<string name="mark_all_read_confirmation_msg">Please confirm that you want to mark all episodes as being played.</string>
- <string name="mark_all_read_feed_confirmation_msg">Please confirm that you want to mark all episodes in this feed as being played.</string>
+ <string name="mark_all_read_feed_confirmation_msg">Please confirm that you want to mark all episodes in this podcast as being played.</string>
<string name="mark_all_seen_label">Mark all as seen</string>
- <string name="mark_all_seen_msg">Marked all Episodes as seen</string>
+ <string name="mark_all_seen_msg">Marked all episodes as seen</string>
<string name="mark_all_seen_confirmation_msg">Please confirm that you want to mark all episodes as seen.</string>
<string name="show_info_label">Show information</string>
- <string name="show_feed_settings_label">Show feed settings</string>
- <string name="feed_info_label">Feed info</string>
- <string name="feed_settings_label">Feed settings</string>
- <string name="rename_feed_label">Rename Podcast</string>
- <string name="remove_feed_label">Remove Podcast</string>
+ <string name="show_feed_settings_label">Show podcast settings</string>
+ <string name="feed_info_label">Podcast info</string>
+ <string name="feed_settings_label">Podcast settings</string>
+ <string name="rename_feed_label">Rename podcast</string>
+ <string name="remove_feed_label">Remove podcast</string>
<string name="share_label">Share&#8230;</string>
- <string name="share_link_label">Share Link</string>
+ <string name="share_link_label">Share Episode URL</string>
+ <string name="share_link_with_position_label">Share Episode URL with Position</string>
<string name="share_file_label">Share File</string>
- <string name="share_link_with_position_label">Share Link with Position</string>
<string name="share_feed_url_label">Share Feed URL</string>
- <string name="share_item_url_label">Share Episode File URL</string>
- <string name="share_item_url_with_position_label">Share Episode File URL with Position</string>
- <string name="feed_delete_confirmation_msg">Please confirm that you want to delete the feed \"%1$s\" and ALL episodes of this feed that you have downloaded.</string>
- <string name="feed_remover_msg">Removing Feed</string>
- <string name="load_complete_feed">Refresh complete Feed</string>
+ <string name="share_item_url_label">Share Media File URL</string>
+ <string name="share_item_url_with_position_label">Share Media File URL with Position</string>
+ <string name="feed_delete_confirmation_msg">Please confirm that you want to delete the podcast \"%1$s\" and ALL its episodes (including downloaded episodes).</string>
+ <string name="feed_remover_msg">Removing podcast</string>
+ <string name="load_complete_feed">Refresh complete podcast</string>
<string name="hide_episodes_title">Hide Episodes</string>
<string name="batch_edit">Batch edit</string>
+ <string name="select_all_above">Select all above</string>
+ <string name="select_all_below">Select all below</string>
<string name="hide_unplayed_episodes_label">Unplayed</string>
<string name="hide_paused_episodes_label">Paused</string>
<string name="hide_played_episodes_label">Played</string>
@@ -151,12 +159,17 @@
<string name="hide_downloaded_episodes_label">Downloaded</string>
<string name="hide_not_downloaded_episodes_label">Not downloaded</string>
<string name="hide_has_media_label">Has media</string>
+ <string name="hide_is_favorite_label">Is favorite</string>
<string name="filtered_label">Filtered</string>
<string name="refresh_failed_msg">{fa-exclamation-circle} Last Refresh failed</string>
<string name="open_podcast">Open Podcast</string>
<!-- actions on feeditems -->
<string name="download_label">Download</string>
+ <plurals name="downloading_batch_label">
+ <item quantity="one">Downloading %d episode.</item>
+ <item quantity="other">Downloading %d episodes.</item>
+ </plurals>
<string name="play_label">Play</string>
<string name="pause_label">Pause</string>
<string name="stop_label">Stop</string>
@@ -164,14 +177,35 @@
<string name="remove_label">Remove</string>
<string name="delete_label">Delete</string>
<string name="delete_failed">Unable to delete file. Rebooting the device could help.</string>
- <string name="remove_episode_lable">Remove Episode</string>
+ <string name="delete_episode_label">Delete Episode</string>
+ <plurals name="deleted_episode_batch_label">
+ <item quantity="one">%d episode deleted.</item>
+ <item quantity="other">%d episodes deleted.</item>
+ </plurals>
+ <string name="mark_as_seen_label">Mark as seen</string>
<string name="marked_as_seen_label">Marked as seen</string>
<string name="mark_read_label">Mark as played</string>
<string name="marked_as_read_label">Marked as played</string>
+ <plurals name="marked_read_batch_label">
+ <item quantity="one">%d episode marked as played.</item>
+ <item quantity="other">%d episodes marked as played.</item>
+ </plurals>
<string name="mark_unread_label">Mark as unplayed</string>
+ <plurals name="marked_unread_batch_label">
+ <item quantity="one">%d episode marked as unplayed.</item>
+ <item quantity="other">%d episodes marked as unplayed.</item>
+ </plurals>
<string name="add_to_queue_label">Add to Queue</string>
<string name="added_to_queue_label">Added to Queue</string>
+ <plurals name="added_to_queue_batch_label">
+ <item quantity="one">%d episode added to queue.</item>
+ <item quantity="other">%d episodes added to queue.</item>
+ </plurals>
<string name="remove_from_queue_label">Remove from Queue</string>
+ <plurals name="removed_from_queue_batch_label">
+ <item quantity="one">%d episode removed from queue.</item>
+ <item quantity="other">%d episodes removed from queue.</item>
+ </plurals>
<string name="add_to_favorite_label">Add to Favorites</string>
<string name="added_to_favorites">Added to Favorites</string>
<string name="remove_from_favorite_label">Remove from Favorites</string>
@@ -224,6 +258,7 @@
<string name="download_type_media">Media file</string>
<string name="download_type_image">Image</string>
<string name="download_request_error_dialog_message_prefix">An error occurred when trying to download the file:\u0020</string>
+ <string name="null_value_podcast_error">No podcast was provided that could be shown.</string>
<string name="authentication_notification_title">Authentication required</string>
<string name="authentication_notification_msg">The resource you requested requires a username and a password</string>
<string name="confirm_mobile_download_dialog_title">Confirm Mobile Download</string>
@@ -261,7 +296,7 @@
<string name="date">Date</string>
<string name="duration">Duration</string>
<string name="episode_title">Episode title</string>
- <string name="feed_title">Feed title</string>
+ <string name="feed_title">Podcast title</string>
<string name="random">Random</string>
<string name="smart_shuffle">Smart Shuffle</string>
<string name="ascending">Ascending</string>
@@ -304,10 +339,25 @@
<string name="enable_sonic">Enable Sonic</string>
<!-- Empty list labels -->
- <string name="no_items_label">There are no items in this list.</string>
- <string name="no_feeds_label">You haven\'t subscribed to any feeds yet.</string>
+ <string name="no_items_header_label">No queued episodes</string>
+ <string name="no_items_label">You can add episodes to the queue by long-pressing or downloading them.</string>
+ <string name="no_feeds_label">You haven\'t subscribed to any podcasts yet.</string>
<string name="no_chapters_label">This episode has no chapters.</string>
<string name="no_shownotes_label">This episode has no shownotes.</string>
+ <string name="no_run_downloads_head_label">No downloads running</string>
+ <string name="no_run_downloads_label">You can download episodes on the podcast details screen.</string>
+ <string name="no_comp_downloads_head_label">No downloaded episodes</string>
+ <string name="no_comp_downloads_label">You can download episodes on the podcast details screen.</string>
+ <string name="no_log_downloads_head_label">No download log</string>
+ <string name="no_log_downloads_label">Download logs will appear here when available.</string>
+ <string name="no_history_head_label">No History</string>
+ <string name="no_history_label">After you listen to an episode, it will appear here.</string>
+ <string name="no_all_episodes_head_label">No Episodes</string>
+ <string name="no_all_episodes_label">When you add a podcast, the episodes will be shown here.</string>
+ <string name="no_new_episodes_head_label">No new episodes</string>
+ <string name="no_new_episodes_label">When new episodes arrive, they will be shown here.</string>
+ <string name="no_fav_episodes_head_label">No favorite episodes</string>
+ <string name="no_fav_episodes_label">You can add episodes to the favorites by long-pressing them.</string>
<!-- Preferences -->
<string name="storage_pref">Storage</string>
@@ -321,10 +371,11 @@
<string name="automation">Automation</string>
<string name="download_pref_details">Details</string>
<string name="import_export_pref">Import/Export</string>
+ <string name="import_export_search_keywords">backup, restore</string>
<string name="appearance">Appearance</string>
<string name="external_elements">External elements</string>
<string name="interruptions">Interruptions</string>
- <string name="buttons">Buttons</string>
+ <string name="buttons">Playback control buttons</string>
<string name="media_player">Media player</string>
<string name="pref_episode_cleanup_title">Episode Cleanup</string>
<string name="pref_episode_cleanup_summary">Episodes that aren\'t in the queue and aren\'t favorites should be eligible for removal if Auto Download needs space for new episodes</string>
@@ -332,7 +383,7 @@
<string name="pref_unpauseOnHeadsetReconnect_sum">Resume playback when the headphones are reconnected</string>
<string name="pref_unpauseOnBluetoothReconnect_sum">Resume playback when bluetooth reconnects</string>
<string name="pref_hardwareForwardButtonSkips_title">Forward Button Skips</string>
- <string name="pref_hardwareForwardButtonSkips_sum">When pressing a hardware forward button skip to the next episode instead of fast-forwarding</string>
+ <string name="pref_hardwareForwardButtonSkips_sum">When pressing a forward button on a bluetooth-connected device skip to the next episode instead of fast-forwarding</string>
<string name="pref_hardwarePreviousButtonRestarts_title">Previous button restarts</string>
<string name="pref_hardwarePreviousButtonRestarts_sum">When pressing a hardware previous button restart playing the current episode instead of rewinding</string>
<string name="pref_followQueue_sum">Jump to next queue item when playback completes</string>
@@ -362,6 +413,9 @@
<string name="pref_unpauseOnBluetoothReconnect_title">Bluetooth Reconnect</string>
<string name="pref_mobileUpdate_title">Mobile Updates</string>
<string name="pref_mobileUpdate_sum">Allow updates over the mobile data connection</string>
+ <string name="pref_mobileUpdate_nothing">Nothing</string>
+ <string name="pref_mobileUpdate_images">Images only</string>
+ <string name="pref_mobileUpdate_everything">Everything</string>
<string name="refreshing_label">Refreshing</string>
<string name="flattr_settings_label">Flattr settings</string>
<string name="pref_flattr_auth_title">Flattr sign-in</string>
@@ -381,7 +435,7 @@
<string name="pref_nav_drawer_feed_order_title">Set Subscription Order</string>
<string name="pref_nav_drawer_feed_order_sum">Change the order of your subscriptions</string>
<string name="pref_nav_drawer_feed_counter_title">Set Subscription Counter</string>
- <string name="pref_nav_drawer_feed_counter_sum">Change the information displayed by the subscription counter</string>
+ <string name="pref_nav_drawer_feed_counter_sum">Change the information displayed by the subscription counter. Also affects the sorting of subscriptions if \'Subscription Order\' is set to \'Counter\'.</string>
<string name="pref_set_theme_sum">Change the appearance of AntennaPod.</string>
<string name="pref_automatic_download_title">Automatic Download</string>
<string name="pref_automatic_download_sum">Configure the automatic download of episodes.</string>
@@ -395,6 +449,7 @@
<string name="pref_episode_cache_title">Episode Cache</string>
<string name="pref_theme_title_light">Light</string>
<string name="pref_theme_title_dark">Dark</string>
+ <string name="pref_theme_title_trueblack">Black (AMOLED ready)</string>
<string name="pref_episode_cache_unlimited">Unlimited</string>
<string name="pref_update_interval_hours_plural">hours</string>
<string name="pref_update_interval_hours_singular">hour</string>
@@ -423,8 +478,8 @@
<string name="pref_rewind_sum">Customize the number of seconds to jump backwards when the rewind button is clicked</string>
<string name="pref_gpodnet_sethostname_title">Set hostname</string>
<string name="pref_gpodnet_sethostname_use_default_host">Use default host</string>
- <string name="pref_expandNotify_title">Expand Notification</string>
- <string name="pref_expandNotify_sum">Always expand the notification to show playback buttons.</string>
+ <string name="pref_expandNotify_title">High Notification priority</string>
+ <string name="pref_expandNotify_sum">This usually expands the notification to show playback buttons.</string>
<string name="pref_persistNotify_title">Persistent Playback Controls</string>
<string name="pref_persistNotify_sum">Keep notification and lockscreen controls when playback is paused.</string>
<string name="pref_compact_notification_buttons_title">Set Lockscreen Buttons</string>
@@ -445,8 +500,7 @@
<string name="crash_report_sum">Send the latest crash report via e-mail</string>
<string name="send_email">Send e-mail</string>
<string name="experimental_pref">Experimental</string>
- <string name="pref_sonic_title">Sonic Media Player</string>
- <string name="pref_sonic_message">Use built-in sonic media player as a replacement for Android\'s native mediaplayer and Prestissimo</string>
+ <string name="pref_media_player_message">Select which media player to use to play files</string>
<string name="pref_current_value">Current value: %1$s</string>
<string name="pref_proxy_title">Proxy</string>
<string name="pref_proxy_sum">Set a network proxy</string>
@@ -458,10 +512,27 @@
<string name="pref_cast_message_free_flavor">Chromecast requires third party proprietary libraries that are disabled in this version of AntennaPod</string>
<string name="pref_enqueue_downloaded_title">Enqueue Downloaded</string>
<string name="pref_enqueue_downloaded_summary">Add downloaded episodes to the queue</string>
- <string name="pref_videoBehavior_title">Video behavior</string>
+ <string name="media_player_builtin">Built-in Android player</string>
+ <string name="media_player_sonic" translatable="false">Sonic Media Player</string>
+ <string name="media_player_exoplayer" translatable="false">ExoPlayer</string>
+ <string name="pref_skip_silence_title">Skip Silence in Audio</string>
+ <string name="pref_videoBehavior_title">Upon exiting video</string>
<string name="pref_videoBehavior_sum">Behavior when leaving video playback</string>
<string name="stop_playback">Stop playback</string>
- <string name="continue_playback">Continue playback</string>
+ <string name="continue_playback">Continue audio playback</string>
+ <string name="behavior">Behavior</string>
+ <string name="pref_back_button_behavior_title">Back Button Behavior</string>
+ <string name="pref_back_button_behavior_sum">Change behavior of the back button.</string>
+ <string name="back_button_default">Default</string>
+ <string name="back_button_open_drawer">Open navigation drawer</string>
+ <string name="back_button_double_tap">Double tap to exit</string>
+ <string name="back_button_show_prompt">Confirm to exit</string>
+ <string name="close_prompt">Are you sure you want to close AntennaPod?</string>
+ <string name="double_tap_toast">Tap back button again to exit</string>
+ <string name="back_button_go_to_page">Go to pageā€¦</string>
+ <string name="back_button_go_to_page_title">Select page</string>
+ <string name="pref_delete_removes_from_queue_title">Delete removes from Queue</string>
+ <string name="pref_delete_removes_from_queue_sum">Automatically remove an episode from the queue when it is deleted.</string>
<!-- Auto-Flattr dialog -->
<string name="auto_flattr_enable">Enable automatic flattring</string>
@@ -473,8 +544,8 @@
<string name="search_hint">Search for episodes</string>
<string name="found_in_shownotes_label">Found in show notes</string>
<string name="found_in_chapters_label">Found in chapters</string>
- <string name="found_in_authors_label">Found in authors</string>
- <string name="found_in_feeds_label">Found in feeds</string>
+ <string name="found_in_authors_label">Found in author(s)</string>
+ <string name="found_in_feeds_label">Found in podcast</string>
<string name="search_status_no_results">No results were found</string>
<string name="search_label">Search</string>
<string name="found_in_title_label">Found in title</string>
@@ -672,6 +743,7 @@
<string name="audio_effects">Audio Effects</string>
<string name="stereo_to_mono">Downmix: Stereo to mono</string>
<string name="sonic_only">Sonic only</string>
+ <string name="exoplayer_only">ExoPlayer only</string>
<!-- proxy settings -->
<string name="proxy_type_label">Type</string>
diff --git a/core/src/main/res/values/styles.xml b/core/src/main/res/values/styles.xml
index 3a215588e..e9a7a2f64 100644
--- a/core/src/main/res/values/styles.xml
+++ b/core/src/main/res/values/styles.xml
@@ -26,6 +26,7 @@
<item type="attr" name="av_rewind">@drawable/ic_fast_rewind_grey600_24dp</item>
<item type="attr" name="content_discard">@drawable/ic_delete_grey600_24dp</item>
<item type="attr" name="content_new">@drawable/ic_add_grey600_24dp</item>
+ <item type="attr" name="content_remove_from_queue">@drawable/ic_remove_grey600</item>
<item type="attr" name="feed">@drawable/ic_feed_grey600_24dp</item>
<item type="attr" name="location_web_site">@drawable/ic_web_grey600_24dp</item>
<item type="attr" name="navigation_accept">@drawable/ic_done_grey600_24dp</item>
@@ -43,6 +44,7 @@
<item type="attr" name="dragview_background">@drawable/ic_drag_vertical_grey600_48dp</item>
<item type="attr" name="dragview_float_background">@color/white</item>
<item type="attr" name="nav_drawer_background">@color/white</item>
+ <item type="attr" name="drawer_activated_color">@color/highlight_light</item>
<item type="attr" name="ic_new">@drawable/ic_new_releases_grey600_24dp</item>
<item type="attr" name="ic_history">@drawable/ic_history_grey600_24dp</item>
<item type="attr" name="ic_folder">@drawable/ic_folder_grey600_24dp</item>
@@ -59,15 +61,26 @@
<item type="attr" name="ic_filter">@drawable/ic_filter_grey600_24dp</item>
<item type="attr" name="ic_sleep">@drawable/ic_sleep_grey600_24dp</item>
<item type="attr" name="ic_sleep_off">@drawable/ic_sleep_off_grey600_24dp</item>
- <item type="attr" name="ic_check_box">@drawable/ic_check_box_grey600_24dp</item>
- <item type="attr" name="ic_check_box_outline">@drawable/ic_check_box_outline_blank_grey600_24dp</item>
- <item type="attr" name="ic_indeterminate_check_box">@drawable/ic_indeterminate_check_box_grey600_24dp</item>
+ <item type="attr" name="ic_select_all">@drawable/ic_select_all_grey600</item>
+ <item type="attr" name="ic_select_none">@drawable/ic_select_none_grey600</item>
<item type="attr" name="ic_sort">@drawable/ic_sort_grey600_24dp</item>
<item type="attr" name="ic_sd_storage">@drawable/ic_sd_storage_grey600_36dp</item>
<item type="attr" name="ic_create_new_folder">@drawable/ic_create_new_folder_grey600_24dp</item>
<item type="attr" name="ic_cast_disconnect">@drawable/ic_cast_disconnect_grey600_36dp</item>
+ <item type="attr" name="ic_cellphone_text">@drawable/ic_cellphone_text_grey600_24dp</item>
+ <item type="attr" name="ic_question_answer">@drawable/ic_forum_grey600_24dp</item>
+ <item type="attr" name="ic_bug">@drawable/ic_bug_grey600_24dp</item>
+ <item type="attr" name="ic_known_issues">@drawable/ic_format_list_bulleted_grey600_24dp</item>
+
<item type="attr" name="master_switch_background">@color/master_switch_background_light</item>
+ <item type="attr" name="currently_playing_background">@color/highlight_light</item>
+
<item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item>
+
+ <item type="attr" name="about_screen_background">#e5e5e5</item>
+ <item type="attr" name="about_screen_card_background">#ffffff</item>
+ <item type="attr" name="about_screen_card_border">#d2d2d2</item>
+ <item type="attr" name="about_screen_font_color">#000000</item>
</style>
<style name="Theme.AntennaPod.Dark" parent="Theme.Base.AntennaPod.Dark">
@@ -76,6 +89,8 @@
<style name="Theme.Base.AntennaPod.Dark" parent="Theme.AppCompat">
<item name="colorAccent">@color/holo_blue_dark</item>
+ <item name="colorPrimary">@color/primary_darktheme</item>
+ <item name="colorPrimaryDark">@color/primary_darktheme</item>
<item name="colorControlNormal">@color/white</item>
<item name="buttonStyle">@style/Widget.AntennaPod.Button</item>
<item name="progressBarTheme">@style/ProgressBarDark</item>
@@ -95,6 +110,7 @@
<item type="attr" name="av_rewind">@drawable/ic_fast_rewind_white_24dp</item>
<item type="attr" name="content_discard">@drawable/ic_delete_white_24dp</item>
<item type="attr" name="content_new">@drawable/ic_add_white_24dp</item>
+ <item type="attr" name="content_remove_from_queue">@drawable/ic_remove_white</item>
<item type="attr" name="feed">@drawable/ic_feed_white_24dp</item>
<item type="attr" name="location_web_site">@drawable/ic_web_white_24dp</item>
<item type="attr" name="navigation_accept">@drawable/ic_done_white_24dp</item>
@@ -111,7 +127,8 @@
<item type="attr" name="overlay_drawable">@drawable/overlay_drawable_dark</item>
<item type="attr" name="dragview_background">@drawable/ic_drag_vertical_white_48dp</item>
<item type="attr" name="dragview_float_background">@color/black</item>
- <item type="attr" name="nav_drawer_background">#3B3B3B</item>
+ <item type="attr" name="nav_drawer_background">@color/nav_drawer_background_dark</item>
+ <item type="attr" name="drawer_activated_color">@color/nav_drawer_highlighted_dark</item>
<item type="attr" name="ic_new">@drawable/ic_new_releases_white_24dp</item>
<item type="attr" name="ic_history">@drawable/ic_history_white_24dp</item>
<item type="attr" name="ic_folder">@drawable/ic_folder_white_24dp</item>
@@ -128,17 +145,49 @@
<item type="attr" name="ic_filter">@drawable/ic_filter_white_24dp</item>
<item type="attr" name="ic_sleep">@drawable/ic_sleep_white_24dp</item>
<item type="attr" name="ic_sleep_off">@drawable/ic_sleep_off_white_24dp</item>
- <item type="attr" name="ic_check_box">@drawable/ic_check_box_white_24dp</item>
- <item type="attr" name="ic_check_box_outline">@drawable/ic_check_box_outline_blank_white_24dp</item>
- <item type="attr" name="ic_indeterminate_check_box">@drawable/ic_indeterminate_check_box_white_24dp</item>
+ <item type="attr" name="ic_select_all">@drawable/ic_select_all_white</item>
+ <item type="attr" name="ic_select_none">@drawable/ic_select_none_white</item>
<item type="attr" name="ic_sort">@drawable/ic_sort_white_24dp</item>
<item type="attr" name="ic_sd_storage">@drawable/ic_sd_storage_white_36dp</item>
<item type="attr" name="ic_create_new_folder">@drawable/ic_create_new_folder_white_24dp</item>
<item type="attr" name="ic_cast_disconnect">@drawable/ic_cast_disconnect_white_36dp</item>
+ <item type="attr" name="ic_cellphone_text">@drawable/ic_cellphone_text_white_24dp</item>
+ <item type="attr" name="ic_question_answer">@drawable/ic_baseline_question_answer_white_24dp</item>
+ <item type="attr" name="ic_bug">@drawable/ic_bug_white_24dp</item>
+ <item type="attr" name="ic_known_issues">@drawable/ic_format_list_bulleted_white_24dp</item>
<item type="attr" name="master_switch_background">@color/master_switch_background_dark</item>
+ <item type="attr" name="currently_playing_background">@color/highlight_dark</item>
<item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item>
+
+ <item type="attr" name="about_screen_background">#303030</item>
+ <item type="attr" name="about_screen_card_background">#424242</item>
+ <item type="attr" name="about_screen_card_border">#262626</item>
+ <item type="attr" name="about_screen_font_color">#ffffff</item>
+ </style>
+
+ <style name="Theme.AntennaPod.TrueBlack" parent="Theme.Base.AntennaPod.TrueBlack">
+ <!-- Room for API dependent attributes -->
</style>
+ <style name="Theme.Base.AntennaPod.TrueBlack" parent="Theme.Base.AntennaPod.Dark">
+ <item name="progressBarTheme">@style/ProgressBarTrueBlack</item>
+ <item type="attr" name="non_transparent_background">@color/black</item>
+ <item type="attr" name="overlay_background">@color/black</item>
+ <item type="attr" name="overlay_drawable">@drawable/overlay_drawable_dark_trueblack</item>
+ <item type="attr" name="dragview_background">@drawable/ic_drag_vertical_white_48dp</item>
+ <item type="attr" name="dragview_float_background">@color/black</item>
+ <item type="attr" name="nav_drawer_background">@color/black</item>
+ <item type="attr" name="drawer_activated_color">@color/highlight_trueblack</item>
+ <item name="android:textColorPrimary">@color/white</item>
+ <item name="android:color">@color/white</item>
+ <item name="android:colorBackground">@color/black</item>
+ <item name="android:windowBackground">@color/black</item>
+ <item name="android:actionBarStyle">@color/black</item>
+ <item name="colorPrimary">@color/black</item>
+ <item name="colorPrimaryDark">@color/black</item>
+ </style>
+
+
<style name="Theme.AntennaPod.Light.NoTitle" parent="Theme.Base.AntennaPod.Light.NoTitle">
<!-- Room for API dependent attributes -->
</style>
@@ -165,6 +214,7 @@
<item type="attr" name="av_rewind">@drawable/ic_fast_rewind_grey600_24dp</item>
<item type="attr" name="content_discard">@drawable/ic_delete_grey600_24dp</item>
<item type="attr" name="content_new">@drawable/ic_add_grey600_24dp</item>
+ <item type="attr" name="content_remove_from_queue">@drawable/ic_remove_grey600</item>
<item type="attr" name="feed">@drawable/ic_feed_grey600_24dp</item>
<item type="attr" name="location_web_site">@drawable/ic_web_grey600_24dp</item>
<item type="attr" name="navigation_accept">@drawable/ic_done_grey600_24dp</item>
@@ -182,6 +232,7 @@
<item type="attr" name="dragview_background">@drawable/ic_drag_vertical_grey600_48dp</item>
<item type="attr" name="dragview_float_background">@color/white</item>
<item type="attr" name="nav_drawer_background">@color/white</item>
+ <item type="attr" name="drawer_activated_color">@color/highlight_light</item>
<item type="attr" name="ic_new">@drawable/ic_new_releases_grey600_24dp</item>
<item type="attr" name="ic_history">@drawable/ic_history_grey600_24dp</item>
<item type="attr" name="ic_folder">@drawable/ic_folder_grey600_24dp</item>
@@ -198,15 +249,24 @@
<item type="attr" name="ic_filter">@drawable/ic_filter_grey600_24dp</item>
<item type="attr" name="ic_sleep">@drawable/ic_sleep_grey600_24dp</item>
<item type="attr" name="ic_sleep_off">@drawable/ic_sleep_off_grey600_24dp</item>
- <item type="attr" name="ic_check_box">@drawable/ic_check_box_grey600_24dp</item>
- <item type="attr" name="ic_check_box_outline">@drawable/ic_check_box_outline_blank_grey600_24dp</item>
- <item type="attr" name="ic_indeterminate_check_box">@drawable/ic_indeterminate_check_box_grey600_24dp</item>
+ <item type="attr" name="ic_select_all">@drawable/ic_select_all_grey600</item>
+ <item type="attr" name="ic_select_none">@drawable/ic_select_none_grey600</item>
<item type="attr" name="ic_sort">@drawable/ic_sort_grey600_24dp</item>
<item type="attr" name="ic_sd_storage">@drawable/ic_sd_storage_grey600_36dp</item>
<item type="attr" name="ic_create_new_folder">@drawable/ic_create_new_folder_grey600_24dp</item>
<item type="attr" name="ic_cast_disconnect">@drawable/ic_cast_disconnect_grey600_36dp</item>
+ <item type="attr" name="ic_cellphone_text">@drawable/ic_cellphone_text_grey600_24dp</item>
+ <item type="attr" name="ic_question_answer">@drawable/ic_forum_grey600_24dp</item>
+ <item type="attr" name="ic_bug">@drawable/ic_bug_grey600_24dp</item>
+ <item type="attr" name="ic_known_issues">@drawable/ic_format_list_bulleted_grey600_24dp</item>
<item type="attr" name="master_switch_background">@color/master_switch_background_light</item>
+ <item type="attr" name="currently_playing_background">@color/highlight_light</item>
<item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item>
+
+ <item type="attr" name="about_screen_background">#e5e5e5</item>
+ <item type="attr" name="about_screen_card_background">#ffffff</item>
+ <item type="attr" name="about_screen_card_border">#d2d2d2</item>
+ <item type="attr" name="about_screen_font_color">#000000</item>
</style>
<style name="Theme.AntennaPod.Dark.NoTitle" parent="Theme.Base.AntennaPod.Dark.NoTitle">
@@ -218,6 +278,8 @@
<item name="windowActionModeOverlay">true</item>
<item name="progressBarTheme">@style/ProgressBarDark</item>
<item name="colorAccent">@color/holo_blue_dark</item>
+ <item name="colorPrimary">@color/primary_darktheme</item>
+ <item name="colorPrimaryDark">@color/primary_darktheme</item>
<item name="colorControlNormal">@color/white</item>
<item name="buttonStyle">@style/Widget.AntennaPod.Button</item>
<item name="alertDialogTheme">@style/AntennaPod.Dialog.Dark</item>
@@ -236,6 +298,7 @@
<item type="attr" name="content_discard">@drawable/ic_delete_white_24dp</item>
<item type="attr" name="content_new">@drawable/ic_add_white_24dp</item>
<item type="attr" name="feed">@drawable/ic_feed_white_24dp</item>
+ <item type="attr" name="content_remove_from_queue">@drawable/ic_remove_white</item>
<item type="attr" name="location_web_site">@drawable/ic_web_white_24dp</item>
<item type="attr" name="navigation_accept">@drawable/ic_done_white_24dp</item>
<item type="attr" name="navigation_cancel">@drawable/ic_cancel_white_24dp</item>
@@ -251,7 +314,8 @@
<item type="attr" name="overlay_drawable">@drawable/overlay_drawable_dark</item>
<item type="attr" name="dragview_background">@drawable/ic_drag_vertical_white_48dp</item>
<item type="attr" name="dragview_float_background">@color/black</item>
- <item type="attr" name="nav_drawer_background">#3B3B3B</item>
+ <item type="attr" name="nav_drawer_background">@color/nav_drawer_background_dark</item>
+ <item type="attr" name="drawer_activated_color">@color/nav_drawer_highlighted_dark</item>
<item type="attr" name="ic_new">@drawable/ic_new_releases_white_24dp</item>
<item type="attr" name="ic_history">@drawable/ic_history_white_24dp</item>
<item type="attr" name="ic_folder">@drawable/ic_folder_white_24dp</item>
@@ -268,19 +332,54 @@
<item type="attr" name="ic_filter">@drawable/ic_filter_white_24dp</item>
<item type="attr" name="ic_sleep">@drawable/ic_sleep_white_24dp</item>
<item type="attr" name="ic_sleep_off">@drawable/ic_sleep_off_white_24dp</item>
- <item type="attr" name="ic_check_box">@drawable/ic_check_box_white_24dp</item>
- <item type="attr" name="ic_check_box_outline">@drawable/ic_check_box_outline_blank_white_24dp</item>
- <item type="attr" name="ic_indeterminate_check_box">@drawable/ic_indeterminate_check_box_white_24dp</item>
+ <item type="attr" name="ic_select_all">@drawable/ic_select_all_white</item>
+ <item type="attr" name="ic_select_none">@drawable/ic_select_none_white</item>
<item type="attr" name="ic_sort">@drawable/ic_sort_white_24dp</item>
<item type="attr" name="ic_sd_storage">@drawable/ic_sd_storage_white_36dp</item>
<item type="attr" name="ic_create_new_folder">@drawable/ic_create_new_folder_white_24dp</item>
<item type="attr" name="ic_cast_disconnect">@drawable/ic_cast_disconnect_white_36dp</item>
+ <item type="attr" name="ic_cellphone_text">@drawable/ic_cellphone_text_white_24dp</item>
+ <item type="attr" name="ic_question_answer">@drawable/ic_baseline_question_answer_white_24dp</item>
+ <item type="attr" name="ic_bug">@drawable/ic_bug_white_24dp</item>
+ <item type="attr" name="ic_known_issues">@drawable/ic_format_list_bulleted_white_24dp</item>
<item type="attr" name="master_switch_background">@color/master_switch_background_dark</item>
+ <item type="attr" name="currently_playing_background">@color/highlight_dark</item>
<item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item>
+
+ <item type="attr" name="about_screen_background">#303030</item>
+ <item type="attr" name="about_screen_card_background">#424242</item>
+ <item type="attr" name="about_screen_card_border">#262626</item>
+ <item type="attr" name="about_screen_font_color">#ffffff</item>
+ </style>
+
+ <style name="Theme.AntennaPod.TrueBlack.NoTitle" parent="Theme.Base.AntennaPod.TrueBlack.NoTitle">
+ <!-- Room for API dependent attributes -->
</style>
+ <style name="Theme.Base.AntennaPod.TrueBlack.NoTitle" parent="Theme.Base.AntennaPod.Dark.NoTitle">
+ <item name="progressBarTheme">@style/ProgressBarTrueBlack</item>
+ <item type="attr" name="non_transparent_background">@color/black</item>
+ <item type="attr" name="overlay_background">@color/black</item>
+ <item type="attr" name="overlay_drawable">@drawable/overlay_drawable_dark_trueblack</item>
+ <item type="attr" name="dragview_background">@drawable/ic_drag_vertical_white_48dp</item>
+ <item type="attr" name="dragview_float_background">@color/black</item>
+ <item type="attr" name="nav_drawer_background">@color/black</item>
+ <item type="attr" name="drawer_activated_color">@color/highlight_trueblack</item>
+ <item type="attr" name="currently_playing_background">@color/highlight_trueblack</item>
+ <item name="android:textColorPrimary">@color/white</item>
+ <item name="android:color">@color/white</item>
+ <item name="android:colorBackground">@color/black</item>
+ <item name="android:windowBackground">@color/black</item>
+ <item name="android:actionBarStyle">@color/black</item>
+ <item name="colorPrimary">@color/black</item>
+ <item name="colorPrimaryDark">@color/black</item>
+ </style>
+
+
<style name="Theme.AntennaPod.Dark.Splash" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/bg_splash</item>
+ <item name="colorPrimary">@color/ic_launcher_background</item>
+ <item name="colorPrimaryDark">@color/ic_launcher_background</item>
</style>
<style name="Theme.AntennaPod.VideoPlayer" parent="@style/Theme.AntennaPod.Dark">
@@ -366,4 +465,9 @@
<item name="android:progressDrawable">@drawable/progress_bar_horizontal_dark</item>
</style>
+ <style name="ProgressBarTrueBlack">
+ <item name="android:indeterminateOnly">false</item>
+ <item name="android:progressDrawable">@drawable/progress_bar_horizontal_trueblack</item>
+ </style>
+
</resources>