summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorByteHamster <info@bytehamster.com>2019-05-19 18:59:03 +0200
committerByteHamster <info@bytehamster.com>2019-05-19 18:59:03 +0200
commit73744e3d4c2d108ff757dce9700d6f44521c8303 (patch)
treebe3609ab8c4f3af58792562eaa40a9490c2ef2fd
parent09f4ebf08ad17435249d0daddfe290ae1d0484f4 (diff)
parent135df61692ee1d6d3cee59039ae633a0ac9549f3 (diff)
downloadAntennaPod-73744e3d4c2d108ff757dce9700d6f44521c8303.zip
Merge branch 'develop' into eventbus-v3
-rw-r--r--.tx/antennapod.description/he_IL_translation43
-rw-r--r--.tx/antennapod.description/pt_translation (renamed from app/src/main/play/pt-PT/listing/fulldescription)23
-rw-r--r--.tx/antennapod.shortdescription/he_IL_translation1
-rw-r--r--.tx/antennapod.shortdescription/pt_translation1
-rw-r--r--.tx/config136
-rw-r--r--CHANGELOG.md7
-rw-r--r--CONTRIBUTORS48
-rw-r--r--app/build.gradle10
-rw-r--r--app/src/androidTest/java/de/test/antennapod/service/playback/PlaybackServiceTaskManagerTest.java81
-rw-r--r--app/src/androidTest/java/de/test/antennapod/ui/MainActivityTest.java11
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/AboutActivity.java17
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java3
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java33
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/CoverLoader.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/DefaultActionButtonCallback.java10
-rw-r--r--app/src/main/java/de/danoeh/antennapod/dialog/RatingDialog.java4
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java37
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/ChaptersFragment.java74
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java39
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/ExternalPlayerFragment.java18
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/FavoriteEpisodesFragment.java4
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/ItemDescriptionFragment.java4
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/ItemlistFragment.java15
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/ItunesSearchFragment.java66
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/NewEpisodesFragment.java4
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java35
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java54
-rw-r--r--app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/view/EmptyViewHandler.java92
-rw-r--r--app/src/main/java/de/danoeh/antennapod/view/SimpleAdapterDataObserver.java41
-rw-r--r--app/src/main/play/ar/listing/fulldescription43
-rw-r--r--app/src/main/play/ar/listing/shortdescription1
-rw-r--r--app/src/main/play/ar/listing/title1
-rw-r--r--app/src/main/play/bg/listing/fulldescription43
-rw-r--r--app/src/main/play/bg/listing/shortdescription1
-rw-r--r--app/src/main/play/bg/listing/title1
-rw-r--r--app/src/main/play/ca/listing/fulldescription43
-rw-r--r--app/src/main/play/ca/listing/shortdescription1
-rw-r--r--app/src/main/play/ca/listing/title1
-rw-r--r--app/src/main/play/contact-email.txt (renamed from app/src/main/play/contactEmail)0
-rw-r--r--app/src/main/play/contact-website.txt (renamed from app/src/main/play/contactWebsite)0
-rw-r--r--app/src/main/play/cs-CZ/listing/fulldescription20
-rw-r--r--app/src/main/play/cs-CZ/listing/shortdescription1
-rw-r--r--app/src/main/play/cs-CZ/listing/title1
-rw-r--r--app/src/main/play/da-DK/listing/fulldescription43
-rw-r--r--app/src/main/play/da-DK/listing/shortdescription1
-rw-r--r--app/src/main/play/da-DK/listing/title1
-rw-r--r--app/src/main/play/de-DE/listing/title1
-rw-r--r--app/src/main/play/default-language.txt (renamed from app/src/main/play/defaultLanguage)0
-rw-r--r--app/src/main/play/el-GR/listing/fulldescription43
-rw-r--r--app/src/main/play/el-GR/listing/shortdescription1
-rw-r--r--app/src/main/play/el-GR/listing/title1
-rw-r--r--app/src/main/play/es-ES/listing/fulldescription43
-rw-r--r--app/src/main/play/es-ES/listing/shortdescription1
-rw-r--r--app/src/main/play/es-ES/listing/title1
-rw-r--r--app/src/main/play/et/listing/fulldescription43
-rw-r--r--app/src/main/play/et/listing/shortdescription1
-rw-r--r--app/src/main/play/et/listing/title1
-rw-r--r--app/src/main/play/fa/listing/fulldescription43
-rw-r--r--app/src/main/play/fa/listing/shortdescription1
-rw-r--r--app/src/main/play/fa/listing/title1
-rw-r--r--app/src/main/play/fr-FR/listing/shortdescription1
-rw-r--r--app/src/main/play/fr-FR/listing/title1
-rw-r--r--app/src/main/play/gl-ES/listing/shortdescription1
-rw-r--r--app/src/main/play/gl-ES/listing/title1
-rw-r--r--app/src/main/play/hi-IN/listing/fulldescription43
-rw-r--r--app/src/main/play/hi-IN/listing/shortdescription1
-rw-r--r--app/src/main/play/hi-IN/listing/title1
-rw-r--r--app/src/main/play/it-IT/listing/fulldescription43
-rw-r--r--app/src/main/play/it-IT/listing/shortdescription1
-rw-r--r--app/src/main/play/it-IT/listing/title1
-rw-r--r--app/src/main/play/iw-IL/listing/fulldescription23
-rw-r--r--app/src/main/play/iw-IL/listing/shortdescription1
-rw-r--r--app/src/main/play/iw-IL/listing/title1
-rw-r--r--app/src/main/play/ja-JP/listing/title1
-rw-r--r--app/src/main/play/ko-KR/listing/fulldescription43
-rw-r--r--app/src/main/play/ko-KR/listing/shortdescription1
-rw-r--r--app/src/main/play/ko-KR/listing/title1
-rw-r--r--app/src/main/play/listings/de-DE/full-description.txt (renamed from app/src/main/play/de-DE/listing/fulldescription)2
-rw-r--r--app/src/main/play/listings/de-DE/short-description.txt (renamed from app/src/main/play/de-DE/listing/shortdescription)0
-rw-r--r--app/src/main/play/listings/en-US/full-description.txt (renamed from app/src/main/play/en-US/listing/fulldescription)0
-rw-r--r--app/src/main/play/listings/en-US/graphics/feature-graphic/feature-graphic.png (renamed from app/src/main/play/en-US/listing/featureGraphic/feature-graphic.png)bin60183 -> 60183 bytes
-rw-r--r--app/src/main/play/listings/en-US/graphics/phone-screenshots/00.png (renamed from app/src/main/play/en-US/listing/phoneScreenshots/00.png)bin300470 -> 300470 bytes
-rw-r--r--app/src/main/play/listings/en-US/graphics/phone-screenshots/01.png (renamed from app/src/main/play/en-US/listing/phoneScreenshots/01.png)bin385379 -> 385379 bytes
-rw-r--r--app/src/main/play/listings/en-US/graphics/phone-screenshots/02.png (renamed from app/src/main/play/en-US/listing/phoneScreenshots/02.png)bin150991 -> 150991 bytes
-rw-r--r--app/src/main/play/listings/en-US/graphics/phone-screenshots/03.png (renamed from app/src/main/play/en-US/listing/phoneScreenshots/03.png)bin378048 -> 378048 bytes
-rw-r--r--app/src/main/play/listings/en-US/graphics/phone-screenshots/04.png (renamed from app/src/main/play/en-US/listing/phoneScreenshots/04.png)bin167307 -> 167307 bytes
-rw-r--r--app/src/main/play/listings/en-US/graphics/phone-screenshots/05.png (renamed from app/src/main/play/en-US/listing/phoneScreenshots/05.png)bin93763 -> 93763 bytes
-rw-r--r--app/src/main/play/listings/en-US/graphics/phone-screenshots/06.png (renamed from app/src/main/play/en-US/listing/phoneScreenshots/06.png)bin173137 -> 173137 bytes
-rw-r--r--app/src/main/play/listings/en-US/graphics/phone-screenshots/07.png (renamed from app/src/main/play/en-US/listing/phoneScreenshots/07.png)bin54530 -> 54530 bytes
-rw-r--r--app/src/main/play/listings/en-US/short-description.txt (renamed from app/src/main/play/en-US/listing/shortdescription)0
-rw-r--r--app/src/main/play/listings/en-US/title.txt (renamed from app/src/main/play/en-US/listing/title)0
-rw-r--r--app/src/main/play/listings/fr-FR/full-description.txt (renamed from app/src/main/play/fr-FR/listing/fulldescription)0
-rw-r--r--app/src/main/play/listings/fr-FR/short-description.txt1
-rw-r--r--app/src/main/play/listings/gl-ES/full-description.txt (renamed from app/src/main/play/gl-ES/listing/fulldescription)2
-rw-r--r--app/src/main/play/listings/gl-ES/short-description.txt1
-rw-r--r--app/src/main/play/listings/it-IT/full-description.txt43
-rw-r--r--app/src/main/play/listings/it-IT/short-description.txt1
-rw-r--r--app/src/main/play/listings/ja-JP/full-description.txt (renamed from app/src/main/play/ja-JP/listing/fulldescription)0
-rw-r--r--app/src/main/play/listings/ja-JP/short-description.txt (renamed from app/src/main/play/ja-JP/listing/shortdescription)2
-rw-r--r--app/src/main/play/listings/nl-NL/full-description.txt (renamed from app/src/main/play/nl-NL/listing/fulldescription)2
-rw-r--r--app/src/main/play/listings/nl-NL/short-description.txt (renamed from app/src/main/play/nl-NL/listing/shortdescription)0
-rw-r--r--app/src/main/play/listings/zh-CN/short-description.txt1
-rw-r--r--app/src/main/play/lt/listing/fulldescription43
-rw-r--r--app/src/main/play/lt/listing/shortdescription1
-rw-r--r--app/src/main/play/nl-NL/listing/title1
-rw-r--r--app/src/main/play/pl-PL/listing/fulldescription43
-rw-r--r--app/src/main/play/pl-PL/listing/shortdescription1
-rw-r--r--app/src/main/play/pl-PL/listing/title1
-rw-r--r--app/src/main/play/pt-BR/listing/fulldescription43
-rw-r--r--app/src/main/play/pt-BR/listing/shortdescription1
-rw-r--r--app/src/main/play/pt-BR/listing/title1
-rw-r--r--app/src/main/play/pt-PT/listing/shortdescription1
-rw-r--r--app/src/main/play/pt-PT/listing/title1
-rw-r--r--app/src/main/play/release-notes/en-US/default.txt5
-rw-r--r--app/src/main/play/ro/listing/fulldescription20
-rw-r--r--app/src/main/play/ro/listing/shortdescription1
-rw-r--r--app/src/main/play/ro/listing/title1
-rw-r--r--app/src/main/play/ru-RU/listing/fulldescription43
-rw-r--r--app/src/main/play/ru-RU/listing/shortdescription1
-rw-r--r--app/src/main/play/ru-RU/listing/title1
-rw-r--r--app/src/main/play/sv-SE/listing/fulldescription43
-rw-r--r--app/src/main/play/sv-SE/listing/shortdescription1
-rw-r--r--app/src/main/play/sv-SE/listing/title1
-rw-r--r--app/src/main/play/tr-TR/listing/fulldescription43
-rw-r--r--app/src/main/play/tr-TR/listing/shortdescription1
-rw-r--r--app/src/main/play/tr-TR/listing/title1
-rw-r--r--app/src/main/play/uk/listing/fulldescription40
-rw-r--r--app/src/main/play/uk/listing/shortdescription1
-rw-r--r--app/src/main/play/uk/listing/title1
-rw-r--r--app/src/main/play/vi/listing/fulldescription43
-rw-r--r--app/src/main/play/vi/listing/shortdescription1
-rw-r--r--app/src/main/play/vi/listing/title1
-rw-r--r--app/src/main/play/zh-CN/listing/fulldescription43
-rw-r--r--app/src/main/play/zh-CN/listing/shortdescription1
-rw-r--r--app/src/main/play/zh-CN/listing/title1
-rw-r--r--app/src/main/res/layout/all_episodes_fragment.xml4
-rw-r--r--app/src/main/res/layout/cover_fragment.xml85
-rw-r--r--app/src/main/res/layout/empty_view_layout.xml1
-rw-r--r--app/src/main/res/layout/nav_feedlistitem.xml9
-rw-r--r--app/src/main/res/layout/queue_fragment.xml4
-rw-r--r--app/src/main/res/menu/subscriptions.xml28
-rwxr-xr-xcontributers.template.py12
-rw-r--r--core/build.gradle1
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java5
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java75
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java455
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceNotificationBuilder.java184
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceTaskManager.java54
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSITunes.java115
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/syndication/parsers/DurationParser.java37
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/FeedUpdateUtils.java23
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/NetworkUtils.java5
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java26
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackServiceStarter.java9
-rw-r--r--core/src/main/res/values-ca/strings.xml3
-rw-r--r--core/src/main/res/values-cs-rCZ/strings.xml3
-rw-r--r--core/src/main/res/values-da/strings.xml75
-rw-r--r--core/src/main/res/values-de/strings.xml75
-rw-r--r--core/src/main/res/values-el/strings.xml2
-rw-r--r--core/src/main/res/values-es/strings.xml109
-rw-r--r--core/src/main/res/values-et/strings.xml3
-rw-r--r--core/src/main/res/values-fr/strings.xml93
-rw-r--r--core/src/main/res/values-gl-rES/strings.xml103
-rw-r--r--core/src/main/res/values-hi-rIN/strings.xml3
-rw-r--r--core/src/main/res/values-hu/strings.xml11
-rw-r--r--core/src/main/res/values-it/strings.xml465
-rw-r--r--core/src/main/res/values-iw-rIL/strings.xml157
-rw-r--r--core/src/main/res/values-ja/strings.xml68
-rw-r--r--core/src/main/res/values-lt/strings.xml79
-rw-r--r--core/src/main/res/values-nb/strings.xml141
-rw-r--r--core/src/main/res/values-nl/strings.xml75
-rw-r--r--core/src/main/res/values-pl-rPL/strings.xml29
-rw-r--r--core/src/main/res/values-pt-rBR/strings.xml92
-rw-r--r--core/src/main/res/values-pt/strings.xml87
-rw-r--r--core/src/main/res/values-ru/strings.xml29
-rw-r--r--core/src/main/res/values-sv-rSE/strings.xml217
-rw-r--r--core/src/main/res/values-tr/strings.xml73
-rw-r--r--core/src/main/res/values-uk-rUA/strings.xml111
-rw-r--r--core/src/main/res/values-zh-rCN/strings.xml32
-rw-r--r--core/src/main/res/values/strings.xml5
-rw-r--r--core/src/main/res/values/styles.xml296
-rw-r--r--core/src/play/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceFlavorHelper.java14
-rw-r--r--core/src/play/java/de/danoeh/antennapod/core/service/playback/RemotePSMP.java2
-rw-r--r--core/src/test/java/de/danoeh/antennapod/core/syndication/parsers/DurationParserTest.java43
186 files changed, 3290 insertions, 2288 deletions
diff --git a/.tx/antennapod.description/he_IL_translation b/.tx/antennapod.description/he_IL_translation
new file mode 100644
index 000000000..4ccee5452
--- /dev/null
+++ b/.tx/antennapod.description/he_IL_translation
@@ -0,0 +1,43 @@
+היישומון אנטנה־פּוֹד הוא נגן ומנהל פודקאסטים שמעניק לך גישה ישירה למיליונים של פודקאסטים בחינם ובתשלום, החל ממגישי פודקאסטים עצמאיים ועד למפיצים גדולים כגון BBC,‏ NPR ו־CNN. ניתן להוסיף, לייבא ולייצא את ההזנות שלהם בקלות יחסית באמצעות מסד נתוני הפודקאסטים של iTunes, קובצי OPML או כתובות של RSS. מאפשר לך לחסוך במאמץ, סוללה ותקשורת נתונים עם פקדי אוטומציה להורדה של פרקים (לפי זמנים, הפרשי זמן ורשתות אלחוטיות) ומחיקה של פרקים (על בסיס הגדרות המועדפים וההשהיה שלך).<br>
+אבל הכי חשוב: ניתן להוריד, להזרים או לסדר רשימות של פרקים וליהנות מהם בכל דרך שמתאימה לך עם מהירויות נגינה משתנות, תמיכה במקטעים ומתזמן שינה. ניתן אפילו להביע את חיבתך ליוצרי התוכן עם שילוב של Flattr ביישומון.
+
+מיוצרת על ידי חובבי פודקאסטים, אנטנהפוד הינה תוכנה חינמית בכל מובן המילה: קוד פתוח, ללא עלות וללא פרסומות.
+
+<b>כל התכונות:</b><br>
+ייבוא, ארגון ונגינה<br>
+&#8226; ניתן להוסיף ולייבא הזנות דרך הספריות של iTunes ושל gPodder.net, קובצי OPML וקישורי RSS או Atom<br>
+&#8226; ניתן לנהל את הנגינה מכל מקום: וידג׳ט על מסך הבית, התרעות המערכת ופקדי שקע אוזניות ובלוטות׳<br>
+&#8226; פשוט ליהנות בדרך שלך עם מהירות נגינה משתנה, תמיכה במקטעים (MP3, VorbisComment ו־Podlove), שמירת מיקום הנגינה ומתזמן שינה מתקדם (ניתן לנער כדי לאפס, להנמיך את עצמך השמע ולהאט את מהירות הנגינה)<br>
+&#8226; גישה להזנות ולפרקים המוגנים בססמה<br>
+&#8226; ניתן להשתמש בעימודי ההזנות שלנו (www.podlove.org/paged-feeds)
+
+מעקב, שיתוף והבעת הערכה<br>
+&#8226; מעקב אחר הטובים שבטובים על ידי סימון פרקים כמועדפים<br>
+&#8226; ניתן לאתר פרק אחד דרך היסטוריית הנגינה או על ידי חיפוש (כותרות והערות פרק)<br>
+&#8226; ניתן לשתף פרקים והזנות דרך אפשרויות מתקדמות ברשתות חברתיות ודוא״ל, שירותי gPodder.net ודרך ייצוא OPML<br>
+&#8226; ניתן לתמוך בעורכי תוכן עם שילוב של Flattr לתוך המערכת לרבות תרומה אוטומטית
+
+שליטה במערכת<br>
+&#8226; ניתן לשלוט על הורדה אוטומטית: לבחור הזנות, להחריג רשתות סלולריות, לבחור רשתות אלחוטיות מסוימות, לדרוש מהטלפון להיות בטעינה ולהגדיר מועדים או מרווחי זמן<br>
+&#8226; ניתן לנהל את האחסון על ידי הגדרת כמות הפרקים שנשמרים במטמון, מחיקה חכמה (בהתבסס על המועדפים ומצב הנגינה שלך) ובחירת המיקום המועדף עליך<br>
+&#8226; ניתן להשתמש באנטנה־פּוֹד בשפה שלך (HE, EN, DE, CS, NL, NB, JA, PT, ES, SV, CA, UK, FR, KO, TR, ZH)<br>
+&#8226; התאמה לסביבה שלך באמצעות ערכות עיצוב בהירה וכהה<br>
+&#8226; גיבוי התמיכה שלך עם שילוב מול gPodder.net וייצוא של OPML
+
+<b>מזמינים אותך להצטרף לקהילת אנטנה־פּוֹד!</b><br>
+את תהליכי הפיתוח הפעילים של אנטנה־פּוֹד מובילים מתנדבים. ניתן לתרום גם כן, עם קוד או עם הערה!
+
+GitHub הוא המקום בו אנו מרכזים את בקשות התכונות, דיווחי התקלות ותרומות הקוד:<br>
+https://www.github.com/AntennaPod/AntennaPod
+
+הקבוצה שלנו ב־Google היא המקום לשתף את הרעיונות שלך, רגעי הפודקאסט המועדפים עליך ואת הערכתך לכל המתנדבים:<br>
+https://groups.google.com/forum/#!forum/antennapod
+
+יש לך שאלה או שמעניין אותך לתת לנו משוב?
+https://twitter.com/@AntennaPod
+
+Transifex הוא המקום לסייע בתרגומים:<br>
+https://www.transifex.com/antennapod/antennapod
+
+מזמינים אותך לחקור את תכנית הבדיקות שלנו כדי לקבל את התכונות העדכניות ביותר לפני כולם:<br>
+https://www.github.com/AntennaPod/AntennaPod/wiki/Help-test-AntennaPod \ No newline at end of file
diff --git a/app/src/main/play/pt-PT/listing/fulldescription b/.tx/antennapod.description/pt_translation
index 735334e0c..a5d85c553 100644
--- a/app/src/main/play/pt-PT/listing/fulldescription
+++ b/.tx/antennapod.description/pt_translation
@@ -1,5 +1,5 @@
-O AntennaPod é um gestor de podcasts que lhe permite aceder a milhões de podcasts (gratuitos ou pagos), a partir de diversas fontes tais como as estações BBC, NPR e CNN. A adição de fontes é muito fácil através das base de dados iTunes ou gPodder, ficheiros OPML ou fontes RSS. Poupe tempo, economize energia e dados móveis através dos mecanismos de controlo de transferência de episódios (possibilidade de especificar intervalos ou horas para as transferências e redes WiFi) e de eliminação de episódios (de acordo com as suas preferências).<br>
-Mas ainda mais importante: pode transferir, emitir ou colocar episódios na lista de reprodução ao seu gosto, pode utilizar velocidades variáveis de reprodução, tem suporte a capítulos e um temporizador. Pode também mostrar o seu apreço aos disponibilizadores dos episódios através do serviço Flattr.
+O AntennaPod é um gestor de podcasts que lhe permite aceder a milhões de podcasts, gratuitos ou pagos, a partir de diversas fontes tais como as estações BBC, NPR e CNN. A adição, importação e exportação de fontes é muito fácil através da base de dados iTunes ou gPodder, ficheiros OPML ou fontes RSS. Poupe tempo, economize bateria e dados móveis através dos mecanismos de controlo de descargas de episódios (possibilidade de especificar intervalos ou horas para as descargas e redes Wifi) e de eliminação de episódios (de acordo com as suas preferências).<br>
+Mas ainda mais importante: pode descarregar, emitir ou colocar episódios na lista de reprodução ao seu gosto, pode utilizar velocidades variáveis de reprodução, tem suporte a capítulos e um temporizador. Pode também mostrar o seu apreço aos criadores dos episódios através do serviço Flattr.
Criado por entusiastas de podcasts, o AntennaPod é livre em todos os sentidos da palavra: open source, gratuito e sem publicidade.
@@ -7,7 +7,7 @@ Criado por entusiastas de podcasts, o AntennaPod é livre em todos os sentidos d
Importação, organização e reprodução<br>
&#8226; Adicione e importe fontes existentes nos diretórios iTunes e gPodder.net, ficheiros OPML e ligações ATOM e RSS<br>
&#8226; Gestão de podcasts através do widget, barra de notificações e controlos de auriculares ou auscultadores<br>
-&#8226; Velocidade variável de reprodução, suporte a capítulos (MP3, VorbisComment e Podlove), memorização da posição de reprodução e um temporizador avançado (agite para repor ou baixar e aumentar o volume)<br>
+&#8226; Velocidade variável de reprodução, suporte a capítulos (MP3, VorbisComment e Podlove), memorização da posição de reprodução e um temporizador avançado (agite para repor, baixar e aumentar o volume)<br>
&#8226; Acesso a fontes e episódios protegidos por palavra-passe<br>
&#8226; Possibilidade de subscrever fontes paginadas (www.podlove.org/paged-feeds)
@@ -17,8 +17,8 @@ Monitorização, partilha e suporte<br>
&#8226; Partilhe episódios e fontes nas redes sociais, por e-mail, no diretório gPodder.net ou através de ficheiros OPML<br>
&#8226; Ajude os criadores de conteúdos através do serviço Flattr
-Controlar o sistema<br>
-&#8226; Controle todas as transferÊncias automáticas: escolha as fontes, exclua redes móveis, especifique as redes WiFi, indique se o telefone deve estar a ser carregado e defina as horas ou intervalos das transferências<br>
+Controlo do sistema<br>
+&#8226; Controle todas as descargas automáticas: escolha as fontes, exclua redes móveis, especifique as redes Wi-Fi, indique se o telefone deve estar a ser carregado e defina as horas ou intervalos das descargas<br>
&#8226; Faça a gestão do armazenamento através da cache de episódios, da eliminação inteligente (de acordo com os seus favoritos e estado de reprodução) e selecionado a localização de armazenamento<br>
&#8226; Utilize o AntennaPod no seu idioma (EN, DE, CS, NL, NB, JA, PT, ES, SV, CA, UK, FR, KO, TR, ZH)<br>
&#8226; Adapte-se ao seu ambiente através dos temas claro ou escuro<br>
@@ -27,14 +27,17 @@ Controlar o sistema<br>
<b>Integre a comunidade do AntennaPod!</b><br>
O AntennaPod é desenvolvido por voluntários. Você também pode contribuir na programação ou reportando os erros encontrados!
-O GitHub é o local certo para os pedidos de funcionalidades, relatórios de erros e contribuições:<br>
-www.github.com/AntennaPod/AntennaPod
+O GitHub é o local certo para os pedidos de funcionalidades, relatórios de erros e contributos:<br>
+https://www.github.com/AntennaPod/AntennaPod
O nosso grupo Google é o local certo para partilhar ideias e agradecer aos nossos voluntários:<br>
https://groups.google.com/forum/#!forum/antennapod
+Tem alguma questão ou comentário a fazer?
+https://twitter.com/@AntennaPod
+
O Transifex é o local no qual pode ajudar a traduzir a aplicação:<br>
-www.transifex.com/antennapod/antennapod
+https://www.transifex.com/antennapod/antennapod
-Junte-se ao nosso programa de testes para obter as funcionalidades mais recentes:<br>
-www.github.com/AntennaPod/AntennaPod/wiki/Help-test-AntennaPod \ No newline at end of file
+Junte-se ao nosso programa Beta para obter as funcionalidades mais recentes:<br>
+https://www.github.com/AntennaPod/AntennaPod/wiki/Help-test-AntennaPod \ No newline at end of file
diff --git a/.tx/antennapod.shortdescription/he_IL_translation b/.tx/antennapod.shortdescription/he_IL_translation
new file mode 100644
index 000000000..34ffefafc
--- /dev/null
+++ b/.tx/antennapod.shortdescription/he_IL_translation
@@ -0,0 +1 @@
+מנהל פודקאסטים ונגן קל לשימוש, גמיש ובקוד פתוח \ No newline at end of file
diff --git a/.tx/antennapod.shortdescription/pt_translation b/.tx/antennapod.shortdescription/pt_translation
new file mode 100644
index 000000000..c558abaca
--- /dev/null
+++ b/.tx/antennapod.shortdescription/pt_translation
@@ -0,0 +1 @@
+Gestor e reprodutor de podcasts simples, flexível e open souce \ No newline at end of file
diff --git a/.tx/config b/.tx/config
index 7cc91d1ed..110f2ba71 100644
--- a/.tx/config
+++ b/.tx/config
@@ -57,75 +57,75 @@ trans.zh_TW = core/src/main/res/values-zh-rTW/strings.xml
trans.zh_HK = core/src/main/res/values-zh-rHK/strings.xml
[antennapod.description]
-source_file = app/src/main/play/en-US/listing/fulldescription
+source_file = app/src/main/play/listings/en-US/full-description.txt
source_lang = en
-trans.ar = app/src/main/play/ar/listing/fulldescription
-trans.az = app/src/main/play/az-AZ/listing/fulldescription
-trans.bg = app/src/main/play/bg/listing/fulldescription
-trans.ca = app/src/main/play/ca/listing/fulldescription
-trans.cs = app/src/main/play/cs-CZ/listing/fulldescription
-trans.da = app/src/main/play/da-DK/listing/fulldescription
-trans.de = app/src/main/play/de-DE/listing/fulldescription
-trans.el = app/src/main/play/el-GR/listing/fulldescription
-trans.es = app/src/main/play/es-ES/listing/fulldescription
-trans.et = app/src/main/play/et/listing/fulldescription
-trans.fa = app/src/main/play/fa/listing/fulldescription
-trans.fr = app/src/main/play/fr-FR/listing/fulldescription
-trans.gl = app/src/main/play/gl-ES/listing/fulldescription
-trans.hi_IN = app/src/main/play/hi-IN/listing/fulldescription
-trans.hu = app/src/main/play/hu-HU/listing/fulldescription
-trans.it_IT = app/src/main/play/it-IT/listing/fulldescription
-trans.iw = app/src/main/play/iw-IL/listing/fulldescription
-trans.ja = app/src/main/play/ja-JP/listing/fulldescription
-trans.ko = app/src/main/play/ko-KR/listing/fulldescription
-trans.lt = app/src/main/play/lt/listing/fulldescription
-trans.nl = app/src/main/play/nl-NL/listing/fulldescription
-trans.pl_PL = app/src/main/play/pl-PL/listing/fulldescription
-trans.pt_BR = app/src/main/play/pt-BR/listing/fulldescription
-trans.pt_PT = app/src/main/play/pt-PT/listing/fulldescription
-trans.ro_RO = app/src/main/play/ro/listing/fulldescription
-trans.ru_RU = app/src/main/play/ru-RU/listing/fulldescription
-trans.sl_SI = app/src/main/play/sl/listing/fulldescription
-trans.sv_SE = app/src/main/play/sv-SE/listing/fulldescription
-trans.tr = app/src/main/play/tr-TR/listing/fulldescription
-trans.uk_UA = app/src/main/play/uk/listing/fulldescription
-trans.vi = app/src/main/play/vi/listing/fulldescription
-trans.zh_CN = app/src/main/play/zh-CN/listing/fulldescription
-trans.zh_TW = app/src/main/play/zh-TW/listing/fulldescription
+trans.ar = app/src/main/play/listings/ar/full-description.txt
+trans.az = app/src/main/play/listings/az-AZ/full-description.txt
+trans.bg = app/src/main/play/listings/bg/full-description.txt
+trans.ca = app/src/main/play/listings/ca/full-description.txt
+trans.cs = app/src/main/play/listings/cs-CZ/full-description.txt
+trans.da = app/src/main/play/listings/da-DK/full-description.txt
+trans.de = app/src/main/play/listings/de-DE/full-description.txt
+trans.el = app/src/main/play/listings/el-GR/full-description.txt
+trans.es = app/src/main/play/listings/es-ES/full-description.txt
+trans.et = app/src/main/play/listings/et/full-description.txt
+trans.fa = app/src/main/play/listings/fa/full-description.txt
+trans.fr = app/src/main/play/listings/fr-FR/full-description.txt
+trans.gl = app/src/main/play/listings/gl-ES/full-description.txt
+trans.hi_IN = app/src/main/play/listings/hi-IN/full-description.txt
+trans.hu = app/src/main/play/listings/hu-HU/full-description.txt
+trans.it_IT = app/src/main/play/listings/it-IT/full-description.txt
+trans.iw = app/src/main/play/listings/iw-IL/full-description.txt
+trans.ja = app/src/main/play/listings/ja-JP/full-description.txt
+trans.ko = app/src/main/play/listings/ko-KR/full-description.txt
+trans.lt = app/src/main/play/listings/lt/full-description.txt
+trans.nl = app/src/main/play/listings/nl-NL/full-description.txt
+trans.pl_PL = app/src/main/play/listings/pl-PL/full-description.txt
+trans.pt_BR = app/src/main/play/listings/pt-BR/full-description.txt
+trans.pt_PT = app/src/main/play/listings/pt-PT/full-description.txt
+trans.ro_RO = app/src/main/play/listings/ro/full-description.txt
+trans.ru_RU = app/src/main/play/listings/ru-RU/full-description.txt
+trans.sl_SI = app/src/main/play/listings/sl/full-description.txt
+trans.sv_SE = app/src/main/play/listings/sv-SE/full-description.txt
+trans.tr = app/src/main/play/listings/tr-TR/full-description.txt
+trans.uk_UA = app/src/main/play/listings/uk/full-description.txt
+trans.vi = app/src/main/play/listings/vi/full-description.txt
+trans.zh_CN = app/src/main/play/listings/zh-CN/full-description.txt
+trans.zh_TW = app/src/main/play/listings/zh-TW/full-description.txt
[antennapod.shortdescription]
-source_file = app/src/main/play/en-US/listing/shortdescription
+source_file = app/src/main/play/listings/en-US/short-description.txt
source_lang = en
-trans.ar = app/src/main/play/ar/listing/shortdescription
-trans.az = app/src/main/play/az-AZ/listing/shortdescription
-trans.bg = app/src/main/play/bg/listing/shortdescription
-trans.ca = app/src/main/play/ca/listing/shortdescription
-trans.cs = app/src/main/play/cs-CZ/listing/shortdescription
-trans.da = app/src/main/play/da-DK/listing/shortdescription
-trans.de = app/src/main/play/de-DE/listing/shortdescription
-trans.el = app/src/main/play/el-GR/listing/shortdescription
-trans.es = app/src/main/play/es-ES/listing/shortdescription
-trans.et = app/src/main/play/et/listing/shortdescription
-trans.fa = app/src/main/play/fa/listing/shortdescription
-trans.fr = app/src/main/play/fr-FR/listing/shortdescription
-trans.gl = app/src/main/play/gl-ES/listing/shortdescription
-trans.hi_IN = app/src/main/play/hi-IN/listing/shortdescription
-trans.hu = app/src/main/play/hu-HU/listing/shortdescription
-trans.it_IT = app/src/main/play/it-IT/listing/shortdescription
-trans.iw = app/src/main/play/iw-IL/listing/shortdescription
-trans.ja = app/src/main/play/ja-JP/listing/shortdescription
-trans.ko = app/src/main/play/ko-KR/listing/shortdescription
-trans.lt = app/src/main/play/lt/listing/shortdescription
-trans.nl = app/src/main/play/nl-NL/listing/shortdescription
-trans.pl_PL = app/src/main/play/pl-PL/listing/shortdescription
-trans.pt_BR = app/src/main/play/pt-BR/listing/shortdescription
-trans.pt_PT = app/src/main/play/pt-PT/listing/shortdescription
-trans.ro_RO = app/src/main/play/ro/listing/shortdescription
-trans.ru_RU = app/src/main/play/ru-RU/listing/shortdescription
-trans.sl_SI = app/src/main/play/sl/listing/shortdescription
-trans.sv_SE = app/src/main/play/sv-SE/listing/shortdescription
-trans.tr = app/src/main/play/tr-TR/listing/shortdescription
-trans.uk_UA = app/src/main/play/uk/listing/shortdescription
-trans.vi = app/src/main/play/vi/listing/shortdescription
-trans.zh_CN = app/src/main/play/zh-CN/listing/shortdescription
-trans.zh_TW = app/src/main/play/zh-TW/listing/shortdescription
+trans.ar = app/src/main/play/listings/ar/short-description.txt
+trans.az = app/src/main/play/listings/az-AZ/short-description.txt
+trans.bg = app/src/main/play/listings/bg/short-description.txt
+trans.ca = app/src/main/play/listings/ca/short-description.txt
+trans.cs = app/src/main/play/listings/cs-CZ/short-description.txt
+trans.da = app/src/main/play/listings/da-DK/short-description.txt
+trans.de = app/src/main/play/listings/de-DE/short-description.txt
+trans.el = app/src/main/play/listings/el-GR/short-description.txt
+trans.es = app/src/main/play/listings/es-ES/short-description.txt
+trans.et = app/src/main/play/listings/et/short-description.txt
+trans.fa = app/src/main/play/listings/fa/short-description.txt
+trans.fr = app/src/main/play/listings/fr-FR/short-description.txt
+trans.gl = app/src/main/play/listings/gl-ES/short-description.txt
+trans.hi_IN = app/src/main/play/listings/hi-IN/short-description.txt
+trans.hu = app/src/main/play/listings/hu-HU/short-description.txt
+trans.it_IT = app/src/main/play/listings/it-IT/short-description.txt
+trans.iw = app/src/main/play/listings/iw-IL/short-description.txt
+trans.ja = app/src/main/play/listings/ja-JP/short-description.txt
+trans.ko = app/src/main/play/listings/ko-KR/short-description.txt
+trans.lt = app/src/main/play/listings/lt/short-description.txt
+trans.nl = app/src/main/play/listings/nl-NL/short-description.txt
+trans.pl_PL = app/src/main/play/listings/pl-PL/short-description.txt
+trans.pt_BR = app/src/main/play/listings/pt-BR/short-description.txt
+trans.pt_PT = app/src/main/play/listings/pt-PT/short-description.txt
+trans.ro_RO = app/src/main/play/listings/ro/short-description.txt
+trans.ru_RU = app/src/main/play/listings/ru-RU/short-description.txt
+trans.sl_SI = app/src/main/play/listings/sl/short-description.txt
+trans.sv_SE = app/src/main/play/listings/sv-SE/short-description.txt
+trans.tr = app/src/main/play/listings/tr-TR/short-description.txt
+trans.uk_UA = app/src/main/play/listings/uk/short-description.txt
+trans.vi = app/src/main/play/listings/vi/short-description.txt
+trans.zh_CN = app/src/main/play/listings/zh-CN/short-description.txt
+trans.zh_TW = app/src/main/play/listings/zh-TW/short-description.txt
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2899d1fd2..1e966b997 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,13 @@
Change Log
==========
+Version 1.7.2
+-------------
+* Added configurable behavior of the back button
+* Added delete option to episode's context menu
+* New UI for batch edit feature
+* Set number of columns in subscription list
+* Lots of bug fixes
Version 1.7.1
-------------
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 891a9784c..6cc7ae30e 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -3,14 +3,19 @@ DEVELOPERS
Alan Orth
Alexander Terczka
+Alexei Bendebury
+Ali
alifeflow
amhokies
Anders Bo Rasmussen
+Anderson Mesquita
Andrew Gaul
Andrey Krutov
Anthony Lieuallen
axq
+Borjan Tchakaloff
brad
+Burt Wiley Snyder
ByteHamster
Cameron Banga
Christian Ludwig
@@ -32,6 +37,7 @@ EirikV
Eoin Mcloughlin
eraymond
Ercan Erden
+falko
Falko Lehmann
Hannes Achleitner
hannesa2
@@ -42,6 +48,7 @@ Humberto Fraga
InsidE
James Falcon
Jan Niehusmann
+Jatin Kumar
Jens Klingenberg
Jens Müller
Johan Liesén
@@ -61,8 +68,10 @@ Martin Fietz
Martin Olsson
mat tso
mateoeh
+Matias de Andrea
Matthew Gaffen
Matthias Schütz
+Matthieu De Beule
Maurice Gilden
Meir Schwarz
Michael Kaiser
@@ -70,12 +79,17 @@ Michael Scarito
Mike Chelen
minusf
MolarAmbiguity
+Mostafa Ahangarha
Mounir Lamouri
mr-intj
+Nathan Mascitelli
Nis Wechselberg
Oliver Crow
orelogo
+pachecosf
Paul Ortyl
+Petar Kukolj
+qkolj
Raghul
Raghul Jagannathan
recalculated
@@ -88,6 +102,7 @@ Serge
Seth Golub
sevenmaster
Shantana Hardy
+Shinichiro Fujiwara
Simon Danner
Simon Rutishauser
Simon Schubert
@@ -129,13 +144,13 @@ Dutch: e2jk, glotzbach, rwv, Vistaus
English: mfietz, sterylmreep
Estonian: Eraser
Finnish: danieloeh
-French: cactux, ChaoticMind, clombion, e2jk, lacouture, Matth78, mfietz, Poussinou, PRIMOKORN, repat, sterylmreep, TacoTheDank, Tilwa, vcariven, whenrow
+French: cactux, ChaoticMind, clombion, e2jk, lacouture, Matth78, mfietz, Poussinou, PRIMOKORN, repat, Sioul, sterylmreep, TacoTheDank, Tilwa, vcariven, whenrow
Galician: antiparvos, pikamoku, Raichely
-German: 112358, altegedanken, barilla, bitsunited, Buggi, ceving, ChaoticMind, Chaquotay, dab0015, dadosch, DerSilly, DJaeger, elkangaroo, enz, fidel, finsterwalder, Foso, GNi33, HolgerJeromin, kalei, lohmann, LostInWeb, mfietz, nilso, repat, SAPlayer, schafia, Schroedingberg, sevenmaster, sucaml, Teaspoon, theonlytruth, weltenwort, Wyrrrd, ypid
+German: 112358, altegedanken, barilla, benedikt.g, bitsunited, Buggi, ceving, ChaoticMind, Chaquotay, dab0015, dadosch, DerSilly, die_otto, DJaeger, elkangaroo, enz, fidel, finsterwalder, Foso, GNi33, hightower5, HolgerJeromin, kalei, lohmann, LostInWeb, mfietz, nilso, repat, SAPlayer, schafia, Schroedingberg, sevenmaster, sucaml, Teaspoon, theonlytruth, weltenwort, Wyrrrd, ypid
Greek: antonist, danieloeh, hua2016s, MSavoritias, pavlosv
Hebrew (Israel): amir.dafnyman, E1i9, mongoose4004, pinkasey, rellieberman, Yaron, הלוי11
-Hindi (India): nmabhinandan, purple.coder, siddhusengar
-Hungarian: glatz.balazs, lna91, naren93, tszauer, ttyborg42
+Hindi (India): ankitiitb1069, Isaasu, nmabhinandan, purple.coder, siddhusengar
+Hungarian: glatz.balazs, lna91, marthynw, naren93, tszauer, ttyborg42
Icelandic: marthjod
Indonesian: jff, luke137, rezafaiza, silvanael16
Italian: aalex70, allin, apanontin, Bonnee, giuseppep, Guybrush88, marco_pag, neonsoftware, sevenmaster, theloca95
@@ -146,23 +161,24 @@ Korean: changwoo, seungrye, skcha
Korean (South Korea): changwoo, seungrye
Lithuanian: naglis
Macedonian: krisfremen
-Norwegian: hakonanes, timbast
-Norwegian Bokmål: corkie, hakonanes
-Norwegian Bokmål (Norway): corkie, hakonanes, kongk, timbast
+Malayalam: rashivkp
+Norwegian: timbast
+Norwegian Bokmål: corkie, danieloeh, heraldo
+Norwegian Bokmål (Norway): corkie, heraldo, kongk, timbast
Persian: ahangarha, F7D
-Polish: Iwangelion, maniexx, mfloryan, thedead4fun
-Polish (Poland): d6210809, Iwangelion, lomapur, mandlus, maniexx, Mephistofeles, shark103, tyle
-Portuguese: domingos86, emansije, smarquespt
-Portuguese (Brazil): alexupits, alysonborges, arua, caioau, carlo_valente, castrors, deandreamatias, edman, Firmino, jackmiras, Junin, lipefire, lluccia, lucasmotacr, mbaltar, rogervezaro, RubeensVinicius, SamWilliam, silvanael16
+Polish: Iwangelion, maniexx, mateossh, mfloryan
+Polish (Poland): d6210809, hiro2020, Iwangelion, lomapur, mandlus, maniexx, Mephistofeles, shark103, tyle
+Portuguese: andersonvom, domingos86, emansije, smarquespt
+Portuguese (Brazil): alexupits, alysonborges, andersonvom, arua, caioau, carlo_valente, castrors, deandreamatias, edman, Firmino, jackmiras, Junin, lipefire, lluccia, lucasmotacr, mbaltar, rogervezaro, RubeensVinicius, SamWilliam, silvanael16
Romanian (Romania): corneliu.e, fuzzmz, ralienpp
Russian (Russia): astra1, btimofeev, Duke_Raven, GaynullinDima, MegMasters98, mercutiy, null, overmind88, s.chebotar, shams4real, skvheadless, un_logic, whereisthetea, zhenya97
Slovenian (Slovenia): panter23
-Spanish: AleksSyntek, coperfix, deandreamatias, domingos86, dvd1985, Fitoschido, frandavid100, hard_ware, javiercoll, Juanmuto, lambdani, LatinSuD, leogrignafini, palopezv, TacoTheDank, tres.14159, wakutiteo
-Spanish (Spain): dvd1985, e2jk, frandavid100, hard_ware, palopezv, Raichely, TacoTheDank
+Spanish: AleksSyntek, andersonvom, coperfix, deandreamatias, domingos86, dvd1985, Fitoschido, frandavid100, hard_ware, javiercoll, Juanmuto, lambdani, LatinSuD, leogrignafini, palopezv, TacoTheDank, tres.14159, wakutiteo
+Spanish (Spain): andersonvom, dvd1985, e2jk, frandavid100, hard_ware, palopezv, Raichely, TacoTheDank
Swahili (Kenya): BonfaceKilz
Swedish (Sweden): albin.brantin, Bio, bpnilsson, ChaoticMind, jony08, nilso, SharpMelon, TwoD
-Telugu: veeven
-Turkish: basarancaner, brsata, Erdy, golcuk, overbite
-Ukrainian (Ukraine): older, sergiyr, zhenya97
+Telugu: Isaasu, veeven
+Turkish: basarancaner, brsata, Erdy, golcuk, overbite, Slsdem
+Ukrainian (Ukraine): older, paul_sm, sergiyr, zhenya97
Vietnamese: abnvolk, nguyenvui, ppanhh, vietnamesel10n
Vietnamese (Vietnam): bizover
diff --git a/app/build.gradle b/app/build.gradle
index 763fbbf80..97b9596b9 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,5 +1,5 @@
plugins {
- id('com.github.triplet.play') version '2.0.0'
+ id('com.github.triplet.play') version '2.2.0'
}
apply plugin: "com.android.application"
@@ -18,8 +18,9 @@ android {
// Version code schema:
// "1.2.3-SNAPSHOT" -> 1020300
// "1.2.3-RC4" -> 1020304
- versionCode 1070196
- versionName "1.7.1"
+ // "1.2.3" -> 1020395
+ versionCode 1070296
+ versionName "1.7.2b"
testApplicationId "de.test.antennapod"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
generatedDensities = []
@@ -130,7 +131,6 @@ dependencies {
implementation "com.android.support:design:$supportVersion"
implementation "com.android.support:preference-v14:$supportVersion"
implementation "com.android.support:gridlayout-v7:$supportVersion"
- implementation "com.android.support:percent:$supportVersion"
implementation "com.android.support:recyclerview-v7:$supportVersion"
compileOnly 'com.google.android.wearable:wearable:2.2.0'
implementation "org.apache.commons:commons-lang3:$commonslangVersion"
@@ -176,6 +176,8 @@ dependencies {
}
play {
+ track = 'alpha'
+
if (project.hasProperty("antennaPodServiceAccountEmail")) {
serviceAccountEmail = antennaPodServiceAccountEmail
} else {
diff --git a/app/src/androidTest/java/de/test/antennapod/service/playback/PlaybackServiceTaskManagerTest.java b/app/src/androidTest/java/de/test/antennapod/service/playback/PlaybackServiceTaskManagerTest.java
index d7d1229ec..c9f0527e1 100644
--- a/app/src/androidTest/java/de/test/antennapod/service/playback/PlaybackServiceTaskManagerTest.java
+++ b/app/src/androidTest/java/de/test/antennapod/service/playback/PlaybackServiceTaskManagerTest.java
@@ -1,6 +1,9 @@
package de.test.antennapod.service.playback;
import android.content.Context;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.annotation.UiThreadTest;
+import android.support.test.runner.AndroidJUnit4;
import android.test.InstrumentationTestCase;
import java.util.ArrayList;
@@ -17,37 +20,46 @@ import de.danoeh.antennapod.core.service.playback.PlaybackServiceTaskManager;
import de.danoeh.antennapod.core.storage.PodDBAdapter;
import de.danoeh.antennapod.core.util.playback.Playable;
import org.greenrobot.eventbus.EventBus;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static junit.framework.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
/**
* Test class for PlaybackServiceTaskManager
*/
-public class PlaybackServiceTaskManagerTest extends InstrumentationTestCase {
+@RunWith(AndroidJUnit4.class)
+public class PlaybackServiceTaskManagerTest {
- @Override
- protected void tearDown() throws Exception {
- super.tearDown();
+ @After
+ public void tearDown() {
PodDBAdapter.deleteDatabase();
}
- @Override
- protected void setUp() throws Exception {
- super.setUp();
-
+ @Before
+ public void setUp() {
// create new database
- PodDBAdapter.init(getInstrumentation().getTargetContext());
+ Context context = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ PodDBAdapter.init(context);
PodDBAdapter.deleteDatabase();
PodDBAdapter adapter = PodDBAdapter.getInstance();
adapter.open();
adapter.close();
}
+ @Test
public void testInit() {
- PlaybackServiceTaskManager pstm = new PlaybackServiceTaskManager(getInstrumentation().getTargetContext(), defaultPSTM);
+ Context context = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ PlaybackServiceTaskManager pstm = new PlaybackServiceTaskManager(context, defaultPSTM);
pstm.shutdown();
}
private List<FeedItem> writeTestQueue(String pref) {
- final Context c = getInstrumentation().getTargetContext();
final int NUM_ITEMS = 10;
Feed f = new Feed(0, null, "title", "link", "d", null, null, null, null, "id", null, "null", "url", false);
f.setItems(new ArrayList<>());
@@ -66,8 +78,9 @@ public class PlaybackServiceTaskManagerTest extends InstrumentationTestCase {
return f.getItems();
}
+ @Test
public void testGetQueueWriteBeforeCreation() throws InterruptedException {
- final Context c = getInstrumentation().getTargetContext();
+ final Context c = InstrumentationRegistry.getInstrumentation().getTargetContext();
List<FeedItem> queue = writeTestQueue("a");
assertNotNull(queue);
PlaybackServiceTaskManager pstm = new PlaybackServiceTaskManager(c, defaultPSTM);
@@ -80,8 +93,9 @@ public class PlaybackServiceTaskManagerTest extends InstrumentationTestCase {
pstm.shutdown();
}
+ @Test
public void testGetQueueWriteAfterCreation() throws InterruptedException {
- final Context c = getInstrumentation().getTargetContext();
+ final Context c = InstrumentationRegistry.getInstrumentation().getTargetContext();
PlaybackServiceTaskManager pstm = new PlaybackServiceTaskManager(c, defaultPSTM);
List<FeedItem> testQueue = pstm.getQueue();
@@ -111,8 +125,9 @@ public class PlaybackServiceTaskManagerTest extends InstrumentationTestCase {
pstm.shutdown();
}
+ @Test
public void testStartPositionSaver() throws InterruptedException {
- final Context c = getInstrumentation().getTargetContext();
+ final Context c = InstrumentationRegistry.getInstrumentation().getTargetContext();
final int NUM_COUNTDOWNS = 2;
final int TIMEOUT = 3 * PlaybackServiceTaskManager.POSITION_SAVER_WAITING_INTERVAL;
final CountDownLatch countDownLatch = new CountDownLatch(NUM_COUNTDOWNS);
@@ -152,16 +167,18 @@ public class PlaybackServiceTaskManagerTest extends InstrumentationTestCase {
pstm.shutdown();
}
+ @Test
public void testIsPositionSaverActive() {
- final Context c = getInstrumentation().getTargetContext();
+ final Context c = InstrumentationRegistry.getInstrumentation().getTargetContext();
PlaybackServiceTaskManager pstm = new PlaybackServiceTaskManager(c, defaultPSTM);
pstm.startPositionSaver();
assertTrue(pstm.isPositionSaverActive());
pstm.shutdown();
}
+ @Test
public void testCancelPositionSaver() {
- final Context c = getInstrumentation().getTargetContext();
+ final Context c = InstrumentationRegistry.getInstrumentation().getTargetContext();
PlaybackServiceTaskManager pstm = new PlaybackServiceTaskManager(c, defaultPSTM);
pstm.startPositionSaver();
pstm.cancelPositionSaver();
@@ -169,8 +186,9 @@ public class PlaybackServiceTaskManagerTest extends InstrumentationTestCase {
pstm.shutdown();
}
+ @Test
public void testStartWidgetUpdater() throws InterruptedException {
- final Context c = getInstrumentation().getTargetContext();
+ final Context c = InstrumentationRegistry.getInstrumentation().getTargetContext();
final int NUM_COUNTDOWNS = 2;
final int TIMEOUT = 3 * PlaybackServiceTaskManager.WIDGET_UPDATER_NOTIFICATION_INTERVAL;
final CountDownLatch countDownLatch = new CountDownLatch(NUM_COUNTDOWNS);
@@ -210,16 +228,18 @@ public class PlaybackServiceTaskManagerTest extends InstrumentationTestCase {
pstm.shutdown();
}
+ @Test
public void testIsWidgetUpdaterActive() {
- final Context c = getInstrumentation().getTargetContext();
+ final Context c = InstrumentationRegistry.getInstrumentation().getTargetContext();
PlaybackServiceTaskManager pstm = new PlaybackServiceTaskManager(c, defaultPSTM);
pstm.startWidgetUpdater();
assertTrue(pstm.isWidgetUpdaterActive());
pstm.shutdown();
}
+ @Test
public void testCancelWidgetUpdater() {
- final Context c = getInstrumentation().getTargetContext();
+ final Context c = InstrumentationRegistry.getInstrumentation().getTargetContext();
PlaybackServiceTaskManager pstm = new PlaybackServiceTaskManager(c, defaultPSTM);
pstm.startWidgetUpdater();
pstm.cancelWidgetUpdater();
@@ -227,8 +247,9 @@ public class PlaybackServiceTaskManagerTest extends InstrumentationTestCase {
pstm.shutdown();
}
+ @Test
public void testCancelAllTasksNoTasksStarted() {
- final Context c = getInstrumentation().getTargetContext();
+ final Context c = InstrumentationRegistry.getInstrumentation().getTargetContext();
PlaybackServiceTaskManager pstm = new PlaybackServiceTaskManager(c, defaultPSTM);
pstm.cancelAllTasks();
assertFalse(pstm.isPositionSaverActive());
@@ -237,8 +258,10 @@ public class PlaybackServiceTaskManagerTest extends InstrumentationTestCase {
pstm.shutdown();
}
+ @Test
+ @UiThreadTest
public void testCancelAllTasksAllTasksStarted() {
- final Context c = getInstrumentation().getTargetContext();
+ final Context c = InstrumentationRegistry.getInstrumentation().getTargetContext();
PlaybackServiceTaskManager pstm = new PlaybackServiceTaskManager(c, defaultPSTM);
pstm.startWidgetUpdater();
pstm.startPositionSaver();
@@ -250,8 +273,10 @@ public class PlaybackServiceTaskManagerTest extends InstrumentationTestCase {
pstm.shutdown();
}
+ @Test
+ @UiThreadTest
public void testSetSleepTimer() throws InterruptedException {
- final Context c = getInstrumentation().getTargetContext();
+ final Context c = InstrumentationRegistry.getInstrumentation().getTargetContext();
final long TIME = 2000;
final long TIMEOUT = 2 * TIME;
final CountDownLatch countDownLatch = new CountDownLatch(1);
@@ -294,8 +319,10 @@ public class PlaybackServiceTaskManagerTest extends InstrumentationTestCase {
pstm.shutdown();
}
+ @Test
+ @UiThreadTest
public void testDisableSleepTimer() throws InterruptedException {
- final Context c = getInstrumentation().getTargetContext();
+ final Context c = InstrumentationRegistry.getInstrumentation().getTargetContext();
final long TIME = 1000;
final long TIMEOUT = 2 * TIME;
final CountDownLatch countDownLatch = new CountDownLatch(1);
@@ -336,16 +363,20 @@ public class PlaybackServiceTaskManagerTest extends InstrumentationTestCase {
pstm.shutdown();
}
+ @Test
+ @UiThreadTest
public void testIsSleepTimerActivePositive() {
- final Context c = getInstrumentation().getTargetContext();
+ final Context c = InstrumentationRegistry.getInstrumentation().getTargetContext();
PlaybackServiceTaskManager pstm = new PlaybackServiceTaskManager(c, defaultPSTM);
pstm.setSleepTimer(10000, false, false);
assertTrue(pstm.isSleepTimerActive());
pstm.shutdown();
}
+ @Test
+ @UiThreadTest
public void testIsSleepTimerActiveNegative() {
- final Context c = getInstrumentation().getTargetContext();
+ final Context c = InstrumentationRegistry.getInstrumentation().getTargetContext();
PlaybackServiceTaskManager pstm = new PlaybackServiceTaskManager(c, defaultPSTM);
pstm.setSleepTimer(10000, false, false);
pstm.disableSleepTimer();
diff --git a/app/src/androidTest/java/de/test/antennapod/ui/MainActivityTest.java b/app/src/androidTest/java/de/test/antennapod/ui/MainActivityTest.java
index 9a60b04b8..8e0064079 100644
--- a/app/src/androidTest/java/de/test/antennapod/ui/MainActivityTest.java
+++ b/app/src/androidTest/java/de/test/antennapod/ui/MainActivityTest.java
@@ -7,6 +7,7 @@ import android.support.test.espresso.intent.Intents;
import android.support.test.filters.FlakyTest;
import android.support.test.rule.ActivityTestRule;
import android.support.test.runner.AndroidJUnit4;
+import android.view.Gravity;
import android.widget.ListView;
import com.robotium.solo.Solo;
import com.robotium.solo.Timeout;
@@ -17,6 +18,7 @@ import de.danoeh.antennapod.activity.PreferenceActivity;
import de.danoeh.antennapod.core.feed.Feed;
import de.danoeh.antennapod.core.preferences.UserPreferences;
import de.danoeh.antennapod.core.storage.PodDBAdapter;
+import de.danoeh.antennapod.dialog.RatingDialog;
import de.danoeh.antennapod.fragment.DownloadsFragment;
import de.danoeh.antennapod.fragment.EpisodesFragment;
import de.danoeh.antennapod.fragment.PlaybackHistoryFragment;
@@ -36,6 +38,8 @@ import static android.support.test.InstrumentationRegistry.getInstrumentation;
import static android.support.test.espresso.Espresso.onView;
import static android.support.test.espresso.action.ViewActions.click;
import static android.support.test.espresso.action.ViewActions.longClick;
+import static android.support.test.espresso.assertion.ViewAssertions.matches;
+import static android.support.test.espresso.contrib.DrawerMatchers.isClosed;
import static android.support.test.espresso.intent.Intents.intended;
import static android.support.test.espresso.intent.matcher.IntentMatchers.hasComponent;
import static android.support.test.espresso.matcher.ViewMatchers.withId;
@@ -76,6 +80,9 @@ public class MainActivityTest {
prefs = context.getSharedPreferences(MainActivity.PREF_NAME, Context.MODE_PRIVATE);
prefs.edit().putBoolean(MainActivity.PREF_IS_FIRST_LAUNCH, false).commit();
+ RatingDialog.init(context);
+ RatingDialog.saveRated();
+
solo = new Solo(getInstrumentation(), mActivityRule.getActivity());
}
@@ -89,7 +96,9 @@ public class MainActivityTest {
}
private void openNavDrawer() {
- onView(withId(R.id.drawer_layout)).perform(DrawerActions.open());
+ onView(withId(R.id.drawer_layout))
+ .check(matches(isClosed(Gravity.LEFT)))
+ .perform(DrawerActions.open());
}
@Test
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/AboutActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/AboutActivity.java
index ecfdf24b0..1bcdada44 100644
--- a/app/src/main/java/de/danoeh/antennapod/activity/AboutActivity.java
+++ b/app/src/main/java/de/danoeh/antennapod/activity/AboutActivity.java
@@ -1,7 +1,9 @@
package de.danoeh.antennapod.activity;
+import android.content.Intent;
import android.content.res.TypedArray;
import android.graphics.Color;
+import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
@@ -46,22 +48,23 @@ public class AboutActivity extends AppCompatActivity {
webViewContainer = findViewById(R.id.webViewContainer);
webView = findViewById(R.id.webViewAbout);
webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
- if (UserPreferences.getTheme() == R.style.Theme_AntennaPod_Dark) {
- if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) {
- webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
- }
- webView.setBackgroundColor(Color.TRANSPARENT);
+ if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) {
+ webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
+ webView.setBackgroundColor(Color.TRANSPARENT);
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
- if (!url.startsWith("http")) {
+ if (url.startsWith("http")) {
+ Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
+ startActivity(browserIntent);
+ return true;
+ } else {
url = url.replace("file:///android_asset/", "");
loadAsset(url);
return true;
}
- return false;
}
});
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java
index 023a566d6..154c7c148 100644
--- a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java
+++ b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java
@@ -277,9 +277,6 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements
@Override
protected void onStart() {
super.onStart();
- if (controller != null) {
- controller.release();
- }
controller = newPlaybackController();
controller.init();
loadMediaInfo();
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java
index fa5012b74..78cc15b2c 100644
--- a/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java
+++ b/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java
@@ -47,7 +47,6 @@ public class VideoplayerActivity extends MediaplayerActivity {
*/
private boolean videoControlsShowing = true;
private boolean videoSurfaceCreated = false;
- private boolean playbackStoppedUponExitVideo = false;
private boolean destroyingDueToReload = false;
private VideoControlsHider videoControlsHider = new VideoControlsHider(this);
@@ -78,7 +77,6 @@ public class VideoplayerActivity extends MediaplayerActivity {
@Override
protected void onResume() {
super.onResume();
- playbackStoppedUponExitVideo = false;
if (TextUtils.equals(getIntent().getAction(), Intent.ACTION_VIEW)) {
playExternalMedia(getIntent(), MediaType.VIDEO);
} else if (PlaybackService.isCasting()) {
@@ -93,32 +91,12 @@ public class VideoplayerActivity extends MediaplayerActivity {
@Override
protected void onStop() {
- stopPlaybackIfUserPreferencesSpecified(); // MUST be called before super.onStop(), while it still has member variable controller
super.onStop();
if (!PictureInPictureUtil.isInPictureInPictureMode(this)) {
videoControlsHider.stop();
}
}
- void stopPlaybackIfUserPreferencesSpecified() {
- // to avoid the method being called twice during leaving Videoplayer
- // , which will double-pause the media
- // (it is usually first called by surfaceHolderCallback.surfaceDestroyed(),
- // then VideoplayerActivity.onStop() , but sometimes VideoplayerActivity.onStop()
- // will first be invoked.)
- if (playbackStoppedUponExitVideo) {
- return;
- }
- playbackStoppedUponExitVideo = true;
-
- if (controller != null && !destroyingDueToReload
- && UserPreferences.getVideoBackgroundBehavior()
- != UserPreferences.VideoBackgroundBehavior.CONTINUE_PLAYING) {
- Log.v(TAG, "stop video playback per UserPreference");
- controller.notifyVideoSurfaceAbandoned();
- }
- }
-
@Override
public void onUserLeaveHint () {
if (!PictureInPictureUtil.isInPictureInPictureMode(this) && UserPreferences.getVideoBackgroundBehavior()
@@ -297,12 +275,13 @@ public class VideoplayerActivity extends MediaplayerActivity {
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
- Log.d(TAG, "Videosurface was destroyed." );
- Log.v(TAG, " hasController=" + (controller != null)
- + " , destroyingDueToReload=" + destroyingDueToReload
- + " , videoBackgroundBehavior=" + UserPreferences.getVideoBackgroundBehavior());
+ Log.d(TAG, "Videosurface was destroyed");
videoSurfaceCreated = false;
- stopPlaybackIfUserPreferencesSpecified();
+ if (controller != null && !destroyingDueToReload
+ && UserPreferences.getVideoBackgroundBehavior()
+ != UserPreferences.VideoBackgroundBehavior.CONTINUE_PLAYING) {
+ controller.notifyVideoSurfaceAbandoned();
+ }
}
};
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/CoverLoader.java b/app/src/main/java/de/danoeh/antennapod/adapter/CoverLoader.java
index 54ecdae77..79dc1f96e 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/CoverLoader.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/CoverLoader.java
@@ -66,7 +66,7 @@ public class CoverLoader {
options = options.error(errorResource);
}
- RequestBuilder builder = Glide.with(activity)
+ RequestBuilder<Drawable> builder = Glide.with(activity)
.load(uri)
.apply(options);
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/DefaultActionButtonCallback.java b/app/src/main/java/de/danoeh/antennapod/adapter/DefaultActionButtonCallback.java
index f54b9266e..1286d9dc7 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/DefaultActionButtonCallback.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/DefaultActionButtonCallback.java
@@ -1,6 +1,8 @@
package de.danoeh.antennapod.adapter;
import android.content.Context;
+import android.support.annotation.NonNull;
+import android.content.Intent;
import android.widget.Toast;
import com.afollestad.materialdialogs.MaterialDialog;
@@ -28,7 +30,7 @@ import de.danoeh.antennapod.core.util.playback.PlaybackServiceStarter;
*/
public class DefaultActionButtonCallback implements ActionButtonCallback {
- private static final String TAG = "DefaultActionBtnCb";
+ private static final String TAG = "DefaultActionButtonCallback";
private final Context context;
@@ -82,9 +84,13 @@ public class DefaultActionButtonCallback implements ActionButtonCallback {
}
} else { // media is downloaded
if (media.isCurrentlyPlaying()) {
+ new PlaybackServiceStarter(context, media)
+ .startWhenPrepared(true)
+ .shouldStream(false)
+ .start();
IntentUtils.sendLocalBroadcast(context, PlaybackService.ACTION_PAUSE_PLAY_CURRENT_EPISODE);
} else if (media.isCurrentlyPaused()) {
- new PlaybackServiceStarter(context, media) // need to start the service in case it's been stopped by system.
+ new PlaybackServiceStarter(context, media)
.startWhenPrepared(true)
.shouldStream(false)
.start();
diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/RatingDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/RatingDialog.java
index ece184035..24656ed29 100644
--- a/app/src/main/java/de/danoeh/antennapod/dialog/RatingDialog.java
+++ b/app/src/main/java/de/danoeh/antennapod/dialog/RatingDialog.java
@@ -6,6 +6,7 @@ import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.support.annotation.Nullable;
+import android.support.annotation.VisibleForTesting;
import android.util.Log;
import com.afollestad.materialdialogs.MaterialDialog;
@@ -73,7 +74,8 @@ public class RatingDialog {
return mPreferences.getBoolean(KEY_RATED, false);
}
- private static void saveRated() {
+ @VisibleForTesting
+ public static void saveRated() {
mPreferences
.edit()
.putBoolean(KEY_RATED, true)
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java
index 0352031d9..48b891631 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java
@@ -51,6 +51,8 @@ import de.danoeh.antennapod.core.util.FeedItemUtil;
import de.danoeh.antennapod.core.util.LongList;
import de.danoeh.antennapod.menuhandler.FeedItemMenuHandler;
import de.danoeh.antennapod.menuhandler.MenuItemUtils;
+
+import de.danoeh.antennapod.view.EmptyViewHandler;
import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
@@ -78,7 +80,7 @@ public class AllEpisodesFragment extends Fragment {
RecyclerView recyclerView;
AllEpisodesRecycleAdapter listAdapter;
private ProgressBar progLoading;
- private View emptyView;
+ EmptyViewHandler emptyView;
List<FeedItem> episodes;
private List<Downloader> downloaderList;
@@ -281,11 +283,11 @@ public class AllEpisodesFragment extends Fragment {
return true; // avoids that the position is reset when we need it in the submenu
}
- FeedItem selectedItem = listAdapter.getSelectedItem();
- if (selectedItem == null) {
- Log.i(TAG, "Selected item was null, ignoring selection");
+ if (listAdapter == null || listAdapter.getSelectedItem() == null) {
+ Log.i(TAG, "Selected item or listAdapter was null, ignoring selection");
return super.onContextItemSelected(item);
}
+ FeedItem selectedItem = listAdapter.getSelectedItem();
// Mark as seen contains UI logic specific to All/New/FavoriteSegments,
// e.g., Undo with Snackbar,
@@ -336,10 +338,10 @@ public class AllEpisodesFragment extends Fragment {
onFragmentLoaded();
}
- emptyView = (View) root.findViewById(R.id.emptyView);
- emptyView.setVisibility(View.GONE);
- ((TextView)emptyView.findViewById(R.id.emptyViewTitle)).setText(R.string.no_all_episodes_head_label);
- ((TextView)emptyView.findViewById(R.id.emptyViewMessage)).setText(R.string.no_all_episodes_label);
+ emptyView = new EmptyViewHandler(getContext());
+ emptyView.attachToRecyclerView(recyclerView);
+ emptyView.setTitle(R.string.no_all_episodes_head_label);
+ emptyView.setMessage(R.string.no_all_episodes_label);
return root;
}
@@ -352,16 +354,16 @@ public class AllEpisodesFragment extends Fragment {
new DefaultActionButtonCallback(mainActivity), showOnlyNewEpisodes());
listAdapter.setHasStableIds(true);
recyclerView.setAdapter(listAdapter);
+ emptyView.updateAdapter(listAdapter);
}
- emptyView.setVisibility(View.GONE);
recyclerView.setVisibility(View.VISIBLE);
+ listAdapter.notifyDataSetChanged();
} else {
listAdapter = null;
recyclerView.setVisibility(View.GONE);
- emptyView.setVisibility(View.VISIBLE);
+ emptyView.updateAdapter(listAdapter);
}
- listAdapter.notifyDataSetChanged();
restoreScrollPosition();
getActivity().supportInvalidateOptionsMenu();
updateShowOnlyEpisodesListViewState();
@@ -434,7 +436,10 @@ public class AllEpisodesFragment extends Fragment {
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEventMainThread(FeedItemEvent event) {
Log.d(TAG, "onEventMainThread() called with: " + "event = [" + event + "]");
- if (episodes == null || listAdapter == null) {
+ if (episodes == null) {
+ return;
+ } else if (listAdapter == null) {
+ loadItems();
return;
}
for (FeedItem item : event.items) {
@@ -463,7 +468,11 @@ public class AllEpisodesFragment extends Fragment {
if (isMenuInvalidationAllowed && isUpdatingFeeds != update.feedIds.length > 0) {
getActivity().supportInvalidateOptionsMenu();
}
- if(listAdapter != null && update.mediaIds.length > 0) {
+ if (listAdapter == null) {
+ loadItems();
+ return;
+ }
+ if (update.mediaIds.length > 0) {
for(long mediaId : update.mediaIds) {
int pos = FeedItemUtil.indexOfItemWithMediaId(episodes, mediaId);
if(pos >= 0) {
@@ -494,7 +503,7 @@ public class AllEpisodesFragment extends Fragment {
}
if (viewsCreated && !itemsLoaded) {
recyclerView.setVisibility(View.GONE);
- emptyView.setVisibility(View.GONE);
+ emptyView.hide();
progLoading.setVisibility(View.VISIBLE);
}
disposable = Observable.fromCallable(this::loadData)
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/ChaptersFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/ChaptersFragment.java
index e91821e7d..f9f84c71e 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/ChaptersFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/ChaptersFragment.java
@@ -2,20 +2,33 @@ package de.danoeh.antennapod.fragment;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
+import android.util.Log;
import android.view.View;
import android.widget.ListView;
+import java.util.List;
+import java.util.ListIterator;
+
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.adapter.ChaptersListAdapter;
+import de.danoeh.antennapod.core.event.ServiceEvent;
import de.danoeh.antennapod.core.feed.Chapter;
import de.danoeh.antennapod.core.util.playback.Playable;
import de.danoeh.antennapod.core.util.playback.PlaybackController;
+import io.reactivex.Maybe;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.disposables.Disposable;
+import io.reactivex.schedulers.Schedulers;
+import org.greenrobot.eventbus.EventBus;
+import org.greenrobot.eventbus.Subscribe;
+import org.greenrobot.eventbus.ThreadMode;
public class ChaptersFragment extends ListFragment {
private static final String TAG = "ChaptersFragment";
private ChaptersListAdapter adapter;
private PlaybackController controller;
+ private Disposable disposable;
@Override
@@ -40,10 +53,7 @@ public class ChaptersFragment extends ListFragment {
controller = new PlaybackController(getActivity(), false) {
@Override
public boolean loadMediaInfo() {
- if (getMedia() == null) {
- return false;
- }
- onMediaChanged(getMedia());
+ ChaptersFragment.this.loadMediaInfo();
return true;
}
@@ -53,7 +63,18 @@ public class ChaptersFragment extends ListFragment {
}
};
controller.init();
- onMediaChanged(controller.getMedia());
+
+ loadMediaInfo();
+ EventBus.getDefault().register(this);
+ }
+
+ @Override
+ public void onDestroyView() {
+ super.onDestroyView();
+
+ if (disposable != null) {
+ disposable.dispose();
+ }
}
@Override
@@ -63,6 +84,48 @@ public class ChaptersFragment extends ListFragment {
controller = null;
}
+ private void scrollTo(int position) {
+ getListView().setSelection(position);
+ }
+
+ private int getCurrentChapter(Playable media) {
+ int currentPosition = controller.getPosition();
+
+ List<Chapter> chapters = media.getChapters();
+ for (final ListIterator<Chapter> it = chapters.listIterator(); it.hasNext(); ) {
+ Chapter chapter = it.next();
+ if (chapter.getStart() > currentPosition) {
+ return it.previousIndex() - 1;
+ }
+ }
+ return chapters.size() - 1;
+ }
+
+ @Subscribe(threadMode = ThreadMode.MAIN)
+ public void onEventMainThread(ServiceEvent event) {
+ if (event.action == ServiceEvent.Action.SERVICE_STARTED && controller != null) {
+ controller.init();
+ }
+ }
+
+ private void loadMediaInfo() {
+ if (disposable != null) {
+ disposable.dispose();
+ }
+ disposable = Maybe.create(emitter -> {
+ Playable media = controller.getMedia();
+ if (media != null) {
+ emitter.onSuccess(media);
+ } else {
+ emitter.onComplete();
+ }
+ })
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(media -> onMediaChanged((Playable) media),
+ error -> Log.e(TAG, Log.getStackTraceString(error)));
+ }
+
private void onMediaChanged(Playable media) {
if (adapter != null) {
adapter.setMedia(media);
@@ -71,6 +134,7 @@ public class ChaptersFragment extends ListFragment {
setEmptyText(getString(R.string.no_chapters_label));
} else {
setEmptyText(null);
+ scrollTo(getCurrentChapter(media));
}
}
}
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java
index f409c15fb..7fd61d3ad 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java
@@ -1,6 +1,7 @@
package de.danoeh.antennapod.fragment;
import android.os.Bundle;
+import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
@@ -16,6 +17,10 @@ import de.danoeh.antennapod.R;
import de.danoeh.antennapod.core.glide.ApGlideSettings;
import de.danoeh.antennapod.core.util.playback.Playable;
import de.danoeh.antennapod.core.util.playback.PlaybackController;
+import io.reactivex.Maybe;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.disposables.Disposable;
+import io.reactivex.schedulers.Schedulers;
/**
* Displays the cover and the title of a FeedItem.
@@ -29,6 +34,7 @@ public class CoverFragment extends Fragment {
private TextView txtvEpisodeTitle;
private ImageView imgvCover;
private PlaybackController controller;
+ private Disposable disposable;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
@@ -42,11 +48,24 @@ public class CoverFragment extends Fragment {
}
private void loadMediaInfo() {
- Playable media = controller.getMedia();
- if (media == null) {
- Log.w(TAG, "loadMediaInfo was called while media was null");
- return;
+ if (disposable != null) {
+ disposable.dispose();
}
+ disposable = Maybe.create(emitter -> {
+ Playable media = controller.getMedia();
+ if (media != null) {
+ emitter.onSuccess(media);
+ } else {
+ emitter.onComplete();
+ }
+ })
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(media -> displayMediaInfo((Playable) media),
+ error -> Log.e(TAG, Log.getStackTraceString(error)));
+ }
+
+ private void displayMediaInfo(@NonNull Playable media) {
txtvPodcastTitle.setText(media.getFeedTitle());
txtvEpisodeTitle.setText(media.getEpisodeTitle());
Glide.with(this)
@@ -71,9 +90,6 @@ public class CoverFragment extends Fragment {
controller = new PlaybackController(getActivity(), false) {
@Override
public boolean loadMediaInfo() {
- if (getMedia() == null) {
- return false;
- }
CoverFragment.this.loadMediaInfo();
return true;
}
@@ -89,4 +105,13 @@ public class CoverFragment extends Fragment {
controller.release();
controller = null;
}
+
+ @Override
+ public void onDestroyView() {
+ super.onDestroyView();
+
+ if (disposable != null) {
+ disposable.dispose();
+ }
+ }
}
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/ExternalPlayerFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/ExternalPlayerFragment.java
index eca54f90b..7cbff6210 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/ExternalPlayerFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/ExternalPlayerFragment.java
@@ -18,6 +18,7 @@ import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import de.danoeh.antennapod.R;
+import de.danoeh.antennapod.core.event.ServiceEvent;
import de.danoeh.antennapod.core.feed.MediaType;
import de.danoeh.antennapod.core.glide.ApGlideSettings;
import de.danoeh.antennapod.core.service.playback.PlaybackService;
@@ -27,6 +28,9 @@ import io.reactivex.Maybe;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
+import org.greenrobot.eventbus.EventBus;
+import org.greenrobot.eventbus.Subscribe;
+import org.greenrobot.eventbus.ThreadMode;
/**
* Fragment which is supposed to be displayed outside of the MediaplayerActivity
@@ -134,14 +138,19 @@ public class ExternalPlayerFragment extends Fragment {
@Override
public void onStart() {
super.onStart();
+ controller = setupPlaybackController();
controller.init();
+ loadMediaInfo();
+ EventBus.getDefault().register(this);
}
@Override
public void onStop() {
super.onStop();
+ EventBus.getDefault().unregister(this);
if (controller != null) {
controller.release();
+ controller = null;
}
}
@@ -201,7 +210,8 @@ public class ExternalPlayerFragment extends Fragment {
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(media -> updateUi((Playable) media),
- error -> Log.e(TAG, Log.getStackTraceString(error)));
+ error -> Log.e(TAG, Log.getStackTraceString(error)),
+ () -> fragmentLayout.setVisibility(View.GONE));
return true;
}
@@ -222,7 +232,7 @@ public class ExternalPlayerFragment extends Fragment {
.into(imgvCover);
fragmentLayout.setVisibility(View.VISIBLE);
- if (controller.isPlayingVideoLocally()) {
+ if (controller != null && controller.isPlayingVideoLocally()) {
butPlay.setVisibility(View.GONE);
} else {
butPlay.setVisibility(View.VISIBLE);
@@ -237,7 +247,9 @@ public class ExternalPlayerFragment extends Fragment {
}
private void onPositionObserverUpdate() {
- if (controller.getPosition() == PlaybackService.INVALID_TIME
+ if (controller == null) {
+ return;
+ } else if (controller.getPosition() == PlaybackService.INVALID_TIME
|| controller.getDuration() == PlaybackService.INVALID_TIME) {
return;
}
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/FavoriteEpisodesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/FavoriteEpisodesFragment.java
index d9d9c4c07..d362d5c0b 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/FavoriteEpisodesFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/FavoriteEpisodesFragment.java
@@ -54,8 +54,8 @@ public class FavoriteEpisodesFragment extends AllEpisodesFragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View root = super.onCreateViewHelper(inflater, container, savedInstanceState,
R.layout.all_episodes_fragment);
- ((TextView)root.findViewById(R.id.emptyViewTitle)).setText(R.string.no_fav_episodes_head_label);
- ((TextView)root.findViewById(R.id.emptyViewMessage)).setText(R.string.no_fav_episodes_label);
+ emptyView.setTitle(R.string.no_fav_episodes_head_label);
+ emptyView.setMessage(R.string.no_fav_episodes_label);
ItemTouchHelper.SimpleCallback simpleItemTouchCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
@Override
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/ItemDescriptionFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/ItemDescriptionFragment.java
index daabb75e4..ed591d21c 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/ItemDescriptionFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/ItemDescriptionFragment.java
@@ -249,7 +249,7 @@ public class ItemDescriptionFragment extends Fragment {
SharedPreferences prefs = getActivity().getSharedPreferences(PREF,
Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
- if (controller.getMedia() != null && webvDescription != null) {
+ if (controller != null && controller.getMedia() != null && webvDescription != null) {
Log.d(TAG, "Saving scroll position: " + webvDescription.getScrollY());
editor.putInt(PREF_SCROLL_Y, webvDescription.getScrollY());
editor.putString(PREF_PLAYABLE_ID, controller.getMedia().getIdentifier()
@@ -270,7 +270,7 @@ public class ItemDescriptionFragment extends Fragment {
PREF, Activity.MODE_PRIVATE);
String id = prefs.getString(PREF_PLAYABLE_ID, "");
int scrollY = prefs.getInt(PREF_SCROLL_Y, -1);
- if (scrollY != -1 && controller.getMedia() != null
+ if (controller != null && scrollY != -1 && controller.getMedia() != null
&& id.equals(controller.getMedia().getIdentifier().toString())
&& webvDescription != null) {
Log.d(TAG, "Restored scroll Position: " + scrollY);
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java
index 1d40a36b5..2b8b2aa33 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java
@@ -601,7 +601,7 @@ public class ItemFragment extends Fragment implements OnSwipeGesture {
private FeedItem loadInBackground() {
FeedItem feedItem = DBReader.getFeedItem(feedItems[feedItemPos]);
if (feedItem != null) {
- Timeline t = new Timeline(getActivity(), feedItem);
+ Timeline t = new Timeline(getContext(), feedItem);
webviewData = t.processShownotes(false);
}
return feedItem;
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/ItemlistFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/ItemlistFragment.java
index 98fb9ea11..3d6e0a458 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/ItemlistFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/ItemlistFragment.java
@@ -6,7 +6,7 @@ import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.LightingColorFilter;
import android.os.Bundle;
-import android.support.annotation.Nullable;
+import android.support.annotation.NonNull;
import android.support.v4.app.ListFragment;
import android.support.v4.view.MenuItemCompat;
import android.support.v7.widget.SearchView;
@@ -61,6 +61,7 @@ import de.danoeh.antennapod.core.storage.DownloadRequestException;
import de.danoeh.antennapod.core.storage.DownloadRequester;
import de.danoeh.antennapod.core.util.FeedItemUtil;
import de.danoeh.antennapod.core.util.LongList;
+import de.danoeh.antennapod.core.util.Optional;
import de.danoeh.antennapod.core.util.gui.MoreContentListFooterUtil;
import de.danoeh.antennapod.dialog.EpisodesApplyActionFragment;
import de.danoeh.antennapod.dialog.RenameFeedDialog;
@@ -623,7 +624,7 @@ public class ItemlistFragment extends ListFragment {
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(result -> {
- feed = result;
+ feed = result.orElse(null);
itemsLoaded = true;
if (viewsCreated) {
onFragmentLoaded();
@@ -631,15 +632,15 @@ public class ItemlistFragment extends ListFragment {
}, error -> Log.e(TAG, Log.getStackTraceString(error)));
}
- @Nullable
- private Feed loadData() {
+ @NonNull
+ private Optional<Feed> loadData() {
Feed feed = DBReader.getFeed(feedID);
- DBReader.loadAdditionalFeedItemListData(feed.getItems());
- if(feed != null && feed.getItemFilter() != null) {
+ if (feed != null && feed.getItemFilter() != null) {
+ DBReader.loadAdditionalFeedItemListData(feed.getItems());
FeedItemFilter filter = feed.getItemFilter();
feed.setItems(filter.filter(feed.getItems()));
}
- return feed;
+ return Optional.ofNullable(feed);
}
}
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/ItunesSearchFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/ItunesSearchFragment.java
index 486727313..ba4b55123 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/ItunesSearchFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/ItunesSearchFragment.java
@@ -238,42 +238,19 @@ public class ItunesSearchFragment extends Fragment {
progressBar.setVisibility(View.VISIBLE);
disposable = Single.create((SingleOnSubscribe<List<Podcast>>) emitter -> {
String lang = Locale.getDefault().getLanguage();
- String url = "https://itunes.apple.com/" + lang + "/rss/toppodcasts/limit=25/explicit=true/json";
OkHttpClient client = AntennapodHttpClient.getHttpClient();
- Request.Builder httpReq = new Request.Builder()
- .url(url)
- .header("User-Agent", ClientConfig.USER_AGENT);
- List<Podcast> results = new ArrayList<>();
+ String feedString;
try {
- Response response = client.newCall(httpReq.build()).execute();
- if(!response.isSuccessful()) {
- // toplist for language does not exist, fall back to united states
- url = "https://itunes.apple.com/us/rss/toppodcasts/limit=25/explicit=true/json";
- httpReq = new Request.Builder()
- .url(url)
- .header("User-Agent", ClientConfig.USER_AGENT);
- response = client.newCall(httpReq.build()).execute();
- }
- if(response.isSuccessful()) {
- String resultString = response.body().string();
- JSONObject result = new JSONObject(resultString);
- JSONObject feed = result.getJSONObject("feed");
- JSONArray entries = feed.getJSONArray("entry");
-
- for(int i=0; i < entries.length(); i++) {
- JSONObject json = entries.getJSONObject(i);
- Podcast podcast = Podcast.fromToplist(json);
- results.add(podcast);
- }
- }
- else {
- String prefix = getString(R.string.error_msg_prefix);
- emitter.onError(new IOException(prefix + response));
+ try {
+ feedString = getTopListFeed(client, lang);
+ } catch (IOException e) {
+ feedString = getTopListFeed(client, "us");
}
+ List<Podcast> podcasts = parseFeed(feedString);
+ emitter.onSuccess(podcasts);
} catch (IOException | JSONException e) {
emitter.onError(e);
}
- emitter.onSuccess(results);
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
@@ -291,6 +268,35 @@ public class ItunesSearchFragment extends Fragment {
});
}
+ private String getTopListFeed(OkHttpClient client, String language) throws IOException {
+ String url = "https://itunes.apple.com/%s/rss/toppodcasts/limit=25/explicit=true/json";
+ Request.Builder httpReq = new Request.Builder()
+ .header("User-Agent", ClientConfig.USER_AGENT)
+ .url(String.format(url, language));
+
+ try (Response response = client.newCall(httpReq.build()).execute()) {
+ if (response.isSuccessful()) {
+ return response.body().string();
+ }
+ String prefix = getString(R.string.error_msg_prefix);
+ throw new IOException(prefix + response);
+ }
+ }
+
+ private List<Podcast> parseFeed(String jsonString) throws JSONException {
+ JSONObject result = new JSONObject(jsonString);
+ JSONObject feed = result.getJSONObject("feed");
+ JSONArray entries = feed.getJSONArray("entry");
+
+ List<Podcast> results = new ArrayList<>();
+ for (int i=0; i < entries.length(); i++) {
+ JSONObject json = entries.getJSONObject(i);
+ results.add(Podcast.fromToplist(json));
+ }
+
+ return results;
+ }
+
private void search(String query) {
if (disposable != null) {
disposable.dispose();
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/NewEpisodesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/NewEpisodesFragment.java
index c2b61bf75..5751855c7 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/NewEpisodesFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/NewEpisodesFragment.java
@@ -46,8 +46,8 @@ public class NewEpisodesFragment extends AllEpisodesFragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View root = super.onCreateViewHelper(inflater, container, savedInstanceState,
R.layout.all_episodes_fragment);
- ((TextView)root.findViewById(R.id.emptyViewTitle)).setText(R.string.no_new_episodes_head_label);
- ((TextView)root.findViewById(R.id.emptyViewMessage)).setText(R.string.no_new_episodes_label);
+ emptyView.setTitle(R.string.no_new_episodes_head_label);
+ emptyView.setMessage(R.string.no_new_episodes_label);
ItemTouchHelper.SimpleCallback simpleItemTouchCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
@Override
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java
index 145e2a696..36d0811b3 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java
@@ -52,6 +52,8 @@ import de.danoeh.antennapod.core.util.LongList;
import de.danoeh.antennapod.core.util.QueueSorter;
import de.danoeh.antennapod.menuhandler.FeedItemMenuHandler;
import de.danoeh.antennapod.menuhandler.MenuItemUtils;
+
+import de.danoeh.antennapod.view.EmptyViewHandler;
import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
@@ -74,7 +76,7 @@ public class QueueFragment extends Fragment {
private TextView infoBar;
private RecyclerView recyclerView;
private QueueRecyclerAdapter recyclerAdapter;
- private View emptyView;
+ private EmptyViewHandler emptyView;
private ProgressBar progLoading;
private List<FeedItem> queue;
@@ -128,7 +130,10 @@ public class QueueFragment extends Fragment {
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEventMainThread(QueueEvent event) {
Log.d(TAG, "onEventMainThread() called with: " + "event = [" + event + "]");
- if(queue == null || recyclerAdapter == null) {
+ if (queue == null) {
+ return;
+ } else if (recyclerAdapter == null) {
+ loadItems(true);
return;
}
switch(event.action) {
@@ -164,7 +169,10 @@ public class QueueFragment extends Fragment {
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEventMainThread(FeedItemEvent event) {
Log.d(TAG, "onEventMainThread() called with: " + "event = [" + event + "]");
- if(queue == null || recyclerAdapter == null) {
+ if (queue == null) {
+ return;
+ } else if (recyclerAdapter == null) {
+ loadItems(true);
return;
}
for(int i=0, size = event.items.size(); i < size; i++) {
@@ -174,6 +182,7 @@ public class QueueFragment extends Fragment {
queue.remove(pos);
queue.add(pos, item);
recyclerAdapter.notifyItemChanged(pos);
+ refreshInfoBar();
}
}
}
@@ -276,7 +285,9 @@ public class QueueFragment extends Fragment {
boolean newLockState = !UserPreferences.isQueueLocked();
UserPreferences.setQueueLocked(newLockState);
getActivity().supportInvalidateOptionsMenu();
- recyclerAdapter.setLocked(newLockState);
+ if (recyclerAdapter != null) {
+ recyclerAdapter.setLocked(newLockState);
+ }
if (newLockState) {
Snackbar.make(getActivity().findViewById(R.id.content), R.string
.queue_locked, Snackbar.LENGTH_SHORT).show();
@@ -498,11 +509,11 @@ public class QueueFragment extends Fragment {
}
);
itemTouchHelper.attachToRecyclerView(recyclerView);
- //empty view
- emptyView = (View) root.findViewById(R.id.emptyView);
- emptyView.setVisibility(View.GONE);
- ((TextView)emptyView.findViewById(R.id.emptyViewTitle)).setText(R.string.no_items_header_label);
- ((TextView)emptyView.findViewById(R.id.emptyViewMessage)).setText(R.string.no_items_label);
+
+ emptyView = new EmptyViewHandler(getContext());
+ emptyView.attachToRecyclerView(recyclerView);
+ emptyView.setTitle(R.string.no_items_header_label);
+ emptyView.setMessage(R.string.no_items_label);
progLoading = root.findViewById(R.id.progLoading);
progLoading.setVisibility(View.VISIBLE);
@@ -518,13 +529,13 @@ public class QueueFragment extends Fragment {
new DefaultActionButtonCallback(activity), itemTouchHelper);
recyclerAdapter.setHasStableIds(true);
recyclerView.setAdapter(recyclerAdapter);
+ emptyView.updateAdapter(recyclerAdapter);
}
- emptyView.setVisibility(View.GONE);
recyclerView.setVisibility(View.VISIBLE);
} else {
recyclerAdapter = null;
recyclerView.setVisibility(View.GONE);
- emptyView.setVisibility(View.VISIBLE);
+ emptyView.updateAdapter(recyclerAdapter);
}
if (restoreScrollPosition) {
@@ -637,7 +648,7 @@ public class QueueFragment extends Fragment {
}
if (queue == null) {
recyclerView.setVisibility(View.GONE);
- emptyView.setVisibility(View.GONE);
+ emptyView.hide();
progLoading.setVisibility(View.VISIBLE);
}
disposable = Observable.fromCallable(DBReader::getQueue)
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java
index 5f09be8ce..75da522d1 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java
@@ -1,11 +1,14 @@
package de.danoeh.antennapod.fragment;
+import android.content.Context;
import android.content.DialogInterface;
+import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.ContextMenu;
import android.view.LayoutInflater;
+import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
@@ -41,6 +44,8 @@ public class SubscriptionFragment extends Fragment {
private static final int EVENTS = EventDistributor.FEED_LIST_UPDATE
| EventDistributor.UNREAD_ITEMS_UPDATE;
+ private static final String PREFS = "SubscriptionFragment";
+ private static final String PREF_NUM_COLUMNS = "columns";
private GridView subscriptionGridLayout;
private DBReader.NavDrawerData navDrawerData;
@@ -49,6 +54,7 @@ public class SubscriptionFragment extends Fragment {
private int mPosition = -1;
private Disposable disposable;
+ private SharedPreferences prefs;
public SubscriptionFragment() {
}
@@ -57,11 +63,9 @@ public class SubscriptionFragment extends Fragment {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
-
- // So, we certainly *don't* have an options menu,
- // but unless we say we do, old options menus sometimes
- // persist. mfietz thinks this causes the ActionBar to be invalidated
setHasOptionsMenu(true);
+
+ prefs = getActivity().getSharedPreferences(PREFS, Context.MODE_PRIVATE);
}
@Override
@@ -69,11 +73,53 @@ public class SubscriptionFragment extends Fragment {
Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.fragment_subscriptions, container, false);
subscriptionGridLayout = root.findViewById(R.id.subscriptions_grid);
+ subscriptionGridLayout.setNumColumns(prefs.getInt(PREF_NUM_COLUMNS, 3));
registerForContextMenu(subscriptionGridLayout);
return root;
}
@Override
+ public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
+ super.onCreateOptionsMenu(menu, inflater);
+ inflater.inflate(R.menu.subscriptions, menu);
+
+ int columns = prefs.getInt(PREF_NUM_COLUMNS, 3);
+ menu.findItem(R.id.subscription_num_columns_2).setChecked(columns == 2);
+ menu.findItem(R.id.subscription_num_columns_3).setChecked(columns == 3);
+ menu.findItem(R.id.subscription_num_columns_4).setChecked(columns == 4);
+ menu.findItem(R.id.subscription_num_columns_5).setChecked(columns == 5);
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ if (super.onOptionsItemSelected(item)) {
+ return true;
+ }
+ switch (item.getItemId()) {
+ case R.id.subscription_num_columns_2:
+ setColumnNumber(2);
+ return true;
+ case R.id.subscription_num_columns_3:
+ setColumnNumber(3);
+ return true;
+ case R.id.subscription_num_columns_4:
+ setColumnNumber(4);
+ return true;
+ case R.id.subscription_num_columns_5:
+ setColumnNumber(5);
+ return true;
+ default:
+ return false;
+ }
+ }
+
+ private void setColumnNumber(int columns) {
+ subscriptionGridLayout.setNumColumns(columns);
+ prefs.edit().putInt(PREF_NUM_COLUMNS, columns).apply();
+ getActivity().invalidateOptionsMenu();
+ }
+
+ @Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
subscriptionAdapter = new SubscriptionsAdapter((MainActivity)getActivity(), itemAccess);
diff --git a/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java b/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java
index a157a2cfa..042aa594a 100644
--- a/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java
+++ b/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java
@@ -842,7 +842,7 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc
} else if (v > 0 && v < 24) {
entries[x] = res.getQuantityString(R.plurals.episode_cleanup_hours_after_listening, v, v);
} else {
- int numDays = (int)(v / 24); // assume underlying value will be NOT fraction of days, e.g., 36 (hours)
+ int numDays = v / 24; // assume underlying value will be NOT fraction of days, e.g., 36 (hours)
entries[x] = res.getQuantityString(R.plurals.episode_cleanup_days_after_listening, numDays, numDays);
}
}
diff --git a/app/src/main/java/de/danoeh/antennapod/view/EmptyViewHandler.java b/app/src/main/java/de/danoeh/antennapod/view/EmptyViewHandler.java
index e3fd63235..42c11bc8e 100644
--- a/app/src/main/java/de/danoeh/antennapod/view/EmptyViewHandler.java
+++ b/app/src/main/java/de/danoeh/antennapod/view/EmptyViewHandler.java
@@ -1,59 +1,95 @@
package de.danoeh.antennapod.view;
-import android.app.Activity;
import android.content.Context;
+import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
+import android.widget.RelativeLayout;
import android.widget.TextView;
import de.danoeh.antennapod.R;
-public class EmptyViewHandler extends View {
- private Activity activity;
- private int title;
- private int message;
+public class EmptyViewHandler {
+ private boolean layoutAdded = false;
+ private RecyclerView recyclerView;
+ private RecyclerView.Adapter adapter;
- public EmptyViewHandler(Context context) {
- super(context);
- this.setActivity((Activity) context);
- }
+ private final View emptyView;
+ private final TextView tvTitle;
+ private final TextView tvMessage;
- public int getTitle() {
- return title;
+ public EmptyViewHandler(Context context) {
+ emptyView = View.inflate(context, R.layout.empty_view_layout, null);
+ tvTitle = emptyView.findViewById(R.id.emptyViewTitle);
+ tvMessage = emptyView.findViewById(R.id.emptyViewMessage);
}
public void setTitle(int title) {
- this.title = title;
- }
-
- public int getMessage() {
- return message;
+ tvTitle.setText(title);
}
public void setMessage(int message) {
- this.message = message;
+ tvMessage.setText(message);
}
- public void attachToListView(ListView listView){
+ public void hide() {
+ emptyView.setVisibility(View.GONE);
+ }
- View emptyView = getActivity().getLayoutInflater().inflate(R.layout.empty_view_layout, null);
+ public void attachToListView(ListView listView) {
+ if (layoutAdded) {
+ throw new IllegalStateException("Can not attach to ListView multiple times");
+ }
+ layoutAdded = true;
((ViewGroup) listView.getParent()).addView(emptyView);
listView.setEmptyView(emptyView);
+ }
- TextView tvTitle = (TextView) emptyView.findViewById(R.id.emptyViewTitle);
- tvTitle.setText(title);
-
- TextView tvMessage = (TextView) emptyView.findViewById(R.id.emptyViewMessage);
- tvMessage.setText(message);
+ public void attachToRecyclerView(RecyclerView recyclerView) {
+ if (layoutAdded) {
+ throw new IllegalStateException("Can not attach to ListView multiple times");
+ }
+ layoutAdded = true;
+ this.recyclerView = recyclerView;
+ ViewGroup parent = ((ViewGroup) recyclerView.getParent());
+ parent.addView(emptyView);
+ updateAdapter(recyclerView.getAdapter());
+ if (parent instanceof RelativeLayout) {
+ RelativeLayout.LayoutParams layoutParams =
+ (RelativeLayout.LayoutParams)emptyView.getLayoutParams();
+ layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);
+ emptyView.setLayoutParams(layoutParams);
+ }
}
- public Activity getActivity() {
- return activity;
+ public void updateAdapter(RecyclerView.Adapter adapter) {
+ if (this.adapter != null) {
+ this.adapter.unregisterAdapterDataObserver(adapterObserver);
+ }
+ this.adapter = adapter;
+ if (adapter != null) {
+ adapter.registerAdapterDataObserver(adapterObserver);
+ }
+ updateVisibility();
}
- public void setActivity(Activity activity) {
- this.activity = activity;
+ private final SimpleAdapterDataObserver adapterObserver = new SimpleAdapterDataObserver() {
+ @Override
+ public void anythingChanged() {
+ updateVisibility();
+ }
+ };
+
+ private void updateVisibility() {
+ boolean empty;
+ if (adapter == null) {
+ empty = true;
+ } else {
+ empty = adapter.getItemCount() == 0;
+ }
+ recyclerView.setVisibility(empty ? View.GONE : View.VISIBLE);
+ emptyView.setVisibility(empty ? View.VISIBLE : View.GONE);
}
}
diff --git a/app/src/main/java/de/danoeh/antennapod/view/SimpleAdapterDataObserver.java b/app/src/main/java/de/danoeh/antennapod/view/SimpleAdapterDataObserver.java
new file mode 100644
index 000000000..45c3a35bd
--- /dev/null
+++ b/app/src/main/java/de/danoeh/antennapod/view/SimpleAdapterDataObserver.java
@@ -0,0 +1,41 @@
+package de.danoeh.antennapod.view;
+
+import android.support.annotation.Nullable;
+import android.support.v7.widget.RecyclerView;
+
+/**
+ * AdapterDataObserver that relays all events to the method anythingChanged().
+ */
+public abstract class SimpleAdapterDataObserver extends RecyclerView.AdapterDataObserver {
+ public abstract void anythingChanged();
+
+ @Override
+ public void onChanged() {
+ anythingChanged();
+ }
+
+ @Override
+ public void onItemRangeChanged(int positionStart, int itemCount) {
+ anythingChanged();
+ }
+
+ @Override
+ public void onItemRangeChanged(int positionStart, int itemCount, @Nullable Object payload) {
+ anythingChanged();
+ }
+
+ @Override
+ public void onItemRangeInserted(int positionStart, int itemCount) {
+ anythingChanged();
+ }
+
+ @Override
+ public void onItemRangeMoved(int fromPosition, int toPosition, int itemCount) {
+ anythingChanged();
+ }
+
+ @Override
+ public void onItemRangeRemoved(int positionStart, int itemCount) {
+ anythingChanged();
+ }
+}
diff --git a/app/src/main/play/ar/listing/fulldescription b/app/src/main/play/ar/listing/fulldescription
deleted file mode 100644
index 27abb5532..000000000
--- a/app/src/main/play/ar/listing/fulldescription
+++ /dev/null
@@ -1,43 +0,0 @@
-AntennaPod هو مدير للبودكاست واللاعب الذي يتيح لك الوصول الفوري إلى ملايين البودكاست المجانية والمدفوعة ، من البودكاسترات المستقلة إلى دور النشر الكبيرة مثل بي بي سي ، إن بي آر وسي إن إن. يمكنك إضافة واستيراد وتصدير خلاصاتهم الخالية من المتاعب باستخدام قاعدة بيانات بودكاست iTunes أو ملفات OPML أو عناوين URL RSS بسيطة. يمكنك توفير الجهد واستخدام طاقة البطارية واستخدام البيانات المتنقلة مع عناصر تحكم تلقائية قوية لتنزيل الحلقات (حدد الأوقات والفترات الزمنية وشبكات WiFi) وحذف الحلقات (استنادًا إلى إعداداتك المفضلة وتأخير الإعدادات).<br>
-But most importantly: Download, stream or queue episodes and enjoy them the way you like with adjustable playback speeds, chapter support and a sleep timer. You can even show your love to the content creators with our Flattr integration.
-
-Made by podcast-enthousiast, AntennaPod is free in all senses of the word: open source, no costs, no ads.
-
-<b>All features:</b><br>
-IMPORT, ORGANIZE AND PLAY<br>
-&#8226; Add and import feeds via the iTunes and gPodder.net directories, OPML files and RSS or Atom links<br>
-&#8226; Manage playback from anywhere: homescreen widget, system notification and earplug and bluetooth controls<br>
-&#8226; Enjoy listening your way with adjustable playback speed, chapter support (MP3, VorbisComment and Podlove), remembered playback position and an advanced sleep timer (shake to reset, lower volume and slow down playback)<br>
-&#8226; Access password-protected feeds and episodes<br>
-&#8226; Take advantage of paged feeds (www.podlove.org/paged-feeds)
-
-KEEP TRACK, SHARE & APPRECIATE<br>
-&#8226; Keep track of the best of the best by marking episodes as favourites<br>
-&#8226; Find that one episode through the playback history or by searching (titles and shownotes)<br>
-&#8226; Share episodes and feeds through advanced social media and email options, the gPodder.net services and via OPML export<br>
-&#8226; Support content creators with Flattr integration including automatic flattring
-
-CONTROL THE SYSTEM<br>
-&#8226; Take control over automated downloading: choose feeds, exclude mobile networks, select specific WiFi networks, require the phone to be charging and set times or intervals<br>
-&#8226; Manage storage by setting the amount of cached episodes, smart deletion (based on your favourites and play status) and selecting your preferred location<br>
-&#8226; Use AntennaPod in your language (EN, DE, CS, NL, NB, JA, PT, ES, SV, CA, UK, FR, KO, TR, ZH)<br>
-&#8226; Adapt to your environment using the light and dark theme<br>
-&#8226; Back-up your subscriptions with the gPodder.net integration and OPML export
-
-<b>Join the AntennaPod community!</b><br>
-AntennaPod is under active development by volunteers. You can contribute too, with code or with comment!
-
-GitHub is the place to go for feature requests, bug reports and code contributions:<br>
-https://www.github.com/AntennaPod/AntennaPod
-
-Our Google Group is the place to share your ideas, favourite podcasting moments and gratitude to all the volunteers:<br>
-https://groups.google.com/forum/#!forum/antennapod
-
-Have a question or want to give us feedback?
-https://twitter.com/@AntennaPod
-
-Transifex is the place to help with translations:<br>
-https://www.transifex.com/antennapod/antennapod
-
-Check out our Beta Testing programme to get the latest features first:<br>
-https://www.github.com/AntennaPod/AntennaPod/wiki/Help-test-AntennaPod \ No newline at end of file
diff --git a/app/src/main/play/ar/listing/shortdescription b/app/src/main/play/ar/listing/shortdescription
deleted file mode 100644
index 7afb5a62d..000000000
--- a/app/src/main/play/ar/listing/shortdescription
+++ /dev/null
@@ -1 +0,0 @@
-Easy-to-use, flexible and open-source podcast & radio manager and player \ No newline at end of file
diff --git a/app/src/main/play/ar/listing/title b/app/src/main/play/ar/listing/title
deleted file mode 100644
index 6c7c64cfc..000000000
--- a/app/src/main/play/ar/listing/title
+++ /dev/null
@@ -1 +0,0 @@
-AntennaPod
diff --git a/app/src/main/play/bg/listing/fulldescription b/app/src/main/play/bg/listing/fulldescription
deleted file mode 100644
index 16a005e22..000000000
--- a/app/src/main/play/bg/listing/fulldescription
+++ /dev/null
@@ -1,43 +0,0 @@
-AntennaPod е подкаст мениджър и плейър, който ви дава незабавен достъп до милиони безплатни и платени подкасти, от независими подкасти до големи издателства като BBC, NPR и CNN. Добавете, импортирайте и експортирайте своите емисии безпроблемно, като използвате базата данни на iTunes, OPML файлове или обикновени URL адреси. Спестете усилие, захранване на батерията и мобилни данни чрез мощни контролни механизми за автоматизиране на изтеглянето на епизоди (задайте часове, интервали и WiFi мрежи) и изтриването на епизоди (базирани на предпочитаните от вас и настройките за отлагане).<br>
-But most importantly: Download, stream or queue episodes and enjoy them the way you like with adjustable playback speeds, chapter support and a sleep timer. You can even show your love to the content creators with our Flattr integration.
-
-Made by podcast-enthousiast, AntennaPod is free in all senses of the word: open source, no costs, no ads.
-
-<b>Всички функции:</b><br>
-IMPORT, ORGANIZE AND PLAY<br>
-&#8226; Add and import feeds via the iTunes and gPodder.net directories, OPML files and RSS or Atom links<br>
-&#8226; Manage playback from anywhere: homescreen widget, system notification and earplug and bluetooth controls<br>
-&#8226; Enjoy listening your way with adjustable playback speed, chapter support (MP3, VorbisComment and Podlove), remembered playback position and an advanced sleep timer (shake to reset, lower volume and slow down playback)<br>
-&#8226; Access password-protected feeds and episodes<br>
-&#8226; Take advantage of paged feeds (www.podlove.org/paged-feeds)
-
-KEEP TRACK, SHARE & APPRECIATE<br>
-&#8226; Keep track of the best of the best by marking episodes as favourites<br>
-&#8226; Find that one episode through the playback history or by searching (titles and shownotes)<br>
-&#8226; Share episodes and feeds through advanced social media and email options, the gPodder.net services and via OPML export<br>
-&#8226; Support content creators with Flattr integration including automatic flattring
-
-CONTROL THE SYSTEM<br>
-&#8226; Take control over automated downloading: choose feeds, exclude mobile networks, select specific WiFi networks, require the phone to be charging and set times or intervals<br>
-&#8226; Manage storage by setting the amount of cached episodes, smart deletion (based on your favourites and play status) and selecting your preferred location<br>
-&#8226; Use AntennaPod in your language (EN, DE, CS, NL, NB, JA, PT, ES, SV, CA, UK, FR, KO, TR, ZH)<br>
-&#8226; Adapt to your environment using the light and dark theme<br>
-&#8226; Back-up your subscriptions with the gPodder.net integration and OPML export
-
-<b>Присъединете се към общността на AntennaPod!</b><br>
-AntennaPod се разработва активно от доброволци. Можете да допринесете с код или с коментар!
-
-GitHub е мястото за заявки за функции, отчети за грешки и участие:<br>
-https://www.github.com/AntennaPod/AntennaPod
-
-Our Google Group is the place to share your ideas, favourite podcasting moments and gratitude to all the volunteers:<br>
-https://groups.google.com/forum/#!forum/antennapod
-
-Имате въпрос или искате да дадете отзиви?
-https://twitter.com/@AntennaPod
-
-Transifex е мястото за помощ при преводите:<br>
-https://www.transifex.com/antennapod/antennapod
-
-Check out our Beta Testing programme to get the latest features first:<br>
-https://www.github.com/AntennaPod/AntennaPod/wiki/Help-test-AntennaPod \ No newline at end of file
diff --git a/app/src/main/play/bg/listing/shortdescription b/app/src/main/play/bg/listing/shortdescription
deleted file mode 100644
index 7afb5a62d..000000000
--- a/app/src/main/play/bg/listing/shortdescription
+++ /dev/null
@@ -1 +0,0 @@
-Easy-to-use, flexible and open-source podcast & radio manager and player \ No newline at end of file
diff --git a/app/src/main/play/bg/listing/title b/app/src/main/play/bg/listing/title
deleted file mode 100644
index 6c7c64cfc..000000000
--- a/app/src/main/play/bg/listing/title
+++ /dev/null
@@ -1 +0,0 @@
-AntennaPod
diff --git a/app/src/main/play/ca/listing/fulldescription b/app/src/main/play/ca/listing/fulldescription
deleted file mode 100644
index 0e8d76e5e..000000000
--- a/app/src/main/play/ca/listing/fulldescription
+++ /dev/null
@@ -1,43 +0,0 @@
-L'AntennaPod és un gestor i reproductor de podcasts que us dóna accés instantani a milions de podcasts gratuïts i de pagament, fets per podcasters independents o grans emissores com la BBC, l'NPR i la CNN. Afegiu, importeu i exporteu les seves subscripcions sense complicacions utilitzant la base de dades de podcasts de l'iTunes, fitxers OPML o enllaços RSS. Estalvieu esforços, bateria i consum de dades al mòbil amb potents controls d'automatització per a baixar episodis (especifiqueu hores, intervals i xarxes WiFi) i esborrar-los (basats en la vostra configuració sobre favorits i demores).<br>
-Però el més important: baixeu, transmeteu o afegiu episodis a la cua i gaudiu-ne a la vostra manera amb velocitats de reproducció ajustables, capacitat per a usar capítols i un temporitzador per a dormir. Fins i tot podeu demostrar la vostra estima pels creadors de continguts amb la nostra integració de Flattr.
-
-Fet per entusiastes del podcàsting, l'AntennaPod és lliure en tots els sentits del terme: codi obert, sense cost ni anuncis.
-
-<b>Totes les funcions:</b><br>
-IMPORTA, ORGANITZA I REPRODUEIX<br>
-&#8226; Afegeix i importa canals mitjançant els directoris iTunes i gPodder.net, fitxers OPML i enllaços RSS o Atom<br>
-&#8226; Gestiona la reproducció des de qualsevol banda: giny de la pantalla d'inici, notificacions del sistema i controls d'auriculars i Bluetooth.<br>
-&#8226; Gaudiu escoltant a la vostra manera amb velocitat de reproducció ajustable, capacitat per a usar capítols (MP3, VorbisComment i Podlove), record de la posició de reproducció i un temporitzador per a dormir avançat (agiteu per a reiniciar, abaixar el volum i reduir la velocitat de reproducció).<br>
-&#8226; Accediu a subscripcions i episodis protegits per contrasenya.<br>
-&#8226; Aprofiteu les subscripcions paginades (www.podlove.org/paged-feeds).
-
-FEU SEGUIMENT, COMPARTIU I AGRAÏU<br>
-&#8226; Seguiu el millor del millor marcant episodis com a favorits.<br>
-&#8226; Trobeu l'episodi que busqueu mitjançant l'historial de reproducció o la cerca (de títols i descripcions).<br>
-&#8226; Compartiu episodis i subscripcions mitjançant xarxes socials i correu electrònic, els serveis de gPodder.net i exportant a OPML.<br>
-&#8226; Recolzeu els creadors de continguts amb la integració de Flattr, fins i tot de forma automàtica.
-
-CONTROLEU EL SISTEMA<br>
-&#8226; Prengueu el control de les baixades automàtiques: trieu les subscripcions, exclogueu xarxes mòbils, trieu xarxes WiFi específiques, requeriu que el telèfon s'estigui carregat i establiu les hores o intervals.<br>
-&#8226; Gestioneu l'emmagatzematge ajustant la quantitat d'episodis en emmagatzematge temporal, l'esborrat intel·ligent (basat en els vostres favorits i l'estat de reproducció) i triant la vostra ubicació preferida.<br>
-&#8226; Feu servir l'AntennaPod en la vostra llengua (EN, DE, CS, NL, NB, JA, PT, ES, SV, CA, UK, FR, KO, TR, ZH).<br>
-&#8226; Adapteu-vos al vostre entorn fent servir el tema clar o el fosc.<br>
-&#8226; Feu còpies de seguretat de les vostres subscripcions amb la integració amb gPodder.net i l'exportació a OPML.
-
-<b>Uniu-vos a la comunitat d'AntennaPod!</b><br>
-L'AntennaPod el desenvolupen voluntaris. Podeu col·laborar, amb codi o comentaris.
-
-Podeu proposar noves característiques, informar d'errors i aportar codi a GitHub:<br>
-https://www.github.com/AntennaPod/AntennaPod
-
-Podeu compartir les vostres idees, els vostres moments de podcàsting favorits i la gratitud amb tots els voluntaris al nostre grup de Google:<br>
-https://groups.google.com/forum/#!forum/antennapod
-
-Teniu preguntes o voleu comentar-nos alguna cosa?
-https://twitter.com/@AntennaPod
-
-Ens podeu ajudar amb les traduccions a Transifex:<br>
-https://www.transifex.com/antennapod/antennapod
-
-Consulteu el nostre programa de proves beta per a obtenir els primers<br> les últimes característiques:
-https://www.github.com/AntennaPod/AntennaPod/wiki/Help-test-AntennaPod \ No newline at end of file
diff --git a/app/src/main/play/ca/listing/shortdescription b/app/src/main/play/ca/listing/shortdescription
deleted file mode 100644
index 4eceefbb7..000000000
--- a/app/src/main/play/ca/listing/shortdescription
+++ /dev/null
@@ -1 +0,0 @@
-Easy-to-use, flexible and open-source podcast manager and player \ No newline at end of file
diff --git a/app/src/main/play/ca/listing/title b/app/src/main/play/ca/listing/title
deleted file mode 100644
index 6c7c64cfc..000000000
--- a/app/src/main/play/ca/listing/title
+++ /dev/null
@@ -1 +0,0 @@
-AntennaPod
diff --git a/app/src/main/play/contactEmail b/app/src/main/play/contact-email.txt
index d4543c6e0..d4543c6e0 100644
--- a/app/src/main/play/contactEmail
+++ b/app/src/main/play/contact-email.txt
diff --git a/app/src/main/play/contactWebsite b/app/src/main/play/contact-website.txt
index cb1c2f641..cb1c2f641 100644
--- a/app/src/main/play/contactWebsite
+++ b/app/src/main/play/contact-website.txt
diff --git a/app/src/main/play/cs-CZ/listing/fulldescription b/app/src/main/play/cs-CZ/listing/fulldescription
deleted file mode 100644
index 204c521f2..000000000
--- a/app/src/main/play/cs-CZ/listing/fulldescription
+++ /dev/null
@@ -1,20 +0,0 @@
-AntennaPod je open-source správce podcastů pro Android 2.3.3 a novější. Nabízí všechny základní funkce, které můžete očekávat od podcast klienta, jako jsou přehrávání streamu a stahování epizod, automatické sledování jednotlivých podcastů nebo přidávání nových epizod do fronty pro pozdější poslech. Navíc AntennaPod umožňuje podpořit podcasty přímo z aplikace pomocí služby flattr.
-
-Zatím jsou zavedeny tyto možnosti:
-
-* Stahování a streamovaný poslech epizod
-* Různé rychlosti přehrávání (vyžaduje knihovnu Presto Sound nebo Prestissimo)
-* Podpora Atom a RSS zdrojů
-* Podpora pro zdroje a epizody chráněné heslem
-* Support for searching iTunes listings
-* OPML import a export
-* Integrace pro Flattr včetně automatického flattrování
-* Widget přehrávače na domácí obrazovku
-* Vyhledávání
-* Automatické sledování zdrojů
-* Automatické stahování nových epizod
-* Časovač vypnutí
-* Přístup do seznamu podcastů na gpodder.net
-* Synchronizace přihlášené služby na gpodder.net
-* Podporuje MP3 kapitoly, VorbisComment kapitoly a Podlove Simple Chapters
-* Podporuje stránkované kanály (http://podlove.org/paged-feeds/) \ No newline at end of file
diff --git a/app/src/main/play/cs-CZ/listing/shortdescription b/app/src/main/play/cs-CZ/listing/shortdescription
deleted file mode 100644
index 5f700bd93..000000000
--- a/app/src/main/play/cs-CZ/listing/shortdescription
+++ /dev/null
@@ -1 +0,0 @@
-Open-source správce podcastu pro Android \ No newline at end of file
diff --git a/app/src/main/play/cs-CZ/listing/title b/app/src/main/play/cs-CZ/listing/title
deleted file mode 100644
index 6c7c64cfc..000000000
--- a/app/src/main/play/cs-CZ/listing/title
+++ /dev/null
@@ -1 +0,0 @@
-AntennaPod
diff --git a/app/src/main/play/da-DK/listing/fulldescription b/app/src/main/play/da-DK/listing/fulldescription
deleted file mode 100644
index 8f48ef070..000000000
--- a/app/src/main/play/da-DK/listing/fulldescription
+++ /dev/null
@@ -1,43 +0,0 @@
-AntennaPod er en app til håndtering og afspilning af podcasts. Den giver dig øjeblikkelig adgang til millioner af gratis og betalte podcasts, fra uafhængige podcastere til store udgivere som BBC, NPR, CNN og DR. Tilføj, importer og eksporter deres feeds problemfrit ved hjælp af iTunes-podcastdatabasen, OPML-filer eller enkle RSS-webadresser. Spar kræfter, batteristrøm og mobilt dataforbrug med kraftfulde automatiske styringsværktøjer til at hente udsendelser (angiv tidspunkter, tidsintervaller og udvalgte wi-fi-netværk) og sletning af episoder (baseret på dine foretrukne udsendelser og forsinkelsesindstillinger).<br>
-Men vigtigst af alt: Hent, stream eller sæt udsendelser i kø og nyd dem på den måde du kan lide med justerbare hastigheder, kapitelunderstøttelse og en søvntimer. Du kan endda vise din påskønnelse over for indholdsskaberne med vores Flattr-integration.
-
-AntennaPod er lavet af en podcast-entusiast og er gratis og fri i alle betydninger: open source, ingen udgifter, ingen reklamer.
-
-<b>Alle funktioner:</b><br>
-IMPORTER, ORGANISER OG AFSPIL<br>
-&#8226; Tilføj og importer feeds via iTunes- og gpodder.net-oversigterne, OPML-filer og RSS- eller Atom-links<br>
-&#8226; Håndter afspilning fra hvor som helst: widget på startskærmen, systemnotifikation, samt hovedtelefon- og bluetooth-styring<br>
-&#8226; Lyt på din egen måde med justerbar afspilningshastighed, kapitelunderstøttelse (MP3, VorbisComment og Podlove), erindring af afspilningsposition og en avanceret søvntimer (ryst for at nulstille, sænke lydstyrken og afspille langsommere)<br>
-&#8226; Tilgå feeds og udsendelser beskyttet med adgangskode<br>
-&#8226; Brug sideinddelte feeds (www.podlove.org/paged-feeds)
-
-HOLD STYR PÅ, DEL OG ANERKEND<br>
-&#8226; Hold styr på det bedste af det bedste ved at markere udsendelser som foretrukne<br>
-&#8226; Find en bestemt udsendelse via afspilningshistorikken eller ved at søge (titler og beskrivelser)<br>
-&#8226; Del udsendelser og feeds via avancerede valgmuligheder for sociale medier, gpodder.net-tjenesterne og OPML-eksport<br>
-&#8226; Støt indholdsskabere med Flattr-integration, inklusive automatisk flattring
-
-STYR SYSTEMET<br>
-&#8226; Tag styring over automatiseret hentning: vælg feeds, udeluk mobile netværk, vælg specifikke wi-fi-netvæk, kræv at telefonen oplader og indstil tidspunkter eller tidsintervaller
-&#8226; Håndter lagerforbruget ved at indstille antallet af udsendelser, der skal gemmes, smart sletning (baseret på dine foretrukne og afspilningsstatus) og ved at vælge den lagerplacering, du foretrækker<br>
-&#8226; Brug AntennaPod på dit eget sprog (EN, DE, DA, CS, NL, NB, JA, PT, ES, SV, CA, UK, FR, KO, TR, ZH)<br>
-&#8226; Tilpas appen til dit miljø med det lyse eller mørke tema<br>
-&#8226; Sikkerhedskopier dine abonnementer med gpodder.net-integrationen og OPML-eksport
-
-<b>Bliv en del af AntennaPod-fællesskabet!</b><br>
-AntennaPod er under aktiv udvikling af frivillige. Du kan også bidrage, enten med kode eller kommentarer!
-
-GitHub er stedet for forslag tli ny funktionalitet, fejlrapporter og kodebidrag:<br>
-https://www.github.com/AntennaPod/AntennaPod
-
-Vores Google-gruppe er stedet til at dele dine ideer, foretrukne podcast-øjeblikke og taknemmelighed til alle de frivillige:<br>
-https://groups.google.com/forum/#!forum/antennapod
-
-Har du et spørgsmål eller vil du give os en tilbagemelding?
-https://twitter.com/@AntennaPod
-
-Transifex er stedet, hvis du vil hjælpe med oversættelser:<br>
-https://www.transifex.com/antennapod/antennapod
-
-Prøv vores beta-testprogram for at få de nyeste funktioner først:<br>
-https://www.github.com/AntennaPod/AntennaPod/wiki/Help-test-AntennaPod \ No newline at end of file
diff --git a/app/src/main/play/da-DK/listing/shortdescription b/app/src/main/play/da-DK/listing/shortdescription
deleted file mode 100644
index 4eceefbb7..000000000
--- a/app/src/main/play/da-DK/listing/shortdescription
+++ /dev/null
@@ -1 +0,0 @@
-Easy-to-use, flexible and open-source podcast manager and player \ No newline at end of file
diff --git a/app/src/main/play/da-DK/listing/title b/app/src/main/play/da-DK/listing/title
deleted file mode 100644
index 6c7c64cfc..000000000
--- a/app/src/main/play/da-DK/listing/title
+++ /dev/null
@@ -1 +0,0 @@
-AntennaPod
diff --git a/app/src/main/play/de-DE/listing/title b/app/src/main/play/de-DE/listing/title
deleted file mode 100644
index 6c7c64cfc..000000000
--- a/app/src/main/play/de-DE/listing/title
+++ /dev/null
@@ -1 +0,0 @@
-AntennaPod
diff --git a/app/src/main/play/defaultLanguage b/app/src/main/play/default-language.txt
index f2b0341fe..f2b0341fe 100644
--- a/app/src/main/play/defaultLanguage
+++ b/app/src/main/play/default-language.txt
diff --git a/app/src/main/play/el-GR/listing/fulldescription b/app/src/main/play/el-GR/listing/fulldescription
deleted file mode 100644
index f0ec3ae38..000000000
--- a/app/src/main/play/el-GR/listing/fulldescription
+++ /dev/null
@@ -1,43 +0,0 @@
-Το Antennapod είναι μία εφαρμογή διαχείρισης και εκτέλεσης podcasts που σας δίνει άμεση πρόσβαση σε εκατομμύρια δωρεάν και επί πληρωμή podcasts, από ανεξάρτητους podcasters έως μεγάλους εκδοτικούς οίκους όπως το BBC, NPR και CNN. Μπορείτε εύκολα να προσθέσετε, να εισάγετε και να εξάγετε τις ροές τους χρησιμοποιώντας τη βάση δεδομένων podcast του iTunes, αρχεία OPML ή απλά RSS URLs. Γλυτώστε προσπάθεια, μπαταρία και χρήση δεδομένων κινητής τηλεφωνίας με ισχυρές ρυθμίσεις αυτοματισμών για λήψη επεισοδίων (ορίστε τους χρόνους, τα διαστήματα και τα δίκτυα WiFi) και σβήστε επεισόδια (με βάση τα αγαπημένα σας και τις ρυθμίσεις καθυστέρησης).<br>
-Αλλά το πλέον σημαντικό: Κατεβάστε, κάντε stream ή βάλτε στη σειρά επεισόδια και απολαύστε τα όπως επιθυμήτε με ρυθμιζόμενη ταχύτητα αναπαραγωγής, υποστήριξη κεφάλαιων και χρονόμετρο απενεργοποίησης. Μπορείτε ακόμη και να δείξετε την αγάπη σας στους δημιουργούς περιεχομένου μέσω της ενσωμάτωσης του Flattr.
-
-Φτιαγμένο από λάτρη των podcast, το AntennaPod είναι ελεύθερο με όλες τις έννοιες της λέξης: ανοικτού λογισμικού, χωρίς κόστη, χωρίς διαφημίσεις.
-
-<b>Όλα τα χαρακτηριστικά:</b><br>
-ΕΙΣΑΓΩΓΉ, ΟΡΓΆΝΩΣΗ ΚΑΙ ΕΚΤΈΛΕΣΗ<br>
-&#8226; Προσθέστε και εισάγετε ροές μέσω των φακέλων του iTunes και του gPodder.net, αρχείων OPML και RSS ή συνδέσμους Atom<br>
-&#8226; Manage playback from anywhere: homescreen widget, system notification and earplug and bluetooth controls<br>
-&#8226; Enjoy listening your way with adjustable playback speed, chapter support (MP3, VorbisComment and Podlove), remembered playback position and an advanced sleep timer (shake to reset, lower volume and slow down playback)<br>
-&#8226; Access password-protected feeds and episodes<br>
-&#8226; Take advantage of paged feeds (www.podlove.org/paged-feeds)
-
-KEEP TRACK, SHARE & APPRECIATE<br>
-&#8226; Keep track of the best of the best by marking episodes as favourites<br>
-&#8226; Find that one episode through the playback history or by searching (titles and shownotes)<br>
-&#8226; Share episodes and feeds through advanced social media and email options, the gPodder.net services and via OPML export<br>
-&#8226; Support content creators with Flattr integration including automatic flattring
-
-CONTROL THE SYSTEM<br>
-&#8226; Take control over automated downloading: choose feeds, exclude mobile networks, select specific WiFi networks, require the phone to be charging and set times or intervals<br>
-&#8226; Manage storage by setting the amount of cached episodes, smart deletion (based on your favourites and play status) and selecting your preferred location<br>
-&#8226; Use AntennaPod in your language (EN, DE, CS, NL, NB, JA, PT, ES, SV, CA, UK, FR, KO, TR, ZH)<br>
-&#8226; Adapt to your environment using the light and dark theme<br>
-&#8226; Back-up your subscriptions with the gPodder.net integration and OPML export
-
-<b>Ενταχθείτε στη κοινότητα του AntennaPod!</b><br>
-Το AntennaPod βρίσκεται υπό ενεργή ανάπτυξη από εθελοντές. Μπορείτε και εσείς να συνεισφέρετε, με κώδικα ή με κάποιο σχόλιο.
-
-Το Github είναι το μέρος να επισκεφθείτε για να ζητήσετε καινούρια χαρακτηριστικά, να αναφέρετε σφάλματα και για συνεισφορά κώδικα:<br>
-https://www.github.com/AntennaPod/AntennaPod
-
-Το Google Group μας είναι το μέρος να μοιραστείτε τις ιδέες σας, τις αγαπημένες σας στιγμές ενασχόλησης με τα podcasts και ευγνωμοσύνη σε όλους τους εθελοντές:<br>
-https://groups.google.com/forum/#!forum/antennapod
-
-Έχετε κάποια ερώτηση ή θέλετε να μας δώσετε κάποια ανατροφοδότηση;
-https://twitter.com/@AntennaPod
-
-Το Transifex είναι το μέρος για να βοηθήσετε με τις μεταφράσεις:<br>
-https://www.transifex.com/antennapod/antennapod
-
-Ελέγξτε το πρόγραμμά μας Beta Testing για να λαμβάνετε τα τελευταία χαρακτηριστικά πρώτοι:<br>
-https://www.github.com/AntennaPod/AntennaPod/wiki/Help-test-AntennaPod \ No newline at end of file
diff --git a/app/src/main/play/el-GR/listing/shortdescription b/app/src/main/play/el-GR/listing/shortdescription
deleted file mode 100644
index 7afb5a62d..000000000
--- a/app/src/main/play/el-GR/listing/shortdescription
+++ /dev/null
@@ -1 +0,0 @@
-Easy-to-use, flexible and open-source podcast & radio manager and player \ No newline at end of file
diff --git a/app/src/main/play/el-GR/listing/title b/app/src/main/play/el-GR/listing/title
deleted file mode 100644
index 6c7c64cfc..000000000
--- a/app/src/main/play/el-GR/listing/title
+++ /dev/null
@@ -1 +0,0 @@
-AntennaPod
diff --git a/app/src/main/play/es-ES/listing/fulldescription b/app/src/main/play/es-ES/listing/fulldescription
deleted file mode 100644
index b1a87b434..000000000
--- a/app/src/main/play/es-ES/listing/fulldescription
+++ /dev/null
@@ -1,43 +0,0 @@
-AntennaPod es un administrador y reproductor de pódcast que te da acceso instantáneo a millones de pódcast gratuitos y de pago, desde editores independientes a grandes editoriales como la BBC, NPR y CNN. Agrega, importa y exporta tus fuentes sin complicaciones usando la base de datos de pódcast de iTunes, archivos OPML o las URL de tipo RSS. Ahorra esfuerzo, energía de la batería y uso de datos móviles con potentes controles de automatización para descargar episodios (especifica horarios, intervalos y redes wifi) y elimina episodios (según tus favoritos y la configuración de retardo).<br>
-Y lo más importante: descarga, escucha en continuo o pon en cola los episodios y disfrútalos como quieras con velocidades de reproducción ajustables, soporte de capítulos y temporizador de apagado. Incluso puedes mostrar tu gratitud a los creadores de contenido mediante Flattr.
-
-Creado por entusiastas del pódcast, AntennaPod es libre en todos los sentidos: código abierto, gratuito y sin publicidad.
-
-<b>Todas las características:</b><br>
-IMPORTAR, ORGANIZAR Y REPRODUCIR<br>
-&#8226; Añade e importa fuentes mediante los directorios de iTunes y gPodder.net, archivos OPML y enlaces RSS o Atom<br>
-&#8226; Administra la reproducción desde cualquier parte: control en pantalla de inicio, notificación del sistema y controles de auricular y bluetooth<br>
-&#8226; Disfruta escuchando a tu manera con velocidad de reproducción ajustable, soporte de capítulos (MP3, VorbisComment y Podlove), recordatorio del punto de reproducción y el temporizador de sueño avanzado (agita para restablecer, bajar el volumen y disminuir la velocidad de reproducción)<br>
-&#8226; Accede a fuentes y episodios protegidos con contraseña<br>
-&#8226; Aprovecha las fuentes paginadas (www.podlove.org/paged-feeds)
-
-MANTÉN UN SEGUIMIENTO, COMPARTE Y APRECIA
-&#8226; Haz un seguimiento de lo mejor de lo mejor marcando episodios como favoritos<br>
-&#8226; Encuentra ese episodio a través del historial de reproducción o por búsqueda (títulos y notas de episodios)<br>
-&#8226; Comparte episodios y fuentes a través de las avanzadas redes sociales y opciones de correo electrónico, los servicios de gPodder.net y la exportación OPML<br>
-&#8226; Ayuda a los creadores de contenido con la integración de Flattr, incluso automáticamente
-
-CONTROLA EL SISTEMA<br>
-&#8226; Controla las descargas automáticas: elige las fuentes, excluye las redes móviles, selecciona redes wifi específicas, o solo cuando el teléfono se esté cargando y establece horarios o intervalos<br>
-&#8226; Administra el almacenamiento configurando la cantidad de episodios almacenados, el borrado inteligente (según tus favoritos y el estado de reproducción) y selecciona tu ubicación preferida<br>
-&#8226; Usa AntennaPod en tu idioma (EN, DE, CS, NL, NB, JA, PT, ES, SV, CA, UK, FR, KO, TR, ZH)<br>
-&#8226; Adáptate a tu entorno usando el tema claro u oscuro<br>
-&#8226; Haz una copia de seguridad de tus suscripciones con la integración de gPodder.net y la exportación OPML
-
-<b>¡Únete a la comunidad AntennaPod!</b><br>
-AntennaPod está en continuo desarrollo por voluntarios. ¡Tú también puedes contribuir, con tu código o con tus comentarios!
-
-GitHub es el sitio que debes visitar para solicitar características nuevas, reportar fallos y contribuir con código<br>
-https://www.github.com/AntennaPod/AntennaPod
-
-Nuestro Grupo de Google es el sitio para compartir tus ideas, momentos favoritos de tus pódcast y tu gratitud a los voluntarios:<br>
-https://groups.google.com/forum/#!forum/antennapod
-
-¿Tienes una pregunta o quieres darnos tu opinión?
-https://twitter.com/@AntennaPod
-
-Transifex es el sitio para ayudar con las traducciones:<br>
-https://www.transifex.com/antennapod/antennapod
-
-Echa un vistazo a nuestro programa de pruebas Beta y ser el primero en usar las nuevas características:<br>
-https://www.github.com/AntennaPod/AntennaPod/wiki/Help-test-AntennaPod \ No newline at end of file
diff --git a/app/src/main/play/es-ES/listing/shortdescription b/app/src/main/play/es-ES/listing/shortdescription
deleted file mode 100644
index 37723ed99..000000000
--- a/app/src/main/play/es-ES/listing/shortdescription
+++ /dev/null
@@ -1 +0,0 @@
-Gestor y reproductor de radio y pódcast fácil, flexible y de código abierto \ No newline at end of file
diff --git a/app/src/main/play/es-ES/listing/title b/app/src/main/play/es-ES/listing/title
deleted file mode 100644
index 6c7c64cfc..000000000
--- a/app/src/main/play/es-ES/listing/title
+++ /dev/null
@@ -1 +0,0 @@
-AntennaPod
diff --git a/app/src/main/play/et/listing/fulldescription b/app/src/main/play/et/listing/fulldescription
deleted file mode 100644
index d33e8f4e8..000000000
--- a/app/src/main/play/et/listing/fulldescription
+++ /dev/null
@@ -1,43 +0,0 @@
-AntennaPod is a podcast manager and player that gives you instant access to millions of free and paid podcasts, from independent podcasters to large publishing houses such as the BBC, NPR and CNN. Add, import and export their feeds hassle-free using the iTunes podcast database, OPML files or simple RSS URLs. Save effort, battery power and mobile data usage with powerful automation controls for downloading episodes (specify times, intervals and WiFi networks) and deleting episodes (based your favourites and delay settings).<br>
-But most importantly: Download, stream or queue episodes and enjoy them the way you like with adjustable playback speeds, chapter support and a sleep timer. You can even show your love to the content creators with our Flattr integration.
-
-Made by podcast-enthousiast, AntennaPod is free in all senses of the word: open source, no costs, no ads.
-
-<b>Kõik omadused:</b><br>
-IMPORDI, ORGANISEERI JA ESITA<br>
-&#8226; Add and import feeds via the iTunes and gPodder.net directories, OPML files and RSS or Atom links<br>
-&#8226; Manage playback from anywhere: homescreen widget, system notification and earplug and bluetooth controls<br>
-&#8226; Enjoy listening your way with adjustable playback speed, chapter support (MP3, VorbisComment and Podlove), remembered playback position and an advanced sleep timer (shake to reset, lower volume and slow down playback)<br>
-&#8226; Access password-protected feeds and episodes<br>
-&#8226; Kasuta ära lehekülgedeks jagatud voogusid (www.podlove.org/paged-feeds)
-
-JÄLGI, JAGA JA HINDA<br>
-&#8226; Keep track of the best of the best by marking episodes as favourites<br>
-&#8226; Find that one episode through the playback history or by searching (titles and shownotes)<br>
-&#8226; Share episodes and feeds through advanced social media and email options, the gPodder.net services and via OPML export<br>
-&#8226; Support content creators with Flattr integration including automatic flattring
-
-KONTROLLI SÜSTEEMI<br>
-&#8226; Take control over automated downloading: choose feeds, exclude mobile networks, select specific WiFi networks, require the phone to be charging and set times or intervals<br>
-&#8226; Manage storage by setting the amount of cached episodes, smart deletion (based on your favourites and play status) and selecting your preferred location<br>
-&#8226; Kasuta AntennaPodi omaenda keeles (EN, DE, CS, NL, NB, JA, PT, ES, SV, CA, UK, FR, KO, TR, ZH, ET)<br>
-&#8226; Kohandu oma keskkonnale valides heleda ja tumeda ekraani vahet<br>
-&#8226; Back-up your subscriptions with the gPodder.net integration and OPML export
-
-<b>Liitu AntennaPodi kogukonnaga!</b>
-AntennaPod on vabatahtlike poolt aktiivselt arendamisel. Ka sina võid anda oma osa kirjutades koodi või andes oma kommentaare!
-
-GitHub is the place to go for feature requests, bug reports and code contributions:<br>
-https://www.github.com/AntennaPod/AntennaPod
-
-Our Google Group is the place to share your ideas, favourite podcasting moments and gratitude to all the volunteers:<br>
-https://groups.google.com/forum/#!forum/antennapod
-
-Kas sul on küsimus või soovid anda meile tagasisidet?
-https://twitter.com/@AntennaPod
-
-Transifex on koht, kus saad abiks olla tõlkimisega:<br>
-https://www.transifex.com/antennapod/antennapod
-
-Vaata meie beeta testide programmi, et saada esimesena osa värskeimatest omadustest:
-https://www.github.com/AntennaPod/AntennaPod/wiki/Help-test-AntennaPod \ No newline at end of file
diff --git a/app/src/main/play/et/listing/shortdescription b/app/src/main/play/et/listing/shortdescription
deleted file mode 100644
index 7afb5a62d..000000000
--- a/app/src/main/play/et/listing/shortdescription
+++ /dev/null
@@ -1 +0,0 @@
-Easy-to-use, flexible and open-source podcast & radio manager and player \ No newline at end of file
diff --git a/app/src/main/play/et/listing/title b/app/src/main/play/et/listing/title
deleted file mode 100644
index 6c7c64cfc..000000000
--- a/app/src/main/play/et/listing/title
+++ /dev/null
@@ -1 +0,0 @@
-AntennaPod
diff --git a/app/src/main/play/fa/listing/fulldescription b/app/src/main/play/fa/listing/fulldescription
deleted file mode 100644
index 0a005f962..000000000
--- a/app/src/main/play/fa/listing/fulldescription
+++ /dev/null
@@ -1,43 +0,0 @@
-AntennaPod یک نرم افزار مدیریت و پخش پادکست میباشد که به شما امکان دسترسی سریع به میلیون ها پادکست رایگان و پرداخت شده ، از طریق انتشارات بزرگ و مستقل مانند بی بی سی، NPR و CNN را می دهد. همچنین شما میتوانید از پایگاه داده iTunes podcast، فایل های OPML یا URL های ساده RSS، استفاده نمایید ، آنها را اضافه کنید ،اطلاعالت خود را وارد و یا از انها فایل پشتیبان تهیه کنید.. صرفه جویی در زمان جستجو ، قدرت باتری و استفاده از داده های تلفن همراه با استفاده از ترفندهای قدرتمند اتوماسیون برای دانلود قسمت ها (تعیین زمان، فواصل و شبکه های WiFi) و حذف قسمت (بر اساس علاقه مندی های خود و تنظیمات تاخیر)<br>
-ما مهمتر از همه: دانلود، پخش یا پخش قسمت ها و لذت بردن از آنهاست، سرعت پخش قابل تنظیم، به هر سرعتی که شما علاقه دارید ، با پشتیبانی فصل ( قسمتها ) و یک تایمر برای خواب .حتی شما میتوانید علاقه خود را با سازندگان محتوا با استفاده از Flattr integration ما ، نشان دهید.
-
-Made by podcast-enthousiast, AntennaPod is free in all senses of the word: open source, no costs, no ads.
-
-<b>All features:</b><br>
-IMPORT, ORGANIZE AND PLAY<br>
-&#8226; Add and import feeds via the iTunes and gPodder.net directories, OPML files and RSS or Atom links<br>
-&#8226; Manage playback from anywhere: homescreen widget, system notification and earplug and bluetooth controls<br>
-&#8226; Enjoy listening your way with adjustable playback speed, chapter support (MP3, VorbisComment and Podlove), remembered playback position and an advanced sleep timer (shake to reset, lower volume and slow down playback)<br>
-&#8226; Access password-protected feeds and episodes<br>
-&#8226; Take advantage of paged feeds (www.podlove.org/paged-feeds)
-
-KEEP TRACK, SHARE & APPRECIATE<br>
-&#8226; Keep track of the best of the best by marking episodes as favourites<br>
-&#8226; Find that one episode through the playback history or by searching (titles and shownotes)<br>
-&#8226; Share episodes and feeds through advanced social media and email options, the gPodder.net services and via OPML export<br>
-&#8226; Support content creators with Flattr integration including automatic flattring
-
-CONTROL THE SYSTEM<br>
-&#8226; Take control over automated downloading: choose feeds, exclude mobile networks, select specific WiFi networks, require the phone to be charging and set times or intervals<br>
-&#8226; Manage storage by setting the amount of cached episodes, smart deletion (based on your favourites and play status) and selecting your preferred location<br>
-&#8226; Use AntennaPod in your language (EN, DE, CS, NL, NB, JA, PT, ES, SV, CA, UK, FR, KO, TR, ZH)<br>
-&#8226; Adapt to your environment using the light and dark theme<br>
-&#8226; Back-up your subscriptions with the gPodder.net integration and OPML export
-
-<b>Join the AntennaPod community!</b><br>
-AntennaPod is under active development by volunteers. You can contribute too, with code or with comment!
-
-GitHub is the place to go for feature requests, bug reports and code contributions:<br>
-https://www.github.com/AntennaPod/AntennaPod
-
-Our Google Group is the place to share your ideas, favourite podcasting moments and gratitude to all the volunteers:<br>
-https://groups.google.com/forum/#!forum/antennapod
-
-Have a question or want to give us feedback?
-https://twitter.com/@AntennaPod
-
-Transifex is the place to help with translations:<br>
-https://www.transifex.com/antennapod/antennapod
-
-Check out our Beta Testing programme to get the latest features first:<br>
-https://www.github.com/AntennaPod/AntennaPod/wiki/Help-test-AntennaPod \ No newline at end of file
diff --git a/app/src/main/play/fa/listing/shortdescription b/app/src/main/play/fa/listing/shortdescription
deleted file mode 100644
index 7afb5a62d..000000000
--- a/app/src/main/play/fa/listing/shortdescription
+++ /dev/null
@@ -1 +0,0 @@
-Easy-to-use, flexible and open-source podcast & radio manager and player \ No newline at end of file
diff --git a/app/src/main/play/fa/listing/title b/app/src/main/play/fa/listing/title
deleted file mode 100644
index 6c7c64cfc..000000000
--- a/app/src/main/play/fa/listing/title
+++ /dev/null
@@ -1 +0,0 @@
-AntennaPod
diff --git a/app/src/main/play/fr-FR/listing/shortdescription b/app/src/main/play/fr-FR/listing/shortdescription
deleted file mode 100644
index 93944d272..000000000
--- a/app/src/main/play/fr-FR/listing/shortdescription
+++ /dev/null
@@ -1 +0,0 @@
-Un lecteur de podcast simple et flexible \ No newline at end of file
diff --git a/app/src/main/play/fr-FR/listing/title b/app/src/main/play/fr-FR/listing/title
deleted file mode 100644
index 6c7c64cfc..000000000
--- a/app/src/main/play/fr-FR/listing/title
+++ /dev/null
@@ -1 +0,0 @@
-AntennaPod
diff --git a/app/src/main/play/gl-ES/listing/shortdescription b/app/src/main/play/gl-ES/listing/shortdescription
deleted file mode 100644
index 9b18a10fc..000000000
--- a/app/src/main/play/gl-ES/listing/shortdescription
+++ /dev/null
@@ -1 +0,0 @@
-Xestor/Reprodutor de podcast e radio doado de usar, flexible e de fontes abertas \ No newline at end of file
diff --git a/app/src/main/play/gl-ES/listing/title b/app/src/main/play/gl-ES/listing/title
deleted file mode 100644
index 6c7c64cfc..000000000
--- a/app/src/main/play/gl-ES/listing/title
+++ /dev/null
@@ -1 +0,0 @@
-AntennaPod
diff --git a/app/src/main/play/hi-IN/listing/fulldescription b/app/src/main/play/hi-IN/listing/fulldescription
deleted file mode 100644
index c4d6594b9..000000000
--- a/app/src/main/play/hi-IN/listing/fulldescription
+++ /dev/null
@@ -1,43 +0,0 @@
-एन्टेनापॉड एक पॉडकास्ट मेनेजर और प्लेयर है जो आपको स्वतंत्र पॉडकास्टर्स से लेकर बीबीसी, एनपीआर और सीएनएन जैसे बड़े पब्लिशिंग घरों के लाखों मुफ्त और भुगतान पॉडकास्ट की तुरंत उपलब्धि करता है। आईट्यून्स पॉडकास्ट डेटाबेस, ओपीएमएल फाइल्स या सरल आरएसएस यूआरएल का उपयोग करके उनके फीड्स बिना कोई परेशानी के जोड़ें, आयात और निर्यात करें। एपिसोड डाउनलोड करने (समय, अंतराल और वाईफाई नेटवर्क निर्दिष्ट करके) और एपिसोड को हटाने (आपके पसंदीदा और देरी की सेटिंग्स के आधार पर) के लिए इसमे शक्तिशाली स्वचालन नियंत्रनो है जो बैटरी पावर और मोबाइल डेटा की बचत करे।<br>
-परंतु सबसे महत्वपूर्ण बात: एपिसोड्स डाउनलोड करें, स्ट्रीम करें या पंक्ति बनाएं और एडजस्टेबल प्लेबैक गति, अध्याय समर्थन और टाइमर् के साथ उन्हे अपने अंदाज़ में आनंद लें। आप हमारे फ्लाटर एकीकरण के साथ निर्माताओ को अपना प्यार भी जता सकते हैं।
-
-पॉडकास्ट-उत्साही द्वारा निर्मित, एन्टेनापॉड पूर्ण रूप से ओपन सोर्स, मुफ्त और विज्ञापन हीन है।
-
-<b>सारे विशेषताएं:</b><br>
-आयात करे, व्यवस्थित करे और चलाएं<br>
-&#8226; आईट्यून्स और gPodder.net डिरेक्टरीज़, ओपीएमएल फाइल्स और आरएसएस या एटम लिंक्स के माध्यम से फीड्स जोड़ें और आयात करें।<br>
-&#8226; कहीं से भी प्लेबैक मेनेज करें: होमस्क्रीन विजेट, सिस्टम अधिसूचना और इयरप्लग और ब्लूटूथ नियंत्रण<br>
-&#8226; एडजस्टेबल प्लेबैक गति, अध्याय समर्थन (MP3, वोर्बीस कमेंट और पॉडलव), याद रखी प्लेबैक स्थान और आधुनिक टाइमर (हिलाकर रीसेट करे, आवाज़ धीमी करे और प्लेबैक गति कम करें) के साथ अपने अंदाज़ में सुनने का आनंद लें<br>
-&#8226; पासवर्ड-संरक्षित फीड्स और एपिसोड्स की पहुँच प्राप्त करे<br>
-&#8226; पेज्ड् फीड्स का लाभ उठाएं (www.podlove.org/paged-feeds)
-
-जुड़े रहे, शेयर करे और सराहिये<br>
-&#8226; सबसे श्रेष्ठ का ट्रैक रखने, उस एपिसोड को पसंदीदा के रूप में चिह्नित करे<br>
-&#8226; प्लेबैक इतिहास द्वारा या (शीर्षक और शोनोट्स) को खोजकर, आपका वो एक एपिसोड पाय<br>
-&#8226; उन्नत सोशल मीडिया और ईमेल विकल्पों, gPodder.net सेवाओं और ओपीएमएल निर्यात के माध्यम से एपिसोड्स और फ़ीड शेयर करें<br>
-&#8226; स्वचालित फ्लाटरिंग सहित फ्लाटर एकीकरण द्वारा निर्माताओ का समर्थन करे
-
-सिस्टम को काबू में करें<br>
-&#8226; स्वचालित डौन्लोडस पर पूरा नियंत्रित रखे: फीड्स चुने, मोबाइल और वैफै नेटवर्क चुने, फोन चार्जिंग की आवश्यकता, समय और अंतराल निर्दिष्ट करे<br>
-&#8226; कैश किए गए एपिसोड की मात्रा निर्धारित करना, स्मार्ट विलोपन करना (आपके पसंदीदा सूची और प्ले स्थिति के आधार पर) और अपनी प्राथमिक स्थान चुनना<br>
-&#8226; एन्टेनापॉड को अपनी भाषा में इस्तेमाल करें (EN, DE, CS, NL, NB, JA, PT, ES, SV, CA, UK, FR, KO, TR, ZH)<br>
-&#8226; लाइट और डार्क थीम का उपयोग करके, अपने पर्यावरण से अनुकूलित बनाए<br>
-&#8226; gPodder.net एकीकरण और ओपीएमएल निर्यात द्वारा अपने सब्स्क्रिप्शन्स बैकअप करें।
-
-<b>एन्टेंनापॉड समुदाय में शामिल होइए।</b><br>
-एन्टेंनापॉड स्वयंसेवकों द्वारा सक्रिय विकास में है। आप भी कोड या कमेंट के साथ योगदान कर सकते हैं।
-
-सुविधा अनुरोध, बग रिपोर्ट और कोड योगदान के लिए गिटहब पर जाएं:<br>
-https://www.github.com/AntennaPod/AntennaPod
-
-हमारा गूगल ग्रुप आपके विचारों, पसंदीदा पॉडकास्टिंग पल और सभी स्वयंसेवकों के प्रति आभार साझा करने का स्थान है:<br>
-https://groups.google.com/forum/#!forum/antennapod
-
-क्या आप का कोई सवाल पूछना चाहते है या कोई सुझाव देना चाहते है?
-https://twitter.com/@AntennaPod
-
-अनुवादो की सहायता करने ट्रांसिफेक्स पर जाएं:<br>
-https://www.transifex.com/antennapod/antennapod
-
-नवीनतम विशेषताएं को सबसे पहले पाने हमारे बीटा परीक्षण कार्यक्रम में शामिल होइए:<br>
-https://www.github.com/AntennaPod/AntennaPod/wiki/Help-test-AntennaPod \ No newline at end of file
diff --git a/app/src/main/play/hi-IN/listing/shortdescription b/app/src/main/play/hi-IN/listing/shortdescription
deleted file mode 100644
index 4eceefbb7..000000000
--- a/app/src/main/play/hi-IN/listing/shortdescription
+++ /dev/null
@@ -1 +0,0 @@
-Easy-to-use, flexible and open-source podcast manager and player \ No newline at end of file
diff --git a/app/src/main/play/hi-IN/listing/title b/app/src/main/play/hi-IN/listing/title
deleted file mode 100644
index 6c7c64cfc..000000000
--- a/app/src/main/play/hi-IN/listing/title
+++ /dev/null
@@ -1 +0,0 @@
-AntennaPod
diff --git a/app/src/main/play/it-IT/listing/fulldescription b/app/src/main/play/it-IT/listing/fulldescription
deleted file mode 100644
index 3d0425660..000000000
--- a/app/src/main/play/it-IT/listing/fulldescription
+++ /dev/null
@@ -1,43 +0,0 @@
-AntennaPod è un gestore e player di podcast che ti dà accesso istantaneo a milioni di podcast gratuiti e a pagamento, da podcaster indipendenti a grandi case editrici come BBC, NPR e CNN. Aggiungi, Importa ed esporta facilmente i Feed dal database di iTunes, file OPML oppure semplici collegamenti RSS. Risparmia fatica, batteria e dati con potenti controlli automatici per scaricare gli episodi (specifica orari, intervalli e reti WiFi) ed eliminare gli episodi.<br>
-Ma soprattutto: Scarica, fai Stream o metti in coda gli episodi e goditeli come preferisci cambiando la velocità di riproduzione, saltando tra capitoli e impostando lo sleep timer. Puoi persino mostrare il tuo amore attraverso l'integrazione con Flattr.
-
-Creato da amatori del podcast, AntennaPod è <i>free</i> in tutti i sensi: open-source, nessun costo, nessuna pubblicità.
-
-<b>Tutte le funzioni:</b><br>
-IMPORTA, ORGANIZZA E RIPRODUCI<br>
-&#8226; Aggiungi ed importa i feed tramite i database di iTunes e gPodder.net, file OPML e link RSS o Atom<br>
-&#8226; Gestisci la riproduzione in ogni modo: attraverso il widget per la home, le notifiche di sistema oppure tramite i controlli sulle cuffie, sia cablate che bluetooth<br>
-&#8226; Goditi l'ascolto a modo tuo attraverso la velocità di riproduzione regolabile, il supporto ai capitoli (MP3, VorbisComment e Podlove), la memoria della posizione di riproduzione e un timer di riproduzione avanzato (scuoti per reimpostare, abbassamento del volume e rallentamento di riproduzione)<br>
-&#8226; Accedi a feed ed episodi protetti da password<br>
-&#8226; Approfitta dei <i>paged feeds</i> (www.podlove.org/paged-feeds)
-
-TIENI TRACCIA, CONDIVIDI E APPREZZA<br>
-&#8226; Tieni traccia degli episodi migliori aggiungendoli ai preferiti<br>
-&#8226; Trova episodi specifici nella cronologia di riproduzione o cercando tra titoli e descrizioni<br>
-&#8226; Condividi episodi e feed attraverso le opzioni avanzate di condivisione verso social e emali, i servizi online di gPodder.net e l'esportazione in file OPML<br>
-&#8226; Supporta i creatori attraverso Flattr consentendo anche il <i>flattring</i> automatico
-
-CONTROLLA IL SISTEMA<br>
-&#8226; Prendi il controllo dei download automatici: scegli i Feed, escludi le reti cellulari, seleziona reti WiFi specifiche, attiva solo a telefono in carica e imposta orari e intervalli.<br>
-&#8226; Gestisci la memoria impostando il numero massimo di episodi scaricati, l'eliminazione automatica (basata sui tuoi preferiti e lo stato di riproduzione) e selezionando la tua posizione preferita in memoria<br>
-&#8226; Utilizza AntennaPod nella tua lingua (EN, DE, CS, NL, NB, JA, PT, ES, SV, CA, UK, FR, KO, TR, ZH)<br>
-&#8226; Adatta all'ambiente usando il tema chiaro e quello scuro<br>
-&#8226; Fai il backup delle tue iscrizione con gPodder.net e l'esportazione OPML
-
-<b>Unisciti alla comunità di AntennaPod!</b><br>
-AntennaPod è in fase attiva di sviluppo da parte di volontari. Anche te puoi contribuire, con codice o commenti!
-
-Per chiedere nuove funzioni, contribuire con del codice o segnalare problemi, puoi trovarci su GitHub:
-https://www.github.com/AntennaPod/AntennaPod
-
-Il nostro Gruppo Google è il posto giusto per condividere le tue idee, i tuoi più bei momenti di podcasting e per mostrare gratitudine ai volontari<br>
-https://groups.google.com/forum/#!forum/antennapod
-
-Hai una domanda o vuoi fornirci un feedback?
-https://twitter.com/@AntennaPod
-
-Transifex è il posto in cui aiutare con le traduzioni:<br>
-https://www.transifex.com/antennapod/antennapod
-
-Dai un'occhiata al nostro programma di beta testing per ricevere per primo le funzioni più recenti:<br>
-https://www.github.com/AntennaPod/AntennaPod/wiki/Help-test-AntennaPod \ No newline at end of file
diff --git a/app/src/main/play/it-IT/listing/shortdescription b/app/src/main/play/it-IT/listing/shortdescription
deleted file mode 100644
index bbc1e1f84..000000000
--- a/app/src/main/play/it-IT/listing/shortdescription
+++ /dev/null
@@ -1 +0,0 @@
-Un riproduttore e gestore di podcast open-source, flessibile e facile da usare \ No newline at end of file
diff --git a/app/src/main/play/it-IT/listing/title b/app/src/main/play/it-IT/listing/title
deleted file mode 100644
index 6c7c64cfc..000000000
--- a/app/src/main/play/it-IT/listing/title
+++ /dev/null
@@ -1 +0,0 @@
-AntennaPod
diff --git a/app/src/main/play/iw-IL/listing/fulldescription b/app/src/main/play/iw-IL/listing/fulldescription
deleted file mode 100644
index cbbf5de28..000000000
--- a/app/src/main/play/iw-IL/listing/fulldescription
+++ /dev/null
@@ -1,23 +0,0 @@
-אנטנה-פוד הוא מנהל פודקאסט בקוד פתוח עבור אנדרויד 2.3.3 ומעלה. הוא מציע את כל תכונות הבסיסיות שאתה מצפה ממנהל פודקאסטים, כמו הזרמה והורדה של פרקים, ריענון הזנות אוטומטי או הוספת פרקים לתור להאזנה בהמשך. כמו כן, אנטנה-פוד מאפשר לך לתרום דרך flattr פודקאסטים ופרקים מבתוך האפליקציה.
-
-עד כה התכונות הבאות מיושמות:
-
-* הורדה והזרמה של פרקים
-* השמעה במהירות משתנה (דורש ספריית סאונד Presto או Prestissimo)
-* תמיכה בהזנות RSS ו-Atom
-* תמיכה בהזנות ופרקים מוגני ססמה
-* יבוא ויצוא OMPL
-אינטגרציה עם flattr כולל flattr אוטומאטי
-* יישומון נגן למסך הבית
-* חיפוש
-* עידכוני הזנות אוטומטים
-* הורדה אוטמטית של פרקים חדשים
-* טיימר שינה
-*גישה לאינדקס הפודקאסטים gpodder.net
-* סינכרון רישומים עם שירות gpodder.net
-* תמיכה בפרקי MP3, פרקי VorbisComment ופרקי Podlove Simple
-* תמיכה בהזנות מרובות דפים (http://podlove.org/paged-feeds/)
-
-לדווח באגים או משוב, ניתן ליצור סוגיה (issue) בעמוד פרויקט Github (https://github.com/danieloeh/AntennaPod) או לשלוח דואר אלקטרוני לfeedback@antennapod.com. ניתן גם ליצור קשר antennapod@ בטוויטר.
-
-יישום זה הוא ללא תשלום וללא פרסומות. אם אתה רוצה לתמוך באנטנה-פוד, אתה יכול לתרום ב-flattr כאן: flattr.com/thing/745609 \ No newline at end of file
diff --git a/app/src/main/play/iw-IL/listing/shortdescription b/app/src/main/play/iw-IL/listing/shortdescription
deleted file mode 100644
index 7afb5a62d..000000000
--- a/app/src/main/play/iw-IL/listing/shortdescription
+++ /dev/null
@@ -1 +0,0 @@
-Easy-to-use, flexible and open-source podcast & radio manager and player \ No newline at end of file
diff --git a/app/src/main/play/iw-IL/listing/title b/app/src/main/play/iw-IL/listing/title
deleted file mode 100644
index 6c7c64cfc..000000000
--- a/app/src/main/play/iw-IL/listing/title
+++ /dev/null
@@ -1 +0,0 @@
-AntennaPod
diff --git a/app/src/main/play/ja-JP/listing/title b/app/src/main/play/ja-JP/listing/title
deleted file mode 100644
index 6c7c64cfc..000000000
--- a/app/src/main/play/ja-JP/listing/title
+++ /dev/null
@@ -1 +0,0 @@
-AntennaPod
diff --git a/app/src/main/play/ko-KR/listing/fulldescription b/app/src/main/play/ko-KR/listing/fulldescription
deleted file mode 100644
index 65f20d943..000000000
--- a/app/src/main/play/ko-KR/listing/fulldescription
+++ /dev/null
@@ -1,43 +0,0 @@
-안테나팟을 사용해 소규모 독립 제작자들부터 BBC, NPR, CNN 등의 대형 언론사까지 수많은 무료 및 유료 팟캐스트에 접근할 수 있습니다. iTunes 팟캐스트 데이터베이스, OPML 파일, RSS 주소를 사용해 팟캐스트 피드를 간편하게 추가하고 내보내고 가져올 수 있습니다. 강력한 자동 다운로드 제어(특정 시간 간격 및 Wi-Fi 네트워크 지정)와 삭제 제어(즐겨찾기 및 지연 설정에 기반한)를 통해 편리하게 배터리와 모바일 데이터 사용량을 줄이세요.<br>
-하지만 가장 중요한 기능은: 에피소드를 다운로드하거나 스트리밍하거나 대기열을 만들고, 재생 속도 조절, 챕터 지원, 취침 타이머를 통해 원하는대로 즐길 수 있다는 점입니다. 내장된 Flattr 지원을 통해 팟캐스트 제작자들에게 호응을 보낼 수도 있습니다.
-
-팟캐스트 애호가에 의해 만들어진, 안테나팟은 모든 면에서 자유롭습니다: 소스 코드가 공개되어 있고, 무료인데다가 광고도 없습니다.
-
-<b>모든 기능:</b><br>
-가져오기, 관리하기, 재생하기<br>
-&#8226; iTunes, gPodder.net, OPML 파일, RSS 및 Atom 링크를 통해 피드를 추가하거나 가져올 수 있습니다.<br>
-&#8226; 재생을 어디에서나 관리할 수 있습니다: 홈스크린 위젯, 시스템 알림, 이어폰 및 블루투스 컨트롤<br>
-&#8226; 배속 재생 지원, 챕터 지원(MP3, VorbisComment, Podlove), 마지막 재생 위치 기억, 고급 취침 타이머(흔들어서 초기화, 볼륨 낮추기, 재생 느리게 하기) 등의 기능으로 팟캐스트를 즐기세요<br>
-&#8226; 암호로 보호된 피드와 에피소드에 접근<br>
-&#8226; 페이지로 구분된 피드 활용 (www.podlove.org/paged-feeds)
-
-기록하고, 공유하고, 호응하기<br>
-&#8226; 가장 좋아하는 팟캐스트 에피소드를 즐겨찾기로 저장<br>
-&#8226; 에피소드를 재생 기록 또는 검색(제목 및 노트)으로 찾기<br>
-&#8226; 에피소드와 피드를 SNS, 이메일, gPodder.net, OPML 내보내기로 공유<br>
-&#8226; 자동으로 Flattr하기 등의 Flattr 기능으로 팟캐스트 제작자 지원
-
-시스템 컨트롤
-&#8226; 자동 다운로드를 제어하세요: 피드를 고르고, 모바일 네트워크를 제외시키고, 특정 Wi-Fi 네트워크를 선택하고, 기기가 충전중일때만 다운로드하게 하고, 시간과 간격을 정하세요<br>
-&#8226; 에피소드 캐시 용량, 똑똑한 삭제(즐겨찾기와 재생 상태에 기반), 선호하는 저장 위치 등으로 저장소를 관리하세요<br>
-&#8226; 여러가지 언어로 안테나팟을 사용하세요 (EN, DE, CS, NL, NB, JA, PT, ES, SV, CA, UK, FR, KO, TR, ZH)<br>
-&#8226; 밝음 및 어두움 테마로 환경에 맞춰 사용하세요<br>
-&#8226; gPodder.net과 OPML 내보내기 기능으로 구독한 팟캐스트를 백업하세요
-
-<b>안테나팟 커뮤니티에 참여하세요!</b><br>
-안테나팟은 지원자들에 의해 활발히 개발되고 있습니다. 당신도 제작을 돕거나 제안을 해서 참여할 수 있습니다!
-
-GitHub에서 새로운 기능 제안, 버그 보고, 그리고 코드 기여를 할 수 있습니다.:<br>
-https://www.github.com/AntennaPod/AntennaPod
-
-구글 그룹에서 아이디어와 좋은 팟캐스트를 공유하고 모든 지원자들에게 감사할 수 있습니다:<br>
-https://groups.google.com/forum/#!forum/antennapod
-
-질문이 있으신가요? 아니면 의견이 있으신가요?
-https://twitter.com/@AntennaPod
-
-Transifex에서 번역을 도울 수 있습니다:<br>
-https://www.transifex.com/antennapod/antennapod
-
-베타 테스트 프로그램을 통해 최신 기능을 가장 먼저 확인해보세요:<br>
-https://www.github.com/AntennaPod/AntennaPod/wiki/Help-test-AntennaPod \ No newline at end of file
diff --git a/app/src/main/play/ko-KR/listing/shortdescription b/app/src/main/play/ko-KR/listing/shortdescription
deleted file mode 100644
index 9baa9eb11..000000000
--- a/app/src/main/play/ko-KR/listing/shortdescription
+++ /dev/null
@@ -1 +0,0 @@
-안드로이드용 오픈소스 팟캐스트 관리 앱 \ No newline at end of file
diff --git a/app/src/main/play/ko-KR/listing/title b/app/src/main/play/ko-KR/listing/title
deleted file mode 100644
index 6c7c64cfc..000000000
--- a/app/src/main/play/ko-KR/listing/title
+++ /dev/null
@@ -1 +0,0 @@
-AntennaPod
diff --git a/app/src/main/play/de-DE/listing/fulldescription b/app/src/main/play/listings/de-DE/full-description.txt
index 0e09c5c29..f312ea559 100644
--- a/app/src/main/play/de-DE/listing/fulldescription
+++ b/app/src/main/play/listings/de-DE/full-description.txt
@@ -1,4 +1,4 @@
-AntennaPod ist ein Podcast-Manager und -Player, der Dir unmittelbar Zugriff auf Millionen von freien und kostenpflichtigen Podcasts ermöglicht, angefangen von unabhängigen Podcastern bis hin zu großen Rundfunkanstalten wie BBC, NPR und CNN. Abonniere, importiere und exportiere deine Feeds mühelos mit Hilfe des iTunes-Verzeichnisses, OPML-Dateien oder einfachen RSS-URLs. Reduziere Aufwand, Stromverbrauch und Datenverbrauch durch die Kontrolle der Downloads (bestimmte Uhrzeiten, Intervalle, WiFi-Netze) und des Löschens von Episoden (basierend auf deinen Favoriten und weiteren Einstellungen).<br>
+AntennaPod ist ein Podcast-Manager und -Player, der dir unmittelbar Zugriff auf Millionen von freien und bezahlten Podcasts ermöglicht, angefangen von unabhängigen Podcastern zu großen Rundfunkanstalten oder Hörfunksendern wie BBC, NPR und CNN. Abonniere, importiere und exportiere deine Feeds mühelos mit Hilfe des iTunes-Verzeichnisses, OPML-Dateien oder einfachen RSS-URLs. Reduziere Aufwand, Stromverbrauch und Datenverbrauch durch die Kontrolle der Downloads (bestimmte Uhrzeiten, Intervalle, WiFi-Netze) und des Löschens (basierend auf deinen Favoriten und weiteren Einstellungen).
Aber am wichtigsten: Downloade, streame oder füge Episoden zur Abspielliste hinzu und genieße sie mit einstellbarer Abspielgeschwindigkeit, Unterstützung von Kapiteln und Schlummerfunktion. Mit Flattr kannst du den Podcastern sogar deine Wertschätzung zeigen.
AntennaPod ist, von Podcast-Enthusiasten gemacht, frei im Sinne des Wortes: Open Source, keine Kosten, keine Werbung.
diff --git a/app/src/main/play/de-DE/listing/shortdescription b/app/src/main/play/listings/de-DE/short-description.txt
index cc5ca9df6..cc5ca9df6 100644
--- a/app/src/main/play/de-DE/listing/shortdescription
+++ b/app/src/main/play/listings/de-DE/short-description.txt
diff --git a/app/src/main/play/en-US/listing/fulldescription b/app/src/main/play/listings/en-US/full-description.txt
index 2f5b4b2ff..2f5b4b2ff 100644
--- a/app/src/main/play/en-US/listing/fulldescription
+++ b/app/src/main/play/listings/en-US/full-description.txt
diff --git a/app/src/main/play/en-US/listing/featureGraphic/feature-graphic.png b/app/src/main/play/listings/en-US/graphics/feature-graphic/feature-graphic.png
index 3b5261b28..3b5261b28 100644
--- a/app/src/main/play/en-US/listing/featureGraphic/feature-graphic.png
+++ b/app/src/main/play/listings/en-US/graphics/feature-graphic/feature-graphic.png
Binary files differ
diff --git a/app/src/main/play/en-US/listing/phoneScreenshots/00.png b/app/src/main/play/listings/en-US/graphics/phone-screenshots/00.png
index 9cc754f22..9cc754f22 100644
--- a/app/src/main/play/en-US/listing/phoneScreenshots/00.png
+++ b/app/src/main/play/listings/en-US/graphics/phone-screenshots/00.png
Binary files differ
diff --git a/app/src/main/play/en-US/listing/phoneScreenshots/01.png b/app/src/main/play/listings/en-US/graphics/phone-screenshots/01.png
index 3ec9ceadf..3ec9ceadf 100644
--- a/app/src/main/play/en-US/listing/phoneScreenshots/01.png
+++ b/app/src/main/play/listings/en-US/graphics/phone-screenshots/01.png
Binary files differ
diff --git a/app/src/main/play/en-US/listing/phoneScreenshots/02.png b/app/src/main/play/listings/en-US/graphics/phone-screenshots/02.png
index 020fa9a01..020fa9a01 100644
--- a/app/src/main/play/en-US/listing/phoneScreenshots/02.png
+++ b/app/src/main/play/listings/en-US/graphics/phone-screenshots/02.png
Binary files differ
diff --git a/app/src/main/play/en-US/listing/phoneScreenshots/03.png b/app/src/main/play/listings/en-US/graphics/phone-screenshots/03.png
index f860032c3..f860032c3 100644
--- a/app/src/main/play/en-US/listing/phoneScreenshots/03.png
+++ b/app/src/main/play/listings/en-US/graphics/phone-screenshots/03.png
Binary files differ
diff --git a/app/src/main/play/en-US/listing/phoneScreenshots/04.png b/app/src/main/play/listings/en-US/graphics/phone-screenshots/04.png
index be012eead..be012eead 100644
--- a/app/src/main/play/en-US/listing/phoneScreenshots/04.png
+++ b/app/src/main/play/listings/en-US/graphics/phone-screenshots/04.png
Binary files differ
diff --git a/app/src/main/play/en-US/listing/phoneScreenshots/05.png b/app/src/main/play/listings/en-US/graphics/phone-screenshots/05.png
index 379ad27eb..379ad27eb 100644
--- a/app/src/main/play/en-US/listing/phoneScreenshots/05.png
+++ b/app/src/main/play/listings/en-US/graphics/phone-screenshots/05.png
Binary files differ
diff --git a/app/src/main/play/en-US/listing/phoneScreenshots/06.png b/app/src/main/play/listings/en-US/graphics/phone-screenshots/06.png
index b73d58d40..b73d58d40 100644
--- a/app/src/main/play/en-US/listing/phoneScreenshots/06.png
+++ b/app/src/main/play/listings/en-US/graphics/phone-screenshots/06.png
Binary files differ
diff --git a/app/src/main/play/en-US/listing/phoneScreenshots/07.png b/app/src/main/play/listings/en-US/graphics/phone-screenshots/07.png
index 61246306f..61246306f 100644
--- a/app/src/main/play/en-US/listing/phoneScreenshots/07.png
+++ b/app/src/main/play/listings/en-US/graphics/phone-screenshots/07.png
Binary files differ
diff --git a/app/src/main/play/en-US/listing/shortdescription b/app/src/main/play/listings/en-US/short-description.txt
index acf136ae9..acf136ae9 100644
--- a/app/src/main/play/en-US/listing/shortdescription
+++ b/app/src/main/play/listings/en-US/short-description.txt
diff --git a/app/src/main/play/en-US/listing/title b/app/src/main/play/listings/en-US/title.txt
index 31552f353..31552f353 100644
--- a/app/src/main/play/en-US/listing/title
+++ b/app/src/main/play/listings/en-US/title.txt
diff --git a/app/src/main/play/fr-FR/listing/fulldescription b/app/src/main/play/listings/fr-FR/full-description.txt
index 372e1da60..372e1da60 100644
--- a/app/src/main/play/fr-FR/listing/fulldescription
+++ b/app/src/main/play/listings/fr-FR/full-description.txt
diff --git a/app/src/main/play/listings/fr-FR/short-description.txt b/app/src/main/play/listings/fr-FR/short-description.txt
new file mode 100644
index 000000000..61c3c7e20
--- /dev/null
+++ b/app/src/main/play/listings/fr-FR/short-description.txt
@@ -0,0 +1 @@
+Un lecteur et gestionnaire de podcast facile à utiliser et flexible \ No newline at end of file
diff --git a/app/src/main/play/gl-ES/listing/fulldescription b/app/src/main/play/listings/gl-ES/full-description.txt
index c26d4078c..c275c1fc2 100644
--- a/app/src/main/play/gl-ES/listing/fulldescription
+++ b/app/src/main/play/listings/gl-ES/full-description.txt
@@ -1,4 +1,4 @@
-AntennaPod é un xestor e repordutor de podcast que lle permite acceder a millóns de podcast gratuítos e de pago, desde emisións independentes a grandes produtores como BBC, NPR e CNN. Engadir, importar e exportar as súas fontes sen problemas utilizando a base de datos de iTunes, fiecheiros OPML o simples URLs de RSS. Aforre esforzos, consumo de batería e datos móbiles con un control total e automático das descargas de episodios (indique horarios, intervalos e redes WIFI) e eliminación de episodios (basándose nas preferencias de favoritos e retardo).<br>
+AntenaPod é un xestor de podcast e reprodutor que lle da acceso a millóns de podcast tanto gratuítos como de pagamento, desde podcasters independentes a grandes productores como BBC, NPR e CNN. Engada, importe e exporte as súas fontes de xeito doado utilizando a base de datos de iTunes, ficheiros OPML ou URLs RSS. Aforre traballo, enerxía da batería e datos móbiles co sistema automatizado de control das descargas de episodios (indicando horario, intervalos e redes WiFi) e borrando episodios (baseado nos seus favoritos e axustes de retardo).<br>
Mais o máis importante: Descargue, envíe ou poña na cola os episodios e disfrúteos do xeito en que máis lle conveña, axustando a velocidade de reprodución, xestión de capítulos e apagado automático. Poderá tamén mostrarlle aos creadores canto lle gustan os seus contidos gracias a integración con Flattr.
Escrito por namorados dos podcast, AntennaPod é gratuíto e libre: open source, sen custos, sen publicidade.
diff --git a/app/src/main/play/listings/gl-ES/short-description.txt b/app/src/main/play/listings/gl-ES/short-description.txt
new file mode 100644
index 000000000..755ae7c13
--- /dev/null
+++ b/app/src/main/play/listings/gl-ES/short-description.txt
@@ -0,0 +1 @@
+Xestor de podcast e reprodutor doado de utilizar, flexible e de código aberto \ No newline at end of file
diff --git a/app/src/main/play/listings/it-IT/full-description.txt b/app/src/main/play/listings/it-IT/full-description.txt
new file mode 100644
index 000000000..978ae2d46
--- /dev/null
+++ b/app/src/main/play/listings/it-IT/full-description.txt
@@ -0,0 +1,43 @@
+AntennaPod è un riproduttore e gestore di podcast che ti da accesso immediato a milioni di podcast gratuiti e a pagamento, dai podcaster indipendenti alle più grandi emittenti come BBC, NPR e CNN. Aggiungi, importa e esporta in modo semplice usando il database di podcast di iTunes, un file OPML o i semplici URL RSS. Risparmia fatica, batteria e dati con il potente controllo automatizzato per il download di episodi (orari specifici, intervalli e reti WiFi) e dell'eliminazione degli episodi (basata sui preferiti e le impostazioni di eliminazione personali).<br>
+Ancora più importante: scarica, ascolta in streaming o metti in coda gli episodi e goditeli quando e come vuoi grazie alla velocità di riproduzione personalizzabile, al supporto per i capitoli e al timer di spegnimento. Puoi anche ringraziare i creatori di contenuti grazie all'integrazione con Flattr.
+
+Creato da amanti dei podcast, AntennaPod è libero in tutti i sensi: open source, gratis, senza pubblicità.
+
+<b>Funzioni:</b><br>
+IMPORTA, ORGANIZZA E RIPRODUCI<br>
+&#8226; Aggiungi e importa feed via iTunes, gPodder.net, file OPML e link RSS o Atom<br>
+&#8226; Gestisci la riproduzione da dove vuoi: widget sulla schermata Home, notifiche di sistema e controlli sugli auricolari e via bluetooth. <br>
+&#8226; Divertiti ad ascoltare nel modo che preferisci grazie alla velocità di riproduzione variabile, il supporto ai capitoli (MP3, VorbisComment e Podlove), la memorizzazione dell'avanzamento di riproduzione e un timer di spegnimento avanzato (scuoti per resettare, volume basso e rallentamento della velocità)<br>
+&#8226; Accedi a feed e episodi protetti da password<br>
+&#8226; Sfrutta i vantaggi dei paged feeds (www.podlove.org/paged-feeds)
+
+TIENI TRACCIA, CONDIVIDI & APPREZZA<br>
+&#8226; Tieni traccia del meglio del meglio segnando gli episodi come Preferiti<br>
+&#8226; Trova l'episodio specifico grazie alla cronologia di riproduzione o al sistema di ricerca (titoli e note dell'episodio)<br>
+&#8226; Condividi gli episodi e i feed tramite le avanzate opzioni social ed email, il servizio gPodder.net e l'esportazione in OPML<br>
+&#8226; Supporta i creatori di contenuti tramite l'integrazione con Flattr e il flattring automatico
+
+CONTROLLA IL SISTEMA<br>
+&#8226; Prendi il controllo grazie ai download automatici: scegli i feed, escludi le reti mobili, seleziona reti WiFi specifiche, richiedi che il telefono sia in carica e imposta tempi e intervalli di aggiornamento<br>
+&#8226; Gestisci lo spazio impostando l'occupazione massima, la cancellazione intelligente (basata sui Preferiti e sullo stato di riproduzione) e selezionando la posizione che preferisci <br>
+&#8226; Usa AntennaPod nella tua lingua (EN, DE, CS, NL, NB, JA, PT, ES, SV, CA, UK, FR, KO, TR, ZH)<br>
+&#8226; Adattati all'ambiente in cui ti trovi con i temi Chiaro e Scuro.<br>
+&#8226; Salva le sottoscrizioni grazie all'integrazione con gPodder.net e l'esportazione OPML
+
+<b>Entra nella community di AntennaPod!</b><br>
+AntennaPod è sviluppato da volontari. Anche tu puoi contribuire, con il codice o con dei commenti!
+
+GitHub è il posto nel quale fare richieste, segnalare bug e contribuire allo sviluppo:<br>
+https://www.github.com/AntennaPod/AntennaPod
+
+Il nostro gruppo Google è il luogo ideale dove condividere le idee, stimolare momenti di podcasting e ringraziare tutti i volontari:<br>
+https://groups.google.com/forum/#!forum/antennapod
+
+Hai una domanda o vuoi darci un feedback?
+https://twitter.com/@AntennaPod
+
+Transifex è il posto dove puoi contribuire alla traduzione di AntennaPod:<br>
+https://www.transifex.com/antennapod/antennapod
+
+Dai un'occhiata al nostro programma di Beta Testing per avere accesso in anticipo alle nuove features:<br>
+https://www.github.com/AntennaPod/AntennaPod/wiki/Help-test-AntennaPod \ No newline at end of file
diff --git a/app/src/main/play/listings/it-IT/short-description.txt b/app/src/main/play/listings/it-IT/short-description.txt
new file mode 100644
index 000000000..a3c6e1c33
--- /dev/null
+++ b/app/src/main/play/listings/it-IT/short-description.txt
@@ -0,0 +1 @@
+Riproduttore e gestore di podcast facile da usare, flessibile e open source. \ No newline at end of file
diff --git a/app/src/main/play/ja-JP/listing/fulldescription b/app/src/main/play/listings/ja-JP/full-description.txt
index b85f6787e..b85f6787e 100644
--- a/app/src/main/play/ja-JP/listing/fulldescription
+++ b/app/src/main/play/listings/ja-JP/full-description.txt
diff --git a/app/src/main/play/ja-JP/listing/shortdescription b/app/src/main/play/listings/ja-JP/short-description.txt
index 6872efb2b..8a8011bb1 100644
--- a/app/src/main/play/ja-JP/listing/shortdescription
+++ b/app/src/main/play/listings/ja-JP/short-description.txt
@@ -1 +1 @@
-使いやすくて柔軟な、オープンソース ポッドキャスト マネージャー/プレイヤーです。 \ No newline at end of file
+使いやすくて柔軟な、オープンソース ポッドキャスト マネージャー/プレイヤー \ No newline at end of file
diff --git a/app/src/main/play/nl-NL/listing/fulldescription b/app/src/main/play/listings/nl-NL/full-description.txt
index 736a3f3a5..6c6ef1e8a 100644
--- a/app/src/main/play/nl-NL/listing/fulldescription
+++ b/app/src/main/play/listings/nl-NL/full-description.txt
@@ -1,4 +1,4 @@
-Met AntennaPod speel en beheer je al je podcasts en krijg je directe toegang tot duizenden gratis en betaalde podcasts - van onafhankelijke makers tot grote merken zoals BBC, CNN en NPO. Via de iTunes database, OPML-bestanden en simpele RSS-linkjes voeg je deze podcasts makkelijk toe. Dankzij simpele maar slimme automatische controle van het downloaden en verwijderen van afleveringen spaar je je batterij, hoef je je favoriete podcast niet meer handmatig te volgen en verbruik je geen onnodig mobiele data.<br>
+Met AntennaPod speel en beheer je al je podcasts en krijg je directe toegang tot duizenden gratis en betaalde podcasts - van onafhankelijke makers tot grote merken zoals BBC, CNN en NPO. Via de iTunes-databank, OPML-bestanden en simpele RSS-linkjes voeg je deze podcasts gemakkelijk toe. Dankzij simpele maar slimme automatische controle van het downloaden en verwijderen van afleveringen bespaar je de accu, hoef je je favoriete podcast niet meer handmatig te volgen en verbruik je geen onnodige mobiele gegevens.<br>
Maar belangrijker: Met een handige wachtrij, aanpasbare afspeelsnelheden, ondersteuning van hoofdstukken en een slaap timer luister je naar podcasts op de manier die jij prettig vindt. Je kunt zelfs je liefde voor de makers uiten met onze Flattr-integratie.
Gemaakt door podcast-enthousiastelingen, AntennaPod is vrij in de breedste zin van het woord: vrij van advertenties, open source en gratis.
diff --git a/app/src/main/play/nl-NL/listing/shortdescription b/app/src/main/play/listings/nl-NL/short-description.txt
index 31c66d634..31c66d634 100644
--- a/app/src/main/play/nl-NL/listing/shortdescription
+++ b/app/src/main/play/listings/nl-NL/short-description.txt
diff --git a/app/src/main/play/listings/zh-CN/short-description.txt b/app/src/main/play/listings/zh-CN/short-description.txt
new file mode 100644
index 000000000..ab28b4df7
--- /dev/null
+++ b/app/src/main/play/listings/zh-CN/short-description.txt
@@ -0,0 +1 @@
+简单易用、灵活的开源播客管理工具与播放器 \ No newline at end of file
diff --git a/app/src/main/play/lt/listing/fulldescription b/app/src/main/play/lt/listing/fulldescription
deleted file mode 100644
index c25bce143..000000000
--- a/app/src/main/play/lt/listing/fulldescription
+++ /dev/null
@@ -1,43 +0,0 @@
-„AntennaPod“ yra tinklalaidžių tvarkytuvė ir leistuvė, įgalinanti prieigą prie milijonų tinklalaidžių, nuo nepriklausomų kūrėjų iki didžiųjų leidyklų, tokių kaip „BBC“, „NPR“ ir „CNN“. Be vargo pridėkite, importuokite ir eksportuokite sklaidos kanalus naudodamiesi „iTunes“ tinklalaidžių duomenų baze, OPML failais ar RSS kanalais. Taupykite laiką, baterijos energiją ir mobilius duomenis naudodami galingas automatinio atsiuntimo priemones (nurodykite atsiuntimo metą, laiko intervalą ir belaidžius tinklus) ir ištrindami epizodus (remiantis mėgiamųjų sąrašu ir laikymo nustatymais).<br>
-Bet svarbiausia: atsisiųskite, klausykitės iš karto ar dėkite epizodus į eilę ir mėgaukitės jais pasirinkę atkūrimo spartą, naudodamiesi skyrių palaikymu bei miego laikmačiu. Be to, galite išreikšti savo meilę turinio kūrėjams naudodamiesi „Flattr“ integracija.
-
-Sukurtas tinklalaidžių entuziasto, „AntennaPod“ yra laisvas visomis prasmėmis: atvirojo kodo, be mokesčių, be reklamų.
-
-<b>Visos funkcijos:</b><br>
-IMPORTUOKITE, TVARKYKITE BEI KLAUSYKITĖS<br>
-&#8226; Pridėkite ar importuokite sklaidos kanalus iš „iTunes“ ir „gPodder.net“, OPML failų, RSS ar Atom nuorodų<br>
-&#8226; Valdykite atkūrimą bet kur: pradžios ekrane, programų pranešimuose, ausinių ar „Bluetooth“ valdikliu<br>
-&#8226; Mėgaukitės klausydamiesi taip, kaip Jums patinka, naudodamiesi derinama atkūrimo sparta, skyrių palaikymu (MP3, „VorbisComment“ ir „Podlove“), išsaugota atkūrimo pozicija ir miego laikmačiu (mažinamas garsis bei lėtinama atkūrimo sparta, pakračius nustatomas iš naujo)<br>
-&#8226; Pasiekite slaptažodžiu apsaugotus sklaidos kanalus ir epizodus<br>
-&#8226; Išnaudokite puslapiuotus sklaidos kanalus (www.podlove.org/paged-feeds)
-
-STEBĖKITE, DALINKITĖS IR MĖGAUKITĖS<br>
-&#8226; Kaupkite geriausius pažymėję epizodą kaip mėgstamą<br>
-&#8226; Raskite norimą epizodą pasinaudoję atkūrimo istorija ir paieška (pavadinimuose ir laidų užrašuose)<br>
-&#8226; Dalinkitės epizodais ir sklaidos kanalais per socialinius tinklus, el. paštu, „gPodder.net“ ir OPML failus<br>
-&#8226; Remkite turinio kūrėjus pasinaudoję „Flattr“ integracija
-
-VALDYKITE SISTEMĄ<br>
-&#8226; Valdykite automatinį atsiuntimą: pasirinkite sklaidos kanalus, neleiskite atsiuntimų mobiliuoju ryšiu, apibrėžkite leistinus belaidžius tinklus, reikalaukite, jog atsiuntimai būtų vykdomi įkrovos metu, nurodykite atsiuntimų dienos metą ar intervalą<br>
-&#8226; Valdykite laikmenos naudojimą nurodant podėlyje laikomų epizodų kiekį, išmanų trynimą (remiantis atkūrimo būsena ir mėgiamųjų sąrašu), saugojimo vietą<br>
-&#8226; Naudokitės „AntennaPod“ savo kalba (EN, DE, CS, NL, NB, JA, PT, ES, SV, CA, UK, FR, KO, TR, ZH, LT)<br>
-&#8226; Pritaikykite savo aplinkai pasirinkę šviesią ar tamsią temą<br>
-&#8226; Kurkite prenumeratų atsargines kopijas „gPodder.net“ ar OPML failais
-
-<b>Prisijunkite prie AntennaPod bendruomenės!</b><br>
-„AntennaPod“ vysto savanoriai. Ir Jūs galite prisidėti, nuo atsiliepimų iki programinio kodo!
-
-Per „GitHub“ galite pageidauti naujų funkcijų, pranešti apie riktą ar prisidėti programiniu kodu:<br>
-https://www.github.com/AntennaPod/AntennaPod
-
-„Google“ grupėje galite dalintis idėjomis, mėgstamais tinklalaidžių sklaidos momentais ar padėkoti savanoriams:<br>
-https://groups.google.com/forum/#!forum/antennapod
-
-Turite klausimų ar atsiliepimų?
-https://twitter.com/@AntennaPod
-
-Prie vertimų galite prisidėti per „Transifex“:<br>
-https://www.transifex.com/antennapod/antennapod
-
-Jei norite pirmieji gauti naujas funkcijas, išbandykite Beta Testavimo programą:<br>
-https://www.github.com/AntennaPod/AntennaPod/wiki/Help-test-AntennaPod \ No newline at end of file
diff --git a/app/src/main/play/lt/listing/shortdescription b/app/src/main/play/lt/listing/shortdescription
deleted file mode 100644
index 0a0752647..000000000
--- a/app/src/main/play/lt/listing/shortdescription
+++ /dev/null
@@ -1 +0,0 @@
-Patogi naudoti, lanksti atvirojo kodo tinklalaidžių tvarkytuvė bei leistuvė \ No newline at end of file
diff --git a/app/src/main/play/nl-NL/listing/title b/app/src/main/play/nl-NL/listing/title
deleted file mode 100644
index 6c7c64cfc..000000000
--- a/app/src/main/play/nl-NL/listing/title
+++ /dev/null
@@ -1 +0,0 @@
-AntennaPod
diff --git a/app/src/main/play/pl-PL/listing/fulldescription b/app/src/main/play/pl-PL/listing/fulldescription
deleted file mode 100644
index 28e75d3cc..000000000
--- a/app/src/main/play/pl-PL/listing/fulldescription
+++ /dev/null
@@ -1,43 +0,0 @@
-AntennaPod jest programem katalogującym i odtwarzającym który daje możliwość natychmiastowego dostępu do milionów darmowych i płatnych podcastów. Od niezależych twórców po wielkich producentów takich jak BBC, NPR czy CNN. Dodawaj, importuj, eksportuj wątki bez przeszkód używając bazy iTunes, plików OPML czy po prostu przez linki RSS. Oszczędź wysiłek, baterię oraz pakiety danych mobilnych poprzez zaawansowaną kontrolę automatycznego pobierania (określone godziny, interwały czy sieci WiFi) oraz inteligentne usuwanie odcinków ( na podstawie ulubionych i ustawień opóźnień).<br>
-Najważniejsze: pobieraj , streamuj lub kolejkuj odcinki oraz rozkoszuj się nimi jak tylko chcesz z możliwością zmiany prędkości odtwarzania, wsparciem rozdziałów i wyłącznikiem czasowym. Możesz nawet pokazać jak bardzo doceniach twórców dzięki integracji z Flattr.
-
-Stworzone przez entuzjastów podcastów, AntennaPod jest darmowe w każdym słowa znaczeniu: otwarty kod, brak opłat i reklam.
-
-<b>Wszystkie funkcje:</b><br>
-ZAIMPORTUJ, ZORGANIZUJ I ODTWARZAJ<br>
-&#8226; Dodawaj i importuj kanały poprzez iTunes, gPodder.net, z plików OPML, RSS i linków Atom<br>
-&#8226; Zarządzaj odtwarzaniem zewsząd: widget na ekranie głównym, powiadomienia systemowe i kontrolery bluetooth<br>
-&#8226; Delektuj się słuchaniem po swojemu z: zmienną prędkością odtwarzania, wsparciem rozdziałów (MP3, VorbisComment i Podlove), zapamiętywaniem miejsca zakończenia słuchania i zaawansowanym wyłącznikiem czasowym (potrząśnij aby zrestartować, zmiejszanie głośności i zwalnianie odtwarzania) <br>
-&#8226; Dostęp do odcinków i kanałów chroniony hasłem<br>
-&#8226; Wykorzystaj zapisane kanały (www.podlove.org/paged-feeds)
-
-ŚLEDŹ, DZIEL SIĘ I DOCENIAJ<br>
-&#8226; Zapamiętywanie najlepszych z najlepszych poprzez dodawania odcinków do ulubionych<br>
-&#8226; Wyszukiwanie odcinów w historii odtwarzania lub poprzez tytuł/przypisy<br>
-&#8226; Dzial się odcinkami i wątkami poprzez zaawansowane opcje medii społecznych oraz emaila, serwisu gPodder.net lub poprzez eksport do OPML<br>
-&#8226; Wsparcie twórców poprzez integrację z Flattr, również poprzez automatyczne flattr-owanie
-
-Kontroluj system<br>
-&#8226; Ustaw automatyczne pobieranie zgodnie z własnymi preferencjami: wybieranie wątków, pobieranie tylko przez WiFi, wybór określonych sieci WiFi, wymaganie ładowania przy pobieraniu oraz ustawienie harmonogramu i interwałów<br>
-&#8226; Zarządanie pamięcią poprzez ustawienia liczby pobranych odcinków z pomocą inteligentnego kasowania( na podstawie ulubionych i statusu odtwarzania) oraz wyboru lokalizacji<br>
-&#8226; Używaj AntennaPod w swoim języku (EN, DE, CS, NL, NB, JA, PT, ES, SV, CA, UK, FR, KO, TR, ZH)<br>
-&#8226; Dostosowanie wyglądu jasną i ciemną skórką<br>
-&#8226; Twórz kopie bezpieczeństwa swoich subskrypcji z pomocą zintegrowanego gPoddder.net oraz plików OPML
-
-<b>Dołącz do społeczności AntennaPod</b><br>
-AntennaPod jest ciągle rozwijane przez ochotników. Ty też możesz pomóc, kodem lub komentarzem!
-
-Sugestie ulepszeń, raporty błędów oraz dodatki do kodu prosimy kierować poprzez GitHub<br>
-https://www.github.com/AntennaPod/AntennaPod
-
-Nasza grupa Google jest miejsce do dzielenia się pomysłami, ulubionymi momentami podcastów oraz miejscem gdzie można podziękować ochotnikom za ich pracę:<br>
-https://groups.google.com/forum/#!forum/antennapod
-
-Masz pytanie lub chcesz przekazać nam swoją opinię ?
-https://twitter.com/@AntennaPod
-
-Pomoc w tłumaczeniach na Transifex:<br>
-https://www.transifex.com/antennapod/antennapod
-
-Jeśli chcesz otrzymywać najnowsze ulepszenia wcześniej niż inni rozważ dołączenie do programu beta testów:<br>
-https://www.github.com/AntennaPod/AntennaPod/wiki/Help-test-AntennaPod
diff --git a/app/src/main/play/pl-PL/listing/shortdescription b/app/src/main/play/pl-PL/listing/shortdescription
deleted file mode 100644
index 4eceefbb7..000000000
--- a/app/src/main/play/pl-PL/listing/shortdescription
+++ /dev/null
@@ -1 +0,0 @@
-Easy-to-use, flexible and open-source podcast manager and player \ No newline at end of file
diff --git a/app/src/main/play/pl-PL/listing/title b/app/src/main/play/pl-PL/listing/title
deleted file mode 100644
index 6c7c64cfc..000000000
--- a/app/src/main/play/pl-PL/listing/title
+++ /dev/null
@@ -1 +0,0 @@
-AntennaPod
diff --git a/app/src/main/play/pt-BR/listing/fulldescription b/app/src/main/play/pt-BR/listing/fulldescription
deleted file mode 100644
index e40d3f450..000000000
--- a/app/src/main/play/pt-BR/listing/fulldescription
+++ /dev/null
@@ -1,43 +0,0 @@
-AntennaPod é um gerenciador e reprodutor de <i>podcasts</i> que te dá acesso instantâneo a milhões de <i>podcasts</i> gratuitos e pagos, desde <i>podcasters</i> independentes até grandes editores como BBC, NPR e CNN. Adicione, importe e exporte seus <i>feeds</i> sem complicações utilizando a base de dados do iTunes, arquivos OPML ou simples URLs RSS. Economize esforços, bateria e uso de dados móveis com poderosos controles de automação para baixar episódios (especifique horários, intervalos e redes WiFi) e excluir episódios (baseado nos seus favoritos e configurações de adiamento).<br>
-Mas o mais importante: Baixe, realize <i>streaming</i> ou enfilere episódios e desfrute deles da maneira que quiser com velocidades de reprodução ajustáveis, suporte para capítulos e cronômetro. Você pode até mostrar o seu apreço aos criadores de conteúdo com a integração com o Flattr.
-
-Desenvolvido por fãs de podcasts, AntennaPod é livre em todos os sentidos da palavra; <i>open source</i>, sem custos, sem propagandas.
-
-<b>Recursos disponíveis:</b><br>
-IMPORTE, ORGANIZE E TOQUE <br>
-&#8226; Adicione and importe feeds pelo iTunes e diretorios gPodder.net, arquivos OPML e links RSS ou Atom<br>
-&#8226; Gerencie suas reproduções de qualquer lugar: widget da tela inicial, notificações de sistema e fone de ouvido e controles bluetooth<br>
-&#8226; Ouça do seu jeito com velocidade de reprodução ajustável, suporte a capítulos (MP3, VorbisComment e Podlove), marcador da posição de reprodução e um despertador avançado (chacoalhe para reiniciar, volume reduzido e reprodução desacelerada)<br>
-&#8226; Acesse feeds e episódios protegidos por senha
-&#8226; Faça uso de <i>feeds</i> paginados (www.podlove.org/paged-feeds)
-
-MANTENHA-SE ATUALIZADO, COMPARTILHE E APRECIE<br>
-&#8226; Guarde o melhor do melhor marcando episódios como favoritos<br>
-&#8226; Encontre aquele episódio específico através do histórico de execução ou pelo sistema de busca (através de títulos e anotações)<br>
-&#8226; Compartilhe episódios e <i>feeds</i> através de opções em redes sociais, email, os serviços da gPodder.net e exportação OPML<br>
-&#8226; Apoie os criadores de conteúdo com a integração com o Flattr
-
-CONTROLE O SISTEMA
-&#8226; Tenha controle sobre a automação dos <i>downloads</i>: escolha <i>feeds</i>, exclua redes móveis, selecione redes específicas de WiFi, exija que o telefone esteja sendo carregado e defina horários ou intervalos<br>
-&#8226; Gerencie o armazenamento configurando a quantidade de episódios em cache, exclusão inteligente dos episódios (baseada nos seus favoritos e status de reprodução)<br>
-&#8226; Use o AntennaPod no seu idioma (EN, DE, CS, NL, NB, JA, PT, ES, SV, CA, UK, FR, KO, TR, ZH)<br>
-&#8226; Adapte-se ao ambiente utilizando os temas claro ou escuro<br>
-&#8226; Faça <i>backup</i> das suas inscrições com a integração ao gPodder.net e exportação de OPML
-
-<b>Junte-se à comunidade AntennaPod!</b><br>
-O AntennaPod está sob constante desenvolvimento através de voluntários. Você também pode contribuir, com código ou um comentário!
-
-Vá ao GitHub para solicitar funcionalidades, reportar bugs e contribuir com código:<br>
-https://www.github.com/AntennaPod/AntennaPod
-
-Nosso grupo no Google é o lugar para compartilhar suas idéias, momentos de podcasts favoritos e agradecer aos voluntários:<br>
-https://groups.google.com/forum/#!forum/antennapod
-
-Tem uma dúvida ou um comentário?
-https://twitter.com/@AntennaPod
-
-Transifex é o lugar para ajudar com as traduções:<br>
-https://www.transifex.com/antennapod/antennapod
-
-Cheque nosso programa de beta testing para receber as atualizações mais recentes primeiro:<br>
-https://www.github.com/AntennaPod/AntennaPod/wiki/Help-test-AntennaPod \ No newline at end of file
diff --git a/app/src/main/play/pt-BR/listing/shortdescription b/app/src/main/play/pt-BR/listing/shortdescription
deleted file mode 100644
index 849436827..000000000
--- a/app/src/main/play/pt-BR/listing/shortdescription
+++ /dev/null
@@ -1 +0,0 @@
-Um gestor de podcasts de código livre para Android. \ No newline at end of file
diff --git a/app/src/main/play/pt-BR/listing/title b/app/src/main/play/pt-BR/listing/title
deleted file mode 100644
index 6c7c64cfc..000000000
--- a/app/src/main/play/pt-BR/listing/title
+++ /dev/null
@@ -1 +0,0 @@
-AntennaPod
diff --git a/app/src/main/play/pt-PT/listing/shortdescription b/app/src/main/play/pt-PT/listing/shortdescription
deleted file mode 100644
index 849436827..000000000
--- a/app/src/main/play/pt-PT/listing/shortdescription
+++ /dev/null
@@ -1 +0,0 @@
-Um gestor de podcasts de código livre para Android. \ No newline at end of file
diff --git a/app/src/main/play/pt-PT/listing/title b/app/src/main/play/pt-PT/listing/title
deleted file mode 100644
index 6c7c64cfc..000000000
--- a/app/src/main/play/pt-PT/listing/title
+++ /dev/null
@@ -1 +0,0 @@
-AntennaPod
diff --git a/app/src/main/play/release-notes/en-US/default.txt b/app/src/main/play/release-notes/en-US/default.txt
new file mode 100644
index 000000000..611598679
--- /dev/null
+++ b/app/src/main/play/release-notes/en-US/default.txt
@@ -0,0 +1,5 @@
+- Added configurable behavior of the back button
+- Added delete option to episode's context menu
+- New UI for batch edit feature
+- Set number of columns in subscription list
+- Lots of bug fixes
diff --git a/app/src/main/play/ro/listing/fulldescription b/app/src/main/play/ro/listing/fulldescription
deleted file mode 100644
index 7fdbfa355..000000000
--- a/app/src/main/play/ro/listing/fulldescription
+++ /dev/null
@@ -1,20 +0,0 @@
-AntennaPod este un podcast manager open-source pentru Android 2.3.3 sau mai nou. Oferă toate funcțiile de bază la care vă așteptați de la un podcatcher, precum streaming și descărcare de episoade, actualizarea tuturor feedurilor automat sau adăugarea lor la o coadă pentru a le asculta mai târziu. De asemenea, AntennaPod vă permite să flattr podcasturi și episoade direct din aplicație.
-
-So far the following features are implemented:
-
-* Descărcarea și Streamingul episoadelor
-* Variable speed playback (requires Presto Sound Library or Prestissimo)
-* Suport pentru feeduri Atom și RSS
-* Support for password-protected feeds and episodes
-* Support for searching iTunes listings
-* Import și export OPML
-* Flattr integration including automatic flattring
-* Widget player
-* Căutare
-* Update automat de feeduri
-* Descărcare automată a episoadelor noi
-* Cronometru somn
-* Access to the gpodder.net podcast directory
-* Subscription syncing with the gpodder.net service
-* Supports MP3 chapters, VorbisComment chapters and Podlove Simple Chapters
-* Supports paged feeds (http://podlove.org/paged-feeds/) \ No newline at end of file
diff --git a/app/src/main/play/ro/listing/shortdescription b/app/src/main/play/ro/listing/shortdescription
deleted file mode 100644
index 7afb5a62d..000000000
--- a/app/src/main/play/ro/listing/shortdescription
+++ /dev/null
@@ -1 +0,0 @@
-Easy-to-use, flexible and open-source podcast & radio manager and player \ No newline at end of file
diff --git a/app/src/main/play/ro/listing/title b/app/src/main/play/ro/listing/title
deleted file mode 100644
index 6c7c64cfc..000000000
--- a/app/src/main/play/ro/listing/title
+++ /dev/null
@@ -1 +0,0 @@
-AntennaPod
diff --git a/app/src/main/play/ru-RU/listing/fulldescription b/app/src/main/play/ru-RU/listing/fulldescription
deleted file mode 100644
index 9b68a06c0..000000000
--- a/app/src/main/play/ru-RU/listing/fulldescription
+++ /dev/null
@@ -1,43 +0,0 @@
-AntennaPod — менеджер и проигрыватель подкастов, который обеспечит Вас мгновенным доступом к миллионам бесплатных и платных подкастов, как от независимых подкастеров, так и крупных издательских домов, например, BBC, NPR и CNN. С лёгкостью добавляйте, импортируйте и экспортируйте их каналы используя каталог подкастов iTunes, файлы OPML или адреса каналов RSS. Сберегите усилия, заряд батареи и мобильный трафик при помощи мощных средств автоматизации загрузки выпусков (фильтрация, указание времени и интервалов, а также сетей WiFi) и их удаления (в соответствии с настройками избранного и ожидания).<br>
-Но самое главное: Загружайте, слушайте с эфира или ставьте в очередь и получайте удовольствие от их прослушивания применяя регулируемую скорость воспроизведения, оглавления и таймер сна. Вы даже можете выразить свою благодарность создателям аудио посредством интеграции с Flattr.
-
-Созданное поклонниками подкастов, AntennaPod — бесплатное и свободное приложение без рекламы и платежей.
-
-<b>Все возможности:</b><br>
-Импортируйте, систематизируйте и прослушивайте<br>
-&#8226; Добавление и импорт каналов через каталоги iTunes и gPodder.net, файлы OPML и ссылки на каналы RSS или Atom<br>
-&#8226; Всевозможное управление воспроизведением: виджетом, системным уведомлением и кнопками проводных и беспроводных гарнитур<br>
-&#8226; Приятное, по вашему вкусу, прослушивание применяя регулировку скорости воспроизведения, оглавления (MP3, VorbisComment и Podlove), запоминание места воспроизведения и продвинутый таймер сна (сброс при встряхивание, снижение громкости и замедление воспроизведения)<br>
-&#8226; Доступ к каналам и выпускам защищенным паролем<br>
-&#8226; Использует преимущества постраничных лент (www.podlove.org/paged-feeds)
-
-Отслеживайте, делитесь и благодарите<br>
-&#8226; Отслеживайте лучших из лучших, помещая выпуски в избранное<br>
-&#8226; Поиск того самого выпуска в истории воспроизведения или по контексту (заголовки и заметки к выпуску)<br>
-&#8226; Разнообразные возможности поделиться выпусками и каналами через социальные службы и e-mail, услуги gPodder.net и экспорт в OPML<br>
-&#8226; Поддержка создателей аудио при помощи интеграции с Flattr, в том числе и автоматически
-
-Управляйте системой<br>
-&#8226; Управление автоматической загрузкой: выбор отдельных каналов, отбор выпусков на основе ключевых слов, запрет на использование мобильных сетей, выбор отдельных точек доступа WiFi, только во время зарядки телефона и задание времени и интервалов<br>
-&#8226; Управление хранением путём задания количества выпусков в кэше, автоудаление (на основании настроек избранного и статуса прослушивания) и выбор предпочитаемого расположения<br>
-&#8226; AntennaPod на родном Вам языке (EN, DE, CS, NL, NB, JA, PT, ES, SV, CA, UK, FR, KO, TR, ZH, RU)<br>
-&#8226; Приспосабливается к Вашему окружению посредством светлой или тёмной темы<br>
-&#8226; Резервирование Ваших подписок путём интеграции с gPodder.net и экпорта в OPML
-
-<b>Присоединяйтесь к сообществу AntennaPod!</b><br>
-AntennaPod постоянно развивается силами добровольцев. Вы тоже можете сделать свой вклад при помощи кода или комментария!
-
-Посещайте GitHub для запроса новых возможностей, уведомления об ошибках и внесения кода:<br>
-https://www.github.com/AntennaPod/AntennaPod
-
-Поделитесь идеями, любимыми мгновениями прослушивания и благодарностью со всеми добровольцами из нашей группы Google:<br>
-https://groups.google.com/forum/#!forum/antennapod
-
-Появились вопросы и обратная связь?
-https://twitter.com/@AntennaPod
-
-Помогайте с переводом приложения на Transifex:<br>
-https://www.transifex.com/antennapod/antennapod
-
-Попробуйте себя в программе Бета тестирования и получите доступ к распоследним возможностям в числе первых:<br>
-https://www.github.com/AntennaPod/AntennaPod/wiki/Help-test-AntennaPod \ No newline at end of file
diff --git a/app/src/main/play/ru-RU/listing/shortdescription b/app/src/main/play/ru-RU/listing/shortdescription
deleted file mode 100644
index 64e181e6b..000000000
--- a/app/src/main/play/ru-RU/listing/shortdescription
+++ /dev/null
@@ -1 +0,0 @@
-Менеджер подкастов для Android с открытым исходным кодом \ No newline at end of file
diff --git a/app/src/main/play/ru-RU/listing/title b/app/src/main/play/ru-RU/listing/title
deleted file mode 100644
index 6c7c64cfc..000000000
--- a/app/src/main/play/ru-RU/listing/title
+++ /dev/null
@@ -1 +0,0 @@
-AntennaPod
diff --git a/app/src/main/play/sv-SE/listing/fulldescription b/app/src/main/play/sv-SE/listing/fulldescription
deleted file mode 100644
index 84b7d9681..000000000
--- a/app/src/main/play/sv-SE/listing/fulldescription
+++ /dev/null
@@ -1,43 +0,0 @@
-AntennaPod är en podcasthanterare och spelare som ger dig omedelbar tillgång till millioner av gratis och betalda podcasts, allt ifrån oberoende podcasters till publiceringsjättar som BBC, NPR och CNN. Lägg till, importera och exportera enkelt deras flöden med hjälp av iTunes podcastdatabas, OPML filer eller enkla RSS URL:er. Spara tid, batterikraft och mobildata med kraftfull automatisering för nedladdning (specifiera tider, intervall och WiFi-nätverk) och borttagning av episoder (baserat på dina favoriter och fördröjningsinställningar).<br>
-Men viktigast: Ladda ner, strömma eller köa episoder och avnjut dem på ditt sätt med justerbar uppspelningshastighet, kapitelstöd och en sovtimer. Du kan till och med visa din uppskattning av innehållsskaparna med vår integrering av Flattr.
-
-Gjord av podcastenthusiaster, AntennaPod är fri i alla ordets bemärkelser: öppen källkod, inga kostnader, ingen reklam.
-
-<b>Alla funktioner:</b><br>
-IMPORTERA, ORGANISERA OCH SPELA<br>
-&#8226; Lägg till och importera flöden via iTunes och gPodder.net, OPML filer och RSS eller Atom länkar<br>
-&#8226; Hantera uppspelningen från vartsomhelst: hemskärmswidget, aviseringsfältet och hörlurs/bluetoth-kontroller<br>
-&#8226; Njut av att lyssna på ditt sätt med justerbar uppspelningshastighet, kapitelstöd (MP4, VorbisComment och Podlove), ihågkommen uppspelningsposition och en avancerad sömntimer (skaka för återställaning, sänk volymen och sänk hastigheten)<br>
-&#8226; Kom åt lösenordsskyddade flöden och episoder<br>
-&#8226; Dra nytta av siduppdelade flöden (www.podlove.ord/paged-feeds)
-
-SPÅRA, DELA & UPPSKATTA<br>
-&#8226; Håll ordning på de bästa av de bästa med favoritmarkering av episoder<br>
-&#8226; Hitta just den där episoden i uppspelningshistoriken eller genom sökning (titel och shownotes)<br>
-&#8226; Dela episoder och flöden med avancerade vald för social media och och email, tjänsten gPodder.net och via OPML export<br>
-&#8226; Stöd innehållsskaparna via integrering av Flattr och automatisk flattring
-
-KONTROLLERA SYSTEMET<br>
-&#8226; Ta kontroll över automatisk nedladdning: välj flöden, exkludera mobilnätverk, välj specifika WiFi nätverk, kräv att telefonen är inkopplad för laddning och sätt tider eller intervall för körning<br>
-&#8226; Hantera lagringsutrymme genom att välja antalet cachade episoder, smart borttagning (baserat på dina favoriter och uppspelningsstatus) och välj den lagringsplats du föredrar<br>
-&#8226; Använd AntennaPod på ditt språk (EN, DE, CS, NL, NB, JA, PT, ES, SV, CA, UK, FR, KO, TR, ZH)<br>
-&#8226; Anpassa till din omgivning med det ljusa och mörka temat<br>
-&#8226; Ta backup av dina prenumerationer med integreringen av gPodder.net och OPML exportering
-
-<b>Gå med i AntennaPods gemenskap!</b><br>
-AntennaPod är under aktiv utveckling av volontärer. Du kan också bidra, med kod eller kommentarer!
-
-GitHub är platsen att gå till för att be om funktioner, skapa buggrapporter eller bidra med kod:<br>
-https://www.github.com/AntennaPod/AntennaPod
-
-Vår Google Group är platsen för att dela idéer, dina favoritögonblick med podcasting och din uppskattning till volontärerna:<br>
-https://groups.google.com/forum/#!forum/antennapod
-
-Har du frågor eller vill ge feedback?
-https://twitter.com/@AntennaPod
-
-Transifex är platsen att gå till för att hjälpa till med översättningen:<br>
-https://www.transifex.com/antennapod/antennapod
-
-Kolla in vårat Beta Testing program för att få de senaste funktionerna först:<br>
-https://www.github.com/AntennaPod/AntennaPod/wiki/Help-test-AntennaPod \ No newline at end of file
diff --git a/app/src/main/play/sv-SE/listing/shortdescription b/app/src/main/play/sv-SE/listing/shortdescription
deleted file mode 100644
index 26b3b106a..000000000
--- a/app/src/main/play/sv-SE/listing/shortdescription
+++ /dev/null
@@ -1 +0,0 @@
-Användarvänlig, flexibel podcasthanterare och spelare med öppen källkod \ No newline at end of file
diff --git a/app/src/main/play/sv-SE/listing/title b/app/src/main/play/sv-SE/listing/title
deleted file mode 100644
index 6c7c64cfc..000000000
--- a/app/src/main/play/sv-SE/listing/title
+++ /dev/null
@@ -1 +0,0 @@
-AntennaPod
diff --git a/app/src/main/play/tr-TR/listing/fulldescription b/app/src/main/play/tr-TR/listing/fulldescription
deleted file mode 100644
index 90bda48af..000000000
--- a/app/src/main/play/tr-TR/listing/fulldescription
+++ /dev/null
@@ -1,43 +0,0 @@
-AntennaPod is a podcast manager and player that gives you instant access to millions of free and paid podcasts, from independent podcasters to large publishing houses such as the BBC, NPR and CNN. Add, import and export their feeds hassle-free using the iTunes podcast database, OPML files or simple RSS URLs. Save effort, battery power and mobile data usage with powerful automation controls for downloading episodes (specify times, intervals and WiFi networks) and deleting episodes (based your favourites and delay settings).<br>
-But most importantly: Download, stream or queue episodes and enjoy them the way you like with adjustable playback speeds, chapter support and a sleep timer. You can even show your love to the content creators with our Flattr integration.
-
-Made by podcast-enthousiast, AntennaPod is free in all senses of the word: open source, no costs, no ads.
-
-<b>Tüm özellikler:</b><br>
-IMPORT, ORGANIZE AND PLAY<br>
-&#8226; Add and import feeds via the iTunes and gPodder.net directories, OPML files and RSS or Atom links<br>
-&#8226; Manage playback from anywhere: homescreen widget, system notification and earplug and bluetooth controls<br>
-&#8226; Enjoy listening your way with adjustable playback speed, chapter support (MP3, VorbisComment and Podlove), remembered playback position and an advanced sleep timer (shake to reset, lower volume and slow down playback)<br>
-&#8226; Access password-protected feeds and episodes<br>
-&#8226; Take advantage of paged feeds (www.podlove.org/paged-feeds)
-
-KEEP TRACK, SHARE & APPRECIATE<br>
-&#8226; Keep track of the best of the best by marking episodes as favourites<br>
-&#8226; Find that one episode through the playback history or by searching (titles and shownotes)<br>
-&#8226; Share episodes and feeds through advanced social media and email options, the gPodder.net services and via OPML export<br>
-&#8226; Support content creators with Flattr integration including automatic flattring
-
-SİSTEMİ KONTROL ET<br>
-&#8226; Take control over automated downloading: choose feeds, exclude mobile networks, select specific WiFi networks, require the phone to be charging and set times or intervals<br>
-&#8226; Manage storage by setting the amount of cached episodes, smart deletion (based on your favourites and play status) and selecting your preferred location<br>
-&#8226; AntennaPod'u kendi dilinizde kullanın (EN, DE, CS, NL, NB, JA, PT, ES, SV, CA, UK, FR, KO, TR, ZH)<br>
-&#8226; Adapt to your environment using the light and dark theme<br>
-&#8226; Back-up your subscriptions with the gPodder.net integration and OPML export
-
-<b>AntennaPod topluluğuna katılın!</b><br>
-AntennaPod is under active development by volunteers. You can contribute too, with code or with comment!
-
-GitHub is the place to go for feature requests, bug reports and code contributions:<br>
-https://www.github.com/AntennaPod/AntennaPod
-
-Our Google Group is the place to share your ideas, favourite podcasting moments and gratitude to all the volunteers:<br>
-https://groups.google.com/forum/#!forum/antennapod
-
-Bir sorunuz mu var veya bize geri bildirim bırakmak mı istiyorsunuz?
-https://twitter.com/@AntennaPod
-
-Tercümelere yardım etmenin yeri Transifex:<br>
-https://www.transifex.com/antennapod/antennapod
-
-En son özellikleri ilk önce almak isterseniz Beta Testing programımıza katılın:<br>
-https://www.github.com/AntennaPod/AntennaPod/wiki/Help-test-AntennaPod \ No newline at end of file
diff --git a/app/src/main/play/tr-TR/listing/shortdescription b/app/src/main/play/tr-TR/listing/shortdescription
deleted file mode 100644
index 979342e23..000000000
--- a/app/src/main/play/tr-TR/listing/shortdescription
+++ /dev/null
@@ -1 +0,0 @@
-Android için açık kaynaklı cepyayını yöneticisi \ No newline at end of file
diff --git a/app/src/main/play/tr-TR/listing/title b/app/src/main/play/tr-TR/listing/title
deleted file mode 100644
index 6c7c64cfc..000000000
--- a/app/src/main/play/tr-TR/listing/title
+++ /dev/null
@@ -1 +0,0 @@
-AntennaPod
diff --git a/app/src/main/play/uk/listing/fulldescription b/app/src/main/play/uk/listing/fulldescription
deleted file mode 100644
index 877483033..000000000
--- a/app/src/main/play/uk/listing/fulldescription
+++ /dev/null
@@ -1,40 +0,0 @@
-AntennaPod це менеджер подкастів та плейер що дає доступ до мільйонів безкоштовних та комерційних подкастів від незалежних подкастерів та великих корпорацій таких як BBC, NPR та CNN. Є можливість додавати, імпортувати та експортувати канали за допомогою бази даних подкастів iTunes, файлів OPML або простих посилань на RSS. Зберігайте зусилля, живлення та мобільний трафік за допомогою автоматичного завантаження епізодів (зазначивши час, інтервали та мережі WiFi) та видалення епізодів (з урахуванням ваших побажань та налаштувань).<br>
-Але найважливіше: завантажуйте, слухайте або додавайте до черги епізоди так, як вам подобається з налаштуванням швидкості програвання, підтримкою розділів та таймера сну. Можливо навіть фінансово заохочувати авторів за допомогою інтергації з сервісом Flattr.
-
-Зроблений ентузіастом подкастів, AntennaPod є вільним в усіх сенсах цього слова: відкриті вихідні тексти, безкоштовний, без реклами.
-
-<b>Всі можливості:</b><br>
-ІМПОРТУЙТЕ, ВПОРЯДКОВУЙТЕ ТА СЛУХАЙТЕ<br>
-&#8226; Додавайте та імпортуйте канали з каталогів iTunes та gPodder.net, файлів OPML та з посилань на RSS або Atom<br>
-&#8226; Керуйте програванням будь-де: з віджета, нотифікації, кнопками навушників або через блютус<br>
-&#8226; Слухайте так як вам подобається з налаштуванням швидкості програвання, підтримкой розділів (в форматах MP3, VorbisComment та Podlove), зберіганням момента програвання та таймером сну (перезапуск струсом, зниження гучності та уповільнення програвання)<br>
-&#8226; Доступ до каналів та епізодів що захищені паролем<br>
-&#8226; Використовуйте посторінкові канали (www.podlove.org/paged-feeds)
-
-ВІДСТЕЖУЙТЕ, ДІЛІТЬСЯ ТА ОЦІНЮЙТЕ<br>
-&#8226; Зберігайте найкраще в улюблених епізодах<br>
-&#8226; Відшукайте той самий епізод в історії програвання або пошуком (в назвах і нотатках)<br>
-&#8226; Діліться епізодами та каналами за допомогою соцмереж та пошти, сервісів gPodder.net та через експорт OPML файлів<br>
-&#8226; Підтримуйте авторів за допомогою інтегрованого сервіса Flattr з можливістю автоматичной підтримки
-
-КЕРУЙТЕ СИСТЕМОЙ<br>
-&#8226; Керуйте автоматичним завантаженням: вибирайте канали, мобільні мережі, мережі WiFi, завантажуйте тільки під час зарядки або у встановлений час і інтервали<br>
-&#8226; Керуйте збереженням, встановлюйте ліміт на кеш епізодів, налагоджуйте розумне видалення (з урахуванням улюблених епізодів і статуса програвання) та вибирайте місце зберігання<br>
-&#8226; Користуйтесь AntennaPod вашою мовою (EN, DE, CS, NL, NB, JA, PT, ES, SV, CA, UK, FR, KO, TR, ZH)<br>
-&#8226; Пристосовуйтесь до ваших умов, користуйтесь світлой або темной темами<br>
-&#8226; Зберігайте ваші підписки на gPodder.net або експортуйте в файл OPML
-
-<b>Долучайтесь до спільноти AntennaPod!</b><br>
-AntennaPod швидко розвивається волонтерами. Ви також маєте змогу допомогти, кодом або зауваженнями!
-
-Долучитись до проекта, повідомити про ваші побажання та про помилки можна на GitHub:<br>
-www.github.com/AntennaPod/AntennaPod
-
-В нашій групі на Google можна поділитись ідеями, улюбленими моментами з подкастінга та добрими побажаннями волонтерам:<br>
-https://groups.google.com/forum/#!forum/antennapod
-
-Допомагайте з перекладом на Transifex:<br>
-www.transifex.com/antennapod/antennapod
-
-Зверніть увагу на нашу програму для бета тестування якщо бажаєте получати найновіші версії в першу чергу:<br>
-www.github.com/AntennaPod/AntennaPod/wiki/Help-test-AntennaPod \ No newline at end of file
diff --git a/app/src/main/play/uk/listing/shortdescription b/app/src/main/play/uk/listing/shortdescription
deleted file mode 100644
index a5636500d..000000000
--- a/app/src/main/play/uk/listing/shortdescription
+++ /dev/null
@@ -1 +0,0 @@
-Легкий у використанні, гнучкий плеєр і менеджер подкастів з відкритим кодом. \ No newline at end of file
diff --git a/app/src/main/play/uk/listing/title b/app/src/main/play/uk/listing/title
deleted file mode 100644
index 6c7c64cfc..000000000
--- a/app/src/main/play/uk/listing/title
+++ /dev/null
@@ -1 +0,0 @@
-AntennaPod
diff --git a/app/src/main/play/vi/listing/fulldescription b/app/src/main/play/vi/listing/fulldescription
deleted file mode 100644
index 9519b5da1..000000000
--- a/app/src/main/play/vi/listing/fulldescription
+++ /dev/null
@@ -1,43 +0,0 @@
-AntennaPod is a podcast manager and player that gives you instant access to millions of free and paid podcasts, from independent podcasters to large publishing houses such as the BBC, NPR and CNN. Add, import and export their feeds hassle-free using the iTunes podcast database, OPML files or simple RSS URLs. Save effort, battery power and mobile data usage with powerful automation controls for downloading episodes (specify times, intervals and WiFi networks) and deleting episodes (based your favourites and delay settings).<br>
-But most importantly: Download, stream or queue episodes and enjoy them the way you like with adjustable playback speeds, chapter support and a sleep timer. You can even show your love to the content creators with our Flattr integration.
-
-Made by podcast-enthousiast, AntennaPod is free in all senses of the word: open source, no costs, no ads.
-
-Mọi tính năng:
-IMPORT, ORGANIZE AND PLAY<br>
-&#8226; Add and import feeds via the iTunes and gPodder.net directories, OPML files and RSS or Atom links<br>
-&#8226; Manage playback from anywhere: homescreen widget, system notification and earplug and bluetooth controls<br>
-&#8226; Enjoy listening your way with adjustable playback speed, chapter support (MP3, VorbisComment and Podlove), remembered playback position and an advanced sleep timer (shake to reset, lower volume and slow down playback)<br>
-&#8226; Access password-protected feeds and episodes<br>
-&#8226; Take advantage of paged feeds (www.podlove.org/paged-feeds)
-
-KEEP TRACK, SHARE & APPRECIATE<br>
-&#8226; Keep track of the best of the best by marking episodes as favourites<br>
-&#8226; Find that one episode through the playback history or by searching (titles and shownotes)<br>
-&#8226; Share episodes and feeds through advanced social media and email options, the gPodder.net services and via OPML export<br>
-&#8226; Support content creators with Flattr integration including automatic flattring
-
-ĐIỀU KHIỂN HỆ THỐNG
-&#8226; Take control over automated downloading: choose feeds, exclude mobile networks, select specific WiFi networks, require the phone to be charging and set times or intervals<br>
-&#8226; Manage storage by setting the amount of cached episodes, smart deletion (based on your favourites and play status) and selecting your preferred location<br>
-&#8226; Use AntennaPod in your language (EN, DE, CS, NL, NB, JA, PT, ES, SV, CA, UK, FR, KO, TR, ZH)<br>
-&#8226; Adapt to your environment using the light and dark theme<br>
-&#8226; Back-up your subscriptions with the gPodder.net integration and OPML export
-
-Tham gia cộng đồng AntennaPod!
-AntennaPod is under active development by volunteers. You can contribute too, with code or with comment!
-
-GitHub is the place to go for feature requests, bug reports and code contributions:<br>
-https://www.github.com/AntennaPod/AntennaPod
-
-Our Google Group is the place to share your ideas, favourite podcasting moments and gratitude to all the volunteers:<br>
-https://groups.google.com/forum/#!forum/antennapod
-
-Có một thắc mắc hay muốn phản hồi cho chúng tôi?
-https://twitter.com/@AntennaPod
-
-Transifex is the place to help with translations:<br>
-https://www.transifex.com/antennapod/antennapod
-
-Check out our Beta Testing programme to get the latest features first:<br>
-https://www.github.com/AntennaPod/AntennaPod/wiki/Help-test-AntennaPod \ No newline at end of file
diff --git a/app/src/main/play/vi/listing/shortdescription b/app/src/main/play/vi/listing/shortdescription
deleted file mode 100644
index 7afb5a62d..000000000
--- a/app/src/main/play/vi/listing/shortdescription
+++ /dev/null
@@ -1 +0,0 @@
-Easy-to-use, flexible and open-source podcast & radio manager and player \ No newline at end of file
diff --git a/app/src/main/play/vi/listing/title b/app/src/main/play/vi/listing/title
deleted file mode 100644
index 6c7c64cfc..000000000
--- a/app/src/main/play/vi/listing/title
+++ /dev/null
@@ -1 +0,0 @@
-AntennaPod
diff --git a/app/src/main/play/zh-CN/listing/fulldescription b/app/src/main/play/zh-CN/listing/fulldescription
deleted file mode 100644
index 6f2a6209e..000000000
--- a/app/src/main/play/zh-CN/listing/fulldescription
+++ /dev/null
@@ -1,43 +0,0 @@
-AntennaPod 是播客管理和播放工具,使得你即刻收听到数百万来自从个人播客制作者到类似BBC、NPR和CNN等大型出版机构的免费或付费播客。通过 iTunes 数据库、OPML 文件或简单的 RSS 地址,你可以自由地添加、导入和导出播客订阅流。通过指定次数、间隔时间和 WIFI 网络的下载以及基于个人喜好和延迟删除的设置,功能强大的智能控制做到了省力、省电和省流量。<br>
-但最重要的在于,你可以选择下载、串流或加入队列等方式收听节目,并使用调节回放速度、章节跳转和定时睡眠的辅助功能。你甚至可以通过 Flattr 集成功能向内容创作者表达你衷心的感谢。
-
-AntennaPod 是一个由播客爱好者开发,在多种意义下“自由”的软件——开源、免费并且没有广告。
-
-<b>特性包括:</b><br>
-导入,组织和播放<br>
-&#8226; 通过 iTunes,gPodder.net,OPML文件,RSS或Atom链接添加和导入订阅
-&#8226; Manage playback from anywhere: homescreen widget, system notification and earplug and bluetooth controls<br>
-&#8226; Enjoy listening your way with adjustable playback speed, chapter support (MP3, VorbisComment and Podlove), remembered playback position and an advanced sleep timer (shake to reset, lower volume and slow down playback)<br>
-&#8226; Access password-protected feeds and episodes<br>
-&#8226; Take advantage of paged feeds (www.podlove.org/paged-feeds)
-
-KEEP TRACK, SHARE & APPRECIATE<br>
-&#8226; Keep track of the best of the best by marking episodes as favourites<br>
-&#8226; Find that one episode through the playback history or by searching (titles and shownotes)<br>
-&#8226; Share episodes and feeds through advanced social media and email options, the gPodder.net services and via OPML export<br>
-&#8226; Support content creators with Flattr integration including automatic flattring
-
-CONTROL THE SYSTEM<br>
-&#8226; Take control over automated downloading: choose feeds, exclude mobile networks, select specific WiFi networks, require the phone to be charging and set times or intervals<br>
-&#8226; Manage storage by setting the amount of cached episodes, smart deletion (based on your favourites and play status) and selecting your preferred location<br>
-&#8226; Use AntennaPod in your language (EN, DE, CS, NL, NB, JA, PT, ES, SV, CA, UK, FR, KO, TR, ZH)<br>
-&#8226; Adapt to your environment using the light and dark theme<br>
-&#8226; Back-up your subscriptions with the gPodder.net integration and OPML export
-
-<b>Join the AntennaPod community!</b><br>
-AntennaPod is under active development by volunteers. You can contribute too, with code or with comment!
-
-GitHub is the place to go for feature requests, bug reports and code contributions:<br>
-https://www.github.com/AntennaPod/AntennaPod
-
-Our Google Group is the place to share your ideas, favourite podcasting moments and gratitude to all the volunteers:<br>
-https://groups.google.com/forum/#!forum/antennapod
-
-Have a question or want to give us feedback?
-https://twitter.com/@AntennaPod
-
-Transifex is the place to help with translations:<br>
-https://www.transifex.com/antennapod/antennapod
-
-Check out our Beta Testing programme to get the latest features first:<br>
-https://www.github.com/AntennaPod/AntennaPod/wiki/Help-test-AntennaPod \ No newline at end of file
diff --git a/app/src/main/play/zh-CN/listing/shortdescription b/app/src/main/play/zh-CN/listing/shortdescription
deleted file mode 100644
index 4eceefbb7..000000000
--- a/app/src/main/play/zh-CN/listing/shortdescription
+++ /dev/null
@@ -1 +0,0 @@
-Easy-to-use, flexible and open-source podcast manager and player \ No newline at end of file
diff --git a/app/src/main/play/zh-CN/listing/title b/app/src/main/play/zh-CN/listing/title
deleted file mode 100644
index 6c7c64cfc..000000000
--- a/app/src/main/play/zh-CN/listing/title
+++ /dev/null
@@ -1 +0,0 @@
-AntennaPod
diff --git a/app/src/main/res/layout/all_episodes_fragment.xml b/app/src/main/res/layout/all_episodes_fragment.xml
index 099216007..89f900a1f 100644
--- a/app/src/main/res/layout/all_episodes_fragment.xml
+++ b/app/src/main/res/layout/all_episodes_fragment.xml
@@ -17,10 +17,6 @@
tools:itemCount="13"
tools:listitem="@layout/new_episodes_listitem" />
- <include
- android:id="@+id/emptyView"
- layout="@layout/empty_view_layout"/>
-
<ProgressBar
android:id="@+id/progLoading"
android:layout_width="wrap_content"
diff --git a/app/src/main/res/layout/cover_fragment.xml b/app/src/main/res/layout/cover_fragment.xml
index b1e93a195..fec7be26c 100644
--- a/app/src/main/res/layout/cover_fragment.xml
+++ b/app/src/main/res/layout/cover_fragment.xml
@@ -1,70 +1,43 @@
<?xml version="1.0" encoding="utf-8"?>
-
-<android.support.percent.PercentRelativeLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
- android:layout_height="match_parent">
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:padding="8dp">
+
+ <TextView
+ android:id="@+id/txtvPodcastTitle"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_weight="0.25"
+ android:ellipsize="end"
+ android:gravity="center"
+ android:maxLines="2"
+ android:textColor="?android:attr/textColorSecondary"
+ android:textIsSelectable="true"
+ tools:text="Podcast" />
<ImageView
android:id="@+id/imgvCover"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:layout_centerInParent="true"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_weight="0.5"
android:contentDescription="@string/cover_label"
android:scaleType="fitCenter"
- app:layout_aspectRatio="100%"
- app:layout_widthPercent="82%"
android:transitionName="coverTransition"
tools:src="@android:drawable/sym_def_app_icon" />
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:gravity="center"
- android:orientation="vertical"
- android:layout_above="@id/imgvCover">
-
- <TextView
- android:id="@+id/txtvPodcastTitle"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginLeft="8dp"
- android:layout_marginRight="8dp"
- android:layout_marginStart="8dp"
- android:layout_marginEnd="8dp"
- android:gravity="center"
- android:maxLines="2"
- android:ellipsize="end"
- android:text="Podcast"
- android:textIsSelectable="true"
- android:textColor="?android:attr/textColorSecondary" />
-
- </LinearLayout>
-
- <LinearLayout
+ <TextView
+ android:id="@+id/txtvEpisodeTitle"
android:layout_width="match_parent"
- android:layout_height="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_weight="0.25"
+ android:ellipsize="end"
android:gravity="center"
- android:orientation="vertical"
- android:layout_below="@id/imgvCover">
-
- <TextView
- android:id="@+id/txtvEpisodeTitle"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginLeft="8dp"
- android:layout_marginRight="8dp"
- android:layout_marginStart="8dp"
- android:layout_marginEnd="8dp"
- android:gravity="center"
- android:maxLines="2"
- android:ellipsize="end"
- android:text="Episode"
- android:textIsSelectable="true"
- android:textColor="?android:attr/textColorPrimary" />
-
- </LinearLayout>
+ android:maxLines="2"
+ android:textColor="?android:attr/textColorPrimary"
+ android:textIsSelectable="true"
+ tools:text="Episode" />
-</android.support.percent.PercentRelativeLayout>
+</LinearLayout>
diff --git a/app/src/main/res/layout/empty_view_layout.xml b/app/src/main/res/layout/empty_view_layout.xml
index 051773e51..84b171af0 100644
--- a/app/src/main/res/layout/empty_view_layout.xml
+++ b/app/src/main/res/layout/empty_view_layout.xml
@@ -4,6 +4,7 @@
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
+ android:layout_centerInParent="true"
xmlns:tools="http://schemas.android.com/tools">
<TextView
diff --git a/app/src/main/res/layout/nav_feedlistitem.xml b/app/src/main/res/layout/nav_feedlistitem.xml
index 73d07bc57..816870d1c 100644
--- a/app/src/main/res/layout/nav_feedlistitem.xml
+++ b/app/src/main/res/layout/nav_feedlistitem.xml
@@ -5,6 +5,10 @@
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="@dimen/listitem_iconwithtext_height"
+ android:paddingLeft="@dimen/listitem_icon_leftpadding"
+ android:paddingStart="@dimen/listitem_icon_leftpadding"
+ android:paddingRight="@dimen/listitem_icon_rightpadding"
+ android:paddingEnd="@dimen/listitem_icon_rightpadding"
tools:background="@android:color/darker_gray"
android:foreground="?attr/selectableItemBackground">
@@ -21,8 +25,6 @@
android:scaleType="centerCrop"
android:layout_marginTop="4dp"
android:layout_marginBottom="4dp"
- android:layout_marginLeft="@dimen/listitem_icon_leftpadding"
- android:layout_marginStart="@dimen/listitem_icon_leftpadding"
tools:src="@drawable/ic_stat_antenna_default"
tools:background="@android:color/holo_green_dark"/>
@@ -32,8 +34,6 @@
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/list_vertical_padding"
android:layout_marginStart="@dimen/list_vertical_padding"
- android:layout_marginRight="@dimen/listitem_icon_rightpadding"
- android:layout_marginEnd="@dimen/listitem_icon_rightpadding"
android:lines="1"
android:textColor="?android:attr/textColorTertiary"
android:textSize="@dimen/text_size_navdrawer"
@@ -80,5 +80,4 @@
tools:text="Navigation feed item title"
tools:background="@android:color/holo_green_dark"/>
-
</RelativeLayout>
diff --git a/app/src/main/res/layout/queue_fragment.xml b/app/src/main/res/layout/queue_fragment.xml
index cf00f2b1b..85b0df58c 100644
--- a/app/src/main/res/layout/queue_fragment.xml
+++ b/app/src/main/res/layout/queue_fragment.xml
@@ -27,10 +27,6 @@
android:layout_below="@id/divider"
android:scrollbars="vertical"/>
- <include
- android:id="@+id/emptyView"
- layout="@layout/empty_view_layout"/>
-
<ProgressBar
android:id="@+id/progLoading"
android:layout_width="wrap_content"
diff --git a/app/src/main/res/menu/subscriptions.xml b/app/src/main/res/menu/subscriptions.xml
new file mode 100644
index 000000000..f39e0ac97
--- /dev/null
+++ b/app/src/main/res/menu/subscriptions.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:custom="http://schemas.android.com/apk/res-auto">
+
+ <item
+ android:id="@+id/subscription_num_columns"
+ android:title="@string/subscription_num_columns"
+ custom:showAsAction="never">
+ <menu>
+ <item
+ android:id="@+id/subscription_num_columns_2"
+ android:checkable="true"
+ android:title="2"/>
+ <item
+ android:id="@+id/subscription_num_columns_3"
+ android:checkable="true"
+ android:title="3"/>
+ <item
+ android:id="@+id/subscription_num_columns_4"
+ android:checkable="true"
+ android:title="4"/>
+ <item
+ android:id="@+id/subscription_num_columns_5"
+ android:checkable="true"
+ android:title="5"/>
+ </menu>
+ </item>
+</menu>
diff --git a/contributers.template.py b/contributers.template.py
index 0f4d78698..4492fae79 100755
--- a/contributers.template.py
+++ b/contributers.template.py
@@ -1,9 +1,17 @@
#!/usr/bin/env python3
import requests
import subprocess
+import configparser
+import os
-TRANSIFEX_USER = ""
-TRANSIFEX_PW = ""
+config = configparser.ConfigParser()
+config.read(os.path.expanduser("~") + '/.transifexrc')
+if 'https://www.transifex.com' in config:
+ TRANSIFEX_USER = config['https://www.transifex.com']['username']
+ TRANSIFEX_PW = config['https://www.transifex.com']['password']
+else:
+ TRANSIFEX_USER = ""
+ TRANSIFEX_PW = ""
print('DEVELOPERS\n==========\n')
p = subprocess.Popen("git log --format='%aN' --no-merges "
diff --git a/core/build.gradle b/core/build.gradle
index 33259c84c..af6bb1203 100644
--- a/core/build.gradle
+++ b/core/build.gradle
@@ -44,7 +44,6 @@ dependencies {
implementation "com.android.support:support-v4:$supportVersion"
implementation "com.android.support:appcompat-v7:$supportVersion"
implementation "com.android.support:preference-v14:$supportVersion"
- implementation "com.android.support:percent:$supportVersion"
implementation "org.apache.commons:commons-lang3:$commonslangVersion"
implementation "org.apache.commons:commons-text:$commonstextVersion"
implementation ("org.shredzone.flattr4j:flattr4j-core:$flattr4jVersion") {
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 54f4faaee..787d465d8 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
@@ -152,7 +152,7 @@ public class DownloadService extends Service {
}
}
- private final Thread downloadCompletionThread = new Thread() {
+ private final Thread downloadCompletionThread = new Thread("DownloadCompletionThread") {
private static final String TAG = "downloadCompletionThd";
@Override
@@ -594,6 +594,9 @@ public class DownloadService extends Service {
private static final long WAIT_TIMEOUT = 3000;
+ FeedSyncThread() {
+ super("FeedSyncThread");
+ }
/**
* Waits for completed requests. Once the first request has been taken, the method will wait WAIT_TIMEOUT ms longer to
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 649082f6e..7988526d9 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
@@ -55,10 +55,12 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
* Some asynchronous calls might change the state of the MediaPlayer object. Therefore calls in other threads
* have to wait until these operations have finished.
*/
- private final ReentrantLock playerLock;
- private CountDownLatch seekLatch;
-
+ private final PlayerLock playerLock;
private final PlayerExecutor executor;
+ private boolean useCallerThread = true;
+
+
+ private CountDownLatch seekLatch;
/**
* All ExoPlayer methods must be executed on the same thread.
@@ -68,7 +70,6 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
* Other players are still executed in a background thread.
*/
private class PlayerExecutor {
- private boolean useCallerThread = true;
private ThreadPoolExecutor threadPool;
public Future<?> submit(Runnable r) {
@@ -85,11 +86,56 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
}
}
+ /**
+ * All ExoPlayer methods must be executed on the same thread.
+ * We use the main application thread. This class allows to
+ * "fake" a lock that does nothing. A lock is not needed if
+ * everything is called on the same thread.
+ * Other players are still executed in a background thread and
+ * therefore use a real lock.
+ */
+ private class PlayerLock {
+ private ReentrantLock lock = new ReentrantLock();
+
+ public void lock() {
+ if (!useCallerThread) {
+ lock.lock();
+ }
+ }
+
+ public boolean tryLock(int i, TimeUnit milliseconds) throws InterruptedException {
+ if (!useCallerThread) {
+ return lock.tryLock(i, milliseconds);
+ }
+ return true;
+ }
+
+ public boolean tryLock() {
+ if (!useCallerThread) {
+ return lock.tryLock();
+ }
+ return true;
+ }
+
+ public void unlock() {
+ if (!useCallerThread) {
+ lock.unlock();
+ }
+ }
+
+ public boolean isHeldByCurrentThread() {
+ if (!useCallerThread) {
+ return lock.isHeldByCurrentThread();
+ }
+ return true;
+ }
+ }
+
public LocalPSMP(@NonNull Context context,
@NonNull PSMPCallback callback) {
super(context, callback);
this.audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
- this.playerLock = new ReentrantLock();
+ this.playerLock = new PlayerLock();
this.startWhenPrepared = new AtomicBoolean(false);
executor = new PlayerExecutor();
@@ -132,7 +178,7 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
@Override
public void playMediaObject(@NonNull final Playable playable, final boolean stream, final boolean startWhenPrepared, final boolean prepareImmediately) {
Log.d(TAG, "playMediaObject(...)");
- executor.useCallerThread = UserPreferences.useExoplayer();
+ useCallerThread = UserPreferences.useExoplayer();
executor.submit(() -> {
playerLock.lock();
try {
@@ -400,7 +446,7 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
*/
@Override
public void reinit() {
- executor.useCallerThread = UserPreferences.useExoplayer();
+ useCallerThread = UserPreferences.useExoplayer();
executor.submit(() -> {
playerLock.lock();
Log.d(TAG, "reinit()");
@@ -850,7 +896,7 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
@Override
protected Future<?> endPlayback(final boolean hasEnded, final boolean wasSkipped,
final boolean shouldContinue, final boolean toStoppedState) {
- executor.useCallerThread = UserPreferences.useExoplayer();
+ useCallerThread = UserPreferences.useExoplayer();
return executor.submit(() -> {
playerLock.lock();
releaseWifiLockIfNecessary();
@@ -1042,11 +1088,12 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
mp -> genericSeekCompleteListener();
private void genericSeekCompleteListener() {
+ Log.d(TAG, "genericSeekCompleteListener");
+ if (seekLatch != null) {
+ seekLatch.countDown();
+ }
+
Runnable r = () -> {
- Log.d(TAG, "genericSeekCompleteListener");
- if(seekLatch != null) {
- seekLatch.countDown();
- }
playerLock.lock();
if (playerStatus == PlayerStatus.PLAYING) {
callback.onPlaybackStart(media, getPosition());
@@ -1057,10 +1104,10 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
playerLock.unlock();
};
- if (executor.useCallerThread) {
+ if (useCallerThread) {
r.run();
} else {
- new Thread(r).start();
+ executor.submit(r);
}
}
}
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 ac3c3dfd8..d4be0013f 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
@@ -25,7 +25,6 @@ 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;
@@ -76,11 +75,6 @@ import org.greenrobot.eventbus.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 {
/**
@@ -95,7 +89,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
/**
* True if cast session should disconnect.
*/
- private static final String EXTRA_CAST_DISCONNECT = "extra.de.danoeh.antennapod.core.service.castDisconnect";
+ public static final String EXTRA_CAST_DISCONNECT = "extra.de.danoeh.antennapod.core.service.castDisconnect";
/**
* True if media should be streamed.
*/
@@ -199,6 +193,10 @@ 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;
@@ -266,6 +264,9 @@ public class PlaybackService extends MediaBrowserServiceCompat {
Log.d(TAG, "Service created.");
isRunning = true;
+ PlaybackServiceNotificationBuilder notificationBuilder = new PlaybackServiceNotificationBuilder(this);
+ startForeground(NOTIFICATION_ID, notificationBuilder.build());
+
registerReceiver(autoStateUpdated, new IntentFilter("com.google.android.gms.car.media.STATUS"));
registerReceiver(headsetDisconnected, new IntentFilter(Intent.ACTION_HEADSET_PLUG));
registerReceiver(shutdownReceiver, new IntentFilter(ACTION_SHUTDOWN_PLAYBACK_SERVICE));
@@ -319,30 +320,13 @@ public class PlaybackService extends MediaBrowserServiceCompat {
EventBus.getDefault().post(new ServiceEvent(ServiceEvent.Action.SERVICE_STARTED));
}
- private NotificationCompat.Builder createBasicNotification() {
- final int smallIcon = ClientConfig.playbackServiceCallbacks.getNotificationIconResource(getApplicationContext());
-
- final PendingIntent pIntent = PendingIntent.getActivity(this, 0,
- PlaybackService.getPlayerActivityIntent(this),
- PendingIntent.FLAG_UPDATE_CURRENT);
-
- return new NotificationCompat.Builder(
- this, NotificationUtils.CHANNEL_ID_PLAYING)
- .setContentTitle(getString(R.string.app_name))
- .setContentText("Service is running") // Just in case the notification is not updated (should not occur)
- .setOngoing(false)
- .setContentIntent(pIntent)
- .setWhen(0) // we don't need the time
- .setSmallIcon(smallIcon)
- .setPriority(NotificationCompat.PRIORITY_MIN);
- }
-
@Override
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)
@@ -364,6 +348,11 @@ public class PlaybackService extends MediaBrowserServiceCompat {
taskManager.shutdown();
}
+ private void stopService() {
+ stopForeground(true);
+ stopSelf();
+ }
+
@Override
public BrowserRoot onGetRoot(@NonNull String clientPackageName, int clientUid, Bundle rootHints) {
Log.d(TAG, "OnGetRoot: clientPackageName=" + clientPackageName +
@@ -421,7 +410,10 @@ public class PlaybackService extends MediaBrowserServiceCompat {
// Child List
try {
for (FeedItem feedItem : taskManager.getQueue()) {
- mediaItems.add(feedItem.getMedia().getMediaItem());
+ FeedMedia media = feedItem.getMedia();
+ if (media != null) {
+ mediaItems.add(media.getMediaItem());
+ }
}
} catch (InterruptedException e) {
e.printStackTrace();
@@ -457,32 +449,39 @@ 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) {
- // 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.");
+ Log.e(TAG, "PlaybackService was started with no arguments");
+ stopService();
return Service.START_NOT_STICKY;
}
- 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());
+ 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");
+ boolean handled = handleKeycode(keycode, true);
+ if (!handled) {
+ stopService();
+ return Service.START_NOT_STICKY;
+ }
+ } 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);
+ } else {
+ Log.d(TAG, "Did not handle intent to PlaybackService: " + intent);
+ Log.d(TAG, "Extras: " + intent.getExtras());
}
- mediaPlayer.playMediaObject(playable, stream, startWhenPrepared, prepareImmediately);
}
return Service.START_NOT_STICKY;
@@ -556,23 +555,12 @@ 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);
- } else {
- serviceManager.showUIForStopState();
+ started = false;
}
+
+ stopForeground(true); // gets rid of persistent notification
return true;
default:
Log.d(TAG, "Unhandled key code: " + keycode);
@@ -588,6 +576,7 @@ 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);
}
}
@@ -602,9 +591,10 @@ public class PlaybackService extends MediaBrowserServiceCompat {
}
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() {
@@ -667,15 +657,27 @@ 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:
//writePlaybackPreferencesNoMediaPlaying();
+ //stopService();
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()) {
@@ -686,6 +688,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
case ERROR:
writePlaybackPreferencesNoMediaPlaying();
+ stopService();
break;
}
@@ -698,7 +701,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
@Override
public void shouldStop() {
- serviceManager.stopService();
+ stopService();
}
@Override
@@ -747,6 +750,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
}
sendNotificationBroadcast(NOTIFICATION_TYPE_ERROR, what);
writePlaybackPreferencesNoMediaPlaying();
+ stopService();
return true;
}
@@ -830,6 +834,9 @@ public class PlaybackService extends MediaBrowserServiceCompat {
if (stopPlaying) {
taskManager.cancelPositionSaver();
writePlaybackPreferencesNoMediaPlaying();
+ if (!isCasting) {
+ stopForeground(true);
+ }
}
if (mediaType == null) {
sendNotificationBroadcast(NOTIFICATION_TYPE_PLAYBACK_END, 0);
@@ -1043,7 +1050,6 @@ 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) {
@@ -1107,9 +1113,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
flavorHelper.mediaSessionSetExtraForWear(mediaSession);
- final PlaybackStateCompat sessionStateBuilt = sessionState.build();
- mediaSession.setPlaybackState(sessionStateBuilt);
- serviceManager.onPlaybackStateChange(sessionStateBuilt);
+ mediaSession.setPlaybackState(sessionState.build());
}
private static boolean useSkipToPreviousForRewindInLockscreen() {
@@ -1163,7 +1167,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
builder.putString(MediaMetadataCompat.METADATA_KEY_DISPLAY_ICON_URI, imageLocation);
}
}
- if (!Thread.currentThread().isInterrupted() && isStarted()) {
+ if (!Thread.currentThread().isInterrupted() && started) {
mediaSession.setSessionActivity(PendingIntent.getActivity(this, 0,
PlaybackService.getPlayerActivityIntent(this),
PendingIntent.FLAG_UPDATE_CURRENT));
@@ -1186,190 +1190,69 @@ public class PlaybackService extends MediaBrowserServiceCompat {
*/
private Thread notificationSetupThread;
- private synchronized void setupNotification(final Playable playable, boolean treatPauseAsStop) {
+ /**
+ * 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) {
if (notificationSetupThread != null) {
notificationSetupThread.interrupt();
}
if (playable == null) {
- Log.d(TAG, "setupNotification: playable is null");
- if (!isStarted()) {
- serviceManager.stopService();
+ Log.d(TAG, "setupNotification: playable is null" + Log.getStackTraceString(new Exception()));
+ if (!started) {
+ stopService();
}
return;
}
Runnable notificationSetupTask = new Runnable() {
- Bitmap icon = null;
-
@Override
public void run() {
- Log.d(TAG, "notificationSetupTask: Starting background work");
+ Log.d(TAG, "Starting background work");
if (mediaPlayer == null) {
Log.d(TAG, "notificationSetupTask: mediaPlayer is null");
- if (!isStarted()) {
- serviceManager.stopService();
+ if (!started) {
+ 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()));
- }
-
PlayerStatus playerStatus = mediaPlayer.getPlayerStatus();
- Log.v(TAG, "notificationSetupTask: playerStatus=" + playerStatus);
-
- if (!Thread.currentThread().isInterrupted() && isStarted()) {
- String contentText = playable.getEpisodeTitle();
- String contentTitle = playable.getFeedTitle();
- Notification notification;
-
- // Builder is v7, even if some not overwritten methods return its parent's v4 interface
- NotificationCompat.Builder notificationBuilder = createBasicNotification();
- notificationBuilder.setContentTitle(contentTitle)
- .setContentText(contentText)
- .setPriority(UserPreferences.getNotifyPriority())
- .setLargeIcon(icon); // set notification priority
- IntList compactActionList = new IntList();
-
- int numActions = 0; // we start and 0 and then increment by 1 for each call to addAction
-
- if (isCasting) {
- Intent stopCastingIntent = new Intent(PlaybackService.this, PlaybackService.class);
- stopCastingIntent.putExtra(EXTRA_CAST_DISCONNECT, true);
- PendingIntent stopCastingPendingIntent = PendingIntent.getService(PlaybackService.this,
- numActions, stopCastingIntent, PendingIntent.FLAG_UPDATE_CURRENT);
- notificationBuilder.addAction(R.drawable.ic_media_cast_disconnect,
- getString(R.string.cast_disconnect_label),
- stopCastingPendingIntent);
- numActions++;
- }
-
- // always let them rewind
- PendingIntent rewindButtonPendingIntent = getPendingIntentForMediaAction(
- KeyEvent.KEYCODE_MEDIA_REWIND, numActions);
- notificationBuilder.addAction(android.R.drawable.ic_media_rew,
- getString(R.string.rewind_label),
- rewindButtonPendingIntent);
- if (UserPreferences.showRewindOnCompactNotification()) {
- compactActionList.add(numActions);
- }
- numActions++;
-
- if (playerStatus == PlayerStatus.PLAYING) {
- PendingIntent pauseButtonPendingIntent = getPendingIntentForMediaAction(
- KeyEvent.KEYCODE_MEDIA_PAUSE, numActions);
- notificationBuilder.addAction(android.R.drawable.ic_media_pause, //pause action
- getString(R.string.pause_label),
- pauseButtonPendingIntent);
- compactActionList.add(numActions++);
- } else {
- PendingIntent playButtonPendingIntent = getPendingIntentForMediaAction(
- KeyEvent.KEYCODE_MEDIA_PLAY, numActions);
- notificationBuilder.addAction(android.R.drawable.ic_media_play, //play action
- getString(R.string.play_label),
- playButtonPendingIntent);
- compactActionList.add(numActions++);
- }
-
- // ff follows play, then we have skip (if it's present)
- PendingIntent ffButtonPendingIntent = getPendingIntentForMediaAction(
- KeyEvent.KEYCODE_MEDIA_FAST_FORWARD, numActions);
- notificationBuilder.addAction(android.R.drawable.ic_media_ff,
- getString(R.string.fast_forward_label),
- ffButtonPendingIntent);
- if (UserPreferences.showFastForwardOnCompactNotification()) {
- compactActionList.add(numActions);
- }
- numActions++;
-
- if (UserPreferences.isFollowQueue()) {
- PendingIntent skipButtonPendingIntent = getPendingIntentForMediaAction(
- KeyEvent.KEYCODE_MEDIA_NEXT, numActions);
- notificationBuilder.addAction(android.R.drawable.ic_media_next,
- getString(R.string.skip_episode_label),
- skipButtonPendingIntent);
- if (UserPreferences.showSkipOnCompactNotification()) {
- compactActionList.add(numActions);
- }
- numActions++;
- }
-
- PendingIntent stopButtonPendingIntent = getPendingIntentForMediaAction(
- KeyEvent.KEYCODE_MEDIA_STOP, numActions);
- notificationBuilder.setStyle(new android.support.v4.media.app.NotificationCompat.MediaStyle()
- .setMediaSession(mediaSession.getSessionToken())
- .setShowActionsInCompactView(compactActionList.toArray())
- .setShowCancelButton(true)
- .setCancelButtonIntent(stopButtonPendingIntent))
- .setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
- .setColor(NotificationCompat.COLOR_DEFAULT);
+ PlaybackServiceNotificationBuilder notificationBuilder =
+ new PlaybackServiceNotificationBuilder(PlaybackService.this);
+ notificationBuilder.addMetadata(playable, mediaSession.getSessionToken(), playerStatus, isCasting);
+
+ if (!notificationBuilder.isIconCached(playable)) {
+ // To make sure that the notification is shown instantly
+ notificationBuilder.loadDefaultIcon();
+ startForeground(NOTIFICATION_ID, notificationBuilder.build());
+ }
+ notificationBuilder.loadIcon(playable);
- notification = notificationBuilder.build();
+ if (!Thread.currentThread().isInterrupted() && started) {
+ Notification notification = notificationBuilder.build();
if (playerStatus == PlayerStatus.PLAYING ||
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 {
- leaveNotificationAsBackground(notification);
+ stopForeground(false);
+ NotificationManager mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
+ mNotificationManager.notify(NOTIFICATION_ID, 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();
}
- private PendingIntent getPendingIntentForMediaAction(int keycodeValue, int requestCode) {
- Intent intent = new Intent(
- PlaybackService.this, PlaybackService.class);
- intent.putExtra(
- MediaButtonReceiver.EXTRA_KEYCODE,
- keycodeValue);
- return PendingIntent
- .getService(PlaybackService.this, requestCode,
- intent,
- PendingIntent.FLAG_UPDATE_CURRENT);
- }
-
/**
* Persists the current position and last played time of the media file.
*
@@ -1547,7 +1430,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
@Override
public void onReceive(Context context, Intent intent) {
if (TextUtils.equals(intent.getAction(), ACTION_SHUTDOWN_PLAYBACK_SERVICE)) {
- serviceManager.stopService();
+ stopService();
}
}
@@ -1845,6 +1728,8 @@ 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);
@@ -1884,6 +1769,24 @@ 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;
}
@@ -1898,116 +1801,4 @@ 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/PlaybackServiceNotificationBuilder.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceNotificationBuilder.java
new file mode 100644
index 000000000..9a1e8e7ef
--- /dev/null
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceNotificationBuilder.java
@@ -0,0 +1,184 @@
+package de.danoeh.antennapod.core.service.playback;
+
+import android.app.PendingIntent;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.support.annotation.NonNull;
+import android.support.v4.app.NotificationCompat;
+import android.support.v4.media.session.MediaSessionCompat;
+import android.util.Log;
+import android.view.KeyEvent;
+import com.bumptech.glide.Glide;
+import com.bumptech.glide.request.RequestOptions;
+import de.danoeh.antennapod.core.ClientConfig;
+import de.danoeh.antennapod.core.R;
+import de.danoeh.antennapod.core.glide.ApGlideSettings;
+import de.danoeh.antennapod.core.preferences.UserPreferences;
+import de.danoeh.antennapod.core.receiver.MediaButtonReceiver;
+import de.danoeh.antennapod.core.util.IntList;
+import de.danoeh.antennapod.core.util.gui.NotificationUtils;
+import de.danoeh.antennapod.core.util.playback.Playable;
+
+public class PlaybackServiceNotificationBuilder extends NotificationCompat.Builder {
+ private static final String TAG = "PlaybackSrvNotification";
+ private static Bitmap defaultIcon = null;
+
+ private Context context;
+
+ public PlaybackServiceNotificationBuilder(@NonNull Context context) {
+ super(context, NotificationUtils.CHANNEL_ID_PLAYING);
+ this.context = context;
+
+ final int smallIcon = ClientConfig.playbackServiceCallbacks.getNotificationIconResource(context);
+
+ final PendingIntent pIntent = PendingIntent.getActivity(context, 0,
+ PlaybackService.getPlayerActivityIntent(context),
+ PendingIntent.FLAG_UPDATE_CURRENT);
+
+ setContentTitle(context.getString(R.string.app_name));
+ setContentText("Service is running"); // Just in case the notification is not updated (should not occur)
+ setOngoing(false);
+ setContentIntent(pIntent);
+ setWhen(0); // we don't need the time
+ setSmallIcon(smallIcon);
+ setPriority(NotificationCompat.PRIORITY_MIN);
+ }
+
+ public void addMetadata(Playable playable, MediaSessionCompat.Token mediaSessionToken, PlayerStatus playerStatus, boolean isCasting) {
+ Log.v(TAG, "notificationSetupTask: playerStatus=" + playerStatus);
+ setContentTitle(playable.getFeedTitle());
+ setContentText(playable.getEpisodeTitle());
+ setPriority(UserPreferences.getNotifyPriority());
+ addActions(mediaSessionToken, playerStatus, isCasting);
+ setVisibility(NotificationCompat.VISIBILITY_PUBLIC);
+ setColor(NotificationCompat.COLOR_DEFAULT);
+ }
+
+ public boolean isIconCached(Playable playable) {
+ int iconSize = context.getResources().getDimensionPixelSize(android.R.dimen.notification_large_icon_width);
+ try {
+ Bitmap icon = Glide.with(context)
+ .asBitmap()
+ .load(playable.getImageLocation())
+ .apply(RequestOptions.diskCacheStrategyOf(ApGlideSettings.AP_DISK_CACHE_STRATEGY))
+ .apply(new RequestOptions()
+ .centerCrop()
+ .onlyRetrieveFromCache(true))
+ .submit(iconSize, iconSize)
+ .get();
+ return icon != null;
+ } catch (Throwable tr) {
+ return false;
+ }
+ }
+
+ public void loadIcon(Playable playable) {
+ Bitmap icon = null;
+ int iconSize = context.getResources().getDimensionPixelSize(android.R.dimen.notification_large_icon_width);
+ try {
+ icon = Glide.with(context)
+ .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) {
+ loadDefaultIcon();
+ } else {
+ setLargeIcon(icon);
+ }
+ }
+
+ public void loadDefaultIcon() {
+ if (defaultIcon == null) {
+ defaultIcon = BitmapFactory.decodeResource(context.getResources(),
+ ClientConfig.playbackServiceCallbacks.getNotificationIconResource(context));
+ }
+ setLargeIcon(defaultIcon);
+ }
+
+ private void addActions(MediaSessionCompat.Token mediaSessionToken, PlayerStatus playerStatus, boolean isCasting) {
+ IntList compactActionList = new IntList();
+
+ int numActions = 0; // we start and 0 and then increment by 1 for each call to addAction
+
+ if (isCasting) {
+ Intent stopCastingIntent = new Intent(context, PlaybackService.class);
+ stopCastingIntent.putExtra(PlaybackService.EXTRA_CAST_DISCONNECT, true);
+ PendingIntent stopCastingPendingIntent = PendingIntent.getService(context,
+ numActions, stopCastingIntent, PendingIntent.FLAG_UPDATE_CURRENT);
+ addAction(R.drawable.ic_media_cast_disconnect,
+ context.getString(R.string.cast_disconnect_label),
+ stopCastingPendingIntent);
+ numActions++;
+ }
+
+ // always let them rewind
+ PendingIntent rewindButtonPendingIntent = getPendingIntentForMediaAction(
+ KeyEvent.KEYCODE_MEDIA_REWIND, numActions);
+ addAction(android.R.drawable.ic_media_rew, context.getString(R.string.rewind_label), rewindButtonPendingIntent);
+ if (UserPreferences.showRewindOnCompactNotification()) {
+ compactActionList.add(numActions);
+ }
+ numActions++;
+
+ if (playerStatus == PlayerStatus.PLAYING) {
+ PendingIntent pauseButtonPendingIntent = getPendingIntentForMediaAction(
+ KeyEvent.KEYCODE_MEDIA_PAUSE, numActions);
+ addAction(android.R.drawable.ic_media_pause, //pause action
+ context.getString(R.string.pause_label),
+ pauseButtonPendingIntent);
+ compactActionList.add(numActions++);
+ } else {
+ PendingIntent playButtonPendingIntent = getPendingIntentForMediaAction(
+ KeyEvent.KEYCODE_MEDIA_PLAY, numActions);
+ addAction(android.R.drawable.ic_media_play, //play action
+ context.getString(R.string.play_label),
+ playButtonPendingIntent);
+ compactActionList.add(numActions++);
+ }
+
+ // ff follows play, then we have skip (if it's present)
+ PendingIntent ffButtonPendingIntent = getPendingIntentForMediaAction(
+ KeyEvent.KEYCODE_MEDIA_FAST_FORWARD, numActions);
+ addAction(android.R.drawable.ic_media_ff, context.getString(R.string.fast_forward_label), ffButtonPendingIntent);
+ if (UserPreferences.showFastForwardOnCompactNotification()) {
+ compactActionList.add(numActions);
+ }
+ numActions++;
+
+ if (UserPreferences.isFollowQueue()) {
+ PendingIntent skipButtonPendingIntent = getPendingIntentForMediaAction(
+ KeyEvent.KEYCODE_MEDIA_NEXT, numActions);
+ addAction(android.R.drawable.ic_media_next,
+ context.getString(R.string.skip_episode_label),
+ skipButtonPendingIntent);
+ if (UserPreferences.showSkipOnCompactNotification()) {
+ compactActionList.add(numActions);
+ }
+ numActions++;
+ }
+
+ PendingIntent stopButtonPendingIntent = getPendingIntentForMediaAction(
+ KeyEvent.KEYCODE_MEDIA_STOP, numActions);
+ setStyle(new android.support.v4.media.app.NotificationCompat.MediaStyle()
+ .setMediaSession(mediaSessionToken)
+ .setShowActionsInCompactView(compactActionList.toArray())
+ .setShowCancelButton(true)
+ .setCancelButtonIntent(stopButtonPendingIntent));
+ }
+
+ private PendingIntent getPendingIntentForMediaAction(int keycodeValue, int requestCode) {
+ Intent intent = new Intent(context, PlaybackService.class);
+ intent.putExtra(MediaButtonReceiver.EXTRA_KEYCODE, keycodeValue);
+ return PendingIntent .getService(context, requestCode,
+ intent, PendingIntent.FLAG_UPDATE_CURRENT);
+ }
+} \ No newline at end of file
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceTaskManager.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceTaskManager.java
index 6ee808c97..a464d74f1 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceTaskManager.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceTaskManager.java
@@ -16,10 +16,14 @@ import java.util.concurrent.TimeUnit;
import de.danoeh.antennapod.core.event.QueueEvent;
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.util.playback.Playable;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
+import io.reactivex.Completable;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
/**
@@ -190,8 +194,7 @@ public class PlaybackServiceTaskManager {
sleepTimerFuture.cancel(true);
}
sleepTimer = new SleepTimer(waitingTime, shakeToReset, vibrate);
- Runnable runnable = useMainThreadIfNecessary(sleepTimer);
- sleepTimerFuture = schedExecutor.schedule(runnable, 0, TimeUnit.MILLISECONDS);
+ sleepTimerFuture = schedExecutor.schedule(sleepTimer, 0, TimeUnit.MILLISECONDS);
}
/**
@@ -264,18 +267,15 @@ public class PlaybackServiceTaskManager {
cancelChapterLoader();
}
- Runnable chapterLoader = () -> {
- Log.d(TAG, "Chapter loader started");
- if (media.getChapters() == null) {
- media.loadChapterMarks();
- if (!Thread.currentThread().isInterrupted() && media.getChapters() != null) {
- callback.onChapterLoaded(media);
- }
- }
- Log.d(TAG, "Chapter loader stopped");
- };
- chapterLoader = useMainThreadIfNecessary(chapterLoader);
- chapterLoaderFuture = schedExecutor.submit(chapterLoader);
+ if (media.getChapters() == null) {
+ Completable.create(emitter -> {
+ media.loadChapterMarks();
+ emitter.onComplete();
+ })
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(() -> callback.onChapterLoaded(media));
+ }
}
@@ -323,6 +323,7 @@ public class PlaybackServiceTaskManager {
private final boolean shakeToReset;
private final boolean vibrate;
private ShakeListener shakeListener;
+ private final Handler handler;
public SleepTimer(long waitingTime, boolean shakeToReset, boolean vibrate) {
super();
@@ -330,6 +331,21 @@ public class PlaybackServiceTaskManager {
this.timeLeft = waitingTime;
this.shakeToReset = shakeToReset;
this.vibrate = vibrate;
+
+ if (UserPreferences.useExoplayer() && Looper.myLooper() == Looper.getMainLooper()) {
+ // Run callbacks in main thread so they can call ExoPlayer methods themselves
+ this.handler = new Handler();
+ } else {
+ this.handler = null;
+ }
+ }
+
+ private void postCallback(Runnable r) {
+ if (handler == null) {
+ r.run();
+ } else {
+ handler.post(r);
+ }
}
@Override
@@ -355,7 +371,7 @@ public class PlaybackServiceTaskManager {
if(shakeListener == null && shakeToReset) {
shakeListener = new ShakeListener(context, this);
}
- callback.onSleepTimerAlmostExpired();
+ postCallback(callback::onSleepTimerAlmostExpired);
notifiedAlmostExpired = true;
}
if (timeLeft <= 0) {
@@ -365,7 +381,7 @@ public class PlaybackServiceTaskManager {
shakeListener = null;
}
if (!Thread.currentThread().isInterrupted()) {
- callback.onSleepTimerExpired();
+ postCallback(callback::onSleepTimerExpired);
} else {
Log.d(TAG, "Sleep timer interrupted");
}
@@ -383,8 +399,10 @@ public class PlaybackServiceTaskManager {
}
public void onShake() {
- setSleepTimer(waitingTime, shakeToReset, vibrate);
- callback.onSleepTimerReset();
+ postCallback(() -> {
+ setSleepTimer(waitingTime, shakeToReset, vibrate);
+ callback.onSleepTimerReset();
+ });
shakeListener.pause();
shakeListener = null;
}
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 b3b8a40ce..1e069a1f0 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
@@ -5,9 +5,9 @@ import android.util.Log;
import org.xml.sax.Attributes;
-import java.util.concurrent.TimeUnit;
-
+import de.danoeh.antennapod.core.feed.FeedItem;
import de.danoeh.antennapod.core.syndication.handler.HandlerState;
+import de.danoeh.antennapod.core.syndication.parsers.DurationParser;
public class NSITunes extends Namespace {
@@ -22,7 +22,6 @@ public class NSITunes extends Namespace {
private static final String SUBTITLE = "subtitle";
private static final String SUMMARY = "summary";
-
@Override
public SyndElement handleElementStart(String localName, HandlerState state,
Attributes attributes) {
@@ -44,65 +43,75 @@ public class NSITunes extends Namespace {
@Override
public void handleElementEnd(String localName, HandlerState state) {
- if(state.getContentBuf() == null) {
+ 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();
- state.getFeed().setAuthor(author);
- }
+ parseAuthor(state);
} else if (DURATION.equals(localName)) {
- String durationStr = state.getContentBuf().toString();
- if(TextUtils.isEmpty(durationStr)) {
- return;
- }
- String[] parts = durationStr.trim().split(":");
- try {
- int durationMs = 0;
- if (parts.length == 2) {
- durationMs += TimeUnit.MINUTES.toMillis(Long.parseLong(parts[0])) +
- TimeUnit.SECONDS.toMillis((long)Float.parseFloat(parts[1]));
- } else if (parts.length >= 3) {
- durationMs += TimeUnit.HOURS.toMillis(Long.parseLong(parts[0])) +
- TimeUnit.MINUTES.toMillis(Long.parseLong(parts[1])) +
- TimeUnit.SECONDS.toMillis((long)Float.parseFloat(parts[2]));
- } else {
- return;
- }
- state.getTempObjects().put(DURATION, durationMs);
- } catch (NumberFormatException e) {
- Log.e(NSTAG, "Duration \"" + durationStr + "\" could not be parsed");
- }
+ parseDuration(state);
} else if (SUBTITLE.equals(localName)) {
- String subtitle = state.getContentBuf().toString();
- if (TextUtils.isEmpty(subtitle)) {
- return;
- }
- if (state.getCurrentItem() != null) {
- if (TextUtils.isEmpty(state.getCurrentItem().getDescription())) {
- state.getCurrentItem().setDescription(subtitle);
- }
- } else {
- if (state.getFeed() != null && TextUtils.isEmpty(state.getFeed().getDescription())) {
- state.getFeed().setDescription(subtitle);
- }
- }
+ parseSubtitle(state);
} else if (SUMMARY.equals(localName)) {
- String summary = state.getContentBuf().toString();
- if (TextUtils.isEmpty(summary)) {
- return;
+ SyndElement secondElement = state.getSecondTag();
+ parseSummary(state, secondElement.getName());
+ }
+ }
+
+ private void parseAuthor(HandlerState state) {
+ if (state.getFeed() != null) {
+ String author = state.getContentBuf().toString();
+ state.getFeed().setAuthor(author);
+ }
+ }
+
+ private void parseDuration(HandlerState state) {
+ String durationStr = state.getContentBuf().toString();
+ if (TextUtils.isEmpty(durationStr)) {
+ return;
+ }
+
+ try {
+ long durationMs = DurationParser.inMillis(durationStr);
+ state.getTempObjects().put(DURATION, (int) durationMs);
+ } catch (NumberFormatException e) {
+ Log.e(NSTAG, String.format("Duration '%s' could not be parsed", durationStr));
+ }
+ }
+
+ private void parseSubtitle(HandlerState state) {
+ String subtitle = state.getContentBuf().toString();
+ if (TextUtils.isEmpty(subtitle)) {
+ return;
+ }
+ if (state.getCurrentItem() != null) {
+ if (TextUtils.isEmpty(state.getCurrentItem().getDescription())) {
+ state.getCurrentItem().setDescription(subtitle);
}
- if (state.getCurrentItem() != null &&
- (TextUtils.isEmpty(state.getCurrentItem().getDescription()) ||
- state.getCurrentItem().getDescription().length() * 1.25 < summary.length())) {
- state.getCurrentItem().setDescription(summary);
- } else if (NSRSS20.CHANNEL.equals(second) && state.getFeed() != null) {
- state.getFeed().setDescription(summary);
+ } else {
+ if (state.getFeed() != null && TextUtils.isEmpty(state.getFeed().getDescription())) {
+ state.getFeed().setDescription(subtitle);
}
}
}
+
+ private void parseSummary(HandlerState state, String secondElementName) {
+ String summary = state.getContentBuf().toString();
+ if (TextUtils.isEmpty(summary)) {
+ return;
+ }
+
+ FeedItem currentItem = state.getCurrentItem();
+ String description = getDescription(currentItem);
+ if (currentItem != null && description.length() * 1.25 < summary.length()) {
+ currentItem.setDescription(summary);
+ } else if (NSRSS20.CHANNEL.equals(secondElementName) && state.getFeed() != null) {
+ state.getFeed().setDescription(summary);
+ }
+ }
+
+ private String getDescription(FeedItem item) {
+ return (item != null && item.getDescription() != null) ? item.getDescription() : "";
+ }
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/parsers/DurationParser.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/parsers/DurationParser.java
new file mode 100644
index 000000000..8b036c6a9
--- /dev/null
+++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/parsers/DurationParser.java
@@ -0,0 +1,37 @@
+package de.danoeh.antennapod.core.syndication.parsers;
+
+import static java.util.concurrent.TimeUnit.HOURS;
+import static java.util.concurrent.TimeUnit.MINUTES;
+import static java.util.concurrent.TimeUnit.SECONDS;
+
+public class DurationParser {
+ public static long inMillis(String durationStr) throws NumberFormatException {
+ String[] parts = durationStr.trim().split(":");
+
+ if (parts.length == 1) {
+ return toMillis(parts[0]);
+ } else if (parts.length == 2) {
+ return toMillis("0", parts[0], parts[1]);
+ } else if (parts.length == 3) {
+ return toMillis(parts[0], parts[1], parts[2]);
+ } else {
+ throw new NumberFormatException();
+ }
+ }
+
+ private static long toMillis(String hours, String minutes, String seconds) {
+ return HOURS.toMillis(Long.parseLong(hours))
+ + MINUTES.toMillis(Long.parseLong(minutes))
+ + toMillis(seconds);
+ }
+
+ private static long toMillis(String seconds) {
+ if (seconds.contains(".")) {
+ float value = Float.parseFloat(seconds);
+ float millis = value % 1;
+ return SECONDS.toMillis((long) value) + (long) (millis * 1000);
+ } else {
+ return SECONDS.toMillis(Long.parseLong(seconds));
+ }
+ }
+}
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 afaf13390..a0195975f 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
@@ -17,15 +17,20 @@ public class FeedUpdateUtils {
private FeedUpdateUtils() {}
public static void startAutoUpdate(Context context, Runnable callback) {
- try {
- with().pollInterval(1, TimeUnit.SECONDS)
- .await()
- .atMost(10, TimeUnit.SECONDS)
- .until(() -> NetworkUtils.networkAvailable() && NetworkUtils.isDownloadAllowed());
- DBTasks.refreshAllFeeds(context, null, callback);
- } catch (ConditionTimeoutException ignore) {
- Log.d(TAG, "Blocking automatic update: no wifi available / no mobile updates allowed");
- }
+ // the network check is blocking for possibly a long time: so run the logic
+ // in a separate thread to prevent the code blocking the callers
+ final Runnable runnable = () -> {
+ try {
+ with().pollInterval(1, TimeUnit.SECONDS)
+ .await()
+ .atMost(10, TimeUnit.SECONDS)
+ .until(() -> NetworkUtils.networkAvailable() && NetworkUtils.isDownloadAllowed());
+ DBTasks.refreshAllFeeds(context, null, callback);
+ } catch (ConditionTimeoutException ignore) {
+ Log.d(TAG, "Blocking automatic update: no wifi available / no mobile updates allowed");
+ }
+ };
+ new Thread(runnable).start();
}
}
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 9bdd375ce..d9431bc5d 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
@@ -68,6 +68,11 @@ public class NetworkUtils {
}
}
}
+ } else if (networkInfo.getType() == ConnectivityManager.TYPE_ETHERNET) {
+ Log.d(TAG, "Device is connected to Ethernet");
+ if (networkInfo.isConnected()) {
+ return true;
+ }
} else {
if (!UserPreferences.isEnableAutodownloadOnMobile()) {
Log.d(TAG, "Auto Download not enabled on Mobile");
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 c48174e0d..2c70e9435 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
@@ -12,6 +12,7 @@ import android.media.MediaPlayer;
import android.os.Build;
import android.os.IBinder;
import android.support.annotation.NonNull;
+import android.support.v4.content.ContextCompat;
import android.text.TextUtils;
import android.util.Log;
import android.util.Pair;
@@ -120,7 +121,6 @@ public abstract class PlaybackController {
}
private synchronized void initServiceRunning() {
- Log.v(TAG, "initServiceRunning()");
if (initialized) {
return;
}
@@ -209,13 +209,20 @@ public abstract class PlaybackController {
.observeOn(AndroidSchedulers.mainThread())
.subscribe(optionalIntent -> {
boolean bound = false;
- if (optionalIntent.isPresent()) {
- Log.d(TAG, "Calling bind service");
- bound = activity.bindService(optionalIntent.get(), mConnection, 0);
+ if (!PlaybackService.started) {
+ if (optionalIntent.isPresent()) {
+ Log.d(TAG, "Calling start service");
+ ContextCompat.startForegroundService(activity, optionalIntent.get());
+ bound = activity.bindService(optionalIntent.get(), mConnection, 0);
+ } else {
+ status = PlayerStatus.STOPPED;
+ setupGUI();
+ handleStatus();
+ }
} else {
- status = PlayerStatus.STOPPED;
- setupGUI();
- handleStatus();
+ Log.d(TAG, "PlaybackService is running, trying to connect without start command.");
+ bound = activity.bindService(new Intent(activity, PlaybackService.class),
+ mConnection, 0);
}
Log.d(TAG, "Result for service binding: " + bound);
}, error -> Log.e(TAG, Log.getStackTraceString(error)));
@@ -234,7 +241,6 @@ public abstract class PlaybackController {
return Optional.empty();
}
-
boolean fileExists = media.localFileAvailable();
boolean lastIsStream = PlaybackPreferences.getCurrentEpisodeIsStream();
if (!fileExists && !lastIsStream && media instanceof FeedMedia) {
@@ -602,8 +608,7 @@ public abstract class PlaybackController {
.startWhenPrepared(true)
.streamIfLastWasStream()
.start();
- Log.d(TAG, "Play/Pause button was pressed, but playbackservice was null - " +
- "it is likely to have been released by Android system. Restarting it.");
+ Log.w(TAG, "Play/Pause button was pressed, but playbackservice was null!");
return;
}
switch (status) {
@@ -780,7 +785,6 @@ public abstract class PlaybackController {
}
public void notifyVideoSurfaceAbandoned() {
- Log.v(TAG, "notifyVideoSurfaceAbandoned() - hasPlaybackService=" + (playbackService != null));
if (playbackService != null) {
playbackService.notifyVideoSurfaceAbandoned();
}
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 64cf61457..f7d2ee409 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,15 +2,14 @@ package de.danoeh.antennapod.core.util.playback;
import android.content.Context;
import android.content.Intent;
+import android.media.MediaPlayer;
+import android.support.annotation.NonNull;
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;
@@ -67,10 +66,6 @@ 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/res/values-ca/strings.xml b/core/src/main/res/values-ca/strings.xml
index ecf51f704..6983d140e 100644
--- a/core/src/main/res/values-ca/strings.xml
+++ b/core/src/main/res/values-ca/strings.xml
@@ -153,7 +153,6 @@
<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">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>
@@ -286,7 +285,6 @@
<string name="set_playback_speed_label">Velocitats de reproducció</string>
<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">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>
@@ -645,6 +643,7 @@
<string name="proxy_host_empty_error">El host no pot estar buit</string>
<string name="proxy_host_invalid_error">El host no és una adreça IP o domini vàlid</string>
<string name="proxy_port_invalid_error">El port no és vàlid</string>
+ <!--Subscriptions fragment-->
<!--Database import/export-->
<string name="import_export">Importa/exporta la base de dades</string>
<string name="import_export_warning">Podeu fer servir aquesta funcionalitat experimental per a transferir les vostres subscripcions i episodis reproduïts a un altre dispositiu.\n\nNomés podreu importar la base de dades fent servir la mateixa versió de l\'AntennaPod. En cas contrari, aquesta funcionalitat es comportarà de forma imprevisible.\n\nDesprés d\'importar-los, els episodis es poden mostrar com a baixats tot i no estar disponibles. Premeu el botó per a reproduir-los per a que l\'AntennaPod ho detecti.</string>
diff --git a/core/src/main/res/values-cs-rCZ/strings.xml b/core/src/main/res/values-cs-rCZ/strings.xml
index 1d9868b2c..390730abb 100644
--- a/core/src/main/res/values-cs-rCZ/strings.xml
+++ b/core/src/main/res/values-cs-rCZ/strings.xml
@@ -131,7 +131,6 @@
<string name="stream_label">Vysílat</string>
<string name="remove_label">Odstranit</string>
<string name="delete_label">Smazat</string>
- <string name="remove_episode_lable">Odstranit epizodu</string>
<string name="marked_as_seen_label">Označit jako shlédnuté</string>
<string name="mark_read_label">Označit jako poslechnuté</string>
<string name="marked_as_read_label">Označeno jako poslechnuté</string>
@@ -259,7 +258,6 @@
<string name="set_playback_speed_label">Rychlosti přehrávání</string>
<string name="enable_sonic">Povolit Sonic</string>
<!--Empty list labels-->
- <string name="no_items_label">Žádné položky v seznamu.</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-->
@@ -589,6 +587,7 @@
<string name="proxy_host_empty_error">Host nesmí být prázdný</string>
<string name="proxy_host_invalid_error">Host není platná IP nebo doména</string>
<string name="proxy_port_invalid_error">Neplatný port</string>
+ <!--Subscriptions fragment-->
<!--Database import/export-->
<!--Casting-->
<string name="cast_media_route_menu_title">Přehrát na...</string>
diff --git a/core/src/main/res/values-da/strings.xml b/core/src/main/res/values-da/strings.xml
index a094cdacf..565f53a6d 100644
--- a/core/src/main/res/values-da/strings.xml
+++ b/core/src/main/res/values-da/strings.xml
@@ -1,13 +1,15 @@
<?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">Opdater abonnementer</string>
<string name="feeds_label">Feeds</string>
<string name="statistics_label">Statistik</string>
<string name="add_feed_label">Tilføj podcast</string>
<string name="episodes_label">Udsendelser</string>
<string name="all_episodes_short_label">Alle</string>
+ <string name="new_episodes_label">Nye</string>
<string name="favorite_episodes_label">Foretrukne</string>
- <string name="new_label">Ny(e)</string>
+ <string name="new_label">Ny</string>
<string name="settings_label">Indstillinger</string>
<string name="downloads_label">Overførsler</string>
<string name="downloads_running_label">I gang</string>
@@ -18,10 +20,12 @@
<string name="cancel_download_label">Annuller\noverførsel</string>
<string name="playback_history_label">Afspilningshistorik</string>
<string name="gpodnet_main_label">gpodder.net</string>
+ <string name="gpodnet_summary">Synkronisér med andre enheder</string>
<string name="gpodnet_auth_label">Login til gpodder.net</string>
<string name="free_space_label">%1$s ledig</string>
<string name="episode_cache_full_title">Mellemlageret for udsendelser er fuldt</string>
<string name="episode_cache_full_message">Der er ikke mere plads i mellemlageret for udsendelser. Du kan øge størrelsen på mellemlageret i Indstillinger.</string>
+ <string name="synchronizing">Synkroniserer ...</string>
<!--Statistics fragment-->
<string name="total_time_listened_to_podcasts">Samlet varighed for afspillede podcasts:</string>
<string name="statistics_details_dialog">%1$d af %2$d udsendelser startet.\n\nAfspillet %3$s af %4$s.</string>
@@ -56,6 +60,7 @@
<string name="yes">Ja</string>
<string name="no">Nej</string>
<string name="reset">Nulstil</string>
+ <string name="author_label">Forfatter(e)</string>
<string name="language_label">Sprog</string>
<string name="url_label">Webadresse</string>
<string name="podcast_settings_label">Indstillinger </string>
@@ -105,12 +110,23 @@
<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_seen_label">Marker alle som set</string>
+ <string name="mark_all_seen_msg">Markeret 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="feed_info_label">Podcast-info</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 udsendelsens webadresse</string>
<string name="share_file_label">Del fil</string>
<string name="share_feed_url_label">Del webadresse for feedet</string>
+ <string name="feed_delete_confirmation_msg">Bekræft venligst at du ønsker at slette podcasten \"%1$s\" og ALLE dens udsendelser (inklusive overførte udsendelser)</string>
+ <string name="feed_remover_msg">Fjerner podcast</string>
+ <string name="load_complete_feed">Opdater komplet podcast</string>
<string name="hide_episodes_title">Skjul udsendelser</string>
+ <string name="batch_edit">Masseredigering</string>
+ <string name="select_all_above">Vælg alt ovenfor</string>
+ <string name="select_all_below">Vælg alt nedenfor</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>
@@ -119,6 +135,7 @@
<string name="hide_downloaded_episodes_label">Overførte</string>
<string name="hide_not_downloaded_episodes_label">Ikke overførte</string>
<string name="hide_has_media_label">Har medier</string>
+ <string name="hide_is_favorite_label">Er foretrukken</string>
<string name="filtered_label">Filtrerede</string>
<string name="refresh_failed_msg">{fa-exclamation-circle} Sidste opdatering fejlede</string>
<string name="open_podcast">Åbn podcast</string>
@@ -131,7 +148,7 @@
<string name="remove_label">Fjern</string>
<string name="delete_label">Slet</string>
<string name="delete_failed">Kan ikke slette fil. En genstart af enheden vil sandsynligvis hjælpe.</string>
- <string name="remove_episode_lable">Fjern udsendelse</string>
+ <string name="mark_as_seen_label">Markér som set</string>
<string name="marked_as_seen_label">Markeret som set</string>
<string name="mark_read_label">Marker som læst</string>
<string name="marked_as_read_label">Markeret som afspillet</string>
@@ -155,6 +172,8 @@
<string name="download_failed">fejlede</string>
<string name="download_pending">Afventer overførsel</string>
<string name="download_running">Overfører</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">Kan ikke finde lagerenhed</string>
<string name="download_error_insufficient_space">Ikke nok plads</string>
<string name="download_error_file_error">Filfejl</string>
@@ -205,6 +224,7 @@
<string name="playback_error_unknown">Ukendt fejl</string>
<string name="no_media_playing_label">Ingen medier afspiller</string>
<string name="player_buffering_msg">Henter data til buffer</string>
+ <string name="player_go_to_picture_in_picture">Billed-i-billed-tilstand</string>
<string name="playbackservice_notification_title">Afspiller podcast</string>
<string name="unknown_media_key">AntennaPod - Ukendt medienøgle: %1$d</string>
<!--Queue operations-->
@@ -221,6 +241,8 @@
<string name="date">Dato</string>
<string name="duration">Varighed</string>
<string name="episode_title">Titel på udsendelse</string>
+ <string name="feed_title">Titel på podcast</string>
+ <string name="random">Tilfældig</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>
@@ -257,7 +279,7 @@
<string name="set_playback_speed_label">Afspilningshastigheder</string>
<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 ikke abonneret på nogen podcasts endnu.</string>
<string name="no_chapters_label">Denne udsendelse har ingen kapitler.</string>
<string name="no_shownotes_label">Denne udsendelse har ingen beskrivelse.</string>
<!--Preferences-->
@@ -266,7 +288,15 @@
<string name="other_pref">Andre</string>
<string name="about_pref">Om</string>
<string name="queue_label">Kø</string>
+ <string name="integrations_label">Integrerede tjenester</string>
<string name="flattr_label">Flattr</string>
+ <string name="flattr_summary">Mikrobetalingstjeneste</string>
+ <string name="automation">Automatisering</string>
+ <string name="download_pref_details">Detaljer</string>
+ <string name="import_export_pref">Import/eksport</string>
+ <string name="appearance">Udseende</string>
+ <string name="interruptions">Afbrydelser</string>
+ <string name="media_player">Medieafspiller</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>
<string name="pref_pauseOnDisconnect_sum">Sæt afspilning på pause, hvis hovedtelefoner eller bluetooth afkobles</string>
@@ -334,6 +364,7 @@
<string name="pref_episode_cache_title">Mellemlager for udsendelser</string>
<string name="pref_theme_title_light">Lys</string>
<string name="pref_theme_title_dark">Mørk</string>
+ <string name="pref_theme_title_trueblack">Sort (AMOLED-klar)</string>
<string name="pref_episode_cache_unlimited">Ubegrænset</string>
<string name="pref_update_interval_hours_plural">timer</string>
<string name="pref_update_interval_hours_singular">time</string>
@@ -362,6 +393,8 @@
<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">Høj prioritet for notifikation</string>
+ <string name="pref_expandNotify_sum">Dette udvider normalt notifikationen til 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>
@@ -393,6 +426,20 @@
<string name="pref_cast_message_free_flavor">Chromecast kræver tredjeparts proprietære biblioteker, som er slået fra i denne version af AntennaPod</string>
<string name="pref_enqueue_downloaded_title">Sæt overførte udsendelser i kø</string>
<string name="pref_enqueue_downloaded_summary">Føj udsendelser til køen, så snart de er overført</string>
+ <string name="media_player_builtin">Indbygget Android-afspiller</string>
+ <string name="pref_videoBehavior_title">Når videoen forlades</string>
+ <string name="stop_playback">Stop afspilning</string>
+ <string name="continue_playback">Fortsæt afspilning af lyd</string>
+ <string name="behavior">Funktion</string>
+ <string name="pref_back_button_behavior_title">Funktion for tilbageknappen</string>
+ <string name="pref_back_button_behavior_sum">Ændr tilbageknappens funktion.</string>
+ <string name="back_button_default">Standard</string>
+ <string name="back_button_open_drawer">Åbn navigationsskuffen</string>
+ <string name="back_button_double_tap">Dobbelttryk for at afslutte</string>
+ <string name="back_button_show_prompt">Bekræft for at afslutte</string>
+ <string name="double_tap_toast">Tryk på tilbageknappen igen for at afslutte</string>
+ <string name="back_button_go_to_page">Gå til side ...</string>
+ <string name="back_button_go_to_page_title">Vælg side</string>
<!--Auto-Flattr dialog-->
<string name="auto_flattr_enable">Aktiver automatisk flattring</string>
<string name="auto_flattr_after_percent">Flattr udsendelser så snart %d procent er blevet afspillet</string>
@@ -402,6 +449,8 @@
<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 forfatter(e)</string>
+ <string name="found_in_feeds_label">Fundet i podcast</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>
@@ -427,6 +476,8 @@
<string name="html_export_label">HTML-eksport</string>
<string name="exporting_label">Eksporterer…</string>
<string name="export_error_label">Eksportfejl</string>
+ <string name="export_success_title">Eksport lykkedes</string>
+ <string name="export_success_sum">Den eksporterede fil blev skrevet til:\n\n%1$s</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>
@@ -471,7 +522,7 @@
<string name="gpodnetauth_device_descr">Opret en ny enhed til at bruge med din gpodder.net-konto eller vælg en eksisterende:</string>
<string name="gpodnetauth_device_deviceID">Enheds-id:\u0020</string>
<string name="gpodnetauth_device_caption">Enhedsnavn</string>
- <string name="gpodnetauth_device_butCreateNewDevice">Opret en ny enhed</string>
+ <string name="gpodnetauth_device_butCreateNewDevice">Opret ny enhed</string>
<string name="gpodnetauth_device_chooseExistingDevice">Vælg en eksisterende enhed:</string>
<string name="gpodnetauth_device_errorEmpty">Enheds-id må ikke være tomt</string>
<string name="gpodnetauth_device_errorAlreadyUsed">Enheds-id er allerede i brug</string>
@@ -525,14 +576,13 @@
<string name="load_next_page_label">Indlæs næste side</string>
<!--Feed information screen-->
<string name="authentication_label">Godkendelse</string>
- <string name="authentication_descr">Ændr dit brugernavn og adgangskode for denne podcast og dets udsendelser.</string>
+ <string name="authentication_descr">Ændr dit brugernavn og adgangskode for denne podcast og dens udsendelser.</string>
<string name="auto_download_settings_label">Indstillinger for Automatisk overførsel</string>
<string name="episode_filters_label">Udsendelsesfilter</string>
<string name="episode_filters_description">Liste af ord, der bliver brugt til at beslutte, om en udsendelse skal medtages eller udelades ved automatisk overførsel</string>
<string name="episode_filters_include">Medtag</string>
<string name="episode_filters_exclude">Udelad</string>
- <string name="episode_filters_hint">Enkeltord \n
-\"Flere ord\"</string>
+ <string name="episode_filters_hint">Enkelte ord\n\"Flere ord\"</string>
<string name="keep_updated">Hold opdateret</string>
<!--Progress information-->
<string name="progress_upgrading_database">Opgraderer databasen</string>
@@ -594,7 +644,14 @@
<string name="proxy_host_empty_error">Vært kan ikke være tom</string>
<string name="proxy_host_invalid_error">Vært er ikke en gyldig IP-adresse eller et gyldigt domæne</string>
<string name="proxy_port_invalid_error">Port ikke gyldig</string>
+ <!--Subscriptions fragment-->
<!--Database import/export-->
+ <string name="import_export">Database-import/eksport</string>
+ <string name="label_import">Import</string>
+ <string name="label_export">Eksport</string>
+ <string name="import_select_file">Vælg fil til import</string>
+ <string name="export_ok">Eksport lykkedes.</string>
+ <string name="import_ok">Importen lykkedes.\n\nTryk venligst OK for at genstarte AntennaPod</string>
<!--Casting-->
<string name="cast_media_route_menu_title">Afspil på …</string>
<string name="cast_disconnect_label">Afbryd cast-sessionen</string>
@@ -612,4 +669,8 @@
<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-->
+ <string name="notification_channel_user_action">Handling påkrævet</string>
+ <string name="notification_channel_downloading">Henter</string>
+ <string name="notification_channel_downloading_description">Vises samtidig med den hentes.</string>
+ <string name="notification_channel_error">Fejl</string>
</resources>
diff --git a/core/src/main/res/values-de/strings.xml b/core/src/main/res/values-de/strings.xml
index 3c736f1b0..8962daa00 100644
--- a/core/src/main/res/values-de/strings.xml
+++ b/core/src/main/res/values-de/strings.xml
@@ -95,10 +95,15 @@
<string name="episode_cleanup_never">Nie</string>
<string name="episode_cleanup_queue_removal">Wenn nicht in der Abspielliste</string>
<string name="episode_cleanup_after_listening">Wenn fertig gespielt</string>
+ <plurals name="episode_cleanup_hours_after_listening">
+ <item quantity="one">1 Stunde nachdem fertig gespielt</item>
+ <item quantity="other">%d Stunden nachdem fertig gespielt</item>
+ </plurals>
<plurals name="episode_cleanup_days_after_listening">
<item quantity="one">1 Tag nachdem fertig gespielt</item>
<item quantity="other">%d Tage nachdem fertig gespielt</item>
</plurals>
+ <string name="num_selected_label">%d ausgewählt</string>
<!--'Add Feed' Activity labels-->
<string name="feedurl_label">Feed URL</string>
<string name="etxtFeedurlHint">URL des Feeds oder der Webseite</string>
@@ -132,6 +137,8 @@
<string name="load_complete_feed">Kompletten Feed aktualisieren</string>
<string name="hide_episodes_title">Episoden verbergen</string>
<string name="batch_edit">Stapelbearbeitung</string>
+ <string name="select_all_above">Alles oberhalb auswählen</string>
+ <string name="select_all_below">Alles unterhalb auswählen</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>
@@ -146,6 +153,10 @@
<string name="open_podcast">Podcast öffnen</string>
<!--actions on feeditems-->
<string name="download_label">Herunterladen</string>
+ <plurals name="downloading_batch_label">
+ <item quantity="one">Lade %d Episode herunter.</item>
+ <item quantity="other">Lade %d Episoden herunter.</item>
+ </plurals>
<string name="play_label">Abspielen</string>
<string name="pause_label">Pausieren</string>
<string name="stop_label">Stop</string>
@@ -153,15 +164,35 @@
<string name="remove_label">Entfernen</string>
<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="delete_episode_label">Episode entfernen</string>
+ <plurals name="deleted_episode_batch_label">
+ <item quantity="one">%d Episode gelöscht.</item>
+ <item quantity="other">%d Episoden gelöscht.</item>
+ </plurals>
<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>
+ <plurals name="marked_read_batch_label">
+ <item quantity="one">%d Episode als gespielt markiert.</item>
+ <item quantity="other">%d Episoden als gespielt markiert.</item>
+ </plurals>
<string name="mark_unread_label">Als ungespielt markieren</string>
+ <plurals name="marked_unread_batch_label">
+ <item quantity="one">%d Episode als ungespielt markiert.</item>
+ <item quantity="other">%d Episoden als ungespielt markiert.</item>
+ </plurals>
<string name="add_to_queue_label">Zur Abspielliste hinzufügen</string>
<string name="added_to_queue_label">Zur Abspielliste hinzugefügt</string>
+ <plurals name="added_to_queue_batch_label">
+ <item quantity="one">%d Episode zur Abspielliste hinzugefügt.</item>
+ <item quantity="other">%d Episoden zur Abspielliste hinzugefügt.</item>
+ </plurals>
<string name="remove_from_queue_label">Aus der Abspielliste entfernen</string>
+ <plurals name="removed_from_queue_batch_label">
+ <item quantity="one">%dEpisode aus der Abspielliste entfernt. </item>
+ <item quantity="other">%d Episoden aus der Abspielliste entfernt.</item>
+ </plurals>
<string name="add_to_favorite_label">Zu Favoriten hinzufügen</string>
<string name="added_to_favorites">Zu Favoriten hinzugefügt</string>
<string name="remove_from_favorite_label">Aus Favoriten entfernen</string>
@@ -213,6 +244,7 @@
<string name="download_type_media">Mediendatei</string>
<string name="download_type_image">Bild</string>
<string name="download_request_error_dialog_message_prefix">Beim Herunterladen der Datei ist ein Fehler aufgetreten:\u0020</string>
+ <string name="null_value_podcast_error">Es wurde kein Podcast angegeben, der angezeigt werden könnte.</string>
<string name="authentication_notification_title">Authentifizierung erforderlich</string>
<string name="authentication_notification_msg">Die angeforderte Quelle erfordert einen Benutzernamen und ein Passwort</string>
<string name="confirm_mobile_download_dialog_title">Mobilen Download bestätigen</string>
@@ -286,10 +318,25 @@
<string name="set_playback_speed_label">Wiedergabegeschwindigkeiten</string>
<string name="enable_sonic">Sonic aktivieren</string>
<!--Empty list labels-->
- <string name="no_items_label">Es sind keine Einträge in dieser Liste.</string>
+ <string name="no_items_header_label">Leere Abspielliste</string>
+ <string name="no_items_label">Du kannst Episoden hinzufügen, indem du sie herunterlädst oder sie lange antippst und \"Zur Abspielliste hinzufügen\" auswählst.</string>
<string name="no_feeds_label">Du hast noch keine Feeds abonniert.</string>
<string name="no_chapters_label">Diese Episode hat keine Kapitel.</string>
<string name="no_shownotes_label">Episode hat keine Shownotizen.</string>
+ <string name="no_run_downloads_head_label">Keine laufenden Downloads</string>
+ <string name="no_run_downloads_label">Du kannst Episoden auf der Podcast-Seite herunterladen.</string>
+ <string name="no_comp_downloads_head_label">Keine heruntergeladenen Episoden</string>
+ <string name="no_comp_downloads_label">Du kannst Episoden auf der Podcast-Seite herunterladen.</string>
+ <string name="no_log_downloads_head_label">Keine Downloadhistorie</string>
+ <string name="no_log_downloads_label">Die Downloadhistorie erscheint hier, sobald eine Episode heruntergeladen wurde.</string>
+ <string name="no_history_head_label">Kein Verlauf</string>
+ <string name="no_history_label">Nach dem Anhören einer Episode erscheint sie hier.</string>
+ <string name="no_all_episodes_head_label">Keine Episoden</string>
+ <string name="no_all_episodes_label">Wenn du einen Podcast hinzufügst, werden die Episoden hier angezeigt.</string>
+ <string name="no_new_episodes_head_label">Keine neuen Episoden</string>
+ <string name="no_new_episodes_label">Wenn neue Episoden veröffentlicht werden, erscheinen sie hier.</string>
+ <string name="no_fav_episodes_head_label">Keine Favoriten</string>
+ <string name="no_fav_episodes_label">Du kannst Episoden als Favorit markieren, indem du sie lange antippst.</string>
<!--Preferences-->
<string name="storage_pref">Speicher</string>
<string name="project_pref">Projekt</string>
@@ -302,6 +349,7 @@
<string name="automation">Automatisierung</string>
<string name="download_pref_details">Details</string>
<string name="import_export_pref">Import/Export</string>
+ <string name="import_export_search_keywords">backup, Sicherung, Datensicherung, Wiederherstellung</string>
<string name="appearance">Erscheinungsbild</string>
<string name="external_elements">Externe Elemente</string>
<string name="interruptions">Unterbrechungen</string>
@@ -313,6 +361,7 @@
<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">Wenn ein Vorwärts Button auf einem Bluetooth Gerät gedrückt wird, überspringe die nächste Episode anstatt 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>
@@ -342,6 +391,9 @@
<string name="pref_unpauseOnBluetoothReconnect_title">Bluetooth wieder verbunden</string>
<string name="pref_mobileUpdate_title">Mobile Aktualisierungen</string>
<string name="pref_mobileUpdate_sum">Erlaube Aktualisierungen über die mobile Datenverbindung</string>
+ <string name="pref_mobileUpdate_nothing">Nichts</string>
+ <string name="pref_mobileUpdate_images">Nur Bilder</string>
+ <string name="pref_mobileUpdate_everything">Alles</string>
<string name="refreshing_label">Aktualisiere</string>
<string name="flattr_settings_label">Flattr Einstellungen</string>
<string name="pref_flattr_auth_title">Flattr Anmeldung</string>
@@ -404,6 +456,8 @@
<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">Hohe Benachrichtigungspriorität</string>
+ <string name="pref_expandNotify_sum">Dies erweitert normalerweise die Benachrichtigung und zeigt so die Wiedergabe-Buttons an.</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>
@@ -437,10 +491,24 @@
<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_skip_silence_title">Stille im Ton überspringen</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>
+ <string name="behavior">Verhalten</string>
+ <string name="pref_back_button_behavior_title">Verhalten des Zurück-Buttons</string>
+ <string name="pref_back_button_behavior_sum">Verändere das Verhalten vom Zurück-Button</string>
+ <string name="back_button_default">Standard</string>
+ <string name="back_button_open_drawer">Öffne Seitenleiste</string>
+ <string name="back_button_double_tap">Doppelt tippen zum Verlassen</string>
+ <string name="back_button_show_prompt">Bestätigen zum Verlassen</string>
+ <string name="close_prompt">Bist du sicher, dass du AntennaPod schließen möchtest?</string>
+ <string name="double_tap_toast">Zurück-Button erneut tippen zum Verlassen</string>
+ <string name="back_button_go_to_page">Gehe zu Seite…</string>
+ <string name="back_button_go_to_page_title">Seite auswählen</string>
+ <string name="pref_delete_removes_from_queue_title">Löschen entfernt aus Abspielliste</string>
+ <string name="pref_delete_removes_from_queue_sum">Entferne Episoden automatisch aus der Abspielliste, wenn sie gelöscht werden.</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>
@@ -633,6 +701,7 @@
<string name="audio_effects">Audioeffekte</string>
<string name="stereo_to_mono">Heruntermischen: Stereo zu Mono</string>
<string name="sonic_only">nur Sonic</string>
+ <string name="exoplayer_only">Nur ExoPlayer</string>
<!--proxy settings-->
<string name="proxy_type_label">Typ</string>
<string name="host_label">Host</string>
@@ -645,6 +714,8 @@
<string name="proxy_host_empty_error">Host darf nicht leer sein</string>
<string name="proxy_host_invalid_error">Host ist keine gültige IP oder Domain</string>
<string name="proxy_port_invalid_error">Port ungültig</string>
+ <!--Subscriptions fragment-->
+ <string name="subscription_num_columns">Spaltenanzahl</string>
<!--Database import/export-->
<string name="import_export">Datenbankimport/-export</string>
<string name="import_export_warning">Diese experimentelle Funktion kann dazu benutzt werden, deine Abonnements und abgespielten Episoden auf ein anderes Gerät zu übertragen.\n\nExportierte Datenbanken können nur mit der gleichen AntennaPod-Version wieder importiert werden, andernfalls kann dies zu unerwartetem Verhalten führen.\n\nNach dem Importieren können Episoden als heruntergeladen angezeigt werden, obwohl sie dies nicht sind. Einfach den Abspielknopf der Episoden drücken, damit AntennaPod das erkennt.</string>
diff --git a/core/src/main/res/values-el/strings.xml b/core/src/main/res/values-el/strings.xml
index f72115bb2..2e1c6cd33 100644
--- a/core/src/main/res/values-el/strings.xml
+++ b/core/src/main/res/values-el/strings.xml
@@ -192,7 +192,6 @@
<string name="no_playback_plugin_title">Το Πρόσθετο δεν είναι εγκατεστημένο</string>
<string name="set_playback_speed_label">Ταχύτητες αναπαραγωγής</string>
<!--Empty list labels-->
- <string name="no_items_label">Δεν υπάρχουν στοιχεία σε αυτή τη λίστα.</string>
<!--Preferences-->
<string name="other_pref">Άλλα</string>
<string name="about_pref">Σχετικά με</string>
@@ -350,6 +349,7 @@
<!--Rating dialog-->
<!--Audio controls-->
<!--proxy settings-->
+ <!--Subscriptions fragment-->
<!--Database import/export-->
<!--Casting-->
<!--<string name="cast_failed_to_connect">Could not connect to the device</string>-->
diff --git a/core/src/main/res/values-es/strings.xml b/core/src/main/res/values-es/strings.xml
index 73eabec89..69feafba7 100644
--- a/core/src/main/res/values-es/strings.xml
+++ b/core/src/main/res/values-es/strings.xml
@@ -24,13 +24,13 @@
<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">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="episode_cache_full_message">Se ha alcanzado el límite de almacenamiento de episodios. Puede aumentar el tamaño en opciones.</string>
<string name="synchronizing">Sincronizando…</string>
<!--Statistics fragment-->
<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_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">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-->
@@ -95,16 +95,21 @@
<string name="episode_cleanup_never">Nunca</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_hours_after_listening">
+ <item quantity="one">1 hora después de acabar</item>
+ <item quantity="other">%d horas después de acabar</item>
+ </plurals>
<plurals name="episode_cleanup_days_after_listening">
<item quantity="one">1 día después de acabar</item>
<item quantity="other">%d días después de acabar</item>
</plurals>
+ <string name="num_selected_label">%dseleccionado</string>
<!--'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 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="podcastdirectories_descr">Para nuevos pódcast, puede 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 reproducidos</string>
@@ -132,6 +137,8 @@
<string name="load_complete_feed">Actualizar el pódcast completo</string>
<string name="hide_episodes_title">Ocultar episodios</string>
<string name="batch_edit">Edición por lotes</string>
+ <string name="select_all_above">Seleccionar todo lo anterior</string>
+ <string name="select_all_below">Seleccionar todo lo siguiente</string>
<string name="hide_unplayed_episodes_label">No reproducidos</string>
<string name="hide_paused_episodes_label">Pausados</string>
<string name="hide_played_episodes_label">Reproducidos</string>
@@ -142,10 +149,14 @@
<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="refresh_failed_msg">{fa-exclamation-circle} Error en la última actualización</string>
<string name="open_podcast">Abrir pódcast</string>
<!--actions on feeditems-->
<string name="download_label">Descargar</string>
+ <plurals name="downloading_batch_label">
+ <item quantity="one">Descargando %d episodio.</item>
+ <item quantity="other">Descargando %d episodios.</item>
+ </plurals>
<string name="play_label">Reproducir</string>
<string name="pause_label">Pausar</string>
<string name="stop_label">Detener</string>
@@ -153,15 +164,35 @@
<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">Eliminar episodio</string>
+ <string name="delete_episode_label">Borrar Episodio</string>
+ <plurals name="deleted_episode_batch_label">
+ <item quantity="one">%depisodio borrado.</item>
+ <item quantity="other">%depisodios borrados.</item>
+ </plurals>
<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>
+ <plurals name="marked_read_batch_label">
+ <item quantity="one">%depisodio marcado como reproducido.</item>
+ <item quantity="other">%depisodios marcados como reproducidos.</item>
+ </plurals>
<string name="mark_unread_label">Marcar como no reproducido</string>
+ <plurals name="marked_unread_batch_label">
+ <item quantity="one">%d episodio marcado como no reproducido.</item>
+ <item quantity="other">%d episodios marcados como no reproducidos.</item>
+ </plurals>
<string name="add_to_queue_label">Añadir a la cola</string>
<string name="added_to_queue_label">Añadido a la cola</string>
+ <plurals name="added_to_queue_batch_label">
+ <item quantity="one">%d episodio añadido a la cola.</item>
+ <item quantity="other">%d episodios añadidos a la cola.</item>
+ </plurals>
<string name="remove_from_queue_label">Eliminar de la cola</string>
+ <plurals name="removed_from_queue_batch_label">
+ <item quantity="one">%d episodio eliminado de la cola.</item>
+ <item quantity="other">%d episodios eliminados de la cola.</item>
+ </plurals>
<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>
@@ -213,6 +244,7 @@
<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="null_value_podcast_error">No se proporcionó ningún pódcast que pudiera mostrarse.</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>
@@ -286,10 +318,25 @@
<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_items_header_label">Sin episodios en la cola</string>
+ <string name="no_items_label">Añada un episodio descargándolo o presione prolongadamente un episodio y seleccione \"Añadir a la cola\".</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 notas del programa.</string>
+ <string name="no_run_downloads_head_label">No hay descargas en ejecución</string>
+ <string name="no_run_downloads_label">Puede descargar episodios en la pantalla de detalles del pódcast.</string>
+ <string name="no_comp_downloads_head_label">No hay episodios descargados</string>
+ <string name="no_comp_downloads_label">Puede descargar episodios en la pantalla de detalles del pódcast.</string>
+ <string name="no_log_downloads_head_label">Sin registro de descargas</string>
+ <string name="no_log_downloads_label">Los registros de descargas aparecerán aquí cuando estén disponibles.</string>
+ <string name="no_history_head_label">Sin historial</string>
+ <string name="no_history_label">Después de escuchar un episodio, aparecerá aquí.</string>
+ <string name="no_all_episodes_head_label">Sin episodios</string>
+ <string name="no_all_episodes_label">Cuando añada un pódcast, los episodios aparecerán aquí.</string>
+ <string name="no_new_episodes_head_label">Sin episodios nuevos</string>
+ <string name="no_new_episodes_label">Cuando lleguen nuevos episodios, aparecerán aquí.</string>
+ <string name="no_fav_episodes_head_label">Sin episodios favoritos</string>
+ <string name="no_fav_episodes_label">Puede añadir episodios a los favoritos presionándolos durante un tiempo prolongado.</string>
<!--Preferences-->
<string name="storage_pref">Almacenamiento</string>
<string name="project_pref">Proyecto</string>
@@ -302,6 +349,7 @@
<string name="automation">Automatización</string>
<string name="download_pref_details">Detalles</string>
<string name="import_export_pref">Importar/Exportar</string>
+ <string name="import_export_search_keywords">copia de seguridad, restaurar, backup, restore</string>
<string name="appearance">Apariencia</string>
<string name="external_elements">Elementos externos</string>
<string name="interruptions">Interrupciones</string>
@@ -313,6 +361,7 @@
<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_hardwareForwardButtonSkips_sum">Al pulsar el botón de avance en un dispositivo conectado por bluetooth, salta al siguiente episodio en lugar de avanzar</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>
@@ -342,6 +391,9 @@
<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 la red de datos móvil</string>
+ <string name="pref_mobileUpdate_nothing">Nada</string>
+ <string name="pref_mobileUpdate_images">Solo imágenes</string>
+ <string name="pref_mobileUpdate_everything">Todo</string>
<string name="refreshing_label">Actualizando</string>
<string name="flattr_settings_label">Ajustes de Flattr</string>
<string name="pref_flattr_auth_title">Identificarse en Flattr</string>
@@ -403,19 +455,21 @@
<string name="pref_rewind">Intervalo de retroceso</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_gpodnet_sethostname_use_default_host">Usar el nombre predeterminado</string>
+ <string name="pref_expandNotify_title">Alta prioridad de las notificaciones</string>
+ <string name="pref_expandNotify_sum">Esto suele expandir las notificaciones para mostrar los botones de reproducción.</string>
<string name="pref_persistNotify_title">Controles de reproducción persistentes</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_compact_notification_buttons_dialog_error">Sólo puede 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 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_sum">Añadir 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 del almacenamiento de imágenes</string>
@@ -434,13 +488,27 @@
<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">Agregar descargados a la cola</string>
- <string name="pref_enqueue_downloaded_summary">Agregar episodios descargados a la cola</string>
+ <string name="pref_enqueue_downloaded_title">Añadir descargados a la cola</string>
+ <string name="pref_enqueue_downloaded_summary">Añadir episodios descargados a la cola</string>
<string name="media_player_builtin">Reproductor Android integrado</string>
+ <string name="pref_skip_silence_title">Saltar silencio en audio</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>
+ <string name="behavior">Comportamiento</string>
+ <string name="pref_back_button_behavior_title">Comportamiento del botón de retroceso</string>
+ <string name="pref_back_button_behavior_sum">Cambiar el comportamiento del botón de retroceso.</string>
+ <string name="back_button_default">Predeterminado</string>
+ <string name="back_button_open_drawer">Abrir el cajón de navegación</string>
+ <string name="back_button_double_tap">Tocar dos veces para salir</string>
+ <string name="back_button_show_prompt">Confirmar para salir</string>
+ <string name="close_prompt">¿Está seguro de que quiere cerrar AntennaPod?</string>
+ <string name="double_tap_toast">Pulsar el botón de nuevo para salir</string>
+ <string name="back_button_go_to_page">Ir a la página...</string>
+ <string name="back_button_go_to_page_title">Seleccionar página</string>
+ <string name="pref_delete_removes_from_queue_title">Eliminar quita de la cola</string>
+ <string name="pref_delete_removes_from_queue_sum">Quitar automáticamente un episodio de la cola cuando se elimina.</string>
<!--Auto-Flattr dialog-->
<string name="auto_flattr_enable">Habilitar Flattr automático</string>
<string name="auto_flattr_after_percent">Valorar con Flattr el episodio cuando se haya reproducido el %d por ciento</string>
@@ -461,13 +529,13 @@
<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 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="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="start_import_label">Comenzar la importación</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_import_error_no_file">¡Debes seleccionar un archivo!</string>
+ <string name="opml_import_error_no_file">¡Debe 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>
@@ -514,9 +582,9 @@
<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">Bienvenidoinicio de sesión de gpodder.net. Primero, escriba sus datos de inicio de sesión:</string>
+ <string name="gpodnetauth_login_descr">Bienvenido al inicio 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 aún no tienes una cuenta, puedes crearla en:\nhttps://gpodder.net/register/</string>
+ <string name="gpodnetauth_login_register">Si aún no tiene una cuenta, puede 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>
@@ -525,8 +593,8 @@
<string name="gpodnetauth_device_caption">Descripción</string>
<string name="gpodnetauth_device_butCreateNewDevice">Crear dispositivo nuevo</string>
<string name="gpodnetauth_device_chooseExistingDevice">Elegir dispositivo existente:</string>
- <string name="gpodnetauth_device_errorEmpty">El ID de dispositivo no puede estar vacío</string>
- <string name="gpodnetauth_device_errorAlreadyUsed">El ID de dispositivo ya está en uso</string>
+ <string name="gpodnetauth_device_errorEmpty">El id. de dispositivo no puede estar vacío</string>
+ <string name="gpodnetauth_device_errorAlreadyUsed">El id. de dispositivo ya está en uso</string>
<string name="gpodnetauth_device_caption_errorEmpty">El texto no puede estar en blanco</string>
<string name="gpodnetauth_device_butChoose">Elegir</string>
<string name="gpodnetauth_finish_title">¡Inicio de sesión correcto!</string>
@@ -543,10 +611,10 @@
<string name="selected_folder_label">Carpeta seleccionada</string>
<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_message">Elija la raíz de la carpeta de datos. AntennaPod creará los subdirectorios apropiados.</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_success">Carpeta nueva creada</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>
@@ -633,6 +701,7 @@
<string name="audio_effects">Efectos de audio</string>
<string name="stereo_to_mono">Mezclar: de estéreo a mono</string>
<string name="sonic_only">Solo Sonic</string>
+ <string name="exoplayer_only">Sólo ExoPlayer</string>
<!--proxy settings-->
<string name="proxy_type_label">Tipo</string>
<string name="host_label">Host</string>
@@ -645,6 +714,8 @@
<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 dirección IP o dominio válido</string>
<string name="proxy_port_invalid_error">Puerto no válido</string>
+ <!--Subscriptions fragment-->
+ <string name="subscription_num_columns">Número de columnas</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 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>
diff --git a/core/src/main/res/values-et/strings.xml b/core/src/main/res/values-et/strings.xml
index 9d5673751..99e61a5fa 100644
--- a/core/src/main/res/values-et/strings.xml
+++ b/core/src/main/res/values-et/strings.xml
@@ -116,7 +116,6 @@
<string name="stream_label">Voogedastusena</string>
<string name="remove_label">Eemalda</string>
<string name="delete_label">Kustuta</string>
- <string name="remove_episode_lable">Eemalda saade</string>
<string name="marked_as_seen_label">Märgitud nähtuks</string>
<string name="mark_read_label">Märgi esitatuks</string>
<string name="marked_as_read_label">Märgitud kuulatuks</string>
@@ -215,7 +214,6 @@
<string name="set_playback_speed_label">Esitamise kiirused</string>
<string name="enable_sonic">Luba Sonicu kasutamine</string>
<!--Empty list labels-->
- <string name="no_items_label">Selles nimekirjas pole midagi.</string>
<string name="no_chapters_label">Saatel pole peatükke.</string>
<string name="no_shownotes_label">Sellel saatel pole mingeid märkusi.</string>
<!--Preferences-->
@@ -483,6 +481,7 @@
<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>
+ <!--Subscriptions fragment-->
<!--Database import/export-->
<string name="import_export">Andmebaasi importimine/eksportimine</string>
<string name="label_import">Impordi</string>
diff --git a/core/src/main/res/values-fr/strings.xml b/core/src/main/res/values-fr/strings.xml
index 11c41d415..42fe07f68 100644
--- a/core/src/main/res/values-fr/strings.xml
+++ b/core/src/main/res/values-fr/strings.xml
@@ -40,7 +40,7 @@
<string name="drawer_feed_order_unplayed_episodes">Trier par compteur</string>
<string name="drawer_feed_order_alphabetical">Trier alphabétiquement</string>
<string name="drawer_feed_order_last_update">Trier par date de publication</string>
- <string name="drawer_feed_order_most_played">Trier par nombre d\'épisodes lus</string>
+ <string name="drawer_feed_order_most_played">Trier par nombre lus</string>
<string name="drawer_feed_counter_new_unplayed">Nombre de nouveaux épisodes non-lus</string>
<string name="drawer_feed_counter_new">Nombre de nouveaux épisodes</string>
<string name="drawer_feed_counter_unplayed">Nombre d\'épisodes non-lus</string>
@@ -95,15 +95,20 @@
<string name="episode_cleanup_never">Jamais</string>
<string name="episode_cleanup_queue_removal">Quand l’épisode n\'est pas dans la liste de lecture</string>
<string name="episode_cleanup_after_listening">Après avoir terminé</string>
+ <plurals name="episode_cleanup_hours_after_listening">
+ <item quantity="one">1 heure après avoir été écouté</item>
+ <item quantity="other">%d heures après avoir été écouté</item>
+ </plurals>
<plurals name="episode_cleanup_days_after_listening">
<item quantity="one">1 jour après avoir été écouté</item>
<item quantity="other">%d jours après avoir été écouté</item>
</plurals>
+ <string name="num_selected_label">%d sélectionné(s)</string>
<!--'Add Feed' Activity labels-->
<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_label">Trouver un podcast</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>
<!--Actions on feeds-->
@@ -132,9 +137,11 @@
<string name="load_complete_feed">Mettre à jour tout le podcast</string>
<string name="hide_episodes_title">Cacher épisodes</string>
<string name="batch_edit">Edition groupée</string>
- <string name="hide_unplayed_episodes_label">Non lus</string>
+ <string name="select_all_above">Sélectionner avec ceux au-dessus</string>
+ <string name="select_all_below">Sélectionner avec ceux en-dessous</string>
+ <string name="hide_unplayed_episodes_label">Non lu</string>
<string name="hide_paused_episodes_label">En pause</string>
- <string name="hide_played_episodes_label">Lus</string>
+ <string name="hide_played_episodes_label">Lu</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>
@@ -146,6 +153,10 @@
<string name="open_podcast">Ouvrir Podcast</string>
<!--actions on feeditems-->
<string name="download_label">Télécharger</string>
+ <plurals name="downloading_batch_label">
+ <item quantity="one">Téléchargement d\'%d épisode.</item>
+ <item quantity="other">Téléchargement de %d épisodes.</item>
+ </plurals>
<string name="play_label">Lire</string>
<string name="pause_label">Pause</string>
<string name="stop_label">Stop</string>
@@ -153,15 +164,35 @@
<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</string>
+ <string name="delete_episode_label">Suppression de l\'épisode</string>
+ <plurals name="deleted_episode_batch_label">
+ <item quantity="one">%d épisode supprimé.</item>
+ <item quantity="other">%d épisodes supprimés.</item>
+ </plurals>
<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>
+ <plurals name="marked_read_batch_label">
+ <item quantity="one">%d épisode marqué comme lu.</item>
+ <item quantity="other">%d épisodes marqués comme lus.</item>
+ </plurals>
<string name="mark_unread_label">Marquer comme non lu</string>
+ <plurals name="marked_unread_batch_label">
+ <item quantity="one">%d épisode marqué comme non lu.</item>
+ <item quantity="other">%d épisodes marqués comme non lus.</item>
+ </plurals>
<string name="add_to_queue_label">Ajouter à la liste de lecture</string>
<string name="added_to_queue_label">Ajouté à la liste de lecture</string>
+ <plurals name="added_to_queue_batch_label">
+ <item quantity="one">%d épisode ajouté à la liste de lecture.</item>
+ <item quantity="other">%d épisodes ajoutés à la liste de lecture</item>
+ </plurals>
<string name="remove_from_queue_label">Supprimer de la liste de lecture</string>
+ <plurals name="removed_from_queue_batch_label">
+ <item quantity="one">%d épisode supprimé de la liste de lecture.</item>
+ <item quantity="other">%d épisodes supprimés de la liste de lecture.</item>
+ </plurals>
<string name="add_to_favorite_label">Ajouter aux Favoris</string>
<string name="added_to_favorites">Ajouté aux Favoris</string>
<string name="remove_from_favorite_label">Supprimer des Favoris</string>
@@ -185,7 +216,7 @@
<string name="download_error_file_error">Accès au fichier impossible</string>
<string name="download_error_http_data_error">Erreur de données HTTP</string>
<string name="download_error_error_unknown">Erreur inconnue</string>
- <string name="download_error_parser_exception">Exception de l\'analyseur</string>
+ <string name="download_error_parser_exception">Message d\'erreur</string>
<string name="download_error_unsupported_type">Type de flux non géré</string>
<string name="download_error_connection_error">Erreur de connexion</string>
<string name="download_error_unknown_host">Hôte inconnu</string>
@@ -213,6 +244,7 @@
<string name="download_type_media">Fichier média</string>
<string name="download_type_image">Image</string>
<string name="download_request_error_dialog_message_prefix">Une erreur s\'est produite durant le téléchargement du fichier :\u0020</string>
+ <string name="null_value_podcast_error">Aucun podcast correspondant.</string>
<string name="authentication_notification_title">Authentification requise</string>
<string name="authentication_notification_msg">La ressource que vous avez demandé nécessite un nom d\'utilisateur et un mot de passe</string>
<string name="confirm_mobile_download_dialog_title">Confirmer le téléchargement mobile</string>
@@ -286,10 +318,25 @@
<string name="set_playback_speed_label">Vitesses de lecture</string>
<string name="enable_sonic">Activer Sonic</string>
<!--Empty list labels-->
- <string name="no_items_label">Cette liste est vide.</string>
+ <string name="no_items_header_label">Aucun épisode dans la liste de lecture</string>
+ <string name="no_items_label">Pour ajouter un épisode, téléchargez le ou faites une pression longue dessus et taper sur \"Ajouter à la liste de lecture\".</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_chapters_label">Cet épisode n\'a pas de chapitre.</string>
<string name="no_shownotes_label">Aucune notes pour cet épisode.</string>
+ <string name="no_run_downloads_head_label">Aucun téléchargement en cours</string>
+ <string name="no_run_downloads_label">Vous pouvez télécharger des épisodes à partir du détail d\'un podcast.</string>
+ <string name="no_comp_downloads_head_label">Aucun épisode téléchargé</string>
+ <string name="no_comp_downloads_label">Vous pouvez télécharger des épisodes à partir du détail d\'un podcast.</string>
+ <string name="no_log_downloads_head_label">Aucun téléchargement dans l\'historique</string>
+ <string name="no_log_downloads_label">L\'historique des téléchargements apparaîtra quand il ne sera plus vide. </string>
+ <string name="no_history_head_label">Aucun historique</string>
+ <string name="no_history_label">Après avoir écouté un épisode il apparaîtra ici.</string>
+ <string name="no_all_episodes_head_label">Aucun épisode</string>
+ <string name="no_all_episodes_label">Quand vous ajouterez un podcast ses épisodes seront montrés ici.</string>
+ <string name="no_new_episodes_head_label">Aucun nouvel épisode</string>
+ <string name="no_new_episodes_label">Quand de nouveaux épisodes seront disponibles ils apparaîtront ici.</string>
+ <string name="no_fav_episodes_head_label">Aucun épisode favori</string>
+ <string name="no_fav_episodes_label">Vous pouvez marquer des épisodes comme favoris par une pression longue dessus.</string>
<!--Preferences-->
<string name="storage_pref">Stockage</string>
<string name="project_pref">Projet</string>
@@ -302,6 +349,7 @@
<string name="automation">Automatisation</string>
<string name="download_pref_details">Détails</string>
<string name="import_export_pref">Importation / Exportation</string>
+ <string name="import_export_search_keywords">backup, restore, sauvegarde, restauration, import, export</string>
<string name="appearance">Apparence</string>
<string name="external_elements">Eléments externes</string>
<string name="interruptions">Interruptions</string>
@@ -310,9 +358,10 @@
<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 connectés</string>
- <string name="pref_unpauseOnBluetoothReconnect_sum">Reprendre la lecture quand le Bluetooth se connecte</string>
+ <string name="pref_unpauseOnHeadsetReconnect_sum">Reprendre la lecture quand des écouteurs sont branchés</string>
+ <string name="pref_unpauseOnBluetoothReconnect_sum">Reprendre la lecture quand le Bluetooth se reconnecte</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 \"saut avant\" est pressé sur un périphérique bluetooth</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>
@@ -342,6 +391,9 @@
<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="pref_mobileUpdate_nothing">Rien</string>
+ <string name="pref_mobileUpdate_images">Seulement les images</string>
+ <string name="pref_mobileUpdate_everything">Tout</string>
<string name="refreshing_label">Mise à jour en cours</string>
<string name="flattr_settings_label">Paramètres Flattr</string>
<string name="pref_flattr_auth_title">Connexion à Flattr</string>
@@ -404,6 +456,8 @@
<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">Priorité haute de notification</string>
+ <string name="pref_expandNotify_sum">Permet, généralement, d\'étendre la notification pour montrer 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>
@@ -437,10 +491,24 @@
<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_skip_silence_title">Supprimer les silences audios</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>
+ <string name="behavior">Comportement</string>
+ <string name="pref_back_button_behavior_title">Comportement du bouton retour</string>
+ <string name="pref_back_button_behavior_sum">Change le comportement du bouton retour</string>
+ <string name="back_button_default">Défaut</string>
+ <string name="back_button_open_drawer">Ouvrir le volet de navigation</string>
+ <string name="back_button_double_tap">Taper 2 fois pour quitter</string>
+ <string name="back_button_show_prompt">Confirmer la fermeture</string>
+ <string name="close_prompt">Etes-vous sur de vouloir fermer AntennaPod ?</string>
+ <string name="double_tap_toast">Taper encore une fois retour pour quitter</string>
+ <string name="back_button_go_to_page">Aller à la page...</string>
+ <string name="back_button_go_to_page_title">Sélectionner une page</string>
+ <string name="pref_delete_removes_from_queue_title">Supprimer retire de la liste de lecture</string>
+ <string name="pref_delete_removes_from_queue_sum">Retirer de la liste de lecture les épisodes quand ils sont supprimés.</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 quand %d pourcent de l\'épisode a été lu</string>
@@ -593,7 +661,7 @@
<string name="filter">Filtrer</string>
<string name="search_fyyd_label">Chercher sur fyyd</string>
<!--Episodes apply actions-->
- <string name="all_label">Tout</string>
+ <string name="all_label">Tous</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>
@@ -633,6 +701,7 @@
<string name="audio_effects">Effets audio</string>
<string name="stereo_to_mono">Mixage : stéréo à mono</string>
<string name="sonic_only">Sonic seulement</string>
+ <string name="exoplayer_only">ExoPlayer seulement</string>
<!--proxy settings-->
<string name="proxy_type_label">Type</string>
<string name="host_label">Hôte</string>
@@ -645,6 +714,8 @@
<string name="proxy_host_empty_error">Hôte ne peut pas être vide</string>
<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>
+ <!--Subscriptions fragment-->
+ <string name="subscription_num_columns">Nombre de colonnes</string>
<!--Database import/export-->
<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>
diff --git a/core/src/main/res/values-gl-rES/strings.xml b/core/src/main/res/values-gl-rES/strings.xml
index a2a4366ed..369d39d4c 100644
--- a/core/src/main/res/values-gl-rES/strings.xml
+++ b/core/src/main/res/values-gl-rES/strings.xml
@@ -69,7 +69,7 @@
<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 aplicativo 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í a aplicación 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>
@@ -95,10 +95,15 @@
<string name="episode_cleanup_never">Nunca</string>
<string name="episode_cleanup_queue_removal">Cando non esté na cola</string>
<string name="episode_cleanup_after_listening">Tras rematar</string>
+ <plurals name="episode_cleanup_hours_after_listening">
+ <item quantity="one">1 hora tras rematar</item>
+ <item quantity="other">%d horas tras rematar</item>
+ </plurals>
<plurals name="episode_cleanup_days_after_listening">
<item quantity="one">1 día despois de rematar</item>
<item quantity="other">%d días despois de rematar</item>
</plurals>
+ <string name="num_selected_label">%d escollido</string>
<!--'Add Feed' Activity labels-->
<string name="feedurl_label">URL da fonte</string>
<string name="etxtFeedurlHint">www.example.com/feed</string>
@@ -132,6 +137,8 @@
<string name="load_complete_feed">Actualizar o podcast completo</string>
<string name="hide_episodes_title">Ocultar episodios</string>
<string name="batch_edit">Edición por lote</string>
+ <string name="select_all_above">Seleccionar todo arriba</string>
+ <string name="select_all_below">Seleccionar todo debaixo</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>
@@ -146,6 +153,10 @@
<string name="open_podcast">Abrir podcast</string>
<!--actions on feeditems-->
<string name="download_label">Descargar</string>
+ <plurals name="downloading_batch_label">
+ <item quantity="one">Descargando %d episodio</item>
+ <item quantity="other">Descargando %d episodios</item>
+ </plurals>
<string name="play_label">Reproducir</string>
<string name="pause_label">Pausar</string>
<string name="stop_label">Parar</string>
@@ -153,15 +164,35 @@
<string name="remove_label">Eliminar</string>
<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="delete_episode_label">Eliminar episodio</string>
+ <plurals name="deleted_episode_batch_label">
+ <item quantity="one">%d episodio eliminado.</item>
+ <item quantity="other">%d episodios eliminados.</item>
+ </plurals>
<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>
+ <plurals name="marked_read_batch_label">
+ <item quantity="one">%d episodio marcado como reproducido.</item>
+ <item quantity="other">%d episodios marcados como reproducidos.</item>
+ </plurals>
<string name="mark_unread_label">Marcar como non reproducido</string>
+ <plurals name="marked_unread_batch_label">
+ <item quantity="one">%d episodio marcado como non reproducido.</item>
+ <item quantity="other">%d episodios marcados como non reproducidos.</item>
+ </plurals>
<string name="add_to_queue_label">Engadir a cola</string>
<string name="added_to_queue_label">Engadido a cola</string>
+ <plurals name="added_to_queue_batch_label">
+ <item quantity="one">%d episodio engadido a cola.</item>
+ <item quantity="other">%d episodios engadidos a cola.</item>
+ </plurals>
<string name="remove_from_queue_label">Quitar da cola</string>
+ <plurals name="removed_from_queue_batch_label">
+ <item quantity="one">%d episodio eliminado da cola.</item>
+ <item quantity="other">%d episodios elimnados da cola.</item>
+ </plurals>
<string name="add_to_favorite_label">Engadir a favoritos</string>
<string name="added_to_favorites">Engadido a favoritos</string>
<string name="remove_from_favorite_label">Quitar dos favoritos</string>
@@ -213,6 +244,7 @@
<string name="download_type_media">Ficheiro de medios</string>
<string name="download_type_image">Imaxe</string>
<string name="download_request_error_dialog_message_prefix">Houbo un fallo intentando descargar o ficheiro:\u0020</string>
+ <string name="null_value_podcast_error">Non se proporcionou ningún podcast que se poida mostrar.</string>
<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>
@@ -258,15 +290,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 aplicativo.</string>
+ <string name="flattr_auth_success">Autenticouse correctamente! Xa pode enviar valoracións a Flattr desde a aplicación.</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 aplicativo 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 a aplicación 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 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>
+ <string name="access_revoked_info">Eliminou correctamente o token de acceso de AntennaPod á súa conta. Para completar o proceso deberá eliminar esta aplicación da lista de aplicacións autorizadas 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>
@@ -286,10 +318,25 @@
<string name="set_playback_speed_label">Velocidade de reproducións</string>
<string name="enable_sonic">Habilitar Sonic</string>
<!--Empty list labels-->
- <string name="no_items_label">Non hai elementos na lista.</string>
+ <string name="no_items_header_label">Sen episodios na cola</string>
+ <string name="no_items_label">Engada un episodio descargándoo, ou manteña preso un episodio e escolla \"Engadir a cola\".</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>
+ <string name="no_run_downloads_head_label">Sen descargas activas</string>
+ <string name="no_run_downloads_label">Pode descargar episodios na pantalla con detalles do episodio.</string>
+ <string name="no_comp_downloads_head_label">Sen episodios descargados</string>
+ <string name="no_comp_downloads_label">Pode descargar episodios na pantalla de detalles do podcast.</string>
+ <string name="no_log_downloads_head_label">Sen rexistro da descarga</string>
+ <string name="no_log_downloads_label">Os rexistros de descarga aparecerán aquí se están dispoñibles.</string>
+ <string name="no_history_head_label">Sen Historial</string>
+ <string name="no_history_label">Tras a escoita de un episodio, aparecerá aquí.</string>
+ <string name="no_all_episodes_head_label">Sen episodios</string>
+ <string name="no_all_episodes_label">Cando engade un podcast, os episodios mostraranse aquí.</string>
+ <string name="no_new_episodes_head_label">Sen episodios novos</string>
+ <string name="no_new_episodes_label">Cando reciba novos episodios, mostraranse aquí.</string>
+ <string name="no_fav_episodes_head_label">Sen episodios favoritos</string>
+ <string name="no_fav_episodes_label">Pode engadir episodios aos favoritos manténdoos pulsados.</string>
<!--Preferences-->
<string name="storage_pref">Almacenamento</string>
<string name="project_pref">Proxecto</string>
@@ -302,6 +349,7 @@
<string name="automation">Automatizado</string>
<string name="download_pref_details">Detalles</string>
<string name="import_export_pref">Importar/Exportar</string>
+ <string name="import_export_search_keywords">respaldar, restaurar</string>
<string name="appearance">Aspecto</string>
<string name="external_elements">Elementos externos</string>
<string name="interruptions">Interrupcións</string>
@@ -313,6 +361,7 @@
<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">A premer no botón de adiante nun dispositivo conectado por bluetooth ir ao episodio seguinte en vez dun avance rápido</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>
@@ -342,14 +391,17 @@
<string name="pref_unpauseOnBluetoothReconnect_title">Reconexión bluetooth</string>
<string name="pref_mobileUpdate_title">Actualizacións Móbil</string>
<string name="pref_mobileUpdate_sum">Permitir actualizacións sobre a rede de datos do móbil</string>
+ <string name="pref_mobileUpdate_nothing">Nada</string>
+ <string name="pref_mobileUpdate_images">Só imaxes</string>
+ <string name="pref_mobileUpdate_everything">Todo</string>
<string name="refreshing_label">Actualizando</string>
<string name="flattr_settings_label">Axustes Flattr</string>
<string name="pref_flattr_auth_title">Conexión Flattr</string>
- <string name="pref_flattr_auth_sum">Conéctese a súa conta Flattr para interactuar desde o aplicativo.</string>
- <string name="pref_flattr_this_app_title">Flattr este aplicativo</string>
+ <string name="pref_flattr_auth_sum">Conéctese a súa conta Flattr para interactuar desde a aplicación..</string>
+ <string name="pref_flattr_this_app_title">Flattr esta App</string>
<string name="pref_flattr_this_app_sum">Axude ao desenvolvemento de AntennaPod comentandoo en Flattr. Grazas!</string>
<string name="pref_revokeAccess_title">Retirar acceso</string>
- <string name="pref_revokeAccess_sum">Retirar o permiso de acceso a súa conta Flattr en este aplicativo.</string>
+ <string name="pref_revokeAccess_sum">Retirar o permiso de acceso a súa conta Flattr en esta aplicación..</string>
<string name="pref_auto_flattr_title">Flattr automático</string>
<string name="pref_auto_flattr_sum">Configure o flattr automático</string>
<string name="user_interface_label">Interface de usuaria</string>
@@ -404,6 +456,8 @@
<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">Alta prioridade nas notificacións</string>
+ <string name="pref_expandNotify_sum">Isto expande as notificacións 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>
@@ -411,7 +465,7 @@
<string name="pref_compact_notification_buttons_dialog_title">Escolla un máximo de %1$d elementos</string>
<string name="pref_compact_notification_buttons_dialog_error">Só pode selecionar un máximo de %1$d elementos.</string>
<string name="pref_lockscreen_background_title">Establecer fondo da pantalla de bloqueo</string>
- <string name="pref_lockscreen_background_sum">Establecer o fondo de pantalla de bloqueo coa imaxe do episodio actual. Como consecuencia, esto tamén mostrará a imaxe en aplicativos de terceiros.</string>
+ <string name="pref_lockscreen_background_sum">Establecer o fondo de pantalla de bloqueo coa imaxe do episodio actual. Como consecuencia, esto tamén mostrará a imaxe en aplicacións de terceiros.</string>
<string name="pref_showDownloadReport_title">Mostrar informe de descarga</string>
<string name="pref_showDownloadReport_sum">Si falla a descarga, xerar un informe que informe dos detalles do fallo.</string>
<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>
@@ -421,7 +475,7 @@
<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="crash_report_sum">Enviar por correo-e o informe de fallo xeral na aplicación</string>
<string name="send_email">Enviar email</string>
<string name="experimental_pref">En probas</string>
<string name="pref_media_player_message">Escolla o reprodutor de medios para reproducir ficheiros</string>
@@ -437,10 +491,24 @@
<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_skip_silence_title">Saltar silencio no Audio</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>
+ <string name="behavior">Comportamento</string>
+ <string name="pref_back_button_behavior_title">Comportamento do botón Atrás</string>
+ <string name="pref_back_button_behavior_sum">Cambiar o comportamento do botón atrás.</string>
+ <string name="back_button_default">Predeterminado</string>
+ <string name="back_button_open_drawer">Abrir a caixa de navegación</string>
+ <string name="back_button_double_tap">Dobre toque para saír</string>
+ <string name="back_button_show_prompt">Confirmar a saída</string>
+ <string name="close_prompt">Confirma o peche do AntennaPod?</string>
+ <string name="double_tap_toast">Tocar o botón Atrás outra vez para saír</string>
+ <string name="back_button_go_to_page">Ir á páxina...</string>
+ <string name="back_button_go_to_page_title">Seleccionar páxina</string>
+ <string name="pref_delete_removes_from_queue_title">Eliminar quita da Cola</string>
+ <string name="pref_delete_removes_from_queue_sum">Eliminar automáticamente un episodio da cola cando se elimina.</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>
@@ -461,7 +529,7 @@
<string name="opml_import_option">Opción %1$d</string>
<string name="opml_import_explanation_1">Escolla unha ruta de ficheiro concreta no sistema de ficheiros local.</string>
<string name="opml_import_explanation_2">Utilice unha aplicación externa como Dropbox, Google Drive ou o seu xestor de ficheiros para abrir un ficheiro OPML.</string>
- <string name="opml_import_explanation_3">Moitos aplicativos como Google Mail, Dropbox, Google Drive e a maioría dos xestores de ficheiros poden <i>abrir</i> ficheiros OPML <i>con</i> AntennaPod.</string>
+ <string name="opml_import_explanation_3">Moitas aplicacións, como Google Mail, Dropbox, Google Drive e a maioría dos xestores de ficheiros poden <i>abrir</i> ficheiros OPML <i>con</i> AntennaPod.</string>
<string name="start_import_label">Iniciar a importación</string>
<string name="opml_import_label">Importar OPML</string>
<string name="opml_directory_error">FALLO!</string>
@@ -472,7 +540,7 @@
<string name="deselect_all_label">Deseleccionar todo</string>
<string name="select_options_label">Seleccionar...</string>
<string name="choose_file_from_filesystem">Desde sistema local de ficheiros</string>
- <string name="choose_file_from_external_application">Utilizar aplicativo externo</string>
+ <string name="choose_file_from_external_application">Utilizar aplicacións externa</string>
<string name="opml_export_label">Exportar OPML</string>
<string name="html_export_label">Exportar HTML</string>
<string name="exporting_label">Exportando...</string>
@@ -556,7 +624,7 @@
<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 aplicativo quere reproducir un son.</string>
+ <string name="pref_pausePlaybackForFocusLoss_sum">Pausar a reprodución en lugar de baixar o volume cando outra aplicación 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>
@@ -588,7 +656,7 @@
<!--Progress information-->
<string name="progress_upgrading_database">Actualizando a base de datos</string>
<!--AntennaPodSP-->
- <string name="sp_apps_importing_feeds_msg">Importando as subscricións desde aplicativos de propósito único...</string>
+ <string name="sp_apps_importing_feeds_msg">Importando as subscricións desde aplicacións 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 en fyyd</string>
@@ -633,6 +701,7 @@
<string name="audio_effects">Efectos de son</string>
<string name="stereo_to_mono">Comprimir: stereo a mono</string>
<string name="sonic_only">Só Sonic</string>
+ <string name="exoplayer_only">Só ExoPlayer</string>
<!--proxy settings-->
<string name="proxy_type_label">Tipo</string>
<string name="host_label">Servidor</string>
@@ -645,6 +714,8 @@
<string name="proxy_host_empty_error">Servidor non pode quedar baldeiro</string>
<string name="proxy_host_invalid_error">O servidor indicado non é un dominio ou IP válidos</string>
<string name="proxy_port_invalid_error">Porto non válido</string>
+ <!--Subscriptions fragment-->
+ <string name="subscription_num_columns">Número de columnas</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 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>
@@ -663,7 +734,7 @@
<!--<string name="cast_failed_to_connect">Could not connect to the device</string>-->
<string name="cast_failed_setting_volume">Non se puido establecer o volume</string>
<string name="cast_failed_no_connection">Non hai conexión ao dispositivo de emisión</string>
- <string name="cast_failed_no_connection_trans">Perdeuse a conexión ao dispositivo de emisión. O aplicativo está a intentar restablecela se fose posible. Por favor, agarde uns segundos e inténteo de novo.</string>
+ <string name="cast_failed_no_connection_trans">Perdeuse a conexión ao dispositivo de emisión. A aplicación está a intentar restablecela se fose posible. Por favor, agarde uns segundos e inténteo de novo.</string>
<string name="cast_failed_perform_action">Non se puido completar a acción</string>
<string name="cast_failed_status_request">Fallo de sincronización co dispositivo de emisión</string>
<string name="cast_failed_seek">Non se puido cambiar a posición no dispositivo de emisión</string>
diff --git a/core/src/main/res/values-hi-rIN/strings.xml b/core/src/main/res/values-hi-rIN/strings.xml
index 2cb584c48..17a26e125 100644
--- a/core/src/main/res/values-hi-rIN/strings.xml
+++ b/core/src/main/res/values-hi-rIN/strings.xml
@@ -144,7 +144,6 @@
<string name="remove_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>
@@ -260,7 +259,6 @@
<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_chapters_label">इस एपिसोड में कोई अध्याय नहीं है।</string>
<string name="no_shownotes_label">इस एपिसोड में कोई शोनोट्स नहीं है।</string>
@@ -401,6 +399,7 @@
<!--Rating dialog-->
<!--Audio controls-->
<!--proxy settings-->
+ <!--Subscriptions fragment-->
<!--Database import/export-->
<!--Casting-->
<!--<string name="cast_failed_to_connect">Could not connect to the device</string>-->
diff --git a/core/src/main/res/values-hu/strings.xml b/core/src/main/res/values-hu/strings.xml
index 71e1283ce..7c252a0db 100644
--- a/core/src/main/res/values-hu/strings.xml
+++ b/core/src/main/res/values-hu/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">Feliratkozások frissítése</string>
<string name="feeds_label">Idővonalak</string>
<string name="statistics_label">Statisztika</string>
<string name="add_feed_label">Podcast hozzáadása</string>
<string name="episodes_label">Epizódok</string>
<string name="all_episodes_short_label">Mind</string>
+ <string name="new_episodes_label">Újak</string>
<string name="favorite_episodes_label">Kedvencek</string>
<string name="new_label">Új</string>
<string name="settings_label">Beállítások</string>
@@ -18,6 +20,7 @@
<string name="cancel_download_label">Letöltés megállítása</string>
<string name="playback_history_label">Lejátszási Napló</string>
<string name="gpodnet_main_label">gpodder.net</string>
+ <string name="gpodnet_summary">Szinkronizáció más eszközökkel</string>
<string name="gpodnet_auth_label">gpodder.net Bejelentkezés</string>
<string name="free_space_label">%1$s szabad</string>
<string name="episode_cache_full_title">Epizód tárhely megtelt</string>
@@ -25,6 +28,7 @@
<!--Statistics fragment-->
<string name="total_time_listened_to_podcasts">A lejátszott podcast-ok összideje:</string>
<string name="statistics_details_dialog">%1$d-ból %2$d epizód elindítva.\n\n%3$s-ból %4$s lejátszva.</string>
+ <string name="statistics_mode">Statisztikai módok</string>
<!--Main activity-->
<string name="drawer_open">Menü megnyitása</string>
<string name="drawer_close">Menü bezárása</string>
@@ -52,6 +56,7 @@
<string name="yes">Igen</string>
<string name="no">Nem</string>
<string name="reset">Visszaállítás</string>
+ <string name="author_label">Szerző(k)</string>
<string name="language_label">Nyelv</string>
<string name="url_label">URL</string>
<string name="podcast_settings_label">Beállítások</string>
@@ -103,6 +108,7 @@
<string name="mark_all_seen_label">Az összes megjelölése megnézettként</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="feed_settings_label">Podcast beállítások</string>
<string name="share_label">Megosztás…</string>
<string name="share_file_label">Fájl megosztása</string>
<string name="share_feed_url_label">Idővonal URL megosztása</string>
@@ -126,7 +132,6 @@
<string name="stream_label">Stream-elés</string>
<string name="remove_label">Eltávolítás</string>
<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">Jelölés játszottnak</string>
<string name="marked_as_read_label">Lejátszottként megjelölve</string>
@@ -219,7 +224,6 @@
<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>
@@ -230,7 +234,7 @@
<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_auto_delete_title">Automatikus 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>
@@ -359,6 +363,7 @@
<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>
+ <!--Subscriptions fragment-->
<!--Database import/export-->
<string name="import_export">Adatbázis importálása/exportálása</string>
<string name="label_import">Importálás</string>
diff --git a/core/src/main/res/values-it/strings.xml b/core/src/main/res/values-it/strings.xml
index 6084c3020..31f252d3e 100644
--- a/core/src/main/res/values-it/strings.xml
+++ b/core/src/main/res/values-it/strings.xml
@@ -1,37 +1,37 @@
<?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="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="new_episodes_label">Novità</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 corso</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="subscriptions_label">Sottoscrizioni</string>
+ <string name="subscriptions_list_label">Elenco sottoscrizioni</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_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="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 dell\'episodio è esaurito. Puoi aumentarlo nelle Impostazioni</string>
+ <string name="episode_cache_full_message">Lo spazio di memoria della cache degli episodi è 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>
- <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_mode">Modalità di calcolo</string>
+ <string name="statistics_mode_normal">Calcola il tempo di riproduzione reale. Riprodurre un podcast due volte verrà contato due volte, segnarlo come riprodotto no.</string>
+ <string name="statistics_mode_count_all">Somma il tempo di riproduzione di 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>
@@ -48,8 +48,8 @@
<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 l\'URL</string>
- <string name="share_url_label">Condividi l\'URL</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-->
@@ -66,43 +66,48 @@
<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="error_msg_prefix">È stato rilevato un errore:</string>
+ <string name="needs_storage_permission">Questa operazione richiede l\'accesso alla memoria</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">Lunghezza:\u0020</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 il nome utente e la password</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 agli episodi precedenti</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 contemporanei</string>
- <string name="feed_auto_download_global">Impostazione Globale</string>
+ <string name="parallel_downloads_suffix">\u0020download paralleli</string>
+ <string name="feed_auto_download_global">Predefinita 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_hours_after_listening">
+ <item quantity="one">1 ora dal completamento</item>
+ <item quantity="other">%d ore dal completamento</item>
+ </plurals>
<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>
+ <string name="num_selected_label">%d selezionati</string>
<!--'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 inserendo un URL</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>
@@ -110,27 +115,30 @@
<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">Per favore conferma che vuoi segnare tutti gli episodi di questo podcast come riprodotti.</string>
+ <string name="mark_all_read_feed_confirmation_msg">Conferma che desideri segnare come riprodotti tutti gli episodi del podcast.</string>
<string name="mark_all_seen_label">Segna tutti 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="show_info_label">Informazioni</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 URL episodio</string>
- <string name="share_link_with_position_label">Condividi URL episodio con posizione</string>
+ <string name="share_link_label">Condividi URL Episodio</string>
+ <string name="share_link_with_position_label">Condividi URL dell\'episodio con la posizione</string>
<string name="share_file_label">Condividi il file</string>
- <string name="share_feed_url_label">Condividi URL del Feed</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="share_feed_url_label">Condividi URL del feed</string>
+ <string name="share_item_url_label">Condividi URL del media</string>
+ <string name="share_item_url_with_position_label">Condividi URL del media come la posizione</string>
+ <string name="feed_delete_confirmation_msg">Conferma di voler eliminare il podcast \"%1$s\" e TUTTI i suoi episodi (compresi quelli scaricati).</string>
+ <string name="feed_remover_msg">Rimozione del Feed in corso</string>
+ <string name="load_complete_feed">Aggiorna podcast completo</string>
<string name="hide_episodes_title">Nascondi gli episodi</string>
+ <string name="batch_edit">Modifica in gruppo</string>
+ <string name="select_all_above">Seleziona tutti sopra</string>
+ <string name="select_all_below">Seleziona tutti sotto</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>
@@ -138,34 +146,59 @@
<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="hide_has_media_label">Pulizia dell\'episodio</string>
+ <string name="hide_is_favorite_label">E\' 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>
+ <string name="open_podcast">Apri Podcast</string>
<!--actions on feeditems-->
- <string name="download_label">Scarica</string>
+ <string name="download_label">Download</string>
+ <plurals name="downloading_batch_label">
+ <item quantity="one">Download di %d episodio.</item>
+ <item quantity="other">Download di %d episodi.</item>
+ </plurals>
<string name="play_label">Riproduci</string>
- <string name="pause_label">Metti in pausa</string>
- <string name="stop_label">Interrompi</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="delete_failed">Impossibile eliminare il file. Il riavvio del dispositivo potrebbe aiutare.</string>
- <string name="remove_episode_lable">Rimuovi l\'episodio</string>
+ <string name="delete_episode_label">Elimina episodio</string>
+ <plurals name="deleted_episode_batch_label">
+ <item quantity="one">%d episodio eliminato.</item>
+ <item quantity="other">%d episodi eliminati.</item>
+ </plurals>
<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>
+ <plurals name="marked_read_batch_label">
+ <item quantity="one">%d episodio segnato come riprodotto.</item>
+ <item quantity="other">%d episodi segnati come riprodotti.</item>
+ </plurals>
<string name="mark_unread_label">Segna come non riprodotto</string>
+ <plurals name="marked_unread_batch_label">
+ <item quantity="one">%d episodio segnato come non riprodotto.</item>
+ <item quantity="other">%d episodi segnati come non riprodotti.</item>
+ </plurals>
<string name="add_to_queue_label">Aggiungi alla coda</string>
- <string name="added_to_queue_label">Aggiunto alla Coda</string>
+ <string name="added_to_queue_label">Aggiunto alla coda</string>
+ <plurals name="added_to_queue_batch_label">
+ <item quantity="one">%d episodio aggiunto alla coda.</item>
+ <item quantity="other">%d episodi aggiunti alla coda.</item>
+ </plurals>
<string name="remove_from_queue_label">Rimuovi dalla coda</string>
+ <plurals name="removed_from_queue_batch_label">
+ <item quantity="one">%d episodio rimosso dalla coda.</item>
+ <item quantity="other">%d episodi rimossi dalla coda.</item>
+ </plurals>
<string name="add_to_favorite_label">Aggiungi ai preferiti</string>
- <string name="added_to_favorites">Aggiunto 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 web</string>
- <string name="support_label">Carica su Flattr</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>
@@ -177,84 +210,91 @@
<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_details_message">%1$s \n\nURL file:\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_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_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 errori</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 rimasto</item>
+ <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 dei dati del podcast in corso</string>
- <string name="download_report_content">%1$d download hanno avuto successo, %2$d hanno fallito</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 multimediale</string>
+ <string name="download_type_media">File multimediali</string>
<string name="download_type_image">Immagine</string>
- <string name="download_request_error_dialog_message_prefix">Si è verificato un errore nello scaricare il file:\u0020</string>
+ <string name="download_request_error_dialog_message_prefix">Rilevato errore durante il download del file:\u0020</string>
+ <string name="null_value_podcast_error">Non è stato fornito alcun podcast da mostrare.</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 dati mobili</string>
- <string name="confirm_mobile_download_dialog_only_add_to_queue">Metti in Coda</string>
+ <string name="confirm_mobile_download_dialog_title">Conferma il download su cellulare</string>
+ <string name="confirm_mobile_download_dialog_message_not_in_queue">Il download tramite rete mobile è disattivato nelle impostazioni.\n\nÈ possibile scegliere di aggiungere semplicemente l\'episodio alla coda o consentire temporaneamente il download.\n\n<small>La scelta verrà ricordata per 10 minuti.</small></string>
+ <string name="confirm_mobile_download_dialog_message">Il download tramite rete mobile è disattivato nelle impostazioni.\n\nVuoi abilitare temporaneamente il download?\n\n<small>La scelta verrà ricordata per 10 minuti.</small></string>
+ <string name="confirm_mobile_download_dialog_only_add_to_queue">Aggiungi alla 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 elemento multimediale in riproduzione</string>
- <string name="player_preparing_msg">Preparazione in corso</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 in corso</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="player_go_to_picture_in_picture">Modalità picture-in-picture</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="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">Annulla</string>
+ <string name="undo">Undo</string>
<string name="removed_from_queue">Oggetto rimosso</string>
- <string name="move_to_top_label">Sposta in cima</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="ascending">Crescente</string>
- <string name="descending">Decrescente</string>
+ <string name="feed_title">Titolo podcast</string>
+ <string name="random">Casuale</string>
+ <string name="smart_shuffle">Casuale intelligente</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">Autentica</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 Flattr non sembra essere collegato ad AntennaPod. Premi qui per accedere.</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">Autentica</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>
@@ -263,7 +303,7 @@
<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">Caricamento su Flattr fallito per %d cose!</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>
@@ -274,128 +314,248 @@
<!--Variable Speed-->
<string name="download_plugin_label">Scarica plugin</string>
<string name="no_playback_plugin_title">Plugin non installato</string>
+ <string name="no_playback_plugin_or_sonic_msg">Per far funzionare la riproduzione a velocità variabile raccomandiamo di usare il Sonic mediaplayer integrato [Android 4.1+].\n\nAltrimenti è possibile scaricare il plugin di terze parti <i>Prestissimo</i> dal Play Store.\nQualsiasi problema riscontrato con Prestissimo non dipende da AntennaPod e dovrebbe esser segnalato allo sviluppatore del plugin.</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_items_header_label">Nessun episodio in coda</string>
+ <string name="no_feeds_label">Non sei ancora abbonato a nessun podcast. </string>
<string name="no_chapters_label">Questo episodio non ha capitoli.</string>
<string name="no_shownotes_label">Questo episodio non ha note.</string>
+ <string name="no_run_downloads_head_label">Nessun download in corso</string>
+ <string name="no_run_downloads_label">Puoi scaricare gli episodi dalla vista dettagliata del podcast.</string>
+ <string name="no_comp_downloads_head_label">Nessun episodio scaricato</string>
+ <string name="no_comp_downloads_label">Puoi scaricare gli episodi dalla vista dettagliata del podcast.</string>
+ <string name="no_log_downloads_head_label">Nessun registro</string>
+ <string name="no_log_downloads_label">Il registro dei download apparirà qui quando disponibile.</string>
+ <string name="no_history_head_label">Nessuna cronologia</string>
+ <string name="no_history_label">Ogni episodio ascoltato apparirà qui.</string>
+ <string name="no_all_episodes_head_label">Nessun episodio</string>
+ <string name="no_all_episodes_label">Quando aggiungi un podcast, gli episodi vengono mostrati qui.</string>
+ <string name="no_new_episodes_head_label">Nessu nuovo episodio</string>
+ <string name="no_new_episodes_label">Quando arrivano nuovi episodi, vengono mostrati qui.</string>
+ <string name="no_fav_episodes_head_label">Nessun episodio preferito</string>
+ <string name="no_fav_episodes_label">Puoi aggiungere episodi ai preferiti tenendo premuto su di essi.</string>
<!--Preferences-->
<string name="storage_pref">Memoria</string>
<string name="project_pref">Progetto</string>
<string name="other_pref">Altro</string>
- <string name="about_pref">Riguardo a</string>
+ <string name="about_pref">Informazioni</string>
<string name="queue_label">Coda</string>
+ <string name="integrations_label">Integrazioni</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="flattr_summary">Servizio micropagamenti</string>
+ <string name="automation">Automazione</string>
+ <string name="download_pref_details">Dettagli</string>
+ <string name="import_export_pref">Importa/Esporta</string>
+ <string name="import_export_search_keywords">backup, ripristina, ripristino</string>
+ <string name="appearance">Aspetto</string>
+ <string name="external_elements">Elementi esterni</string>
+ <string name="interruptions">Interruzioni</string>
+ <string name="buttons">Pulsanti di controllo riproduzione</string>
+ <string name="media_player">Media player</string>
+ <string name="pref_episode_cleanup_title">Pulizia episodi</string>
+ <string name="pref_episode_cleanup_summary">Gli episodi che non sono in coda e non sono tra i preferiti potrebbero essere rimossi se i Download Automatici richiedono maggiore spazio.</string>
+ <string name="pref_pauseOnDisconnect_sum">Sospendi la riproduzione quando le cuffie o il bluetooth vengono disconnessi</string>
+ <string name="pref_unpauseOnHeadsetReconnect_sum">Riprendi la riproduzione quando vengono riconnesse le cuffie</string>
+ <string name="pref_unpauseOnBluetoothReconnect_sum">Riprendi la riproduzione quando il Bluetooth si riconnette</string>
+ <string name="pref_hardwareForwardButtonSkips_title">Il tasto Avanti salta la traccia</string>
+ <string name="pref_hardwareForwardButtonSkips_sum">Quando premi il pulsante avanti su un dispositivo bluetooth connesso passa all\'episodio successivo invece di andare avanti veloce</string>
+ <string name="pref_hardwarePreviousButtonRestarts_title">Il tasto Indietro riavvia la traccia</string>
+ <string name="pref_hardwarePreviousButtonRestarts_sum">Quando viene premuto un tasto Indietro fisico, viene riavviata la traccia invece di tornare indietro</string>
+ <string name="pref_followQueue_sum">Passa al prossimo episodio in coda quando viene completata la 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_smart_mark_as_played_sum">Contrassegna gli episodi come riprodotti anche se rimangono alcuni secondi da riprodurre</string>
+ <string name="pref_smart_mark_as_played_title">Segna come Riprodotto dopo</string>
+ <string name="pref_skip_keeps_episodes_sum">Mantieni in coda gli episodi quando vengono saltati</string>
+ <string name="pref_skip_keeps_episodes_title">Manteni gli episodi saltati</string>
+ <string name="pref_favorite_keeps_episodes_sum">Mantieni gli episodi quando sono segnati come Preferiti</string>
+ <string name="pref_favorite_keeps_episodes_title">Mantieni episodi preferiti</string>
<string name="playback_pref">Riproduzione</string>
<string name="network_pref">Rete</string>
+ <string name="pref_autoUpdateIntervallOrTime_title">Intervallo o orario di aggiornamento</string>
+ <string name="pref_autoUpdateIntervallOrTime_sum">Imposta un intervallo di tempo o un orario specifico in cui le sottoscrizioni vengono aggiornate automaticamente</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_TimeOfDay">Imposta orario</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_unpauseOnHeadsetReconnect_title">Riconnessione 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 a consumo</string>
+ <string name="pref_mobileUpdate_sum">Permetti gli aggiornamenti tramite connessione dati mobile</string>
+ <string name="pref_mobileUpdate_nothing">Niente</string>
+ <string name="pref_mobileUpdate_images">Solo immagini</string>
+ <string name="pref_mobileUpdate_everything">Tutto</string>
<string name="refreshing_label">Aggiornamento</string>
<string name="flattr_settings_label">Impostazioni Flattr</string>
- <string name="pref_flattr_auth_title">Accesso a 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_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_title">Seleziona un tema</string>
+ <string name="pref_nav_drawer_title">Personalizza menù di navigazione</string>
+ <string name="pref_nav_drawer_sum">Personalizza l\'aspetto del menù di navigazione</string>
+ <string name="pref_nav_drawer_items_title">Seleziona elementi del menù</string>
+ <string name="pref_nav_drawer_items_sum">Aggiunti o rimuovi gli elementi che appaiono nel menù laterale.</string>
+ <string name="pref_nav_drawer_feed_order_title">Imposta l\'ordine delle sottoscrizioni</string>
+ <string name="pref_nav_drawer_feed_order_sum">Modifica l\'ordine delle tue sottoscrizioni</string>
+ <string name="pref_nav_drawer_feed_counter_title">Contatore delle sottoscrizioni</string>
+ <string name="pref_nav_drawer_feed_counter_sum">Cambia le informazioni mostrate nel contatore delle sottoscrizioni. Influenza anche l\'ordinamento se l\'Ordine delle Sottoscrizioni è su \'Contatore\' </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_autodl_allow_on_mobile_title">Scarica da rete mobile</string>
+ <string name="pref_autodl_allow_on_mobile_sum">Abilita il download automatico anche tramite la rete mobile.</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">Chiaro</string>
<string name="pref_theme_title_dark">Scuro</string>
+ <string name="pref_theme_title_trueblack">Nero (AMOLED ready)</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">Accesso</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 accesso</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_changes_title">Esegui sincronizzazione delle modifiche</string>
+ <string name="pref_gpodnet_sync_changes_sum">Sincronizza le modifiche alle sottoscrizioni e allo stato degli episodi su gpodder.net</string>
+ <string name="pref_gpodnet_full_sync_title">Esegui sincronizzazione completa</string>
+ <string name="pref_gpodnet_full_sync_sum">Sincronizza tutte le sottoscrizioni e gli stati degli episodi con gpodder.net</string>
+ <string name="pref_gpodnet_sync_sum_last_sync_line">Ultimo tentativo: %1$s (%2$s)</string>
<string name="pref_gpodnet_sync_started">Sincronizzazione avviata</string>
+ <string name="pref_gpodnet_full_sync_started">Sincronizzazione avviata</string>
+ <string name="pref_gpodnet_login_status"><![CDATA[Accesso come <i>%1$s</i> con il dispositivo <i>%2$s</i>]]></string>
+ <string name="pref_gpodnet_notifications_title">Notifica gli errori di sincronizzazione</string>
+ <string name="pref_gpodnet_notifications_sum">Non si applica agli errori di autenticazione.</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 il nome dell\'host</string>
- <string name="pref_gpodnet_sethostname_use_default_host">Utilizza l\'host predefinito</string>
+ <string name="pref_fast_forward">Tempo di salto in avanti</string>
+ <string name="pref_fast_forward_sum">Personalizza il numero di secondi da saltare in avanti quando si preme il tasto Avanti Veloce</string>
+ <string name="pref_rewind">Tempo di salto indietro</string>
+ <string name="pref_rewind_sum">Personalizza il numero di secondi da saltare indietro quando si preme il tasto Riavvolgi</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">Priorità notifiche superiori</string>
+ <string name="pref_expandNotify_sum">Espande la notifica per mostrare i tasti 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_compact_notification_buttons_title">Pulsanti su schermata di blocco</string>
+ <string name="pref_compact_notification_buttons_sum">Modifica i pulsanti di riproduzione sulla schemata di blocco. Play/Pausa è sempre presente.</string>
+ <string name="pref_compact_notification_buttons_dialog_title">Seleziona al massimo %1$d voci</string>
+ <string name="pref_compact_notification_buttons_dialog_error">Puoi selezionare al massimo %1$d voci.</string>
+ <string name="pref_lockscreen_background_title">Cambia sfondo della schermata di blocco</string>
+ <string name="pref_lockscreen_background_sum">Sostituisce l\'immagine della schermata di blocco con quella dell\'episodio in riproduzione. Mostrerà l\'immagine anche in app di terze parti.</string>
<string name="pref_showDownloadReport_title">Mostra il Rapporto del Download</string>
+ <string name="pref_showDownloadReport_sum">Se il download fallisce, genera un report che mostra i dettagli dell\'errore.</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="pref_image_cache_size_title">Dimensione cache delle immagini</string>
+ <string name="pref_image_cache_size_sum">Dimensione cache per le immagini</string>
+ <string name="crash_report_title">Report dei crash</string>
+ <string name="crash_report_sum">Invia il report dell\'ultimo crash via e-mail</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_media_player_message">Seleziona il media player da usare per riprodurre i file</string>
+ <string name="pref_current_value">Impostazione attuale: %1$s</string>
<string name="pref_proxy_title">Proxy</string>
+ <string name="pref_proxy_sum">Imposta proxy di rete</string>
<string name="pref_faq">FAQ</string>
<string name="pref_known_issues">Problemi noti</string>
+ <string name="pref_no_browser_found">Nessun browser web trovato.</string>
<string name="pref_cast_title">Supporto a Chromecast</string>
+ <string name="pref_cast_message_play_flavor">Abilita il supporto per la riproduzione multimediale remota sui device Cast (Chromecast, casse esterne o Android TV)</string>
+ <string name="pref_cast_message_free_flavor">Chromecast richiede librerie proprietarie di terze parti che sono disabilitate in questa versione di AntennaPod</string>
+ <string name="pref_enqueue_downloaded_title">Aggiungi i download alla coda</string>
+ <string name="pref_enqueue_downloaded_summary">Aggiungi gli episodi scaricati alla coda di riproduzione</string>
+ <string name="media_player_builtin">Player Android integrato</string>
+ <string name="pref_skip_silence_title">Salta il silenzio audio</string>
+ <string name="pref_videoBehavior_title">In uscita dal video</string>
+ <string name="pref_videoBehavior_sum">Comportamento quando si esce dalla riproduzione video</string>
+ <string name="stop_playback">Interrompi riproduzione</string>
+ <string name="continue_playback">Continua riproduzione audio</string>
+ <string name="behavior">Comportamento</string>
+ <string name="pref_back_button_behavior_title">Comportamento tasto indietro</string>
+ <string name="pref_back_button_behavior_sum">Cambia il comportamento del tasto indietro.</string>
+ <string name="back_button_default">Predefinito</string>
+ <string name="back_button_open_drawer">Apri menù di navigazione</string>
+ <string name="back_button_double_tap">Doppio tap per uscire</string>
+ <string name="back_button_show_prompt">Conferma l\'uscita</string>
+ <string name="close_prompt">Sei sicuro di voler chiudere AntennaPod?</string>
+ <string name="double_tap_toast">Premi nuovamente il tasto indietro per uscire</string>
+ <string name="back_button_go_to_page">Vai alla pagina...</string>
+ <string name="back_button_go_to_page_title">Seleziona pagina</string>
+ <string name="pref_delete_removes_from_queue_title">Elimina rimuove dalla Coda</string>
+ <string name="pref_delete_removes_from_queue_sum">Rimuovi automaticamente un episodio dalla coda quando viene eliminato.</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="search_hint">Cerca negli episodi</string>
+ <string name="found_in_shownotes_label">Trovato nelle note dell\'episodio</string>
<string name="found_in_chapters_label">Trovato nei capitoli</string>
+ <string name="found_in_authors_label">Trovato come autore(i)</string>
+ <string name="found_in_feeds_label">Trovato nei podcast</string>
<string name="search_status_no_results">Nessun risultato trovato</string>
- <string name="search_label">Cerca</string>
+ <string name="search_label">Ricerca</string>
<string name="found_in_title_label">Trovato nel titolo</string>
+ <string name="no_results_for_query">Nessun risultato trovato per \"%1$s\"</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">Avvia l\'importazione</string>
- <string name="opml_import_label">Importazione OPML</string>
+ <string name="opml_import_option">Opzione %1$d</string>
+ <string name="opml_import_explanation_1">Scegli un percorso specifico dal filesystem locale.</string>
+ <string name="opml_import_explanation_2">Usa un\'applicazione esterna come Dropbox, Google Drive o il tuo gestore file preferito per aprire un file OPML.</string>
+ <string name="opml_import_explanation_3">Molte applicazioni come Google Mail, Dropbox, Google Drive e i gestori di file possono <i>aprire</i> i file OPML <i>con</i> AntennaPod.</string>
+ <string name="start_import_label">Avvio importazione</string>
+ <string name="opml_import_label">Importa da OPML</string>
<string name="opml_directory_error">ERRORE!</string>
<string name="reading_opml_label">Lettura OPML file in corso</string>
+ <string name="opml_reader_error">E\' stato riscontrato un errore nell\'apertura del documento OPML</string>
<string name="opml_import_error_no_file">Nessun file selezionato!</string>
- <string name="select_all_label">Seleziona tutto</string>
- <string name="deselect_all_label">Deseleziona tutto</string>
+ <string name="select_all_label">Seleziona tutti</string>
+ <string name="deselect_all_label">Deseleziona tutti</string>
+ <string name="select_options_label">Seleziona...</string>
<string name="choose_file_from_filesystem">Dal filesystem locale</string>
- <string name="choose_file_from_external_application">Usa un\'applicazione esterna</string>
- <string name="opml_export_label">Esportazione OPML</string>
+ <string name="choose_file_from_external_application">Utilizza un\'applicazione esterna</string>
+ <string name="opml_export_label">Esporta in OPML</string>
+ <string name="html_export_label">Esporta in HTML</string>
+ <string name="exporting_label">Esportazione in corso...</string>
<string name="export_error_label">Errore di esportazione</string>
+ <string name="export_success_title">Esportazione eseguita</string>
+ <string name="export_success_sum">Il file esportato è stato salvato in:\n\n%1$s</string>
+ <string name="opml_import_ask_read_permission">E\' necessario accedere alla memoria esterna per leggere il file OPML</string>
<!--Sleep timer-->
- <string name="set_sleeptimer_label">Imposta timer di spegnimento</string>
+ <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 per lo spegnimento</string>
- <string name="time_left_label">Tempo rimanente:\u0020</string>
- <string name="time_dialog_invalid_input">Input non valido, il tempo deve essere un numero intero</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_about_to_expire_label"><b>Quando il timer sta per scadere:</b></string>
+ <string name="shake_to_reset_label">Scuoti per resettare il timer</string>
<string name="timer_vibration_label">Vibra</string>
<string name="time_seconds">secondi</string>
<string name="time_minutes">minuti</string>
@@ -413,40 +573,48 @@
<item quantity="other">%d ore</item>
</plurals>
<string name="auto_enable_label">Abilita automaticamente</string>
+ <string name="sleep_timer_enabled_label">Timer spegnimento abilitato</string>
+ <string name="sleep_timer_disabled_label">Timer spegnimento disabilitato</string>
<!--gpodder.net-->
<string name="gpodnet_taglist_header">CATEGORIE</string>
- <string name="gpodnet_toplist_header">PODCAST PIÙ POPOLARI</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">Accesso</string>
- <string name="gpodnetauth_login_descr">Benvenuto nella procedura di accesso a gpodder.net. Per prima cosa, inserisci i tuoi dati di accesso:</string>
- <string name="gpodnetauth_login_butLabel">Accesso</string>
- <string name="gpodnetauth_login_register">Se non hai ancora un account , puoi crearne uno su:\nhttps://gpodder.net/register/</string>
- <string name="username_label">Nome utente</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">Selezione del dispositivo</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 del dispositivo già in uso</string>
+ <string name="gpodnetauth_device_errorAlreadyUsed">ID di dispositivo già in uso</string>
+ <string name="gpodnetauth_device_caption_errorEmpty">La didascalia non può essere vuota</string>
<string name="gpodnetauth_device_butChoose">Scegli</string>
- <string name="gpodnetauth_finish_title">Accesso avvenuto con successo!</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 ora la sincronizzazione</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 di gpodder.net</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">errore di sincronizzazione di gpodder.net</string>
- <string name="gpodnetsync_error_descr">È avvenuto un errore durante la sincronizzazione:\u0020</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>
+ <string name="gpodnetsync_pref_report_successful">Eseguito</string>
+ <string name="gpodnetsync_pref_report_failed">Fallito</string>
<!--Directory chooser-->
- <string name="selected_folder_label">Cartella selezionata:</string>
+ <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">Creare una nuova cartella dal nome \"%1$s\"?</string>
- <string name="create_folder_success">Creata una nuova cartella</string>
- <string name="create_folder_error_no_write_access">Non è possibile scrivere in questa cartella</string>
+ <string name="choose_data_directory_message">Scegli la base della tua cartella dati. AntennaPod creerà le sottocartelle appropriate.</string>
+ <string name="choose_data_directory_permission_rationale">E\' necessario accedere alla memoria esterna per cambiare la cartella dei 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>
@@ -457,7 +625,9 @@
<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_sum">Riprendi la riproduzione al termine di una chiamata</string>
<string name="pref_resumeAfterCall_title">Riprendi dopo la chiamata</string>
+ <string name="pref_restart_required">AntennaPod deve essere riavviato per applicare le modifiche.</string>
<!--Online feed view-->
<string name="subscribe_label">Abbonati</string>
<string name="subscribed_label">Abbonato</string>
@@ -475,14 +645,20 @@
<!--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="auto_download_settings_label">Impostazioni download automatici</string>
+ <string name="episode_filters_label">Filtro degli episodi</string>
+ <string name="episode_filters_description">Elenco di termini per filtrare gli episodi da includere o escludere dai download automatici.</string>
<string name="episode_filters_include">Includi</string>
<string name="episode_filters_exclude">Escludi</string>
+ <string name="episode_filters_hint">Parole singole \n\"Parole multiple\"</string>
<string name="keep_updated">Mantieni Aggiornato</string>
<!--Progress information-->
+ <string name="progress_upgrading_database">Aggiornamento del database</string>
<!--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>
+ <string name="search_fyyd_label">Cerca su fyyd</string>
<!--Episodes apply actions-->
<string name="all_label">Tutto</string>
<string name="selected_all_label">Seleziona tutti gli Episodi</string>
@@ -500,6 +676,7 @@
<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="has_media">Ha media</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>
@@ -510,7 +687,8 @@
<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_message">Ci farebbe molto piacere se potessi valutare AntennaPod.</string>
+ <string name="rating_never_label">Lasciatemi in pace</string>
<string name="rating_later_label">Ricordamelo più tardi</string>
<string name="rating_now_label">Certo, facciamolo!</string>
<!--Audio controls-->
@@ -520,6 +698,9 @@
<string name="left_short">Sx</string>
<string name="right_short">Dx</string>
<string name="audio_effects">Effetti Audio</string>
+ <string name="stereo_to_mono">Downmix: da Stereo a Mono</string>
+ <string name="sonic_only">solo Sonic</string>
+ <string name="exoplayer_only">Solo ExoPlayer</string>
<!--proxy settings-->
<string name="proxy_type_label">Tipo</string>
<string name="host_label">Host</string>
@@ -529,13 +710,41 @@
<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_host_empty_error">L\'host non può essere vuoto</string>
+ <string name="proxy_host_invalid_error">L\'host non è un IP o un dominio valido</string>
<string name="proxy_port_invalid_error">Porta non valida</string>
+ <!--Subscriptions fragment-->
<!--Database import/export-->
- <string name="import_select_file">Seleziona il file da importare</string>
- <string name="export_ok">Esportato con successo.</string>
+ <string name="import_export">Importa/Esporta database</string>
+ <string name="import_export_warning">Questa funzione sperimentale può essere usata per trasferire le sottoscrizioni e gli episoti completati ad un altro dispositivo.\n\nIl database potrà essere importato solo se si usa la stessa versione di AntennaPod, altrimenti potrebbero generarsi comportamenti anomali.\n\nDopo l\'importazione, gli episodi potrebbero essere mostrati come scaricati anche se non lo sono. Basta premere Play per farli riconoscere ad AntennaPod.</string>
+ <string name="label_import">Importa</string>
+ <string name="label_export">Esporta</string>
+ <string name="import_select_file">Scegli file da importare</string>
+ <string name="export_ok">Esportazione eseguita</string>
+ <string name="import_ok">Importazione eseguita.\n\nPremi OK per riavviare AntennaPod</string>
<!--Casting-->
<string name="cast_media_route_menu_title">Riproduci su...</string>
+ <string name="cast_disconnect_label">Disconnetti la sessione di cast</string>
+ <string name="cast_not_castable">Il media selezionato non è compatibile con il dispositivo di ricezione</string>
+ <string name="cast_failed_to_play">Avvio della riproduzione del media fallito</string>
+ <string name="cast_failed_to_stop">Arresto della riproduzione del media fallito</string>
+ <string name="cast_failed_to_pause">Pausa della riproduzione del media fallita</string>
<!--<string name="cast_failed_to_connect">Could not connect to the device</string>-->
+ <string name="cast_failed_setting_volume">Impostazione del volume fallita</string>
+ <string name="cast_failed_no_connection">Nessuna connessione al dispositivo di ricezione</string>
+ <string name="cast_failed_no_connection_trans">Connessione al dispositivo persa. L\'applicazione sta cercando di ristabilire la connessione, se possibile. Per favore attendi qualche secondo e riprova.</string>
+ <string name="cast_failed_perform_action">Esecuzione dell\'operazione fallita</string>
+ <string name="cast_failed_status_request">Sincronizzazione con il dispositivo ricevente fallita</string>
+ <string name="cast_failed_seek">Ricerca della nuova posizione sul dispositivo ricevente fallita</string>
+ <string name="cast_failed_receiver_player_error">Il dispositivo ricevente ha restituito un errore grave</string>
+ <string name="cast_failed_media_error_skipping">Errore nella riproduzione. Salto...</string>
<!--Notification channels-->
+ <string name="notification_channel_user_action">Azione richesta</string>
+ <string name="notification_channel_user_action_description">Mostra se è richesto un tuo intervento, per sempio se è necessario inserire la password.</string>
+ <string name="notification_channel_downloading">Scaricando</string>
+ <string name="notification_channel_downloading_description">Mostra mentre è in corso il download</string>
+ <string name="notification_channel_playing">In riproduzione</string>
+ <string name="notification_channel_playing_description">Permette di controllare la riproduzione. Questa è la principale notifica visibile quando un prodcast è in riproduzione.</string>
+ <string name="notification_channel_error">Errori</string>
+ <string name="notification_channel_error_description">Mostrato se qualcosa è andato storto, per esempio se fallisce il download o la sincronizzazione di gpodder.</string>
</resources>
diff --git a/core/src/main/res/values-iw-rIL/strings.xml b/core/src/main/res/values-iw-rIL/strings.xml
index 8699c3eee..e9d14b899 100644
--- a/core/src/main/res/values-iw-rIL/strings.xml
+++ b/core/src/main/res/values-iw-rIL/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">ביטול\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>
@@ -56,12 +60,14 @@
<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>
<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>
@@ -72,8 +78,8 @@
<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="loading_label">טוען...</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>
@@ -82,19 +88,26 @@
<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>
<string name="episode_cleanup_never">אף פעם</string>
<string name="episode_cleanup_queue_removal">כאשר לא בתור</string>
<string name="episode_cleanup_after_listening">אחרי סיום</string>
+ <plurals name="episode_cleanup_hours_after_listening">
+ <item quantity="one">שעה לאחר הסיום</item>
+ <item quantity="two">%d שעות לאחר הסיום</item>
+ <item quantity="many">%d שעות לאחר הסיום</item>
+ <item quantity="other">%d שעות לאחר הסיום</item>
+ </plurals>
<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>
+ <string name="num_selected_label">%d נבחרו</string>
<!--'Add Feed' Activity labels-->
<string name="feedurl_label">כתובת הזנה</string>
<string name="etxtFeedurlHint">www.example.com/feed</string>
@@ -103,16 +116,33 @@
<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_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_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_with_position_label">שיתוף כתובת הפרק עם מיקום</string>
<string name="share_file_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="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>
@@ -121,11 +151,18 @@
<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>
+ <plurals name="downloading_batch_label">
+ <item quantity="one">פרק אחד בהורדה.</item>
+ <item quantity="two">%d פרקים בהורדה.</item>
+ <item quantity="many">%d פרקים בהורדה.</item>
+ <item quantity="other">%d פרקים בהורדה.</item>
+ </plurals>
<string name="play_label">ניגון</string>
<string name="pause_label">השהיה</string>
<string name="stop_label">עצירה</string>
@@ -133,14 +170,45 @@
<string name="remove_label">הסרה</string>
<string name="delete_label">מחיקה</string>
<string name="delete_failed">לא ניתן למחוק קובץ. הפעלת המכשיר מחדש עשויה לסייע.</string>
- <string name="remove_episode_lable">הסרת פרק</string>
+ <string name="delete_episode_label">מחיקת פרק</string>
+ <plurals name="deleted_episode_batch_label">
+ <item quantity="one">פרק אחד נמחק.</item>
+ <item quantity="two">%d פרקים נמחקו.</item>
+ <item quantity="many">%d פרקים נמחקו.</item>
+ <item quantity="other">%d פרקים נמחקו.</item>
+ </plurals>
+ <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>
+ <plurals name="marked_read_batch_label">
+ <item quantity="one">פרק אחד סומן שנוגן.</item>
+ <item quantity="two">%d פרקים סומנו שנוגנו.</item>
+ <item quantity="many">%d פרקים סומנו שנוגנו.</item>
+ <item quantity="other">%d פרקים סומנו שנוגנו.</item>
+ </plurals>
<string name="mark_unread_label">סימון כלא נוגן</string>
+ <plurals name="marked_unread_batch_label">
+ <item quantity="one">פרק אחד סומן שטרם נוגן.</item>
+ <item quantity="two">%d פרקים סומנו שטרם נוגנו.</item>
+ <item quantity="many">%d פרקים סומנו שטרם נוגנו.</item>
+ <item quantity="other">%d פרקים סומנו שטרם נוגנו.</item>
+ </plurals>
<string name="add_to_queue_label">הוספה לתור</string>
<string name="added_to_queue_label">התווסף לתור</string>
+ <plurals name="added_to_queue_batch_label">
+ <item quantity="one">פרק אחד נוסף לתור.</item>
+ <item quantity="two">%d פרקים נוספו לתור.</item>
+ <item quantity="many">%d פרקים נוספו לתור.</item>
+ <item quantity="other">%d פרקים נוספו לתור.</item>
+ </plurals>
<string name="remove_from_queue_label">הסרה מהתור</string>
+ <plurals name="removed_from_queue_batch_label">
+ <item quantity="one">פרק אחד הוסר מהתור.</item>
+ <item quantity="two">%d פרקים הוסרו מהתור.</item>
+ <item quantity="many">%d פרקים הוסרו מהתור.</item>
+ <item quantity="other">%d פרקים הוסרו מהתור.</item>
+ </plurals>
<string name="add_to_favorite_label">התווסף למועדפים</string>
<string name="added_to_favorites">התווסף למועדפים</string>
<string name="remove_from_favorite_label">הסרה מהמועדפים</string>
@@ -194,6 +262,7 @@
<string name="download_type_media">קובץ מדיה</string>
<string name="download_type_image">תמונה</string>
<string name="download_request_error_dialog_message_prefix">אירעה שגיאה בעת הניסיון הורדת הקובץ:\u0020</string>
+ <string name="null_value_podcast_error">לא סופקו פרקים שניתן להציג.</string>
<string name="authentication_notification_title">נדרש אימות</string>
<string name="authentication_notification_msg">המשאב שביקשת דורש שם משתמש וססמה</string>
<string name="confirm_mobile_download_dialog_title">אישור הורדה דרך רשת סלולרית</string>
@@ -211,6 +280,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">אנטנה־פּוֹד - מפתח מדיה לא ידוע: %1$d</string>
<!--Queue operations-->
@@ -227,6 +297,9 @@
<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>
@@ -263,22 +336,50 @@
<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_items_header_label">אין פרקים בתור</string>
+ <string name="no_items_label">ניתן להוסיף פרק על ידי הורדתו או ללחוץ על פרק לחיצה ארוכה ולבחור ב־„הוספה לתור”.</string>
+ <string name="no_feeds_label">לא נרשמת לאף פודקאסט עדיין.</string>
<string name="no_chapters_label">לפרק זה אין פרקים.</string>
<string name="no_shownotes_label">לפרק זה אין הערות פרק.</string>
+ <string name="no_run_downloads_head_label">אין הורדות פעילו</string>
+ <string name="no_run_downloads_label">ניתן להוריד פרקים במסך הפרטים של הפודקאסט.</string>
+ <string name="no_comp_downloads_head_label">לא ירדו פרקים</string>
+ <string name="no_comp_downloads_label">ניתן להוריד פרקים במסך הפרטים של הפודקאסט.</string>
+ <string name="no_log_downloads_head_label">אין יומן הורדה</string>
+ <string name="no_log_downloads_label">יומני ההורדה יופיעו כאן כשיהיו זמינים.</string>
+ <string name="no_history_head_label">אין היסטוריה</string>
+ <string name="no_history_label">לאחר האזנה לפרק, הוא יופיע כאן.</string>
+ <string name="no_all_episodes_head_label">אין פרקים</string>
+ <string name="no_all_episodes_label">בעת הוספת פודקאסט, הפרקים יופיעו כאן.</string>
+ <string name="no_new_episodes_head_label">אין פרקים חדשים</string>
+ <string name="no_new_episodes_label">עם הופעת פרקים חדשים, הם יופיעו כאן.</string>
+ <string name="no_fav_episodes_head_label">אין פרקים מועדפים</string>
+ <string name="no_fav_episodes_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="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="import_export_search_keywords">גיבוי, שחזור</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">בעת לחיצה על כפתור הבא במכשיר bluetooth מחובר יש לדלג לפרק הבא במקום להריץ קדימה</string>
<string name="pref_hardwarePreviousButtonRestarts_title">כפתור אחורה מתחיל מחדש</string>
<string name="pref_hardwarePreviousButtonRestarts_sum">לחיצה על כפתור החומרה אחורה מדלג מתחיל מחדש את נגינת הפרק הנוכחי במקום לחזור אחורה בפרק</string>
<string name="pref_followQueue_sum">לעבור לפריט הבא בתור כאשר הניגון מסתיים</string>
@@ -308,6 +409,9 @@
<string name="pref_unpauseOnBluetoothReconnect_title">חיבור Bluetooth מחדש</string>
<string name="pref_mobileUpdate_title">עדכון דרך רשת סלולרית</string>
<string name="pref_mobileUpdate_sum">לאפשר עדכונים דרך רשת סלולרית</string>
+ <string name="pref_mobileUpdate_nothing">כלום</string>
+ <string name="pref_mobileUpdate_images">תמונות בלבד</string>
+ <string name="pref_mobileUpdate_everything">הכול</string>
<string name="refreshing_label">מתבצע רענון</string>
<string name="flattr_settings_label">הגדרות Flattr</string>
<string name="pref_flattr_auth_title">כניסה ל־Fattr</string>
@@ -327,6 +431,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_set_theme_sum">שינוי המראה של אנטנה־פּוֹד</string>
<string name="pref_automatic_download_title">הורדה אוטומטית</string>
<string name="pref_automatic_download_sum">הגדרת הורדה אטומטית של פרקים.</string>
@@ -340,6 +445,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>
@@ -368,6 +474,8 @@
<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>
@@ -388,6 +496,7 @@
<string name="crash_report_sum">שליחת דיווח הקריסה העדכני ביותר דרך דוא״ל</string>
<string name="send_email">שליחת דוא״ל</string>
<string name="experimental_pref">ניסיוני</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>
@@ -399,6 +508,25 @@
<string name="pref_cast_message_free_flavor">לתמיכה ב־Chromecast נדרשות ספריות קנייניות מאת צד־שלישי שמושבתות בגרסה זו של אנטנה־פּוֹד</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_skip_silence_title">דילוג על שקט בקטעי ההאזנה</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">לסגור את אנטנה־פּוֹד?</string>
+ <string name="double_tap_toast">יש לגעת בכפתור החזרה שוב כדי לצאת</string>
+ <string name="back_button_go_to_page">מעבר לעמוד…</string>
+ <string name="back_button_go_to_page_title">בחירת עמוד</string>
+ <string name="pref_delete_removes_from_queue_title">מחיקה מסירה מהתור</string>
+ <string name="pref_delete_removes_from_queue_sum">הסרת פרק מהתור אוטומטית עם מחיקתו.</string>
<!--Auto-Flattr dialog-->
<string name="auto_flattr_enable">הפעלת תרומות Flattr אוטומטיות</string>
<string name="auto_flattr_after_percent">לתרום לפרק כאשר התנגנו %d אחוזים</string>
@@ -408,6 +536,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="search_status_no_results">לא נמצאו תוצאות</string>
<string name="search_label">חיפוש</string>
<string name="found_in_title_label">נמצא בכותרת</string>
@@ -595,6 +725,7 @@
<string name="audio_effects">אפקטים של שמע</string>
<string name="stereo_to_mono">איחוד: סטריאו למונו</string>
<string name="sonic_only">Sonic בלבד</string>
+ <string name="exoplayer_only">ExoPlayer בלבד</string>
<!--proxy settings-->
<string name="proxy_type_label">סוג</string>
<string name="host_label">מארח</string>
@@ -607,6 +738,8 @@
<string name="proxy_host_empty_error">המארח לא יכול להישאר ריק</string>
<string name="proxy_host_invalid_error">כתובת המארח אינה כתובת IP או שם מתחם תקניים</string>
<string name="proxy_port_invalid_error">הפתחה אינה תקנית</string>
+ <!--Subscriptions fragment-->
+ <string name="subscription_num_columns">מספר העמודות</string>
<!--Database import/export-->
<string name="import_export">ייבוא/ייצוא מסד נתונים</string>
<string name="import_export_warning">תכונה ניסיונית זו יכולה לשמש לטובת העברת המינויים והפרקים שניגנת להתקן אחר.\n\nניתן לייבא מסדי נתונים שיוצאו רק לאותה הגרסה של אנטנה־פּוֹד. אחרת, תכונה זו עשויה לגרור התנהגות בלתי צפויה.\n\nלאחר הייבוא, יתכן שחלק מהפרקים יופיעו כאילו כבר הורדת אותם למרות שבפועל לא עשית זאת. עליך פשוט ללחוץ על כפתור הנגינה של הפרקים כדי שאנטנה־פּוֹד יוכל לזהות זאת.</string>
@@ -632,4 +765,12 @@
<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-ja/strings.xml b/core/src/main/res/values-ja/strings.xml
index 566817243..f749de958 100644
--- a/core/src/main/res/values-ja/strings.xml
+++ b/core/src/main/res/values-ja/strings.xml
@@ -95,9 +95,13 @@
<string name="episode_cleanup_never">しない</string>
<string name="episode_cleanup_queue_removal">キューにない時</string>
<string name="episode_cleanup_after_listening">完了後</string>
+ <plurals name="episode_cleanup_hours_after_listening">
+ <item quantity="other">完了後 %d 時間</item>
+ </plurals>
<plurals name="episode_cleanup_days_after_listening">
<item quantity="other">完了 %d 日後</item>
</plurals>
+ <string name="num_selected_label">%d 選択</string>
<!--'Add Feed' Activity labels-->
<string name="feedurl_label">フィードURL</string>
<string name="etxtFeedurlHint">フィードまたはWebサイトのURL</string>
@@ -131,6 +135,8 @@
<string name="load_complete_feed">ポッドキャストをすべて更新</string>
<string name="hide_episodes_title">エピソードを非表示にする</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>
@@ -145,6 +151,9 @@
<string name="open_podcast">ポッドキャストを開く</string>
<!--actions on feeditems-->
<string name="download_label">ダウンロード</string>
+ <plurals name="downloading_batch_label">
+ <item quantity="other">%d エピソードをダウンロード中。</item>
+ </plurals>
<string name="play_label">再生</string>
<string name="pause_label">一時停止</string>
<string name="stop_label">停止</string>
@@ -152,15 +161,30 @@
<string name="remove_label">削除</string>
<string name="delete_label">削除</string>
<string name="delete_failed">ファイルを削除できません。デバイスを再起動してみてください。</string>
- <string name="remove_episode_lable">エピソードを削除</string>
+ <string name="delete_episode_label">エピソードを削除</string>
+ <plurals name="deleted_episode_batch_label">
+ <item quantity="other">%d エピソードを削除しました。</item>
+ </plurals>
<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>
+ <plurals name="marked_read_batch_label">
+ <item quantity="other">%d エピソードを再生済にしました。</item>
+ </plurals>
<string name="mark_unread_label">未再生としてマーク</string>
+ <plurals name="marked_unread_batch_label">
+ <item quantity="other">%d エピソードを未再生にしました。</item>
+ </plurals>
<string name="add_to_queue_label">キューに追加</string>
<string name="added_to_queue_label">キューに追加しました</string>
+ <plurals name="added_to_queue_batch_label">
+ <item quantity="other">%d エピソードをキューに追加しました。</item>
+ </plurals>
<string name="remove_from_queue_label">キューから削除</string>
+ <plurals name="removed_from_queue_batch_label">
+ <item quantity="other">%d エピソードをキューから削除しました。</item>
+ </plurals>
<string name="add_to_favorite_label">お気に入りに追加</string>
<string name="added_to_favorites">お気に入りに追加</string>
<string name="remove_from_favorite_label">お気に入りから削除</string>
@@ -211,6 +235,7 @@
<string name="download_type_media">メディアファイル</string>
<string name="download_type_image">画像</string>
<string name="download_request_error_dialog_message_prefix">ファイルのダウンロード中にエラーが発生しました:\u0020</string>
+ <string name="null_value_podcast_error">表示できるポッドキャストがありません。</string>
<string name="authentication_notification_title">認証が必要です</string>
<string name="authentication_notification_msg">リクエストしたリソースは、ユーザー名とパスワードが必要です</string>
<string name="confirm_mobile_download_dialog_title">モバイルダウンロードの確認</string>
@@ -284,10 +309,25 @@
<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_items_header_label">エピソードはキューにありません</string>
+ <string name="no_items_label">エピソードをダウンロードして追加するか、エピソードを長押しして \"キューに追加\" を選択してください。</string>
<string name="no_feeds_label">まだポッドキャストを何も購読していません。</string>
<string name="no_chapters_label">このエピソードにチャプターはありません。</string>
<string name="no_shownotes_label">このエピソードにショーノートはありません。</string>
+ <string name="no_run_downloads_head_label">実行中のダウンロードはありません</string>
+ <string name="no_run_downloads_label">ポッドキャスト詳細画面でエピソードをダウンロードできます。</string>
+ <string name="no_comp_downloads_head_label">ダウンロード済のエピソードはありません</string>
+ <string name="no_comp_downloads_label">ポッドキャスト詳細画面でエピソードをダウンロードできます。</string>
+ <string name="no_log_downloads_head_label">ダウンロードログはありません</string>
+ <string name="no_log_downloads_label">利用可能な場合、ダウンロードログがここに表示されます。</string>
+ <string name="no_history_head_label">履歴はありません</string>
+ <string name="no_history_label">エピソードを視聴した後、ここに表示されます</string>
+ <string name="no_all_episodes_head_label">エピソードはありません</string>
+ <string name="no_all_episodes_label">ポッドキャストを追加すると、エピソードがここに表示されます。</string>
+ <string name="no_new_episodes_head_label">新しいエピソードはありません</string>
+ <string name="no_new_episodes_label">新しいエピソードが届くと、ここに表示されます。</string>
+ <string name="no_fav_episodes_head_label">お気に入りのエピソードはありません</string>
+ <string name="no_fav_episodes_label">長押ししてお気に入りにエピソードを追加できます。</string>
<!--Preferences-->
<string name="storage_pref">ストレージ</string>
<string name="project_pref">プロジェクト</string>
@@ -300,6 +340,7 @@
<string name="automation">自動</string>
<string name="download_pref_details">詳細</string>
<string name="import_export_pref">インポート/エクスポート</string>
+ <string name="import_export_search_keywords">バックアップ、復元</string>
<string name="appearance">外観</string>
<string name="external_elements">外部要素</string>
<string name="interruptions">割り込み</string>
@@ -311,6 +352,7 @@
<string name="pref_unpauseOnHeadsetReconnect_sum">ヘッドフォンが再接続された時に再生を再開します</string>
<string name="pref_unpauseOnBluetoothReconnect_sum">Bluetoothが再接続された時に再生を再開します</string>
<string name="pref_hardwareForwardButtonSkips_title">早送りボタンでスキップ</string>
+ <string name="pref_hardwareForwardButtonSkips_sum">Bluetoothで接続されたデバイスの早送りボタンを押したときに、早送りの代わりに次のエピソードにスキップします</string>
<string name="pref_hardwarePreviousButtonRestarts_title">戻るボタンで再開</string>
<string name="pref_hardwarePreviousButtonRestarts_sum">ハードウェアの戻るボタンを押したときに、巻き戻しの代わりに現在のエピソードの再生を再開します</string>
<string name="pref_followQueue_sum">再生が完了した時に次のキューのアイテムに移動します</string>
@@ -340,6 +382,9 @@
<string name="pref_unpauseOnBluetoothReconnect_title">Bluetooth再接続</string>
<string name="pref_mobileUpdate_title">モバイル更新</string>
<string name="pref_mobileUpdate_sum">モバイルデータ接続時に更新を許可します</string>
+ <string name="pref_mobileUpdate_nothing">なし</string>
+ <string name="pref_mobileUpdate_images">画像のみ</string>
+ <string name="pref_mobileUpdate_everything">すべて</string>
<string name="refreshing_label">更新中</string>
<string name="flattr_settings_label">Flattr設定</string>
<string name="pref_flattr_auth_title">Flattrにサインイン</string>
@@ -402,6 +447,8 @@
<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>
@@ -435,10 +482,24 @@
<string name="pref_enqueue_downloaded_title">ダウンロードのキューに入れる</string>
<string name="pref_enqueue_downloaded_summary">ダウンロードしたエピソードをキューに追加します</string>
<string name="media_player_builtin">ビルトイン Android プレーヤー</string>
+ <string name="pref_skip_silence_title">音声の無音をスキップ</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>
+ <string name="pref_delete_removes_from_queue_title">キューから削除済を削除</string>
+ <string name="pref_delete_removes_from_queue_sum">削除した時に、自動的にキューからエピソードを削除します</string>
<!--Auto-Flattr dialog-->
<string name="auto_flattr_enable">自動Flattrを有効にする</string>
<string name="auto_flattr_after_percent">%d %再生したらエピソードをFlattr </string>
@@ -628,6 +689,7 @@
<string name="audio_effects">オーディオエフェクト</string>
<string name="stereo_to_mono">ダウンミックス: ステレオからモノラル</string>
<string name="sonic_only">Sonic のみ</string>
+ <string name="exoplayer_only">ExoPlayer のみ</string>
<!--proxy settings-->
<string name="proxy_type_label">タイプ</string>
<string name="host_label">ホスト</string>
@@ -640,6 +702,8 @@
<string name="proxy_host_empty_error">ホストは空にできません</string>
<string name="proxy_host_invalid_error">ホストが有効なIPアドレスやドメインではありません</string>
<string name="proxy_port_invalid_error">ポートが正しくありません</string>
+ <!--Subscriptions fragment-->
+ <string name="subscription_num_columns">カラムの数</string>
<!--Database import/export-->
<string name="import_export">データベースのインポート/エクスポート</string>
<string name="import_export_warning">この実験的な機能を使用すると、サブスクリプションと再生したエピソードを別のデバイスに転送できます。\n\nエクスポートされたデータベースは、同じバージョンのAntennaPodを使用する場合にのみインポートできます。 それ以外の場合、この機能は予期しない動作につながります。\n\nインポートした後、エピソードはダウンロードされたものとして表示されることがあります。 エピソードの再生ボタンを押すだけで、AntennaPodがこれを検出します。</string>
diff --git a/core/src/main/res/values-lt/strings.xml b/core/src/main/res/values-lt/strings.xml
index 3ca4270ce..f0820eba4 100644
--- a/core/src/main/res/values-lt/strings.xml
+++ b/core/src/main/res/values-lt/strings.xml
@@ -20,10 +20,12 @@
<string name="cancel_download_label">Atšaukti\natsiuntimą</string>
<string name="playback_history_label">Atkūrimo istorija</string>
<string name="gpodnet_main_label">gpodder.net</string>
+ <string name="gpodnet_summary">Sinchronizuojama su kitais įrenginiais</string>
<string name="gpodnet_auth_label">gpodder.net prisijungimas</string>
<string name="free_space_label">%1$s laisva</string>
<string name="episode_cache_full_title">Epizodų podėlis pilnas</string>
<string name="episode_cache_full_message">Pasiektas epizodų podėlio dydžio limitas. Nustatymuose galite padidinti podėlio dydį.</string>
+ <string name="synchronizing">Sinchronizuojama…</string>
<!--Statistics fragment-->
<string name="total_time_listened_to_podcasts">Bendra perklausytų tinklalaidžių trukmė:</string>
<string name="statistics_details_dialog">Paleisti %1$d iš %2$d epizodų.\n\nPerklausyta %3$s iš %4$s.</string>
@@ -33,9 +35,9 @@
<string name="statistics_speed_not_counted">Atkreipkite dėmesį: į atkūrimo spartą neatsižvelgiama.</string>
<!--Main activity-->
<string name="drawer_open">Atverti meniu</string>
- <string name="drawer_close">Uždaryti meniu</string>
+ <string name="drawer_close">Užverti meniu</string>
<string name="drawer_preferences">Stalčiaus parinktys</string>
- <string name="drawer_feed_order_unplayed_episodes">Rikiuoti pagal skaitliuko reikšmę</string>
+ <string name="drawer_feed_order_unplayed_episodes">Rikiuoti pagal skaitiklio reikšmę</string>
<string name="drawer_feed_order_alphabetical">Rikiuoti pagal abėcėlę</string>
<string name="drawer_feed_order_last_update">Rikiuoti pagal publikavimo datą</string>
<string name="drawer_feed_order_most_played">Rikiuoti pagal perklausytų epizodų kiekį</string>
@@ -65,8 +67,9 @@
<string name="cover_label">Paveikslėlis</string>
<string name="error_label">Klaida</string>
<string name="error_msg_prefix">Įvyko klaida:</string>
+ <string name="needs_storage_permission">Šiam veiksmui atlikti reikalingas laikmenos prieigos leidimas</string>
<string name="refresh_label">Atnaujinti</string>
- <string name="external_storage_error_msg">Nėra prieinamų išorinių atmintinių. Patikrinkite, jog išorinės atmintinės yra prijungtos, kad programėlė tinkamai veiktų.</string>
+ <string name="external_storage_error_msg">Nėra prieinamų išorinių laikmenų. Patikrinkite, jog išorinės laikmenos yra prijungtos, kad programėlė tinkamai veiktų.</string>
<string name="chapters_label">Skyriai</string>
<string name="chapter_duration">Trukmė: %1$s</string>
<string name="shownotes_label">Laidos užrašai</string>
@@ -109,11 +112,14 @@
<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 šios tinklalaidės epizodus kaip perklausytus.</string>
<string name="mark_all_seen_label">Pažymėti visus kaip matytus</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="show_feed_settings_label">Rodyti tinklalaidės nustatymus</string>
<string name="feed_info_label">Tinklalaidės informacija</string>
+ <string name="feed_settings_label">Tinklalaidės nustatymai</string>
<string name="rename_feed_label">Pervadinti tinklalaidę</string>
<string name="remove_feed_label">Pašalinti tinklalaidę</string>
<string name="share_label">Dalintis...</string>
@@ -123,7 +129,13 @@
<string name="share_feed_url_label">Dalintis sklaidos kanalo URL</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="feed_delete_confirmation_msg">Patvirtinkite, jog norite ištrinti tinklalaidę „%1$s“ ir VISUS jos epizodus (įskaitant atsiųstus epizodus).</string>
+ <string name="feed_remover_msg">Tinklalaidė šalinama</string>
+ <string name="load_complete_feed">Atnaujinti visą tinklalaidę</string>
<string name="hide_episodes_title">Slėpti epizodus</string>
+ <string name="batch_edit">Keisti iš karto kelis</string>
+ <string name="select_all_above">Pažymėti visus aukščiau</string>
+ <string name="select_all_below">Pažymėti visus žemiau</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>
@@ -132,6 +144,7 @@
<string name="hide_downloaded_episodes_label">Atsiųsti</string>
<string name="hide_not_downloaded_episodes_label">Neatsiųsti</string>
<string name="hide_has_media_label">Turintys medijos failų</string>
+ <string name="hide_is_favorite_label">Yra mėgiamas</string>
<string name="filtered_label">Filtruota</string>
<string name="refresh_failed_msg">{fa-exclamation-circle} Paskutinis atnaujinimas nepavyko</string>
<string name="open_podcast">Atverti tinklalaidę</string>
@@ -144,7 +157,7 @@
<string name="remove_label">Pašalinti</string>
<string name="delete_label">Ištrinti</string>
<string name="delete_failed">Nepavyksta ištrinti failo. Įrenginio paleidimas iš naujo gali padėti.</string>
- <string name="remove_episode_lable">Pašalinti epizodą</string>
+ <string name="mark_as_seen_label">Pažymėti kaip matytą</string>
<string name="marked_as_seen_label">Pažymėtas kaip matytas</string>
<string name="mark_read_label">Pažymėti kaip perklausytą</string>
<string name="marked_as_read_label">Pažymėtas kaip perklausytas</string>
@@ -168,7 +181,9 @@
<string name="download_failed">nepavyko</string>
<string name="download_pending">Laukia atsiuntimo</string>
<string name="download_running">Atsiuntimas vyksta</string>
- <string name="download_error_device_not_found">Nerastas atmintinės įrenginys</string>
+ <string name="download_error_details">Išsami informacija</string>
+ <string name="download_error_details_message">%1$s \n\nFailo URL:\n%2$s</string>
+ <string name="download_error_device_not_found">Nerastas laikmenos įrenginys</string>
<string name="download_error_insufficient_space">Trūksta laisvos vietos</string>
<string name="download_error_file_error">Failo klaida</string>
<string name="download_error_http_data_error">HTTP duomenų klaida</string>
@@ -220,6 +235,7 @@
<string name="playback_error_unknown">Nežinoma klaida</string>
<string name="no_media_playing_label">Atkūrimas nevyksta</string>
<string name="player_buffering_msg">Buferizuojama</string>
+ <string name="player_go_to_picture_in_picture">„Picture-in-picture“ režimas</string>
<string name="playbackservice_notification_title">Atkuriama tinklalaidė</string>
<string name="unknown_media_key">„AntennaPod“ – nežinomas medijos klavišas: %1$d</string>
<!--Queue operations-->
@@ -237,6 +253,8 @@
<string name="duration">Trukmė</string>
<string name="episode_title">Epizodo pavadinimas</string>
<string name="feed_title">Tinklalaidės pavadinimas</string>
+ <string name="random">Atsitiktinai</string>
+ <string name="smart_shuffle">Išmanus maišymas</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>
@@ -273,18 +291,25 @@
<string name="set_playback_speed_label">Atkūrimo spartos</string>
<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 jokios tinklalaidės.</string>
<string name="no_chapters_label">Šis epizodas neturi skyrių.</string>
<string name="no_shownotes_label">Šis epizodas neturi užrašų.</string>
<!--Preferences-->
- <string name="storage_pref">Atmintinė</string>
+ <string name="storage_pref">Laikmena</string>
<string name="project_pref">Projektas</string>
<string name="other_pref">Kita</string>
<string name="about_pref">Apie</string>
<string name="queue_label">Eilė</string>
<string name="integrations_label">Integracijos</string>
<string name="flattr_label">Flattr</string>
+ <string name="flattr_summary">Mikromokėjimų paslauga</string>
+ <string name="automation">Automatizacija</string>
+ <string name="download_pref_details">Išsamiau</string>
+ <string name="import_export_pref">Importas/Eksportas</string>
<string name="appearance">Išvaizda</string>
+ <string name="external_elements">Išoriniai elementai</string>
+ <string name="interruptions">Pertraukimai</string>
+ <string name="buttons">Atkūrimo valdymo mygtukai</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>
@@ -292,6 +317,7 @@
<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 „Bluetooth“ įrenginio 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>
@@ -339,7 +365,8 @@
<string name="pref_nav_drawer_items_sum">Keisti naršymo stalčiuje rodomus elementus.</string>
<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_title">Nustatyti prenumeratų skaitiklį</string>
+ <string name="pref_nav_drawer_feed_counter_sum">Keisti prenumeratų skaitiklyje atvaizduojama informaciją. Gali paveikti prenumeratų rikiavimą, jei prenumeratų tvarka nustatyta rikiuoti pagal skaitiklio reikšmę.</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>
@@ -353,6 +380,7 @@
<string name="pref_episode_cache_title">Epizodų podėlis</string>
<string name="pref_theme_title_light">Šviesi</string>
<string name="pref_theme_title_dark">Tamsi</string>
+ <string name="pref_theme_title_trueblack">Juoda (paruošta AMOLED)</string>
<string name="pref_episode_cache_unlimited">Neribojamas</string>
<string name="pref_update_interval_hours_plural">valandos</string>
<string name="pref_update_interval_hours_singular">valanda</string>
@@ -381,6 +409,8 @@
<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">Aukštas pranešimų prioritetas</string>
+ <string name="pref_expandNotify_sum">Tai dažniausiai išskleidžia pranešimą, kad būtų rodomi 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>
@@ -401,6 +431,7 @@
<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_media_player_message">Pasirinkite medijos grotuvą, kuris bus naudojamas atkūrimui</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>
@@ -412,6 +443,22 @@
<string name="pref_cast_message_free_flavor">„Chromecast“ palaikymui reikalingos nuosavybinės trečiųjų šalių bibliotekos, kurios yra negalimos šioje „AntennaPod“ versijoje.</string>
<string name="pref_enqueue_downloaded_title">Atsiuntimus pridėti į eilę</string>
<string name="pref_enqueue_downloaded_summary">Parsiuntus epizodus, pridėti juos į eilę</string>
+ <string name="media_player_builtin">Įtaisytoji „Android“ leistuvė</string>
+ <string name="pref_videoBehavior_title">Uždarant vaizdo atkūrimą</string>
+ <string name="pref_videoBehavior_sum">Elgsena paliekant vaizdo atkūrimą</string>
+ <string name="stop_playback">Stabdyti atkūrimą</string>
+ <string name="continue_playback">Tęsti garso atkūrimą</string>
+ <string name="behavior">Elgsena</string>
+ <string name="pref_back_button_behavior_title">Grįžimo mygtuko elgsena</string>
+ <string name="pref_back_button_behavior_sum">Keisti grįžimo mygtuko elgseną.</string>
+ <string name="back_button_default">Numatytoji</string>
+ <string name="back_button_open_drawer">Atverti naršymo stalčių</string>
+ <string name="back_button_double_tap">Paspaudus dukart - išeiti</string>
+ <string name="back_button_show_prompt">Patvirtinti išėjimą</string>
+ <string name="close_prompt">Ar tikrai norite užverti „AntennaPod“?</string>
+ <string name="double_tap_toast">Jei norite išeiti, dar kartą paspauskite grįžimo mygtuką</string>
+ <string name="back_button_go_to_page">Eiti į puslapį…</string>
+ <string name="back_button_go_to_page_title">Pažymėti puslapį</string>
<!--Auto-Flattr dialog-->
<string name="auto_flattr_enable">Įjungti automatinį rėmimą „Flattr“</string>
<string name="auto_flattr_after_percent">Paremti epizodą „Flattr“ perklausius %d procentus jo trukmės</string>
@@ -421,6 +468,8 @@
<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 tarp autorių</string>
+ <string name="found_in_feeds_label">Rasta tinklalaidėje</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>
@@ -446,7 +495,9 @@
<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_import_ask_read_permission">Norint nuskaityti OPML failą reikalinga prieiga prie nešiojamos atmintinės</string>
+ <string name="export_success_title">Sėkmingai eksportuota</string>
+ <string name="export_success_sum">Eksporto failas išsaugotas:\n\n%1$s</string>
+ <string name="opml_import_ask_read_permission">Norint nuskaityti OPML failą reikalinga prieiga prie išorinės laikmenos</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">Nustatyti miego laikmatį</string>
<string name="disable_sleeptimer_label">Išjungti miego laikmatį</string>
@@ -517,7 +568,7 @@
<string name="create_folder_label">Sukurti aplanką</string>
<string name="choose_data_directory">Pasirinkite duomenų aplanką</string>
<string name="choose_data_directory_message">Prašome pasirinkti pamatinį duomenų aplanką. „AntennaPod“ sukurs reikiamus poaplankius.</string>
- <string name="choose_data_directory_permission_rationale">Norinti pakeisti duomenų aplanką reikalinga prieiga prie nešiojamos atmintinės</string>
+ <string name="choose_data_directory_permission_rationale">Norinti pakeisti duomenų aplanką reikalinga prieiga prie išorinės laikmenos</string>
<string name="create_folder_msg">Sukurti naują aplanką pavadinimu \"%1$s\"?</string>
<string name="create_folder_success">Sukurtas naujas aplankas</string>
<string name="create_folder_error_no_write_access">Nepavyksta rašyti šiame aplanke</string>
@@ -618,6 +669,7 @@
<string name="proxy_host_empty_error">Serverio laukelis negali būti tuščias</string>
<string name="proxy_host_invalid_error">Serverio laukelyje nurodytas netaisyklingas IP adresas ar sritis</string>
<string name="proxy_port_invalid_error">Netinkamas prievadas</string>
+ <!--Subscriptions fragment-->
<!--Database import/export-->
<string name="import_export">Duomenų bazės importas/eksportas</string>
<string name="import_export_warning">Šis eksperimentinė funkcija leidžia perkelti jūsų prenumeratas bei duomenis apie perklausytus epizodus į kitą įrenginį.
@@ -628,6 +680,7 @@ 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">Sėkmingai eksportuota.</string>
<string name="import_ok">Importuota sėkmingai.
Spauskite „OK“, kad paleisti „AntennaPod“ iš naujo.</string>
@@ -648,6 +701,12 @@ Spauskite „OK“, kad paleisti „AntennaPod“ iš naujo.</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_user_action">Reikalingas veiksmas</string>
+ <string name="notification_channel_user_action_description">Rodomas, jei reikalingas jūsų veiksmas, pavyzdžiui, reikia įvesti slaptažodį.</string>
<string name="notification_channel_downloading">Atsiunčiama</string>
+ <string name="notification_channel_downloading_description">Rodomas atsiuntimo metu.</string>
+ <string name="notification_channel_playing">Šiuo metu atkuriama</string>
+ <string name="notification_channel_playing_description">Leidžia valdyti atkūrimą. Tai pagrindinis pranešimas matomas tinklalaidės atkūrimo metu.</string>
<string name="notification_channel_error">Klaidos</string>
+ <string name="notification_channel_error_description">Rodomas, kai įvykstą kažkas nenumatyto, pavyzdžiui, nepavykus atsiuntimui ar „gpodder“ sinchronizavimui.</string>
</resources>
diff --git a/core/src/main/res/values-nb/strings.xml b/core/src/main/res/values-nb/strings.xml
index dafc7eb60..53489e180 100644
--- a/core/src/main/res/values-nb/strings.xml
+++ b/core/src/main/res/values-nb/strings.xml
@@ -1,10 +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">Oppdater abonnementer</string>
<string name="feeds_label">Strømmer</string>
+ <string name="statistics_label">Statistikk</string>
<string name="add_feed_label">Legg til podcast</string>
<string name="episodes_label">Episoder</string>
<string name="all_episodes_short_label">Alle</string>
+ <string name="new_episodes_label">Nye</string>
<string name="favorite_episodes_label">Favoritter</string>
<string name="new_label">Nye</string>
<string name="settings_label">Innstillinger</string>
@@ -12,12 +15,20 @@
<string name="downloads_running_label">Kjører</string>
<string name="downloads_completed_label">Fullført</string>
<string name="downloads_log_label">Logg</string>
+ <string name="subscriptions_label">Abonnementer</string>
+ <string name="subscriptions_list_label">Abonnementliste</string>
<string name="cancel_download_label">Avbryt\nLast ned</string>
<string name="playback_history_label">Avspillingshistorikk</string>
<string name="gpodnet_main_label">gpodder.net</string>
<string name="gpodnet_auth_label">gpodder.net-innlogging</string>
<string name="free_space_label">%1$s ledig</string>
+ <string name="episode_cache_full_title">Hurtigbuffer for episoder er full</string>
+ <string name="episode_cache_full_message">Grensen for størrelse på hurtigbuffer er nådd. Du kan øke størrelsen på hurtigbuffer i instillingene.</string>
<!--Statistics fragment-->
+ <string name="total_time_listened_to_podcasts">Sum av avspilte podcaster:</string>
+ <string name="statistics_details_dialog">Startet %1$d av %2$d episoder.\n\nAvspilt %3$s av %4$s.</string>
+ <string name="statistics_mode">Statistikk modus</string>
+ <string name="statistics_mode_normal">Kalkuler faktisk avspilt varighet. Dobbel avspilling telles to ganger, mens markering som avspilt telles ikke</string>
<!--Main activity-->
<string name="drawer_open">Åpne menyen</string>
<string name="drawer_close">Lukk menyen</string>
@@ -25,9 +36,11 @@
<string name="drawer_feed_order_unplayed_episodes">Sorter på teller</string>
<string name="drawer_feed_order_alphabetical">Sorter alfabetisk</string>
<string name="drawer_feed_order_last_update">Sorter på utgivelsesdato</string>
+ <string name="drawer_feed_order_most_played">Sorter etter antall avspilte episoder</string>
<string name="drawer_feed_counter_new_unplayed">Antall nye og uavspilte episoder</string>
<string name="drawer_feed_counter_new">Antall nye episoder</string>
<string name="drawer_feed_counter_unplayed">Antall uavspilte episoder</string>
+ <string name="drawer_feed_counter_downloaded">Antall nedlastede episoder</string>
<string name="drawer_feed_counter_none">Ingen</string>
<!--Webview actions-->
<string name="open_in_browser_label">Åpne i nettleser</string>
@@ -42,6 +55,7 @@
<string name="cancel_label">Avbryt</string>
<string name="yes">Ja</string>
<string name="no">Nei</string>
+ <string name="reset">Tilbakestill</string>
<string name="language_label">Språk</string>
<string name="url_label">URL</string>
<string name="podcast_settings_label">Innstillinger</string>
@@ -51,6 +65,7 @@
<string name="refresh_label">Oppdater</string>
<string name="external_storage_error_msg">Finner ikke ekstern lagring. Sjekk at det eksterne lagringsmediet er montert.</string>
<string name="chapters_label">Kapittel</string>
+ <string name="chapter_duration">Varighet: %1$s</string>
<string name="shownotes_label">Shownotater</string>
<string name="description_label">Beskrivelse</string>
<string name="most_recent_prefix">Nyeste episode:\u0020</string>
@@ -58,16 +73,19 @@
<string name="length_prefix">Lengde:\u0020</string>
<string name="size_prefix">Størrelse:\u0020</string>
<string name="processing_label">Behandler</string>
+ <string name="loading_label">Laster ...</string>
<string name="save_username_password_label">Lagre brukernavn og passord</string>
<string name="close_label">Lukk</string>
<string name="retry_label">Prøv igjen</string>
<string name="auto_download_label">Inkluder i automatiske nedlastninger</string>
<string name="auto_download_apply_to_items_title">Angi for tidligere episoder</string>
<string name="auto_download_apply_to_items_message">Den nye <i>Automatisk nedlasting</i>-innstillingen vil automatisk aktiveres for nye episoder.\nØnsker du å aktivere den for tidligere utgitte episoder også?</string>
+ <string name="auto_delete_label">Slett episode automatisk</string>
<string name="parallel_downloads_suffix">\u0020samtidige nedlastinger</string>
<string name="feed_auto_download_always">Alltid</string>
<string name="feed_auto_download_never">Aldri</string>
- <string name="episode_cleanup_never">AldriAldri</string>
+ <string name="send_label">Send ...</string>
+ <string name="episode_cleanup_never">Aldri</string>
<string name="episode_cleanup_queue_removal">Når ikke i kø</string>
<string name="episode_cleanup_after_listening">Etter den er ferdig</string>
<plurals name="episode_cleanup_days_after_listening">
@@ -79,13 +97,17 @@
<string name="etxtFeedurlHint">www.example.com/feed</string>
<string name="txtvfeedurl_label">Legg til en podcast via URL</string>
<string name="podcastdirectories_label">Finn podcast i katalog</string>
+ <string name="podcastdirectories_descr">Søk etter nye podcaster i iTunes eller fyyd, eller utforsk gpodder.net etter navn, kategori eller popularitet.</string>
<string name="browse_gpoddernet_label">Bla gjennom gpodder.net</string>
<!--Actions on feeds-->
<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_seen_label">Marker alle som sett</string>
+ <string name="mark_all_seen_confirmation_msg">Bekreft at du ønsker å markere alle episoder som sett.</string>
<string name="show_info_label">Vis informasjon</string>
+ <string name="share_label">Del ...</string>
+ <string name="share_file_label">Del fil</string>
<string name="share_feed_url_label">Del strømmens URL</string>
<string name="hide_episodes_title">Skjul episoder</string>
<string name="hide_unplayed_episodes_label">Ikke avspilt</string>
@@ -95,24 +117,30 @@
<string name="hide_not_queued_episodes_label">Ikke i kø</string>
<string name="hide_downloaded_episodes_label">Nedlastet</string>
<string name="hide_not_downloaded_episodes_label">Ikke nedlastet</string>
+ <string name="hide_has_media_label">Har media</string>
<string name="filtered_label">Filtrert</string>
<string name="refresh_failed_msg">{fa-exclamation-circle} Siste oppdatering mislyktes</string>
+ <string name="open_podcast">Åpne podcast</string>
<!--actions on feeditems-->
<string name="download_label">Last ned</string>
<string name="play_label">Spill</string>
<string name="pause_label">Pause</string>
<string name="stop_label">Stopp</string>
- <string name="stream_label">Stream</string>
+ <string name="stream_label">Strøm</string>
<string name="remove_label">Fjern</string>
- <string name="remove_episode_lable">Fjern episode</string>
+ <string name="delete_label">Slett</string>
+ <string name="delete_failed">Kan ikke slette filen. Omstart av enheten kan hjelpe.</string>
+ <string name="marked_as_seen_label">Marker som sett</string>
<string name="mark_read_label">Marker som avspilt</string>
<string name="marked_as_read_label">Marker som avspilt</string>
<string name="mark_unread_label">Marker som ikke avspilt</string>
- <string name="add_to_queue_label">Legg til queue</string>
+ <string name="add_to_queue_label">Legg til i kø</string>
<string name="added_to_queue_label">Lagt til i kø</string>
- <string name="remove_from_queue_label">Fjern fra queue</string>
+ <string name="remove_from_queue_label">Fjern fra køen</string>
<string name="add_to_favorite_label">Legg til i favoritter</string>
+ <string name="added_to_favorites">Legg til i favoritter</string>
<string name="remove_from_favorite_label">Fjern fra favoritter</string>
+ <string name="removed_from_favorites">Fjernet fra favoritter</string>
<string name="visit_website_label">Besøk nettside</string>
<string name="support_label">Flattr\'e dette</string>
<string name="skip_episode_label">Skip episode</string>
@@ -121,7 +149,7 @@
<string name="reset_position">Tilbakestill avspillingsposisjon</string>
<string name="removed_item">Element fjernet</string>
<!--Download messages and labels-->
- <string name="download_successful">nedlastning lyktes</string>
+ <string name="download_successful">vellykket</string>
<string name="download_failed">mislyktes</string>
<string name="download_pending">Nedlastning venter</string>
<string name="download_running">Nedlasting pågår</string>
@@ -135,12 +163,14 @@
<string name="download_error_connection_error">Tilkoblingsfeil</string>
<string name="download_error_unknown_host">Ukjent vert</string>
<string name="download_error_unauthorized">Autentiseringsfeil</string>
+ <string name="download_error_file_type_type">Filtype-feil</string>
+ <string name="download_error_forbidden">Ikke tillatt</string>
<string name="cancel_all_downloads_label">Avbryt alle nedlastninger</string>
<string name="download_canceled_msg">Nedlasting avbrutt</string>
<string name="download_canceled_autodownload_enabled_msg">Nedlasting avbrutt\n<i>Automatisk nedlasting</i> for dette elementet er deaktivert</string>
<string name="download_report_title">Nedlasting fullført med feilmeldinger</string>
<string name="download_report_content_title">Nedlastingsrapport</string>
- <string name="download_error_malformed_url">Misformet URL</string>
+ <string name="download_error_malformed_url">Ugyldig URL</string>
<string name="download_error_io_error">IO feil</string>
<string name="download_error_request_error">Forespørselfeil</string>
<string name="download_error_db_access">Tilgangsfeil for database</string>
@@ -160,7 +190,7 @@
<string name="confirm_mobile_download_dialog_only_add_to_queue">Legg til i kø</string>
<string name="confirm_mobile_download_dialog_enable_temporarily">Tillat midlertidig</string>
<!--Mediaplayer messages-->
- <string name="player_error_msg">Error!</string>
+ <string name="player_error_msg">Feil</string>
<string name="player_stopped_msg">Ingen media spillende for øyeblikket.</string>
<string name="player_preparing_msg">Forbereder</string>
<string name="player_ready_msg">Klar</string>
@@ -174,6 +204,8 @@
<!--Queue operations-->
<string name="lock_queue">Lås køen</string>
<string name="unlock_queue">Lås opp køen</string>
+ <string name="queue_locked">Kø låst</string>
+ <string name="queue_unlocked">Kø opplåst</string>
<string name="clear_queue_label">Slett køen</string>
<string name="undo">Angre</string>
<string name="removed_from_queue">Objekt er fjernet</string>
@@ -182,6 +214,7 @@
<string name="sort">Sortér</string>
<string name="date">På dato</string>
<string name="duration">På varighet</string>
+ <string name="episode_title">Episodetittel</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>
@@ -217,30 +250,39 @@
<string name="set_playback_speed_label">Avspillingshastigheter</string>
<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_chapters_label">Denne episoden har ingen kapitler.</string>
+ <string name="no_shownotes_label">Denne episoden har ingen shownotater</string>
<!--Preferences-->
+ <string name="storage_pref">Lagring</string>
+ <string name="project_pref">Prosjekt</string>
<string name="other_pref">Annet</string>
<string name="about_pref">Om</string>
- <string name="queue_label">Queue</string>
+ <string name="queue_label">Kø</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_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>
<string name="pref_auto_delete_title">Automatisk sletting</string>
<string name="pref_smart_mark_as_played_sum">Marker episoder som avspilt selv om det er X antall sekunder igjen av avspillingen</string>
+ <string name="pref_smart_mark_as_played_title">Smart markering som avspilt</string>
<string name="pref_skip_keeps_episodes_sum">Behold episoder når de hoppes over</string>
<string name="pref_skip_keeps_episodes_title">Behold episoder som er hoppet over</string>
+ <string name="pref_favorite_keeps_episodes_sum">Behold episoder når de er merket som favoritt</string>
+ <string name="pref_favorite_keeps_episodes_title">Behold favorittepisoder</string>
<string name="playback_pref">Avspilling</string>
<string name="network_pref">Nettverk</string>
- <string name="pref_autoUpdateIntervallOrTime_title">Oppdateringsintervall eler tidspunkt</string>
+ <string name="pref_autoUpdateIntervallOrTime_title">Oppdateringsintervall eller tidspunkt</string>
<string name="pref_autoUpdateIntervallOrTime_sum">Spesifiser en intervall eller et spesifikt tidspunkt når strømmer skal oppdateres automatisk</string>
<string name="pref_autoUpdateIntervallOrTime_message">Du kan sette en <i>intervall</i> som «hver andre time», et <i>spesifikt tidspunkt</i> som «07:00» eller <i>skru av</i> automatiske oppdateringer helt.\n\n<small>Merk: Oppdateringstider er ikke eksakte; du kan oppleve små forsinkelser.</small></string>
<string name="pref_autoUpdateIntervallOrTime_Disable">Skru av</string>
<string name="pref_autoUpdateIntervallOrTime_Interval">Sett intervall</string>
<string name="pref_autoUpdateIntervallOrTime_TimeOfDay">Angi klokkeslett</string>
+ <string name="pref_autoUpdateIntervallOrTime_every">hver %1$s</string>
+ <string name="pref_autoUpdateIntervallOrTime_at">ved %1$s</string>
<string name="pref_downloadMediaOnWifiOnly_sum">Last ned mediafiler eksklusivt med WiFi</string>
<string name="pref_followQueue_title">Kontinuerlig avspilling</string>
<string name="pref_downloadMediaOnWifiOnly_title">WiFi media nedlastning</string>
@@ -266,13 +308,15 @@
<string name="pref_nav_drawer_items_title">Velg elementer i navigasjonsskuffen</string>
<string name="pref_nav_drawer_items_sum">Endre hvilke elementer som vises i navigeringsfanen.</string>
<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_order_sum">Endre rekkefølgen på abonnementene dine</string>
<string name="pref_nav_drawer_feed_counter_title">Velg abbonementsteller</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>
<string name="pref_autodl_wifi_filter_title">Skru på Wi-Fi-filter</string>
<string name="pref_autodl_wifi_filter_sum">Tillat automatisk nedlasting kun for valgte Wi-Fi-nettverk.</string>
+ <string name="pref_autodl_allow_on_mobile_title">Last ned via mobildata</string>
+ <string name="pref_autodl_allow_on_mobile_sum">Tillat oppdateringer over kobling via mobildata.</string>
<string name="pref_automatic_download_on_battery_title">Last ned når enheten ikke lader</string>
<string name="pref_automatic_download_on_battery_sum">Tillat automatisk nedlasting når enheten ikke står til lading</string>
<string name="pref_parallel_downloads_title">Parallelle nedlastinger</string>
@@ -289,12 +333,20 @@
<string name="pref_gpodnet_logout_toast">Utloggelse lyktes</string>
<string name="pref_gpodnet_setlogin_information_title">Endre innloggingsinformasjon</string>
<string name="pref_gpodnet_setlogin_information_sum">Endre innlogginsinformasjonen til din gpodder.net konto</string>
+ <string name="pref_gpodnet_sync_changes_title">Synkroniser endringer nå</string>
+ <string name="pref_gpodnet_full_sync_title">Synkroniser alt nå</string>
+ <string name="pref_gpodnet_sync_sum_last_sync_line">Siste synkroniseringsforsøk: %1$s (%2$s)</string>
+ <string name="pref_gpodnet_sync_started">Synkronisering startet</string>
+ <string name="pref_gpodnet_full_sync_started">Full synkronisering startet</string>
+ <string name="pref_gpodnet_notifications_title">Vis synkroniseringsfeil varsler</string>
+ <string name="pref_gpodnet_notifications_sum">Denne instillingen gjelder ikke autentiseringfeil.</string>
<string name="pref_playback_speed_title">Avspillingshastigheter</string>
<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_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>
<string name="pref_lockscreen_background_title">Angi som bakgrunn på låseskjermen</string>
<string name="pref_lockscreen_background_sum">Angir låseskjermbakgrunnsbildet til å være den nåværende episodens bilde. Som en sideeffekt vil dette også vise bildet i tredjepartsapper.</string>
<string name="pref_showDownloadReport_title">Vis nedlastingsrapport</string>
@@ -309,16 +361,23 @@
<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_faq">FAQ</string>
+ <string name="pref_known_issues">Kjente problemer</string>
+ <string name="pref_no_browser_found">Ingen nettleser funnet.</string>
+ <string name="pref_cast_title">Chromecast støtte</string>
+ <string name="pref_enqueue_downloaded_summary">Legg til nedlastede episoder i køen</string>
<!--Auto-Flattr dialog-->
<string name="auto_flattr_enable">Aktiver automatisk flattring</string>
<string name="auto_flattr_after_percent">Flattre episode så snart %d prosent er avspilt</string>
<string name="auto_flattr_ater_beginning">Flattre episode når avspillingen starter</string>
<string name="auto_flattr_ater_end">Flattre episode når avspillingen tar slutt</string>
<!--Search-->
+ <string name="search_hint">Søk etter episoder</string>
<string name="found_in_chapters_label">Funnet i kapitler</string>
<string name="search_status_no_results">Ingen resultater ble funnet</string>
<string name="search_label">Søk</string>
<string name="found_in_title_label">Funnet i tittel</string>
+ <string name="no_results_for_query">Ingen resultalter for \"%1$s\"</string>
<!--OPML import and export-->
<string name="opml_import_txtv_button_lable">OPML-filer lar deg flytte podcastene dine fra en podcatcher til en annen.</string>
<string name="opml_import_option">Valg %1$d</string>
@@ -327,15 +386,20 @@
<string name="opml_import_explanation_3">Mange applikasjoner som Gmail, Dropbox, Google Drive og de fleste filbehandlere kan <i>åpne</i> OPML-filer <i>med</i> AntennaPod.</string>
<string name="start_import_label">Start importering</string>
<string name="opml_import_label">OPML-import</string>
- <string name="opml_directory_error">ERROR!</string>
+ <string name="opml_directory_error">FEIL</string>
<string name="reading_opml_label">Leser OPML-fil</string>
- <string name="opml_reader_error">En feil oppsto under lesingen av opml dokumentet:</string>
+ <string name="opml_reader_error">En feil oppstod ved lesing av OPML dokument: </string>
+ <string name="opml_import_error_no_file">Ingen fil er valgt.</string>
<string name="select_all_label">Velg alle</string>
<string name="deselect_all_label">Opphev alle markeringene</string>
+ <string name="select_options_label">Velg...</string>
<string name="choose_file_from_filesystem">Fra lokalt filsystem</string>
<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="html_export_label">HTML eksport</string>
+ <string name="exporting_label">Eksporterer...</string>
+ <string name="export_error_label">Feil ved eksportering</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>
<string name="disable_sleeptimer_label">Deaktiver sovetimer</string>
@@ -361,6 +425,9 @@
<item quantity="one">1 time</item>
<item quantity="other">%d timer</item>
</plurals>
+ <string name="auto_enable_label">Auto-aktiver</string>
+ <string name="sleep_timer_enabled_label">Sovetimer aktivert</string>
+ <string name="sleep_timer_disabled_label">Sovetimer deaktivert</string>
<!--gpodder.net-->
<string name="gpodnet_taglist_header">KATEGORIER</string>
<string name="gpodnet_toplist_header">TOPP-PODCASTER</string>
@@ -380,20 +447,24 @@
<string name="gpodnetauth_device_chooseExistingDevice">Velg eksisterende enhet:</string>
<string name="gpodnetauth_device_errorEmpty">Device ID kan ikke være tom</string>
<string name="gpodnetauth_device_errorAlreadyUsed">EnhetsID er allerede i bruk</string>
+ <string name="gpodnetauth_device_caption_errorEmpty">Tittel kan ikke være tom</string>
<string name="gpodnetauth_device_butChoose">Velg</string>
- <string name="gpodnetauth_finish_title">Innlogging lyktes!</string>
+ <string name="gpodnetauth_finish_title">Innlogging lyktes.</string>
<string name="gpodnetauth_finish_descr">Gratulerer! Din gpodder.net konto er nå linket opp med din enhet. AntennaPod vil nå automatisk synkronisere abonnementer på din enhet med din gpodder.net konto.</string>
<string name="gpodnetauth_finish_butsyncnow">Start synkronisering nå.</string>
<string name="gpodnetauth_finish_butgomainscreen">Gå til hovedskjermen</string>
<string name="gpodnetsync_auth_error_title">gpodder.net-autentiseringsfeil</string>
<string name="gpodnetsync_auth_error_descr">Feil brukernavn eller passord.</string>
- <string name="gpodnetsync_error_title">gpodder.net synkroniseringserror</string>
+ <string name="gpodnetsync_error_title">gpodder.net synkroniseringsfeil</string>
<string name="gpodnetsync_error_descr">En feil oppsto under synkronisering av:\u0020</string>
+ <string name="gpodnetsync_pref_report_successful">Vellykket</string>
+ <string name="gpodnetsync_pref_report_failed">Mislyktes</string>
<!--Directory chooser-->
<string name="selected_folder_label">Valgt mappe</string>
<string name="create_folder_label">Lag mappe</string>
<string name="choose_data_directory">Velg datamappe</string>
<string name="choose_data_directory_message">Vennligst velg basisen for datamappen din. AntennaPod vil lage de nødvendige submappene dine.</string>
+ <string name="choose_data_directory_permission_rationale">Tilgang til ekstern lagring er nødvendig for å endre data mappe</string>
<string name="create_folder_msg">Lag en ny mappe med navn \"%1$s\"?</string>
<string name="create_folder_success">Lagde en ny mappe</string>
<string name="create_folder_error_no_write_access">Kan ikke skrive til denne mappen</string>
@@ -413,6 +484,7 @@
<!--Online feed view-->
<string name="subscribe_label">Abonner</string>
<string name="subscribed_label">Abonnert</string>
+ <string name="downloading_label">Laster ned...</string>
<!--Content descriptions for image buttons-->
<string name="rewind_label">Spol tilbake</string>
<string name="fast_forward_label">Spol fremover</string>
@@ -420,17 +492,23 @@
<string name="media_type_video_label">Video</string>
<string name="navigate_upwards_label">Naviger oppover</string>
<string name="status_downloading_label">Episode lastes ned nå</string>
- <string name="in_queue_label">Episoden er i queue</string>
+ <string name="in_queue_label">Episoden er i køen</string>
<string name="drag_handle_content_description">Dra for å endre posisjonen til dette objektet</string>
<string name="load_next_page_label">Last inn neste side</string>
<!--Feed information screen-->
<string name="authentication_label">Autentisering</string>
<string name="authentication_descr">Endre brukernavnet og passordet for denne podcasten og dens episoder.</string>
+ <string name="auto_download_settings_label">Innstillinger for automatisk nedlastning</string>
+ <string name="episode_filters_label">Episodefilter</string>
+ <string name="episode_filters_include">Inkluder</string>
+ <string name="episode_filters_exclude">Utelukk</string>
+ <string name="keep_updated">Hold oppdatert</string>
<!--Progress information-->
<string name="progress_upgrading_database">Oppgraderer databasen</string>
<!--AntennaPodSP-->
<string name="sp_apps_importing_feeds_msg">Importerer abbonementer fra enkeltstående applikasjoner ...</string>
<string name="search_itunes_label">Søk på iTunes</string>
+ <string name="filter">Filter</string>
<!--Episodes apply actions-->
<string name="all_label">Alle</string>
<string name="selected_all_label">Valgte alle episoder</string>
@@ -446,6 +524,7 @@
<string name="selected_not_downloaded_label">Valgte ikke-nedlastede episoder</string>
<string name="queued_label">I kø</string>
<string name="not_queued_label">Ikke i kø</string>
+ <string name="selected_not_queued_label">Valgte episoder som ikke er i kø</string>
<!--Sort-->
<string name="sort_title_a_z">Tittel (A \u2192 Z)</string>
<string name="sort_title_z_a">Tittel (Z \u2192 A)</string>
@@ -460,9 +539,35 @@
<string name="rating_later_label">Minn meg på dette senere</string>
<string name="rating_now_label">Naturligvis, kom igjen!</string>
<!--Audio controls-->
+ <string name="playback_speed">Avspillingshastighet</string>
+ <string name="volume">Volum</string>
+ <string name="audio_effects">Lydeffekter</string>
+ <string name="stereo_to_mono">Nedmiksing: Stereo til mono</string>
+ <string name="sonic_only">Kun Sonic</string>
<!--proxy settings-->
+ <string name="proxy_type_label">Type</string>
+ <string name="host_label">Vert</string>
+ <string name="port_label">Port</string>
+ <string name="optional_hint">(Valgfri)</string>
+ <string name="proxy_test_label">Test</string>
+ <string name="proxy_checking">Kontrollerer...</string>
+ <string name="proxy_test_successful">Test vellykket</string>
+ <string name="proxy_test_failed">Test mislykket</string>
+ <string name="proxy_host_empty_error">Vert kan ikke være tom</string>
+ <string name="proxy_host_invalid_error">Vert er ikke en gyldig IP adresse eller domene</string>
+ <string name="proxy_port_invalid_error">Ikke gyldig port</string>
+ <!--Subscriptions fragment-->
<!--Database import/export-->
+ <string name="import_export">Database import/eksport</string>
+ <string name="label_import">Importer</string>
+ <string name="label_export">Eksporter</string>
+ <string name="import_select_file">Velg fil å importere</string>
<!--Casting-->
+ <string name="cast_media_route_menu_title">Spill på...</string>
+ <string name="cast_not_castable">Valgt media er ikke kompatibel med strømmingsenhet</string>
+ <string name="cast_failed_to_play">Feilet å starte avspilling av media</string>
+ <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-nl/strings.xml b/core/src/main/res/values-nl/strings.xml
index b2b368e8a..90d081bb7 100644
--- a/core/src/main/res/values-nl/strings.xml
+++ b/core/src/main/res/values-nl/strings.xml
@@ -95,10 +95,15 @@
<string name="episode_cleanup_never">Nooit</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_hours_after_listening">
+ <item quantity="one">1 uur na afronden</item>
+ <item quantity="other">%d uur na afronden</item>
+ </plurals>
<plurals name="episode_cleanup_days_after_listening">
<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>
+ <string name="num_selected_label">%d geselecteerd</string>
<!--'Add Feed' Activity labels-->
<string name="feedurl_label">Feed-URL</string>
<string name="etxtFeedurlHint">www.voorbeeld.nl/feed</string>
@@ -132,6 +137,8 @@
<string name="load_complete_feed">Gehele podcast verversen</string>
<string name="hide_episodes_title">Afleveringen verbergen</string>
<string name="batch_edit">Bulkbewerking</string>
+ <string name="select_all_above">Alles hierboven selecteren</string>
+ <string name="select_all_below">Alles hieronder selecteren</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>
@@ -146,6 +153,10 @@
<string name="open_podcast">Podcast openen</string>
<!--actions on feeditems-->
<string name="download_label">Downloaden</string>
+ <plurals name="downloading_batch_label">
+ <item quantity="one">Bezig met downloaden van %d aflevering.</item>
+ <item quantity="other">Bezig met downloaden van %d afleveringen.</item>
+ </plurals>
<string name="play_label">Afspelen</string>
<string name="pause_label">Pauzeren</string>
<string name="stop_label">Stoppen</string>
@@ -153,15 +164,35 @@
<string name="remove_label">Verwijderen</string>
<string name="delete_label">Verwijderen</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="delete_episode_label">Aflevering verwijderen</string>
+ <plurals name="deleted_episode_batch_label">
+ <item quantity="one">%d aflevering verwijderd.</item>
+ <item quantity="other">%d afleveringen verwijderd.</item>
+ </plurals>
<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>
+ <plurals name="marked_read_batch_label">
+ <item quantity="one">%d aflevering gemarkeerd als afgespeeld.</item>
+ <item quantity="other">%d afleveringen gemarkeerd als afgespeeld.</item>
+ </plurals>
<string name="mark_unread_label">Markeren als niet-afgespeeld</string>
+ <plurals name="marked_unread_batch_label">
+ <item quantity="one">%d aflevering gemarkeerd als niet-afgespeeld.</item>
+ <item quantity="other">%d afleveringen gemarkeerd als niet-afgespeeld.</item>
+ </plurals>
<string name="add_to_queue_label">Toevoegen aan wachtrij</string>
<string name="added_to_queue_label">Toegevoegd aan wachtrij</string>
+ <plurals name="added_to_queue_batch_label">
+ <item quantity="one">%d aflevering toegevoegd aan wachtrij.</item>
+ <item quantity="other">%d afleveringen toegevoegd aan wachtrij.</item>
+ </plurals>
<string name="remove_from_queue_label">Verwijderen uit wachtrij</string>
+ <plurals name="removed_from_queue_batch_label">
+ <item quantity="one">%d aflevering verwijderd uit wachtrij.</item>
+ <item quantity="other">%d afleveringen verwijderd uit wachtrij.</item>
+ </plurals>
<string name="add_to_favorite_label">Toevoegen aan favorieten</string>
<string name="added_to_favorites">Toegevoegd aan favorieten</string>
<string name="remove_from_favorite_label">Verwijderen uit favorieten</string>
@@ -213,6 +244,7 @@
<string name="download_type_media">Mediabestand</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="null_value_podcast_error">Er is geen te tonen podcast opgegeven.</string>
<string name="authentication_notification_title">Authenticatie vereist</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>
@@ -286,10 +318,25 @@
<string name="set_playback_speed_label">Afspeelsnelheden</string>
<string name="enable_sonic">Sonic inschakelen</string>
<!--Empty list labels-->
- <string name="no_items_label">Er staan geen items op deze lijst.</string>
+ <string name="no_items_header_label">Geen afleveringen in wachtrij</string>
+ <string name="no_items_label">Voeg een aflevering toe door deze te downloaden of houd een aflevering lang ingedrukt en kies \'Toevoegen aan wachtrij\'.</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>
+ <string name="no_run_downloads_head_label">Geen actieve downloads</string>
+ <string name="no_run_downloads_label">Je kunt afleveringen downloaden op het podcastinformatiescherm.</string>
+ <string name="no_comp_downloads_head_label">Geen gedownloade afleveringen</string>
+ <string name="no_comp_downloads_label">Je kunt afleveringen downloaden op het podcastinformatiescherm.</string>
+ <string name="no_log_downloads_head_label">Geen download-logbestand</string>
+ <string name="no_log_downloads_label">Download-logbestanden verschijnen hier.</string>
+ <string name="no_history_head_label">Geen geschiedenis</string>
+ <string name="no_history_label">Als je een aflevering hebt beluisterd, dan verschijnt deze hier.</string>
+ <string name="no_all_episodes_head_label">Geen afleveringen</string>
+ <string name="no_all_episodes_label">Als je een podcast toevoegt, dan verschijnen de afleveringen hier.</string>
+ <string name="no_new_episodes_head_label">Geen nieuwe afleveringen</string>
+ <string name="no_new_episodes_label">Als er nieuwe afleveringen zijn, dan verschijnen ze hier.</string>
+ <string name="no_fav_episodes_head_label">Geen favoriete afleveringen</string>
+ <string name="no_fav_episodes_label">Je kunt afleveringen toevoegen aan je favorieten door ze lang ingedrukt te houden.</string>
<!--Preferences-->
<string name="storage_pref">Opslag</string>
<string name="project_pref">Project</string>
@@ -302,6 +349,7 @@
<string name="automation">Automatische acties</string>
<string name="download_pref_details">Details</string>
<string name="import_export_pref">Importeren/Exporteren</string>
+ <string name="import_export_search_keywords">back-up, herstel</string>
<string name="appearance">Uiterlijk</string>
<string name="external_elements">Externe elementen</string>
<string name="interruptions">Onderbrekingen</string>
@@ -313,6 +361,7 @@
<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_hardwareForwardButtonSkips_sum">Als je op de Vooruit-knop van een via Bluetooth verbonden apparaat drukt, dan wordt de volgende aflevering geladen i.p.v. doorgespoeld</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>
@@ -342,6 +391,9 @@
<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="pref_mobileUpdate_nothing">Niets</string>
+ <string name="pref_mobileUpdate_images">Alleen afbeeldingen</string>
+ <string name="pref_mobileUpdate_everything">Alles</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>
@@ -404,6 +456,8 @@
<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_expandNotify_title">Melding met hoge prioriteit</string>
+ <string name="pref_expandNotify_sum">Dit klapt meestal de melding uit zodat de bedieningsknoppen kunnen worden getoond.</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>
@@ -437,10 +491,24 @@
<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_skip_silence_title">Audiostiltes overslaan</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>
+ <string name="behavior">Gedrag</string>
+ <string name="pref_back_button_behavior_title">Gedrag van terugknop</string>
+ <string name="pref_back_button_behavior_sum">Pas het gedrag van de terugknop aan.</string>
+ <string name="back_button_default">Standaard</string>
+ <string name="back_button_open_drawer">Navigatiemenu openen</string>
+ <string name="back_button_double_tap">Dubbeltik om af te sluiten</string>
+ <string name="back_button_show_prompt">Afsluiten bevestigen</string>
+ <string name="close_prompt">Weet je zeker dat je AntennaPod wilt afsluiten?</string>
+ <string name="double_tap_toast">Druk nogmaals op de terugknop om af te sluiten</string>
+ <string name="back_button_go_to_page">Ga naar pagina...</string>
+ <string name="back_button_go_to_page_title">Kies een pagina</string>
+ <string name="pref_delete_removes_from_queue_title">Afleveringen verwijderen uit wachtrij na wissen</string>
+ <string name="pref_delete_removes_from_queue_sum">Verwijder een aflevering uit de wachtrij als de aflevering in kwestie is verwijderd.</string>
<!--Auto-Flattr dialog-->
<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>
@@ -633,6 +701,7 @@
<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>
+ <string name="exoplayer_only">Alleen ExoPlayer</string>
<!--proxy settings-->
<string name="proxy_type_label">Type</string>
<string name="host_label">Host</string>
@@ -645,6 +714,8 @@
<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>
+ <!--Subscriptions fragment-->
+ <string name="subscription_num_columns">Aantal kolommen</string>
<!--Database import/export-->
<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>
diff --git a/core/src/main/res/values-pl-rPL/strings.xml b/core/src/main/res/values-pl-rPL/strings.xml
index d77236577..53bce3911 100644
--- a/core/src/main/res/values-pl-rPL/strings.xml
+++ b/core/src/main/res/values-pl-rPL/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">Uaktualnij subskrypcje</string>
<string name="feeds_label">Kanały</string>
<string name="statistics_label">Statystyki</string>
<string name="add_feed_label">Dodaj podcast</string>
@@ -106,14 +107,26 @@
<!--Actions on feeds-->
<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_seen_label">Oznacz wszystkie jako widziane</string>
+ <string name="mark_all_read_confirmation_msg">Proszę potwierdzić, że chcesz oznaczyć wszystkie odcinki jako odtworzone.</string>
+ <string name="mark_all_read_feed_confirmation_msg">Proszę potwierdzić, że chcesz oznaczyć wszystkie odcinki tego podcastu jako odtworzone.</string>
+ <string name="mark_all_seen_label">Oznacz wszystkie jako wyświetlone</string>
+ <string name="mark_all_seen_msg">Oznacz wszystkie odcinki jako wyświetlone</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="show_feed_settings_label">Pokaż ustawienia podcastu</string>
+ <string name="feed_settings_label">Ustawienia podcastu</string>
+ <string name="rename_feed_label">Zmień nazwę podcastu</string>
+ <string name="remove_feed_label">Usuń podcast</string>
<string name="share_label">Udostępnij...</string>
+ <string name="share_link_label">Udostępnij adres URL odcinka</string>
+ <string name="share_link_with_position_label">Udostępnij adres URL odcinka 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="feed_remover_msg">Usuwanie podcastu</string>
+ <string name="load_complete_feed">Odśwież cały podcast</string>
<string name="hide_episodes_title">Ukryj odcinki</string>
+ <string name="select_all_above">Zaznacz wszystkie powyżej</string>
+ <string name="select_all_below">Zaznacz wszystkie poniżej</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>
@@ -134,8 +147,8 @@
<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_as_seen_label">Oznacz jako wyświetlone</string>
+ <string name="marked_as_seen_label">Oznaczono jako wyświetlone</string>
<string name="mark_read_label">Oznacz jako odtworzone</string>
<string name="marked_as_read_label">Oznaczone jako odtworzone</string>
<string name="mark_unread_label">Oznacz jako nieodtworzone</string>
@@ -151,7 +164,7 @@
<string name="skip_episode_label">Pomiń odcinek</string>
<string name="activate_auto_download">Włącz automatyczne pobieranie</string>
<string name="deactivate_auto_download">Wyłącz automatyczne pobieranie</string>
- <string name="reset_position">Zresetowano pozycję odtwarzania</string>
+ <string name="reset_position">Zresetuj pozycję odtwarzania</string>
<string name="removed_item">Pozycja usunięta</string>
<!--Download messages and labels-->
<string name="download_successful">Operacja zakończona sukcesem</string>
@@ -229,6 +242,7 @@
<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ł podcastu</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>
@@ -265,7 +279,7 @@
<string name="set_playback_speed_label">Prędkość odtwarzania</string>
<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 podcastu.</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-->
@@ -275,6 +289,8 @@
<string name="about_pref">O...</string>
<string name="queue_label">Kolejka</string>
<string name="flattr_label">Flattr</string>
+ <string name="download_pref_details">Szczegóły</string>
+ <string name="appearance">Wygląd</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>
<string name="pref_pauseOnDisconnect_sum">Wstrzymaj odtwarzanie po rozłączeniu słuchawek lub Bluetooth</string>
@@ -610,6 +626,7 @@ https://gpodder.net/register/</string>
<string name="proxy_host_empty_error">Host nie może być pusty!</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>
+ <!--Subscriptions fragment-->
<!--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>
diff --git a/core/src/main/res/values-pt-rBR/strings.xml b/core/src/main/res/values-pt-rBR/strings.xml
index 57ec3573c..0f85d9eaf 100644
--- a/core/src/main/res/values-pt-rBR/strings.xml
+++ b/core/src/main/res/values-pt-rBR/strings.xml
@@ -7,6 +7,7 @@
<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">Novo</string>
<string name="favorite_episodes_label">Favoritos</string>
<string name="new_label">Novo</string>
<string name="settings_label">Configurações</string>
@@ -19,10 +20,12 @@
<string name="cancel_download_label">Cancelar\nDownload</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">gpodder.net login</string>
<string name="free_space_label">%1$s livre(s)</string>
<string name="episode_cache_full_title">Cache de episódios cheio</string>
<string name="episode_cache_full_message">O limite de cache de episódios foi alcançado. Você pode aumentar o tamanho do cache em Configurações.</string>
+ <string name="synchronizing">Sincronizando...</string>
<!--Statistics fragment-->
<string name="total_time_listened_to_podcasts">Tempo total de podcasts reproduzidos:</string>
<string name="statistics_details_dialog">%1$d de %2$d episódios iniciados.\n\nReproduzidos %3$s de %4$s.</string>
@@ -57,12 +60,14 @@
<string name="yes">Sim</string>
<string name="no">Não</string>
<string name="reset">Resetar</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">Configurações</string>
<string name="cover_label">Capa</string>
<string name="error_label">Erro</string>
<string name="error_msg_prefix">Um erro ocorreu:</string>
+ <string name="needs_storage_permission">Permissão de armazenamento necessária para essa operação</string>
<string name="refresh_label">Atualizar</string>
<string name="external_storage_error_msg">Não há dispositivos de armazenamento externo disponíveis. Por favor, certifique-se de que um dispositivo de armazenamento externo está montado para que o aplicativo possa funcionar adequadamente.</string>
<string name="chapters_label">Capítulos</string>
@@ -105,12 +110,30 @@
<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">Favor confirmar que deseja marcar todos os episódios nesse podcast como já ouvidos.</string>
<string name="mark_all_seen_label">Marcar todos como vistos</string>
+ <string name="mark_all_seen_msg">Todos os episódios marcados como já ouvidos</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="show_feed_settings_label">Exibir configurações do podcast</string>
+ <string name="feed_info_label">Informações do podcast</string>
+ <string name="feed_settings_label">Configurações do podcast</string>
+ <string name="rename_feed_label">Renomear podcast</string>
+ <string name="remove_feed_label">Remover podcast</string>
<string name="share_label">Compartilhar...</string>
+ <string name="share_link_label">Compartilhar a URL do episódio</string>
+ <string name="share_link_with_position_label">Compartilhar a URL do episódio com posição</string>
+ <string name="share_file_label">Compartilhar arquivo</string>
<string name="share_feed_url_label">Compartilhar Link do Feed</string>
+ <string name="share_item_url_label">Compartilhar a URL do arquivo de mídia</string>
+ <string name="share_item_url_with_position_label">Compartilhar a URL do arquivo de mídia com posição</string>
+ <string name="feed_delete_confirmation_msg">Confirme se deseja deletar o podcast \"%1$s\" e todos seus episódios (incluindo os baixados).</string>
+ <string name="feed_remover_msg">Removendo podcast</string>
+ <string name="load_complete_feed">Atualizar podcast completamente</string>
<string name="hide_episodes_title">Ocultar Episódios</string>
+ <string name="batch_edit">Edição em lote</string>
+ <string name="select_all_above">Selecionar tudo acima</string>
+ <string name="select_all_below">Selecionar tudo abaixo</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>
@@ -119,6 +142,7 @@
<string name="hide_downloaded_episodes_label">Baixado</string>
<string name="hide_not_downloaded_episodes_label">Não baixado</string>
<string name="hide_has_media_label">Possui mídia</string>
+ <string name="hide_is_favorite_label">É favorito</string>
<string name="filtered_label">Filtrado</string>
<string name="refresh_failed_msg">{fa-exclamation-circle} Última Atualização falhou</string>
<string name="open_podcast">Abrir Podcast</string>
@@ -130,7 +154,8 @@
<string name="stream_label">Stream</string>
<string name="remove_label">Remover</string>
<string name="delete_label">Deletar</string>
- <string name="remove_episode_lable">Remover Episódio</string>
+ <string name="delete_failed">Não foi possível deletar o arquivo. Experimente reiniciar o dispositivo.</string>
+ <string name="mark_as_seen_label">Marcar como ouvido</string>
<string name="marked_as_seen_label">Marcar como visto</string>
<string name="mark_read_label">Marcar como reproduzido</string>
<string name="marked_as_read_label">Marcado como reproduzido</string>
@@ -154,6 +179,8 @@
<string name="download_failed">falhou</string>
<string name="download_pending">Download pendente</string>
<string name="download_running">Download em execução</string>
+ <string name="download_error_details">Detalhes</string>
+ <string name="download_error_details_message">%1$s \n\nFile URL:\n%2$s</string>
<string name="download_error_device_not_found">Dispositivo de armazenamento não encontrado</string>
<string name="download_error_insufficient_space">Espaço insuficiente</string>
<string name="download_error_file_error">Erro de arquivo</string>
@@ -204,6 +231,7 @@
<string name="playback_error_unknown">Erro desconhecido</string>
<string name="no_media_playing_label">Nenhuma mídia tocando</string>
<string name="player_buffering_msg">Armazenando</string>
+ <string name="player_go_to_picture_in_picture">Modo PIP</string>
<string name="playbackservice_notification_title">Reproduzindo podcast</string>
<string name="unknown_media_key">AntennaPod - Chave de mídia desconhecida: %1$d</string>
<!--Queue operations-->
@@ -220,6 +248,9 @@
<string name="date">Data</string>
<string name="duration">Duração</string>
<string name="episode_title">Titulo do Episodio</string>
+ <string name="feed_title">Título do podcast</string>
+ <string name="random">Aleatório</string>
+ <string name="smart_shuffle">Embaralhamento inteligente</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>
@@ -256,7 +287,7 @@
<string name="set_playback_speed_label">Velocidades de Reprodução</string>
<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 se inscreveu a nenhum podcast.</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-->
@@ -265,13 +296,24 @@
<string name="other_pref">Outros</string>
<string name="about_pref">Sobre</string>
<string name="queue_label">Fila</string>
+ <string name="integrations_label">Integrações</string>
<string name="flattr_label">Flattr</string>
+ <string name="flattr_summary">Serviço de micropagamento</string>
+ <string name="automation">Automaçã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 de controle de reprodução</string>
+ <string name="media_player">Reprodutor de mídia</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>
<string name="pref_pauseOnDisconnect_sum">Pausar a reprodução quando o fone de ouvido ou bluetooth forem disconectados</string>
<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">Reproduz o próximo episódio ao pressionar o botão avançar num dispositivo bluetooth conectado, ao invés de avançar no mesmo.</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>
@@ -281,6 +323,8 @@
<string name="pref_smart_mark_as_played_title">Marcar automaticamente como reproduzido</string>
<string name="pref_skip_keeps_episodes_sum">Manter os episódios quando eles forem avançados</string>
<string name="pref_skip_keeps_episodes_title">Manter episódios avançados</string>
+ <string name="pref_favorite_keeps_episodes_sum">Manter episódios marcados como Favoritos</string>
+ <string name="pref_favorite_keeps_episodes_title">Manter episódios favoritos</string>
<string name="playback_pref">Reprodução</string>
<string name="network_pref">Rede</string>
<string name="pref_autoUpdateIntervallOrTime_title">Atualizar intervalo ou momento do dia</string>
@@ -318,17 +362,21 @@
<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 Contador de Assinaturas</string>
+ <string name="pref_nav_drawer_feed_counter_sum">Altera a informação exibida pelo contador de inscrição. Também afeta a ordenação das inscrições caso \'Ordem das Inscrições\' esteja definida como \'Contador\'.</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>
<string name="pref_autodl_wifi_filter_title">Habilitar filtro Wi-Fi</string>
<string name="pref_autodl_wifi_filter_sum">Permitir download automático somente pelas redes Wi-Fi selecionadas.</string>
+ <string name="pref_autodl_allow_on_mobile_title">Baixar com conexões móveis</string>
+ <string name="pref_autodl_allow_on_mobile_sum">Permite baixar automaticamente com conexões de dados móveis.</string>
<string name="pref_automatic_download_on_battery_title">Baixar enquanto não está carregando</string>
<string name="pref_automatic_download_on_battery_sum">Permitir download automático enquanto a bateria não está carregando</string>
<string name="pref_parallel_downloads_title">Downloads paralelos</string>
<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 (preparado 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>
@@ -357,6 +405,8 @@
<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">Prioridade de notificação alta</string>
+ <string name="pref_expandNotify_sum">Isso geralmente expande a notificação para exibir 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>
@@ -377,6 +427,7 @@
<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_media_player_message">Selecione qual reprodutor de mídia usar para reproduzir os arquivos</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>
@@ -386,7 +437,24 @@
<string name="pref_cast_title">Suporte ao Chromecast</string>
<string name="pref_cast_message_play_flavor">Habilitar o suporte para reprodução remota de mídia em dispositivos Cast (como Chromecast, Caixa de som ou Android TV)</string>
<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">Enfileirar os baixados</string>
<string name="pref_enqueue_downloaded_summary">Adicionar episódios baixados à fila</string>
+ <string name="media_player_builtin">Reprodutor próprio do Android</string>
+ <string name="pref_videoBehavior_title">Após fechar vídeo</string>
+ <string name="pref_videoBehavior_sum">Comportamento ao parar a reprodução de vídeo</string>
+ <string name="stop_playback">Parar a reprodução</string>
+ <string name="continue_playback">Continuar a reprodução de áudio</string>
+ <string name="behavior">Comportamento</string>
+ <string name="pref_back_button_behavior_title">Comportamento do botão retroceder</string>
+ <string name="pref_back_button_behavior_sum">Altera o comportamento do botão retroceder</string>
+ <string name="back_button_default">Padrão</string>
+ <string name="back_button_open_drawer">Abrir caixa de navegação</string>
+ <string name="back_button_double_tap">Toque duplo para sair</string>
+ <string name="back_button_show_prompt">Confirmar para sair</string>
+ <string name="close_prompt">Tem certeza que deseja fechar o AntennaPod?</string>
+ <string name="double_tap_toast">Clique novamente no botão voltar para sair</string>
+ <string name="back_button_go_to_page">Vá para a página...</string>
+ <string name="back_button_go_to_page_title">Selecione a página</string>
<!--Auto-Flattr dialog-->
<string name="auto_flattr_enable">Abilitar automaticamente o flattr</string>
<string name="auto_flattr_after_percent">Episódio Flattr assim que %d porcento for tocado</string>
@@ -396,6 +464,8 @@
<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">Encontrado em autor(es)</string>
+ <string name="found_in_feeds_label">Encontrado em podcast</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>
@@ -421,6 +491,8 @@
<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="export_success_title">Exportado com sucesso</string>
+ <string name="export_success_sum">O arquivo foi exportado para:\n\n%1$s</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>
@@ -587,7 +659,15 @@
<string name="proxy_host_empty_error">Host não pode ser vazio</string>
<string name="proxy_host_invalid_error">Host não possui um endereço de IP ou domínio válidos</string>
<string name="proxy_port_invalid_error">Porta inválida</string>
+ <!--Subscriptions fragment-->
<!--Database import/export-->
+ <string name="import_export">Importar/exportar base de dados</string>
+ <string name="import_export_warning">Essa funcionalidade experimental pode ser usada para transferir suas inscrições e episódios reproduzidos para outro dispositivo.\n\nBancos de dados exportados só podem ser importados pela mesma versão do AntennaPod. Caso contrário, poderá haver algum comportamento inesperado.\n\nApós a importação, os episódios poderão aparecer como baixados, mesmo que não estejam. Basta pressionar o botão de reprodução do episódio para que o AntennaPod perceba isso. </string>
+ <string name="label_import">Importar</string>
+ <string name="label_export">Exportar</string>
+ <string name="import_select_file">Selecione arquivo para importar</string>
+ <string name="export_ok">Exportado com sucesso.</string>
+ <string name="import_ok">Importado com sucesso.\n\nFavor pressionar OK para reiniciar o AntennaPod</string>
<!--Casting-->
<string name="cast_media_route_menu_title">Reproduzir em...</string>
<string name="cast_disconnect_label">Desconectar a sessão do cast</string>
@@ -605,4 +685,12 @@
<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-->
+ <string name="notification_channel_user_action">Ação necessária</string>
+ <string name="notification_channel_user_action_description">Exibido caso uma ação seja necessária, por exemplo se você tiver que digitar uma senha.</string>
+ <string name="notification_channel_downloading">Baixando</string>
+ <string name="notification_channel_downloading_description">Exibido enquanto estiver baixando.</string>
+ <string name="notification_channel_playing">Reproduzindo agora</string>
+ <string name="notification_channel_playing_description">Permite controlar a reprodução. Essa é a principal notificação vista ao reproduzir um podcast.</string>
+ <string name="notification_channel_error">Erros</string>
+ <string name="notification_channel_error_description">Exibido caso algo dê errado, por exemplo se houver falha no download ou na sincronização com o gpodder.</string>
</resources>
diff --git a/core/src/main/res/values-pt/strings.xml b/core/src/main/res/values-pt/strings.xml
index 2f7941097..39a3d33c6 100644
--- a/core/src/main/res/values-pt/strings.xml
+++ b/core/src/main/res/values-pt/strings.xml
@@ -86,7 +86,7 @@
<string name="auto_download_label">Incluir nas descargas automáticas</string>
<string name="auto_download_apply_to_items_title">Aplicar aos episódios anteriores</string>
<string name="auto_download_apply_to_items_message">A definição <i>Descarga automática</i> será aplicada a todos os novos episódios.\nGostaria de também a aplicar aos episódios anteriores?</string>
- <string name="auto_delete_label">Apagar episódio automaticamente</string>
+ <string name="auto_delete_label">Eliminar episódio automaticamente</string>
<string name="parallel_downloads_suffix">\u0020descargas simultâneas</string>
<string name="feed_auto_download_global">Predefinições</string>
<string name="feed_auto_download_always">Sempre</string>
@@ -95,10 +95,15 @@
<string name="episode_cleanup_never">Nunca</string>
<string name="episode_cleanup_queue_removal">Se não estiver na fila</string>
<string name="episode_cleanup_after_listening">Ao terminar</string>
+ <plurals name="episode_cleanup_hours_after_listening">
+ <item quantity="one">%d hora depois de terminar</item>
+ <item quantity="other">%d horas depois de terminar</item>
+ </plurals>
<plurals name="episode_cleanup_days_after_listening">
<item quantity="one">1 dia depois de terminar</item>
<item quantity="other">%d dias depois de terminar</item>
</plurals>
+ <string name="num_selected_label">%d selecionado</string>
<!--'Add Feed' Activity labels-->
<string name="feedurl_label">URL da fonte</string>
<string name="etxtFeedurlHint">URL da fonte ou do sítio web</string>
@@ -127,11 +132,13 @@
<string name="share_feed_url_label">Partilhar URL 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_delete_confirmation_msg">Tem a certeza de que deseja eliminar 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="batch_edit">Edição em lote</string>
+ <string name="select_all_above">Marcar tudo acima</string>
+ <string name="select_all_below">Marcar tudo abaixo</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>
@@ -146,22 +153,46 @@
<string name="open_podcast">Abrir podcast</string>
<!--actions on feeditems-->
<string name="download_label">Descarregar</string>
+ <plurals name="downloading_batch_label">
+ <item quantity="one">A descarregar %d episódio.</item>
+ <item quantity="other">A descarregar %d episódios.</item>
+ </plurals>
<string name="play_label">Reproduzir</string>
<string name="pause_label">Pausa</string>
<string name="stop_label">Parar</string>
<string name="stream_label">Emitir</string>
<string name="remove_label">Remover</string>
- <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="delete_label">Eliminar</string>
+ <string name="delete_failed">Episódio não eliminado. Tente reiniciar o dispositivo.</string>
+ <string name="delete_episode_label">Eliminar episódio</string>
+ <plurals name="deleted_episode_batch_label">
+ <item quantity="one">%d episódio eliminado.</item>
+ <item quantity="other">%d episódios eliminados.</item>
+ </plurals>
<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>
+ <plurals name="marked_read_batch_label">
+ <item quantity="one">%d episódio marcado como reproduzido.</item>
+ <item quantity="other">%depisódios marcados como reproduzido. </item>
+ </plurals>
<string name="mark_unread_label">Marcar como não reproduzido</string>
+ <plurals name="marked_unread_batch_label">
+ <item quantity="one">%depisódio marcado como não reproduzido. </item>
+ <item quantity="other">%d episódios marcados como não reproduzidos.</item>
+ </plurals>
<string name="add_to_queue_label">Adicionar à fila</string>
<string name="added_to_queue_label">Adicionado à fila</string>
+ <plurals name="added_to_queue_batch_label">
+ <item quantity="one">%d episódio adicionado à fila. </item>
+ <item quantity="other">%d episódios adicionados à fila.</item>
+ </plurals>
<string name="remove_from_queue_label">Remover da fila</string>
+ <plurals name="removed_from_queue_batch_label">
+ <item quantity="one">%d episódio removido da fila. </item>
+ <item quantity="other">%d episódios removidos da fila.</item>
+ </plurals>
<string name="add_to_favorite_label">Adicionar aos favoritos</string>
<string name="added_to_favorites">Adicionado aos favoritos</string>
<string name="remove_from_favorite_label">Remover dos favoritos</string>
@@ -213,6 +244,7 @@
<string name="download_type_media">Ficheiro multimédia</string>
<string name="download_type_image">Imagem</string>
<string name="download_request_error_dialog_message_prefix">Ocorreu um erro ao tentar descarregar o ficheiro:\u0020</string>
+ <string name="null_value_podcast_error">Não foi possível mostrar o podcast.</string>
<string name="authentication_notification_title">Requer autenticação</string>
<string name="authentication_notification_msg">O recurso solicitado requer um utilizador e uma palavra-passe</string>
<string name="confirm_mobile_download_dialog_title">Confirmação de descarga</string>
@@ -286,10 +318,25 @@
<string name="set_playback_speed_label">Velocidades de reprodução</string>
<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_items_header_label">Não existem episódios na fila</string>
+ <string name="no_items_label">Pode adicionar um episódio se o descarregar ou com um toque longo no episódio e escolher \"Adicionar à fila\".</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>
+ <string name="no_run_downloads_head_label">Não existem descargas em curso</string>
+ <string name="no_run_downloads_label">Pode descarregar os episódios no ecrã de detalhes do podcast.</string>
+ <string name="no_comp_downloads_head_label">Não existem episódios descarregados</string>
+ <string name="no_comp_downloads_label">Pode descarregar os episódios no ecrã de detalhes do podcast.</string>
+ <string name="no_log_downloads_head_label">Não existe registo de descargas</string>
+ <string name="no_log_downloads_label">Assim que efetuar uma descarga, o registo será mostrado aqui.</string>
+ <string name="no_history_head_label">Não existe histórico de reprodução</string>
+ <string name="no_history_label">Assim que reproduzir um episódio, o histórico será mostrado aqui.</string>
+ <string name="no_all_episodes_head_label">Não existem episódios</string>
+ <string name="no_all_episodes_label">Assim que adicionar um podcast, os episódios serão mostrados aqui.</string>
+ <string name="no_new_episodes_head_label">Não existem episódios novos</string>
+ <string name="no_new_episodes_label">Assim que existir um novo episódio, ele será mostrado aqui.</string>
+ <string name="no_fav_episodes_head_label">Não existem episódios favoritos</string>
+ <string name="no_fav_episodes_label">Pode adicionar episódios aos favoritos com um toque longo.</string>
<!--Preferences-->
<string name="storage_pref">Armazenamento</string>
<string name="project_pref">Projeto</string>
@@ -302,6 +349,7 @@
<string name="automation">Automatização</string>
<string name="download_pref_details">Detalhes</string>
<string name="import_export_pref">Importar/Exportar</string>
+ <string name="import_export_search_keywords">backup, restauro, segurança, importação, exportação</string>
<string name="appearance">Aparência</string>
<string name="external_elements">Elementos externos</string>
<string name="interruptions">Interrupções</string>
@@ -313,10 +361,11 @@
<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 no dispositivo bluetooth, 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>
- <string name="pref_auto_delete_sum">Apagar episódio ao terminar a reprodução</string>
+ <string name="pref_auto_delete_sum">Eliminar episódio ao terminar a reprodução</string>
<string name="pref_auto_delete_title">Eliminação automática</string>
<string name="pref_smart_mark_as_played_sum">Marcar episódio como reproduzido mesmo que restem alguns segundos de reprodução</string>
<string name="pref_smart_mark_as_played_title">Marcar como reproduzido (inteligente)</string>
@@ -342,6 +391,9 @@
<string name="pref_unpauseOnBluetoothReconnect_title">Ligação bluetooth</string>
<string name="pref_mobileUpdate_title">Atualizações móveis</string>
<string name="pref_mobileUpdate_sum">Permitir atualizações através da rede de dados móveis</string>
+ <string name="pref_mobileUpdate_nothing">Nada</string>
+ <string name="pref_mobileUpdate_images">Apenas imagens</string>
+ <string name="pref_mobileUpdate_everything">Tudo</string>
<string name="refreshing_label">A atualizar</string>
<string name="flattr_settings_label">Definições flattr</string>
<string name="pref_flattr_auth_title">Sessão flattr</string>
@@ -404,6 +456,8 @@
<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">Prioridade da notificação</string>
+ <string name="pref_expandNotify_sum">Normalmente, esta opção é utilizada para expandir a notificação e 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>
@@ -437,10 +491,24 @@
<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_skip_silence_title">Ignorar silêncio no áudio</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>
+ <string name="behavior">Comportamento</string>
+ <string name="pref_back_button_behavior_title">Comportamento do botão Recuar</string>
+ <string name="pref_back_button_behavior_sum">Alterar comportamento do botão Recuar.</string>
+ <string name="back_button_default">Padrão</string>
+ <string name="back_button_open_drawer">Abrir menu de navegação</string>
+ <string name="back_button_double_tap">Dois toques para sair</string>
+ <string name="back_button_show_prompt">Confirmação</string>
+ <string name="close_prompt">Tem a certeza de que deseja fechar a aplicação?</string>
+ <string name="double_tap_toast">Toque novamente no botão para sair</string>
+ <string name="back_button_go_to_page">Ir para a página...</string>
+ <string name="back_button_go_to_page_title">Selecionar página</string>
+ <string name="pref_delete_removes_from_queue_title">Remover da fila</string>
+ <string name="pref_delete_removes_from_queue_sum">Remover episódio da fila se este for eliminado.</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>
@@ -633,6 +701,7 @@
<string name="audio_effects">Efeitos áudio</string>
<string name="stereo_to_mono">Mistura: estéreo para mono</string>
<string name="sonic_only">Apenas Sonic</string>
+ <string name="exoplayer_only">Apenas ExoPlayer</string>
<!--proxy settings-->
<string name="proxy_type_label">Tipo</string>
<string name="host_label">Servidor</string>
@@ -645,6 +714,8 @@
<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>
+ <!--Subscriptions fragment-->
+ <string name="subscription_num_columns">Número de colunas</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>
@@ -662,7 +733,7 @@
<string name="cast_failed_to_pause">Falha ao pausar a reprodução</string>
<!--<string name="cast_failed_to_connect">Could not connect to the device</string>-->
<string name="cast_failed_setting_volume">Falha ao definir o volume</string>
- <string name="cast_failed_no_connection">Não existe ligação ao dispositivo</string>
+ <string name="cast_failed_no_connection">Não existe uma ligação ao dispositivo \'cast\'</string>
<string name="cast_failed_no_connection_trans">Falha de ligação ao dispositivo. A aplicação está a tentar estabelecer uma nova ligação. Por favor aguarde alguns segundos e tente novamente.</string>
<string name="cast_failed_perform_action">Falha ao executar a ação</string>
<string name="cast_failed_status_request">Falha de sincronização com o dispositivo</string>
diff --git a/core/src/main/res/values-ru/strings.xml b/core/src/main/res/values-ru/strings.xml
index 076a54048..942be0267 100644
--- a/core/src/main/res/values-ru/strings.xml
+++ b/core/src/main/res/values-ru/strings.xml
@@ -134,6 +134,8 @@
<string name="load_complete_feed">Обновить весь подкаст</string>
<string name="hide_episodes_title">Скрыть выпуски</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>
@@ -155,7 +157,6 @@
<string name="remove_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>
@@ -293,7 +294,6 @@ URL файла:
<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>
@@ -305,7 +305,7 @@ URL файла:
<string name="queue_label">Очередь</string>
<string name="integrations_label">Интеграция</string>
<string name="flattr_label">Flattr</string>
- <string name="flattr_summary">Услуга микроплатежей</string>
+ <string name="flattr_summary">Сервис микроплатежей</string>
<string name="automation">Автоматизация</string>
<string name="download_pref_details">Подробнее</string>
<string name="import_export_pref">Импорт/экспорт</string>
@@ -320,6 +320,7 @@ URL файла:
<string name="pref_unpauseOnHeadsetReconnect_sum">Продолжать воспроизведение после подключения наушников</string>
<string name="pref_unpauseOnBluetoothReconnect_sum">Продолжать воспроизведение после восстановления bluetooth-соединения</string>
<string name="pref_hardwareForwardButtonSkips_title">Пропускать кнопкой перемотки вперёд</string>
+ <string name="pref_hardwareForwardButtonSkips_sum">При нажатии кнопки перемотки вперед на устройстве, подключенном по Bluetooth, вместо перемотки вперед переходить к следующему выпуску</string>
<string name="pref_hardwarePreviousButtonRestarts_title">В начало кнопкой перемотки назад</string>
<string name="pref_hardwarePreviousButtonRestarts_sum">При нажатии на физическую кнопку перемотки назад переходить к началу выпуска вместо перемотки назад</string>
<string name="pref_followQueue_sum">После завершения воспроизведения перейти к следующему в очереди</string>
@@ -374,8 +375,8 @@ URL файла:
<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_parallel_downloads_title">Одновременные загрузки</string>
@@ -388,7 +389,7 @@ URL файла:
<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_authenticate_sum">Вход в ваш аккаунт gpodder.net для синхронизации подписок.</string>
<string name="pref_gpodnet_logout_title">Выход из gpodder.net</string>
<string name="pref_gpodnet_logout_toast">Выход произведён успешно</string>
<string name="pref_gpodnet_setlogin_information_title">Изменить информацию авторизации</string>
@@ -411,6 +412,8 @@ URL файла:
<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>
@@ -446,8 +449,19 @@ URL файла:
<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="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>
@@ -660,6 +674,7 @@ URL файла:
<string name="proxy_host_empty_error">Обязательно укажите хост</string>
<string name="proxy_host_invalid_error">Неверный адрес или домен хоста</string>
<string name="proxy_port_invalid_error">Неверный порт</string>
+ <!--Subscriptions fragment-->
<!--Database import/export-->
<string name="import_export">Импорт/экспорт базы данных</string>
<string name="import_export_warning">Данная опытная функция поможет перенести Ваши подписки и прослушанные выпуски на другое устройство.\n\nЭкспортированные базы данных можно импортировать только в ту же версию AntennaPod. В противном случае может произойти непредвиденное.\n\nПосле импорта выпуски могут быть помечены как загруженные, хотя это и не так. Простого нажатия на кнопку воспроизведения достаточно, чтобы AntennaPod распознала такой случай.</string>
diff --git a/core/src/main/res/values-sv-rSE/strings.xml b/core/src/main/res/values-sv-rSE/strings.xml
index d56307e07..b0fa69b3b 100644
--- a/core/src/main/res/values-sv-rSE/strings.xml
+++ b/core/src/main/res/values-sv-rSE/strings.xml
@@ -4,7 +4,7 @@
<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="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>
@@ -47,13 +47,13 @@
<string name="drawer_feed_counter_downloaded">Antal nedladdade episoder</string>
<string name="drawer_feed_counter_none">Inga</string>
<!--Webview actions-->
- <string name="open_in_browser_label">Öppna i Webbläsare</string>
+ <string name="open_in_browser_label">Öppna i webbläsare</string>
<string name="copy_url_label">Kopiera URL</string>
<string name="share_url_label">Dela URL</string>
- <string name="copied_url_msg">Kopierade URL:en till Urklipp</string>
- <string name="go_to_position_label">Gå till denna Position</string>
+ <string name="copied_url_msg">Kopierade URL:en till urklipp</string>
+ <string name="go_to_position_label">Gå till denna position</string>
<!--Playback history-->
- <string name="clear_history_label">Rensa Historiken</string>
+ <string name="clear_history_label">Rensa historiken</string>
<!--Other-->
<string name="confirm_label">Bekräfta</string>
<string name="cancel_label">Avbryt</string>
@@ -84,9 +84,9 @@
<string name="close_label">Stäng</string>
<string name="retry_label">Försök igen</string>
<string name="auto_download_label">Inkludera i automatiska nedladdningar</string>
- <string name="auto_download_apply_to_items_title">Applicera på Föregående Episoder</string>
- <string name="auto_download_apply_to_items_message">Den nya inställningen <i>Automatisk Nedladdning</i> kommer automatiskt att appliceras på nya episoder.\nVill du även applicera det på tidigare publicerade episoder?</string>
- <string name="auto_delete_label">Automatisk Episodborttagning</string>
+ <string name="auto_download_apply_to_items_title">Applicera på tidigare episoder</string>
+ <string name="auto_download_apply_to_items_message">Den nya inställningen <i>Automatisk nedladdning</i> kommer automatiskt att appliceras på nya episoder.\nVill du även applicera det på tidigare publicerade episoder?</string>
+ <string name="auto_delete_label">Automatisk episodborttagning</string>
<string name="parallel_downloads_suffix">\u0020parallella nedladdningar</string>
<string name="feed_auto_download_global">Globala standardinställningar</string>
<string name="feed_auto_download_always">Alltid</string>
@@ -95,20 +95,25 @@
<string name="episode_cleanup_never">Aldrig</string>
<string name="episode_cleanup_queue_removal">Om inte köad</string>
<string name="episode_cleanup_after_listening">Efter färdigspelad</string>
+ <plurals name="episode_cleanup_hours_after_listening">
+ <item quantity="one">1 timma efter klar</item>
+ <item quantity="other">1%d timmar efter klar</item>
+ </plurals>
<plurals name="episode_cleanup_days_after_listening">
<item quantity="one">1 dag efter färdigspelad</item>
<item quantity="other">%d dagar efter färdigspelad</item>
</plurals>
+ <string name="num_selected_label">1%d valda</string>
<!--'Add Feed' Activity labels-->
<string name="feedurl_label">Flödets URL</string>
<string name="etxtFeedurlHint">URL till flöde eller webbsida</string>
<string name="txtvfeedurl_label">Lägg till podcast via URL</string>
- <string name="podcastdirectories_label">Hitta Podcast i Biblioteket</string>
+ <string name="podcastdirectories_label">Hitta Podcast i biblioteket</string>
<string name="podcastdirectories_descr">För att hitta nya podcasts kan du söka i iTunes, fyyd, eller på gpodder.net baserat på namn, kategori eller popularitet.</string>
<string name="browse_gpoddernet_label">Bläddra på gpodder.net</string>
<!--Actions on feeds-->
<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_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 vill markera alla episider i denna podcast som spelade.</string>
<string name="mark_all_seen_label">Markera alla som sedda</string>
@@ -121,17 +126,19 @@
<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 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_feed_url_label">Dela Flödets URL</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="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_feed_url_label">Dela flödets URL</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="hide_episodes_title">Dölj episoder</string>
<string name="batch_edit">Batchredigering</string>
+ <string name="select_all_above">Välj alla ovanför</string>
+ <string name="select_all_below">Välj alla nedanför</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>
@@ -143,9 +150,13 @@
<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>
+ <string name="open_podcast">Öppna podcast</string>
<!--actions on feeditems-->
<string name="download_label">Ladda ned</string>
+ <plurals name="downloading_batch_label">
+ <item quantity="one">Laddar ner 1%d episod.</item>
+ <item quantity="other">Laddar ner 1%d episoder.</item>
+ </plurals>
<string name="play_label">Spela</string>
<string name="pause_label">Pausa</string>
<string name="stop_label">Stopp</string>
@@ -153,25 +164,45 @@
<string name="remove_label">Ta bort</string>
<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="delete_episode_label">Radera episod</string>
+ <plurals name="deleted_episode_batch_label">
+ <item quantity="one">1%d episod raderad.</item>
+ <item quantity="other">1%d episder raderade.</item>
+ </plurals>
<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>
+ <plurals name="marked_read_batch_label">
+ <item quantity="one">1%d episod markerad som spelad.</item>
+ <item quantity="other">1%d episoder markerade som spelade.</item>
+ </plurals>
<string name="mark_unread_label">Markera som ospelad</string>
+ <plurals name="marked_unread_batch_label">
+ <item quantity="one">1%d episod markerad som ospelad.</item>
+ <item quantity="other">1%d episoder markerade som ospelade.</item>
+ </plurals>
<string name="add_to_queue_label">Lägg till i kön</string>
<string name="added_to_queue_label">Lägg till i Kö</string>
+ <plurals name="added_to_queue_batch_label">
+ <item quantity="one">1%d episod tillagd i kön.</item>
+ <item quantity="other">1%d episoder tillagda i kön.</item>
+ </plurals>
<string name="remove_from_queue_label">Ta bort från Kön</string>
- <string name="add_to_favorite_label">Lägg till i Favoriter</string>
- <string name="added_to_favorites">Tillagd i Favoriter</string>
- <string name="remove_from_favorite_label">Ta bort från Favoriter</string>
- <string name="removed_from_favorites">Borrtagen ur Favoriter</string>
+ <plurals name="removed_from_queue_batch_label">
+ <item quantity="one">1%d episod borttagen från kön.</item>
+ <item quantity="other">1%d episoder borttagna från kön.</item>
+ </plurals>
+ <string name="add_to_favorite_label">Lägg till i favoriter</string>
+ <string name="added_to_favorites">Tillagd i favoriter</string>
+ <string name="remove_from_favorite_label">Ta bort från favoriter</string>
+ <string name="removed_from_favorites">Borrtagen ur favoriter</string>
<string name="visit_website_label">Besök websidan</string>
<string name="support_label">Flattra det här</string>
<string name="skip_episode_label">Hoppa över episoden</string>
- <string name="activate_auto_download">Aktivera Automatisk Nedladdning</string>
- <string name="deactivate_auto_download">Avaktivera Automatisk Nedladdning</string>
- <string name="reset_position">Nollställ Uppspelningspositionen</string>
+ <string name="activate_auto_download">Aktivera automatisk nedladdning</string>
+ <string name="deactivate_auto_download">Avaktivera automatisk nedladdning</string>
+ <string name="reset_position">Nollställ uppspelningspositionen</string>
<string name="removed_item">Borttagen</string>
<!--Download messages and labels-->
<string name="download_successful">lyckades</string>
@@ -181,20 +212,20 @@
<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_insufficient_space">Otillräckligt utrymme</string>
<string name="download_error_file_error">Filfel</string>
<string name="download_error_http_data_error">HTTP data fel</string>
<string name="download_error_error_unknown">Okänt fel</string>
<string name="download_error_parser_exception">Tolkningsfel</string>
<string name="download_error_unsupported_type">Flödestypen stöds inte</string>
<string name="download_error_connection_error">Anslutningsfel</string>
- <string name="download_error_unknown_host">Okänd Värd</string>
+ <string name="download_error_unknown_host">Okänd värd</string>
<string name="download_error_unauthorized">Autentiseringsfel</string>
<string name="download_error_file_type_type">Filtypsfel</string>
<string name="download_error_forbidden">Förbjuden</string>
<string name="cancel_all_downloads_label">Avbryt alla nedladdningar</string>
<string name="download_canceled_msg">Nedladdning avbruten</string>
- <string name="download_canceled_autodownload_enabled_msg">Nedladdning avbruten\nStängde av <i>Automatisk nedladdning</i> för denna sak</string>
+ <string name="download_canceled_autodownload_enabled_msg">Nedladdning avbruten\nStängde av <i>Automatisk nedladdning</i> för detta föremål</string>
<string name="download_report_title">Nedladdningar avslutades med fel</string>
<string name="download_report_content_title">Nedladdningsrapport</string>
<string name="download_error_malformed_url">Felaktig webbadress</string>
@@ -208,11 +239,12 @@
<string name="downloads_processing">Bearbetar nedladdningar</string>
<string name="download_notification_title">Laddar ner podcastdata</string>
<string name="download_report_content">%1$d nedladdningar lyckades, %2$d misslyckades</string>
- <string name="download_log_title_unknown">Okänd Titel</string>
+ <string name="download_log_title_unknown">Okänd titel</string>
<string name="download_type_feed">Flöde</string>
<string name="download_type_media">Mediafil</string>
<string name="download_type_image">Bild</string>
<string name="download_request_error_dialog_message_prefix">Ett fel uppstod vid försöket att ladda ner filen:\u0020</string>
+ <string name="null_value_podcast_error">Inga tillhandahållna podcasts som kunde visas.</string>
<string name="authentication_notification_title">Autentisering krävs</string>
<string name="authentication_notification_msg">Resursen du begärde kräver ett användarnamn och ett lösenord</string>
<string name="confirm_mobile_download_dialog_title">Bekräfta mobil nedladdning</string>
@@ -238,7 +270,7 @@
<string name="unlock_queue">Lås upp Kön</string>
<string name="queue_locked">Kön låst</string>
<string name="queue_unlocked">Kön upplåst</string>
- <string name="clear_queue_label">Rensa Kön</string>
+ <string name="clear_queue_label">Rensa kön</string>
<string name="undo">Ångra</string>
<string name="removed_from_queue">Föremålet avlägsnades</string>
<string name="move_to_top_label">Flytta längst upp</string>
@@ -249,7 +281,7 @@
<string name="episode_title">Episodtitel</string>
<string name="feed_title">Podcasttitel</string>
<string name="random">Slumpa</string>
- <string name="smart_shuffle">Smart Blandning</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>
@@ -257,11 +289,11 @@
<string name="flattr_auth_label">Flattr inloggning</string>
<string name="flattr_auth_explanation">Tryck på knappen nedan för att starta autentiseringen. Du kommer att vidarebefordras till Flattrs inloggningsskärm i din webbläsare och uppmanas att ge AntennaPod tillstånd att Flattra saker. Efter att du har gett tillstånd, kommer du automatiskt tillbaka till den här skärmen.</string>
<string name="authenticate_label">Autentisera</string>
- <string name="return_home_label">Återgå till Startsidan</string>
+ <string name="return_home_label">Återgå till startsidan</string>
<string name="flattr_auth_success">Autentiseringen lyckades! Du kan nu Flattra saker i appen.</string>
<string name="no_flattr_token_title">Ingen Flattr token hittades</string>
<string name="no_flattr_token_notification_msg">Ditt Flattr-konto verkar inte vara anslutet till AntennaPod. Tryck här för att autentisera.</string>
- <string name="no_flattr_token_msg">Ditt Flattr konto verkar inte vara ansluten till AntennaPod. Du kan antingen ansluta ditt konto till AntennaPod att Flattr saker i app eller så kan du besöka webbplatsen för att Flattr det där.</string>
+ <string name="no_flattr_token_msg">Ditt Flattr konto verkar inte vara ansluten till AntennaPod. Du kan antingen ansluta ditt konto till AntennaPod att Flattra saker i app eller så kan du besöka webbplatsen för att Flattra det där.</string>
<string name="authenticate_now_label">Autentisera</string>
<string name="action_forbidden_title">Åtgärd förbjuden</string>
<string name="action_forbidden_msg">AntennaPod saknar behörighet för den här åtgärden. Anledningen till detta kan vara att AntennaPods tillgång till ditt konto har återkallats. Du kan antingen åter autentisera AntennaPod eller besöka hemsidan istället.</string>
@@ -286,10 +318,25 @@
<string name="set_playback_speed_label">Uppspelningshastigheter</string>
<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_items_header_label">Inga köade episoder</string>
+ <string name="no_items_label">Lägg till en episod genom att ladda ner den, eller tryck länge på en episod och väl \"Lägg till i kön\".</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>
+ <string name="no_run_downloads_head_label">Inga pågående nedladdningar</string>
+ <string name="no_run_downloads_label">Du kan ladda ner episoder på sidan podcastdetaljer.</string>
+ <string name="no_comp_downloads_head_label">Inga nedladdade episoder</string>
+ <string name="no_comp_downloads_label">Du kan ladda ner episoder på sidan podcastdetaljer.</string>
+ <string name="no_log_downloads_head_label">Ingen nedladdningslogg</string>
+ <string name="no_log_downloads_label">Nedladdningsloggar visas här när de är tillgängliga.</string>
+ <string name="no_history_head_label">Ingen historik</string>
+ <string name="no_history_label">Efter att du lyssnat på en episod visas den här.</string>
+ <string name="no_all_episodes_head_label">Inga episoder</string>
+ <string name="no_all_episodes_label">När du lagt till en episod visas den här.</string>
+ <string name="no_new_episodes_head_label">Inga nya episoder</string>
+ <string name="no_new_episodes_label">När nya episoder anländer visas de här.</string>
+ <string name="no_fav_episodes_head_label">Inga favoritepisoder</string>
+ <string name="no_fav_episodes_label">Du kan lägga till episoder i favoriter genom att lång-trycka på dem.</string>
<!--Preferences-->
<string name="storage_pref">Lagring</string>
<string name="project_pref">Projekt</string>
@@ -302,6 +349,7 @@
<string name="automation">Automatisering</string>
<string name="download_pref_details">Detaljer</string>
<string name="import_export_pref">Importera/Exportera</string>
+ <string name="import_export_search_keywords">säkerhetskopiering, återställning</string>
<string name="appearance">Utseende</string>
<string name="external_elements">Externa element</string>
<string name="interruptions">Avbrott</string>
@@ -313,57 +361,61 @@
<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 när snabbspolningsknappen trycks in på en blåtands-enhet.</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>
<string name="pref_auto_delete_sum">Ta bort episoden när uppspelningen är klar</string>
- <string name="pref_auto_delete_title">Automatisk Borttagning</string>
+ <string name="pref_auto_delete_title">Automatisk borttagning</string>
<string name="pref_smart_mark_as_played_sum">Markera episoder som spelade även om mindre än ett visst antal sekunder är kvar</string>
<string name="pref_smart_mark_as_played_title">Smart markera som spelad</string>
<string name="pref_skip_keeps_episodes_sum">Ta inte bort episoder när de hoppas över</string>
- <string name="pref_skip_keeps_episodes_title">Behåll Överhoppade Episoder</string>
+ <string name="pref_skip_keeps_episodes_title">Behåll överhoppade episoder</string>
<string name="pref_favorite_keeps_episodes_sum">Behåll episoder när de är favoritmarkerade</string>
- <string name="pref_favorite_keeps_episodes_title">Behåll Favoritepisoder</string>
+ <string name="pref_favorite_keeps_episodes_title">Behåll favoritepisoder</string>
<string name="playback_pref">Uppspelning</string>
<string name="network_pref">Nätverk </string>
- <string name="pref_autoUpdateIntervallOrTime_title">Uppdateringsintervall eller Tid på Dagen</string>
+ <string name="pref_autoUpdateIntervallOrTime_title">Uppdateringsintervall eller tid på dagen</string>
<string name="pref_autoUpdateIntervallOrTime_sum">Ange ett intervall eller specifik tid på dagen för att uppdatera flödena automatisk.</string>
<string name="pref_autoUpdateIntervallOrTime_message">Du kan välja ett <i>intervall</i> som \"var 2 timmar\", en specifik <i>tid på dagen</i> som \"07:00\" eller <i>avaktivera</i> automatiska uppdateringar helt.\n\n<small>Notera: Uppdateringstiderna är inte exakta. Korta fördröjningar kan uppstå.</small></string>
<string name="pref_autoUpdateIntervallOrTime_Disable">Avaktivera</string>
- <string name="pref_autoUpdateIntervallOrTime_Interval">Sätt intervall</string>
- <string name="pref_autoUpdateIntervallOrTime_TimeOfDay">Sätt Tid på Dagen</string>
+ <string name="pref_autoUpdateIntervallOrTime_Interval">Välj intervall</string>
+ <string name="pref_autoUpdateIntervallOrTime_TimeOfDay">Välj tid på dagen</string>
<string name="pref_autoUpdateIntervallOrTime_every">var %1$s</string>
<string name="pref_autoUpdateIntervallOrTime_at">vid %1$s</string>
<string name="pref_downloadMediaOnWifiOnly_sum">Hämta mediefiler endast över WiFi</string>
- <string name="pref_followQueue_title">Kontinuerlig Uppspelning</string>
+ <string name="pref_followQueue_title">Kontinuerlig uppspelning</string>
<string name="pref_downloadMediaOnWifiOnly_title">WiFi nedladdning</string>
- <string name="pref_pauseOnHeadsetDisconnect_title">Hörlurar Bortkopplas</string>
- <string name="pref_unpauseOnHeadsetReconnect_title">Hörlurar Återanslutna</string>
- <string name="pref_unpauseOnBluetoothReconnect_title">Blutetooth Återansluts</string>
- <string name="pref_mobileUpdate_title">Mobila Uppdateringar</string>
+ <string name="pref_pauseOnHeadsetDisconnect_title">Hörlurar bortkopplas</string>
+ <string name="pref_unpauseOnHeadsetReconnect_title">Hörlurar återanslutna</string>
+ <string name="pref_unpauseOnBluetoothReconnect_title">Blutetooth återansluts</string>
+ <string name="pref_mobileUpdate_title">Mobila uppdateringar</string>
<string name="pref_mobileUpdate_sum">Tillåt uppdateringar via mobil dataanslutning</string>
+ <string name="pref_mobileUpdate_nothing">Inget</string>
+ <string name="pref_mobileUpdate_images">Bara bilder</string>
+ <string name="pref_mobileUpdate_everything">Allt</string>
<string name="refreshing_label">Uppdaterar</string>
<string name="flattr_settings_label">Flattr inställningar</string>
<string name="pref_flattr_auth_title">Flattr inloggning</string>
<string name="pref_flattr_auth_sum">För att Flattra saker direkt från appen, logga in på ditt Flattr-konto.</string>
- <string name="pref_flattr_this_app_title">Flattra denna App</string>
+ <string name="pref_flattr_this_app_title">Flattra denna app</string>
<string name="pref_flattr_this_app_sum">Stöd utvecklingen av AntennaPod genom att flattra den. Tack!</string>
<string name="pref_revokeAccess_title">Återkalla åtkomst</string>
<string name="pref_revokeAccess_sum">Återkalla behörigheten till ditt Flattr-konto för denna app.</string>
<string name="pref_auto_flattr_title">Automatisk Flattring</string>
<string name="pref_auto_flattr_sum">Konfigurerar automatisk Flattring</string>
<string name="user_interface_label">Användargränssnitt</string>
- <string name="pref_set_theme_title">Välj Tema</string>
- <string name="pref_nav_drawer_title">Anpassa Navigeringsmenyn</string>
+ <string name="pref_set_theme_title">Välj tema</string>
+ <string name="pref_nav_drawer_title">Anpassa navigeringsmenyn</string>
<string name="pref_nav_drawer_sum">Anpassa utseendet på navigeringmenyn.</string>
- <string name="pref_nav_drawer_items_title">Välj Objekt i Navigeringsmenyn</string>
+ <string name="pref_nav_drawer_items_title">Välj objekt i navigeringsmenyn</string>
<string name="pref_nav_drawer_items_sum">Ändra vilka saker som visas på navigationsmenyn.</string>
- <string name="pref_nav_drawer_feed_order_title">Välj Prenumerationsordning</string>
+ <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_title">Val för 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_title">Automatisk nedladdning</string>
<string name="pref_automatic_download_sum">Konfigurera automatisk nedladdning av episoder.</string>
<string name="pref_autodl_wifi_filter_title">Aktivera WiFi filtrering</string>
<string name="pref_autodl_wifi_filter_sum">Tillåt automatisk nedladdning endast för utvalda WiFi-nätverk.</string>
@@ -371,7 +423,7 @@
<string name="pref_autodl_allow_on_mobile_sum">Tillåt automatiska nedladdningar över en mobil dataanslutning.</string>
<string name="pref_automatic_download_on_battery_title">Nedladdning vid batteridrift</string>
<string name="pref_automatic_download_on_battery_sum">Tillåt automatisk nedladdning när batteriet inte laddas</string>
- <string name="pref_parallel_downloads_title">Parallella Nedladdningar</string>
+ <string name="pref_parallel_downloads_title">Parallella nedladdningar</string>
<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>
@@ -404,19 +456,21 @@
<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_persistNotify_title">Bestående Uppspelningskontroller</string>
+ <string name="pref_expandNotify_title">Hög notifieringsprioritet</string>
+ <string name="pref_expandNotify_sum">Detta expanderar oftast notifieringen och visar uppspelningskontroller.</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>
- <string name="pref_compact_notification_buttons_sum">Ändra uppspelningsknapparna på låsskärmen. Spela/Pausa knappen är alltid inkluderad.</string>
+ <string name="pref_compact_notification_buttons_title">Val för låsskärmens knappar</string>
+ <string name="pref_compact_notification_buttons_sum">Ändra uppspelningsknapparna på låsskärmen. Spela/pausa knappen är alltid inkluderad.</string>
<string name="pref_compact_notification_buttons_dialog_title">Välj maximalt %1$d st.</string>
<string name="pref_compact_notification_buttons_dialog_error">Du kan bara välja maximalt %1$d st.</string>
- <string name="pref_lockscreen_background_title">Sätt Låsskärmens Bakgrund</string>
+ <string name="pref_lockscreen_background_title">Välj låsskärmens bakgrund</string>
<string name="pref_lockscreen_background_sum">Sätt låsskärmens bakgrund till den spelade episodens bild. En bieffekt är att även tredjepartsappar kan visa bilden.</string>
- <string name="pref_showDownloadReport_title">Visa Nedladdningsrapport</string>
+ <string name="pref_showDownloadReport_title">Visa nedladdningsrapport</string>
<string name="pref_showDownloadReport_sum">Visa en rapport med detaljer om felet när nedladdningar misslyckas.</string>
<string name="pref_expand_notify_unsupport_toast">Androidversioner före 4.1 har inte stöd för expanderade aviseringar.</string>
<string name="pref_queueAddToFront_sum">Lägg till episoder först i kön.</string>
- <string name="pref_queueAddToFront_title">Köa Först</string>
+ <string name="pref_queueAddToFront_title">Köa först</string>
<string name="pref_smart_mark_as_played_disabled">Avaktiverad</string>
<string name="pref_image_cache_size_title">Bildcachestorlek</string>
<string name="pref_image_cache_size_sum">Storleken på bildcachen på disken.</string>
@@ -437,10 +491,24 @@
<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_skip_silence_title">Hoppa över tystnad i ljud</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>
+ <string name="behavior">Beteende</string>
+ <string name="pref_back_button_behavior_title">Tillbakaknappens beteende</string>
+ <string name="pref_back_button_behavior_sum">Byt tillbakaknappens beteende.</string>
+ <string name="back_button_default">Standard</string>
+ <string name="back_button_open_drawer">Öppna navigationsrutan</string>
+ <string name="back_button_double_tap">Dubbeltryck för att avsluta</string>
+ <string name="back_button_show_prompt">Bekräfta avslutning</string>
+ <string name="close_prompt">Är du säker på att du vill avsluta AntennaPod?</string>
+ <string name="double_tap_toast">Tryck på tillbakaknappen igen för att avsluta</string>
+ <string name="back_button_go_to_page">Gå till sida...</string>
+ <string name="back_button_go_to_page_title">Välj sida</string>
+ <string name="pref_delete_removes_from_queue_title">Radering tar bort från kön</string>
+ <string name="pref_delete_removes_from_queue_sum">Ta automatiskt bort episoder från kön när de raderas.</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>
@@ -463,7 +531,7 @@
<string name="opml_import_explanation_2">Använd en extern applikation som Dropbox, Google Drive eller ditt favoritval av filhanterare för att öppna en OPML fil.</string>
<string name="opml_import_explanation_3">Flera applikationer som Google Mail, Dropbox, Google Drive och de flesta filhanterare kan <i>öppna</i> OPML filer <i>med</i> AntennaPod.</string>
<string name="start_import_label">Påbörja importering</string>
- <string name="opml_import_label">OPML Importering</string>
+ <string name="opml_import_label">OPML importering</string>
<string name="opml_directory_error">FEL! </string>
<string name="reading_opml_label">Läser OPML-fil</string>
<string name="opml_reader_error">Ett fel uppstod vid läsning av OPML dokumentet:</string>
@@ -557,9 +625,9 @@
<string name="folder_not_empty_dialog_msg">Den mapp du har valt är inte tom. Filer kommer att placeras direkt i denna mapp. Fortsätt ändå?</string>
<string name="set_to_default_folder">Välj standardmapp</string>
<string name="pref_pausePlaybackForFocusLoss_sum">Pausa uppspelning istället för att sänka volymen när en annan app vill spela ljud</string>
- <string name="pref_pausePlaybackForFocusLoss_title">Pausa vid Avbrott</string>
+ <string name="pref_pausePlaybackForFocusLoss_title">Pausa vid avbrott</string>
<string name="pref_resumeAfterCall_sum">Återuppta uppspelning när ett telefonsamtal avslutas</string>
- <string name="pref_resumeAfterCall_title">Fortsätt efter Samtal</string>
+ <string name="pref_resumeAfterCall_title">Fortsätt efter samtal</string>
<string name="pref_restart_required">AntennaPod behöver startas om för att denna inställning ska gälla.</string>
<!--Online feed view-->
<string name="subscribe_label">Prenumerera</string>
@@ -594,21 +662,21 @@
<string name="search_fyyd_label">Sök i fyyd</string>
<!--Episodes apply actions-->
<string name="all_label">Alla</string>
- <string name="selected_all_label">Välj alla Episoder</string>
+ <string name="selected_all_label">Välj alla episoder</string>
<string name="none_label">Inga</string>
- <string name="deselected_all_label">Avmarkera alla Episoder</string>
+ <string name="deselected_all_label">Avmarkera alla episoder</string>
<string name="played_label">Spelade</string>
- <string name="selected_played_label">Valde spelade Episoder</string>
+ <string name="selected_played_label">Valde spelade episoder</string>
<string name="unplayed_label">Ospelade</string>
- <string name="selected_unplayed_label">Valde ospelade Episoder</string>
+ <string name="selected_unplayed_label">Valde ospelade episoder</string>
<string name="downloaded_label">Nedladdade</string>
- <string name="selected_downloaded_label">Valde nedladdade Episoder</string>
+ <string name="selected_downloaded_label">Valde nedladdade episoder</string>
<string name="not_downloaded_label">Ej nedladdade</string>
- <string name="selected_not_downloaded_label">Valde ej nedladdade Episoder</string>
+ <string name="selected_not_downloaded_label">Valde ej nedladdade episoder</string>
<string name="queued_label">Köad</string>
- <string name="selected_queued_label">Valde köade Episoder</string>
+ <string name="selected_queued_label">Valde köade episoder</string>
<string name="not_queued_label">Ej köad</string>
- <string name="selected_not_queued_label">Välj ej köade Episoder</string>
+ <string name="selected_not_queued_label">Välj ej köade episoder</string>
<string name="has_media">Har media</string>
<string name="selected_has_media_label">Valde episoder med media</string>
<!--Sort-->
@@ -631,8 +699,9 @@
<string name="left_short">V</string>
<string name="right_short">H</string>
<string name="audio_effects">Ljudeffekter</string>
- <string name="stereo_to_mono">Nedmixning: Stereo till mono</string>
+ <string name="stereo_to_mono">Nedmixning: stereo till mono</string>
<string name="sonic_only">Bara Sonic</string>
+ <string name="exoplayer_only">Endast ExoPlayer</string>
<!--proxy settings-->
<string name="proxy_type_label">Typ</string>
<string name="host_label">Värd</string>
@@ -645,8 +714,10 @@
<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>
+ <!--Subscriptions fragment-->
+ <string name="subscription_num_columns">Antal kolumner</string>
<!--Database import/export-->
- <string name="import_export">Databas-Import/Export</string>
+ <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>
diff --git a/core/src/main/res/values-tr/strings.xml b/core/src/main/res/values-tr/strings.xml
index a980a1224..f27b905bd 100644
--- a/core/src/main/res/values-tr/strings.xml
+++ b/core/src/main/res/values-tr/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">Abonelikleri güncelle</string>
<string name="feeds_label">Beslemeler</string>
<string name="statistics_label">İstatistikler</string>
<string name="add_feed_label">Cep yayını ekle</string>
<string name="episodes_label">Bölümler</string>
<string name="all_episodes_short_label">Tümü</string>
+ <string name="new_episodes_label">Yeni</string>
<string name="favorite_episodes_label">Favoriler</string>
<string name="new_label">Yeni</string>
<string name="settings_label">Ayarlar</string>
@@ -18,10 +20,15 @@
<string name="cancel_download_label">İndirmeyi İptal Et</string>
<string name="playback_history_label">Çalma geçmişi</string>
<string name="gpodnet_main_label">gpodder.net</string>
+ <string name="gpodnet_summary">Diğer cihazlarla senkronize et</string>
<string name="gpodnet_auth_label">gpodder.net giriş</string>
<string name="free_space_label">%1$s ücretsiz</string>
+ <string name="episode_cache_full_title">Bölüm önbelleği dolu</string>
+ <string name="episode_cache_full_message">Bölüm önbelleği limitine ulaşıldı. Ayarlardan önbellek limitini arttırabilirsiniz. </string>
+ <string name="synchronizing">Senkronize ediliyor... </string>
<!--Statistics fragment-->
<string name="total_time_listened_to_podcasts">Toplam cep yayını çalma zamanı:</string>
+ <string name="statistics_mode">İstatistik modu</string>
<!--Main activity-->
<string name="drawer_open">Münüyü aç</string>
<string name="drawer_close">Menüyü kapat</string>
@@ -29,6 +36,7 @@
<string name="drawer_feed_order_unplayed_episodes">Sayaca göre sırala</string>
<string name="drawer_feed_order_alphabetical">Alfabetik olarak sırala</string>
<string name="drawer_feed_order_last_update">Yayınlanma tarihine göre sırala</string>
+ <string name="drawer_feed_order_most_played">Oynatılan bölüm sayısına göre sırala</string>
<string name="drawer_feed_counter_new_unplayed">Yeni ve çalınmamış bölümlerin sayısı</string>
<string name="drawer_feed_counter_new">Yeni bölümlerin sayısı</string>
<string name="drawer_feed_counter_unplayed">Çalınmamış bölümlerin sayısı</string>
@@ -48,15 +56,18 @@
<string name="yes">Evet</string>
<string name="no">Hayır</string>
<string name="reset">Sıfırla</string>
+ <string name="author_label">Yazar(lar)</string>
<string name="language_label">Dil</string>
<string name="url_label">URL</string>
<string name="podcast_settings_label">Ayarlar</string>
<string name="cover_label">Resim</string>
<string name="error_label">Hata</string>
<string name="error_msg_prefix">Bir hata oluştu:</string>
+ <string name="needs_storage_permission">Bu işlem için depolama izni gerekli</string>
<string name="refresh_label">Yenile</string>
<string name="external_storage_error_msg">Harici depolama yok. Lütfen uygulamanın düzgün çalışabilmesi için harici depolama aygıtının bağlandığından emin olun.</string>
<string name="chapters_label">Kısımlar</string>
+ <string name="chapter_duration">Süre: %1$s</string>
<string name="shownotes_label">Notlar</string>
<string name="description_label">Tanım</string>
<string name="most_recent_prefix">Son Bölüm:\u0020 </string>
@@ -70,6 +81,7 @@
<string name="retry_label">Yeniden dene</string>
<string name="auto_download_label">Otomatik indirmelere dahil et</string>
<string name="auto_download_apply_to_items_title">Önceki Bölümlere Uygula</string>
+ <string name="auto_download_apply_to_items_message">Yeni <i>Otomatik İndirme</i> ayarı otomatik olarak yeni bölümlere uygulanacak.\nBunu önceki bölümlere de uygulamak ister misiniz?</string>
<string name="auto_delete_label">Bölümü Otomatik Sil</string>
<string name="parallel_downloads_suffix">\u0020paralel indirmeler</string>
<string name="feed_auto_download_global">Varsayılan ayarlar</string>
@@ -88,17 +100,36 @@
<string name="etxtFeedurlHint">www.example.com/feed</string>
<string name="txtvfeedurl_label">URL ile cep yayını ekle</string>
<string name="podcastdirectories_label">Dizinde cep yayını bul</string>
+ <string name="podcastdirectories_descr">Yeni podcast\'ler için iTunes, fyyd, veya gpodder.net adresinde isme, kategoriye, veya popülerliğe göre arama yapabilirsiniz.</string>
<string name="browse_gpoddernet_label">gpodder.net\'e gözat</string>
<!--Actions on feeds-->
<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 yayındaki bütün 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">Bütün 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="show_feed_settings_label">Cepyayın ayarlarını göster</string>
+ <string name="feed_info_label">Cepyayın bilgisi</string>
+ <string name="feed_settings_label">Cepyayın ayarları</string>
+ <string name="rename_feed_label">Cepyayını yeniden adlandır</string>
+ <string name="remove_feed_label">Cepyayını kaldır</string>
<string name="share_label">Paylaş...</string>
+ <string name="share_link_label">Bölüm Adresini paylaş</string>
+ <string name="share_link_with_position_label">Bölüm Adresini Konumla birlikte paylaş</string>
+ <string name="share_file_label">Dosyayı paylaş</string>
<string name="share_feed_url_label">Besleme Adresini Paylaş</string>
+ <string name="share_item_url_label">Medya Dosyası URL\'si Paylaş</string>
+ <string name="share_item_url_with_position_label">Medya dosyasının adresini pozisyon ile birlikte paylaş</string>
+ <string name="feed_delete_confirmation_msg">Lütfen bu Cepyayını ve bu Cepyayınına ait indirilmiş BÜTÜN bölümleri silme isteğinizi onaylayın.</string>
+ <string name="feed_remover_msg">Cepyayını kaldırılıyor</string>
+ <string name="load_complete_feed">Tüm Cepyayınını yenile</string>
<string name="hide_episodes_title">Bölümleri gizle</string>
+ <string name="batch_edit">Toplu düzenleme</string>
+ <string name="select_all_above">Üsttekilerin tümünü seç</string>
+ <string name="select_all_below">Alttakilerin tümünü seç</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>
@@ -107,6 +138,7 @@
<string name="hide_downloaded_episodes_label">İndirildi</string>
<string name="hide_not_downloaded_episodes_label">İndirilmedi</string>
<string name="hide_has_media_label">Medya var</string>
+ <string name="hide_is_favorite_label">Favori</string>
<string name="filtered_label">Filtrelendi</string>
<string name="refresh_failed_msg">{fa-exclamation-circle} Son yenileme başarısız oldu</string>
<string name="open_podcast">Cep yayını aç</string>
@@ -118,7 +150,8 @@
<string name="stream_label">Akış</string>
<string name="remove_label">Kaldır</string>
<string name="delete_label">Sil</string>
- <string name="remove_episode_lable">Bölümü kaldır</string>
+ <string name="delete_failed">Dosya silinemiyor. Cihazı yeniden başlatmak yardımcı olabilir.</string>
+ <string name="mark_as_seen_label">Hepsini görüldü olarak işaretle</string>
<string name="marked_as_seen_label">Görüldü olarak işaretlendi</string>
<string name="mark_read_label">Oynatıldı olarak işaretle</string>
<string name="marked_as_read_label">Oynatıldı olarak işaretlendi</string>
@@ -142,6 +175,7 @@
<string name="download_failed">başarısız</string>
<string name="download_pending">İndirme bekleniyor</string>
<string name="download_running">İndiriliyor</string>
+ <string name="download_error_details">Detaylar</string>
<string name="download_error_device_not_found">Depolama aygıtı bulunamadı</string>
<string name="download_error_insufficient_space">Yetersiz alan</string>
<string name="download_error_file_error">Dosya hatası</string>
@@ -192,6 +226,7 @@
<string name="playback_error_unknown">Bilinmeyen Hata</string>
<string name="no_media_playing_label">Çalınan medya yok</string>
<string name="player_buffering_msg">Ara belleğe alınıyor</string>
+ <string name="player_go_to_picture_in_picture">Resim içinde Resim modu</string>
<string name="playbackservice_notification_title">Cep yayını çalınıyor</string>
<string name="unknown_media_key">AntennaPod - Bilinmeyen medya anahtarı: %1$d</string>
<!--Queue operations-->
@@ -208,6 +243,9 @@
<string name="date">Tarih</string>
<string name="duration">Süre</string>
<string name="episode_title">Blüm başlığı</string>
+ <string name="feed_title">Cepyayın bilgisi</string>
+ <string name="random">Rastgele</string>
+ <string name="smart_shuffle">Akıllı karıştırma</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>
@@ -240,25 +278,48 @@
<!--Variable Speed-->
<string name="download_plugin_label">Eklentiyi İndir</string>
<string name="no_playback_plugin_title">Eklenti Yüklenmedi</string>
+ <string name="no_playback_plugin_or_sonic_msg">Değişken hızlı oynatmanın çalışması için, dahili Sonic mediaplayer tavsiye ediyoruz [Android 4.1+].\n\nAlternatif olarak, üçüncü parti <i>Prestissimo</i>eklentisini Play Store\'dan indirebilirsiniz.\nPrestissimo ilgili herhangi bir sorunda AntennaPod sorumlu değildir, sorun eklenti yazarına bildirilmelidir.</string>
<string name="set_playback_speed_label">Çalma hızları</string>
<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 Cepyayınına abone olmadınız.</string>
+ <string name="no_chapters_label">Bu dosya herhangi bir bölüm içermiyor.</string>
+ <string name="no_shownotes_label">Bu dosya herhangi bir bilgi notu içermiyor.</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="integrations_label">Entegrasyon</string>
<string name="flattr_label">Flattr</string>
+ <string name="flattr_summary">Mikro ödeme hizmeti</string>
+ <string name="automation">Otomasyon</string>
+ <string name="download_pref_details">Detaylar</string>
+ <string name="import_export_pref">Al/Aktar</string>
+ <string name="appearance">Görünüm</string>
+ <string name="external_elements">Dış elemanlar</string>
+ <string name="interruptions">Kesintiler</string>
+ <string name="buttons">Oynatıcı kontrol düğmeleri</string>
+ <string name="media_player">Medya oynatıcı</string>
<string name="pref_episode_cleanup_title">Bölüm Temizliği</string>
+ <string name="pref_episode_cleanup_summary">Yeni bölümleri otomatik indirme için alan gerekirse, kuyrukta veya favorilerde olmayan bölümler otomatik olarak silinebilir</string>
<string name="pref_pauseOnDisconnect_sum">Kulaklıklar çıkarıldığında veya bluetooth bağlantısı kesildiğinde çalmayı duraklat</string>
<string name="pref_unpauseOnHeadsetReconnect_sum">Kulaklıklar yeniden bağlandığında çalmaya devam et</string>
<string name="pref_unpauseOnBluetoothReconnect_sum">Bluetooth yeniden bağlandığında çalmaya devam et</string>
+ <string name="pref_hardwareForwardButtonSkips_title">İleri düğmesi atlar</string>
+ <string name="pref_hardwareForwardButtonSkips_sum">Bluetooth ile bağlı bir cihazda ileri düğmesine basmak hızlı ileri sarmak yerine sonraki bölüme atlar</string>
+ <string name="pref_hardwarePreviousButtonRestarts_title">Geri düğmesi yeniden başlatır</string>
+ <string name="pref_hardwarePreviousButtonRestarts_sum">Geri düğmesine basmak hızlı geri sarmak yerine mevcut bölümü yeniden oynatır</string>
<string name="pref_followQueue_sum">Çalma tamamlandığında kuyruktaki diğer öğeye geç</string>
<string name="pref_auto_delete_sum">Çalma bittiğinde bölümü sil</string>
<string name="pref_auto_delete_title">Otomatik Silme</string>
<string name="pref_smart_mark_as_played_sum">Bitmesine birkaç saniye kalmış olsa da bölümleri oynatıldı olarak işaretle</string>
+ <string name="pref_smart_mark_as_played_title">Akıllı oynatıldı işareti</string>
+ <string name="pref_skip_keeps_episodes_sum">Bölümler atlandığında tutmaya devam et</string>
+ <string name="pref_skip_keeps_episodes_title">Atlanan bölümleri tut</string>
+ <string name="pref_favorite_keeps_episodes_sum">Bölümler Favori olarak işaretlendiğinde tut</string>
+ <string name="pref_favorite_keeps_episodes_title">Favori bölümleri tut</string>
<string name="playback_pref">Çalma</string>
<string name="network_pref">Ağ</string>
<string name="pref_autoUpdateIntervallOrTime_title">Güncelleme Aralığı veya Belirli Zamanı</string>
@@ -267,11 +328,14 @@
<string name="pref_autoUpdateIntervallOrTime_Disable">Devre dışı</string>
<string name="pref_autoUpdateIntervallOrTime_Interval">Aralık ayarla</string>
<string name="pref_autoUpdateIntervallOrTime_TimeOfDay">Belirli saat ayarla</string>
+ <string name="pref_autoUpdateIntervallOrTime_every">her%1$s</string>
+ <string name="pref_autoUpdateIntervallOrTime_at">süre%1$s</string>
<string name="pref_downloadMediaOnWifiOnly_sum">Medya dosyalarını sadece kablosuz bağlantı üzerinden indir</string>
<string name="pref_followQueue_title">Devamlı çalma</string>
<string name="pref_downloadMediaOnWifiOnly_title">Kablosuz medya indirmesi</string>
<string name="pref_pauseOnHeadsetDisconnect_title">Kulaklık bağlı değil</string>
<string name="pref_unpauseOnHeadsetReconnect_title">Kulaklıklar yeniden bağlı</string>
+ <string name="pref_unpauseOnBluetoothReconnect_title">Bluetooth yeniden bağlandı</string>
<string name="pref_mobileUpdate_title">Mobil güncellemeler</string>
<string name="pref_mobileUpdate_sum">Mobil veri üzerinden güncellemelere izin ver</string>
<string name="refreshing_label">Yenileniyor</string>
@@ -290,6 +354,9 @@
<string name="pref_nav_drawer_sum">Uygulama çekmecesinin görüntüsünü özelleştir.</string>
<string name="pref_nav_drawer_items_title">Uygulama Çekmecesi öğelerini ayarla</string>
<string name="pref_nav_drawer_items_sum">Hangi öğelerin uygulama çekmecesinde görüneceğini değiştir.</string>
+ <string name="pref_nav_drawer_feed_order_title">Abonelik sıralamasını ayarla</string>
+ <string name="pref_nav_drawer_feed_order_sum">Abonelik sırasını değiştir</string>
+ <string name="pref_nav_drawer_feed_counter_title">Abonelik sayacını ayarla</string>
<string name="pref_set_theme_sum">AntennaPod\'un görüntüsünü değiştir.</string>
<string name="pref_automatic_download_title">Otomatk indirme</string>
<string name="pref_automatic_download_sum">Bölümlerin otomatik indirilmesini yapılandır.</string>
@@ -486,8 +553,10 @@
<string name="proxy_test_label">Test</string>
<string name="proxy_test_successful">Test başarılı</string>
<string name="proxy_test_failed">Test başarısız</string>
+ <!--Subscriptions fragment-->
<!--Database import/export-->
<!--Casting-->
<!--<string name="cast_failed_to_connect">Could not connect to the device</string>-->
+ <string name="cast_failed_seek">Yayın aygıtındaki yeni pozisyona erişilemedi</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 0afc1e8c2..d40baba2d 100644
--- a/core/src/main/res/values-uk-rUA/strings.xml
+++ b/core/src/main/res/values-uk-rUA/strings.xml
@@ -21,10 +21,10 @@
<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="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="episode_cache_full_message">Досягнута межа розміру кешу епізодів. Розмір кешу можна збільшити в налаштуваннях.</string>
<string name="synchronizing">Синхронізується…</string>
<!--Statistics fragment-->
<string name="total_time_listened_to_podcasts">Загальний час прослуханих подкастів:</string>
@@ -36,7 +36,7 @@
<!--Main activity-->
<string name="drawer_open">Показати меню</string>
<string name="drawer_close">Сховати меню</string>
- <string name="drawer_preferences">Настройки меню навігації</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>
@@ -50,7 +50,7 @@
<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">URL скопійовано в буфер</string>
+ <string name="copied_url_msg">Посилання скопійовано в буфер</string>
<string name="go_to_position_label">До цієї позиції</string>
<!--Playback history-->
<string name="clear_history_label">Очистити історію</string>
@@ -62,7 +62,7 @@
<string name="reset">Перезапуск</string>
<string name="author_label">Автор(и)</string>
<string name="language_label">Мова</string>
- <string name="url_label">URL</string>
+ <string name="url_label">Посилання</string>
<string name="podcast_settings_label">Налаштування</string>
<string name="cover_label">Зображення</string>
<string name="error_label">Помилка</string>
@@ -86,7 +86,7 @@
<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="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>
@@ -95,18 +95,25 @@
<string name="episode_cleanup_never">Ніколи</string>
<string name="episode_cleanup_queue_removal">Якщо не в черзі</string>
<string name="episode_cleanup_after_listening">Після закінчення</string>
+ <plurals name="episode_cleanup_hours_after_listening">
+ <item quantity="one">1 година після завершення</item>
+ <item quantity="few">%d години після завершення </item>
+ <item quantity="many">%d годин після завершення </item>
+ <item quantity="other">%d годин після завершення</item>
+ </plurals>
<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>
+ <string name="num_selected_label">%d помічено</string>
<!--'Add Feed' Activity labels-->
<string name="feedurl_label">Посилання на канал</string>
- <string name="etxtFeedurlHint">URL канала або сайта</string>
+ <string name="etxtFeedurlHint">Посилання на канал чи сторінку</string>
<string name="txtvfeedurl_label">Додати подкаст за URL</string>
<string name="podcastdirectories_label">Знайти подкаст в каталозі</string>
- <string name="podcastdirectories_descr">Нові подкасти можна шукати на iTunes або fyyd, або переглянути 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>
@@ -119,18 +126,18 @@
<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="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_with_position_label">Поділіться посиланням на епізод з позицією</string>
+ <string name="share_link_with_position_label">Поділіться посиланням на епізод з позицією відтворення</string>
<string name="share_file_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="share_item_url_with_position_label">Поділитись посиланням на медіа-файл з позицією відтворення</string>
<string name="feed_delete_confirmation_msg">Будь ласка, підтвердіть що ви бажаєте видалити подкаст \"%1$s\" і ВСІ його епізоди (разом з завантаженими).</string>
- <string name="feed_remover_msg">Видалення подкаста</string>
+ <string name="feed_remover_msg">Видалення подкасту</string>
<string name="load_complete_feed">Оновити весь подкаст</string>
<string name="hide_episodes_title">Приховати епізоди</string>
<string name="batch_edit">Групове редагування</string>
@@ -150,6 +157,12 @@
<string name="open_podcast">Відкрити подкаст</string>
<!--actions on feeditems-->
<string name="download_label">Завантажити</string>
+ <plurals name="downloading_batch_label">
+ <item quantity="one">Завантажується %d епізод.</item>
+ <item quantity="few">Завантажуються %d епізоди.</item>
+ <item quantity="many">Завантажуються %d епізодів.</item>
+ <item quantity="other">Завантажуються %d епізодів.</item>
+ </plurals>
<string name="play_label">Грати</string>
<string name="pause_label">Пауза</string>
<string name="stop_label">Стоп</string>
@@ -157,15 +170,45 @@
<string name="remove_label">Видалити</string>
<string name="delete_label">Видалити</string>
<string name="delete_failed">Файл не видалено. Можливо, перезавантаження пристрою допоможе.</string>
- <string name="remove_episode_lable">Видалити епізод</string>
+ <string name="delete_episode_label">Видалити епізод</string>
+ <plurals name="deleted_episode_batch_label">
+ <item quantity="one">%d епізод видалено.</item>
+ <item quantity="few">%dепізода видалено. </item>
+ <item quantity="many">%dепізодів видалено. </item>
+ <item quantity="other">%d епізодів видалено.</item>
+ </plurals>
<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>
+ <plurals name="marked_read_batch_label">
+ <item quantity="one">%d епізод помічено як відтворений</item>
+ <item quantity="few">%d епізоди помічено як відтворені</item>
+ <item quantity="many">%d епізодів помічено як відтворені</item>
+ <item quantity="other">%d епізодів помічено як відтворені</item>
+ </plurals>
<string name="mark_unread_label">Позначити як не відтворений</string>
+ <plurals name="marked_unread_batch_label">
+ <item quantity="one">%d епізод помічено як невідтворений</item>
+ <item quantity="few">%d епізоди помічено як невідтворені</item>
+ <item quantity="many">%d епізодів помічено як невідтворені</item>
+ <item quantity="other">%d епізодів помічено як невідтворені</item>
+ </plurals>
<string name="add_to_queue_label">Додати до черги</string>
<string name="added_to_queue_label">Додано до черги</string>
+ <plurals name="added_to_queue_batch_label">
+ <item quantity="one">%dепізод додано до черги. </item>
+ <item quantity="few">%dепізоди додано до черги. </item>
+ <item quantity="many">%dепізодів додано до черги. </item>
+ <item quantity="other">%d епізодів додано до черги.</item>
+ </plurals>
<string name="remove_from_queue_label">Видалити з черги</string>
+ <plurals name="removed_from_queue_batch_label">
+ <item quantity="one">%dепізод видалено з черги. </item>
+ <item quantity="few">%dепізоди видалено з черги. </item>
+ <item quantity="many">%dепізодів видалено з черги. </item>
+ <item quantity="other">%dепізодів видалено з черги.</item>
+ </plurals>
<string name="add_to_favorite_label">Додати до улюблених</string>
<string name="added_to_favorites">Додано до улюблених</string>
<string name="remove_from_favorite_label">Видалити з улюблених</string>
@@ -190,15 +233,15 @@
<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">Невідомий хост</string>
- <string name="download_error_unauthorized">Помилка аутентифікації</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_canceled_autodownload_enabled_msg">Завантаження скасоване\n<i>Автозавантаження</i> для цього елемента вимкнуто</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>
@@ -219,11 +262,12 @@
<string name="download_type_media">Файл з медіа</string>
<string name="download_type_image">Зображення</string>
<string name="download_request_error_dialog_message_prefix">Помилка при завантажені файлу:\u0020</string>
+ <string name="null_value_podcast_error">Не надано подкаст для перегляду.</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_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-->
@@ -292,10 +336,25 @@
<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_items_header_label">В черзі немає епізодів.</string>
+ <string name="no_items_label">Додайте епізод, завантаживши його, або довго натиснувши на нього і вибравши \"Додати до черги\".</string>
<string name="no_feeds_label">Ви ще не підписалися на жодні подкасти.</string>
<string name="no_chapters_label">В цьому епізоді немає розділів.</string>
<string name="no_shownotes_label">До цього епізода немає нотаток.</string>
+ <string name="no_run_downloads_head_label">Зараз нічого не завантажується.</string>
+ <string name="no_run_downloads_label">Завантажувати епізоди можна з детального перегляда подкаста.</string>
+ <string name="no_comp_downloads_head_label">Немає завантажених епізодів</string>
+ <string name="no_comp_downloads_label">Можна завантажувати епізоди на екрані подробиць подкасту.</string>
+ <string name="no_log_downloads_head_label">Журнал завантажень пустий.</string>
+ <string name="no_log_downloads_label">Журнал завантажень з’явиться тут.</string>
+ <string name="no_history_head_label">Немає історії прослуховувань</string>
+ <string name="no_history_label">Коли ви прослухаєте епізод, ця інформація з’явиться тут.</string>
+ <string name="no_all_episodes_head_label">Немає епізодів</string>
+ <string name="no_all_episodes_label">Коли ви додасте подкаст, тут з’явиться перелік його епізодів.</string>
+ <string name="no_new_episodes_head_label">Немає нових епізодів</string>
+ <string name="no_new_episodes_label">Коли з’являться нові епізоди, іх буде показано тут.</string>
+ <string name="no_fav_episodes_head_label">Немає улюблених епізодів</string>
+ <string name="no_fav_episodes_label">Ви можете додавати епізоди до улюблених за допомогою довгого натискання.</string>
<!--Preferences-->
<string name="storage_pref">Зберігання</string>
<string name="project_pref">Проект</string>
@@ -308,6 +367,7 @@
<string name="automation">Автоматизація</string>
<string name="download_pref_details">Детально</string>
<string name="import_export_pref">Імпорт/Експорт</string>
+ <string name="import_export_search_keywords">backup, restore, бекап, зберегти, відновити</string>
<string name="appearance">Вигляд</string>
<string name="external_elements">Зовнішні елементи</string>
<string name="interruptions">Тимчасові паузи</string>
@@ -349,6 +409,9 @@
<string name="pref_unpauseOnBluetoothReconnect_title">Повторне під’єднання блютуз</string>
<string name="pref_mobileUpdate_title">Мобільне оновлення</string>
<string name="pref_mobileUpdate_sum">Дозволити оновлення через оператора зв\'язку</string>
+ <string name="pref_mobileUpdate_nothing">Нічого</string>
+ <string name="pref_mobileUpdate_images">Тільки зображення</string>
+ <string name="pref_mobileUpdate_everything">Все</string>
<string name="refreshing_label">Оновлення</string>
<string name="flattr_settings_label">Налаштування Flattr</string>
<string name="pref_flattr_auth_title">Увійти до Flattr</string>
@@ -446,6 +509,7 @@
<string name="pref_enqueue_downloaded_title">Додати завантаження до черги</string>
<string name="pref_enqueue_downloaded_summary">Додавати завантажені епізоди до черги</string>
<string name="media_player_builtin">Стандартний плеєр Android</string>
+ <string name="pref_skip_silence_title">Пропуск тиші</string>
<string name="pref_videoBehavior_title"> При виході з відеорежиму</string>
<string name="pref_videoBehavior_sum">Поведінка при виході з відео</string>
<string name="stop_playback">Зупинити програвання</string>
@@ -461,6 +525,8 @@
<string name="double_tap_toast">Натисніть кнопку назад ще раз, щоб вийти</string>
<string name="back_button_go_to_page">Перейти на сторінку…</string>
<string name="back_button_go_to_page_title">Вибрати сторінку</string>
+ <string name="pref_delete_removes_from_queue_title">Видалення з черги видалених епізодів</string>
+ <string name="pref_delete_removes_from_queue_sum">Автоматично видаляти епізод із черги, коли він буде видалений.</string>
<!--Auto-Flattr dialog-->
<string name="auto_flattr_enable">Включити автоматичне заохочення авторів через сервіс flattr</string>
<string name="auto_flattr_after_percent">Заохотити автора через Flattr щойно %d відсотків епізода було відтворено</string>
@@ -659,6 +725,7 @@
<string name="audio_effects">Аудіоефекти</string>
<string name="stereo_to_mono">Зробити моно із стерео</string>
<string name="sonic_only">Тільки Sonic</string>
+ <string name="exoplayer_only">Лише ExoPlayer</string>
<!--proxy settings-->
<string name="proxy_type_label">Тип</string>
<string name="host_label">Хост</string>
@@ -671,6 +738,8 @@
<string name="proxy_host_empty_error">Хост не може бути пустим</string>
<string name="proxy_host_invalid_error">Хост не є правильною IP-адресою або доменним ім’ям</string>
<string name="proxy_port_invalid_error">Порт недійсний</string>
+ <!--Subscriptions fragment-->
+ <string name="subscription_num_columns">Кількість стовпців</string>
<!--Database import/export-->
<string name="import_export">Імпортувати/Експортувати базу данних</string>
<string name="import_export_warning">Ця експериментальна функція використовується для перенесення ваших підписок та вже прослуханих епізодів до іншого пристрою.\n\nЕкспортована база даних може бути імпортована тією ж самою версією AntennaPod. Інакше, результат може бути непередбаченим.\n\nПісля імпортування, епізоди можуть відображатися як завантажені, навіть якщо вони такими не є. Просто натисніть кнопку відтворення епізодів, щоб AntennaPod виявив це.</string>
@@ -693,14 +762,14 @@
<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_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">Відтворюється зараз</string>
<string name="notification_channel_playing_description">Дозволяє керувати відтворенням. Це основне сповіщення, яке ви бачите під час відтворення подкасту.</string>
<string name="notification_channel_error">Помилки</string>
<string name="notification_channel_error_description">Відображається, якщо щось пішло не так, наприклад, якщо не вдалося завантажити або синхронізувати з gpodder.</string>
diff --git a/core/src/main/res/values-zh-rCN/strings.xml b/core/src/main/res/values-zh-rCN/strings.xml
index 02e78171c..f78c6b0ae 100644
--- a/core/src/main/res/values-zh-rCN/strings.xml
+++ b/core/src/main/res/values-zh-rCN/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>
@@ -93,9 +95,13 @@
<string name="episode_cleanup_never">从不</string>
<string name="episode_cleanup_queue_removal">当不在队列中</string>
<string name="episode_cleanup_after_listening">结束后</string>
+ <plurals name="episode_cleanup_hours_after_listening">
+ <item quantity="other">结束后 %d 小时</item>
+ </plurals>
<plurals name="episode_cleanup_days_after_listening">
<item quantity="other">结束后 %d 天</item>
</plurals>
+ <string name="num_selected_label">已选中 %d 个</string>
<!--'Add Feed' Activity labels-->
<string name="feedurl_label">订阅 URL</string>
<string name="etxtFeedurlHint">www.example.com/feed</string>
@@ -110,10 +116,16 @@
<string name="mark_all_seen_label">所有可见</string>
<string name="mark_all_seen_confirmation_msg">请确认您要将所有曲目标记为已读。</string>
<string name="show_info_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_file_label">分享文件</string>
<string name="share_feed_url_label">分享订阅地址</string>
+ <string name="feed_remover_msg">正在移除播客</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>
@@ -133,7 +145,7 @@
<string name="remove_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>
@@ -157,6 +169,7 @@
<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_device_not_found">没有找到存储设备</string>
<string name="download_error_insufficient_space">空间不足</string>
<string name="download_error_file_error">文件错误</string>
@@ -206,6 +219,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-->
@@ -222,6 +236,9 @@
<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>
@@ -257,7 +274,6 @@
<string name="set_playback_speed_label">播放速度</string>
<string name="enable_sonic">允许声音</string>
<!--Empty list labels-->
- <string name="no_items_label">列表为空.</string>
<string name="no_chapters_label">此曲目没有章节信息</string>
<string name="no_shownotes_label">本集不包含展示信息</string>
<!--Preferences-->
@@ -267,6 +283,9 @@
<string name="about_pref">关于</string>
<string name="queue_label">播放列表</string>
<string name="flattr_label">Flattr</string>
+ <string name="import_export_pref">导入/导出</string>
+ <string name="import_export_search_keywords">数据, 备份, 还原, backup, restore</string>
+ <string name="appearance">样式</string>
<string name="pref_episode_cleanup_title">清理曲目</string>
<string name="pref_pauseOnDisconnect_sum">暂停播放曲目当耳机或蓝牙重新连接</string>
<string name="pref_unpauseOnHeadsetReconnect_sum">当耳机重新连接时恢复播放</string>
@@ -325,6 +344,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>
@@ -379,6 +399,8 @@
<string name="pref_cast_message_play_flavor">启用在 Cast 设备(例如 Chromecast 、 Audio Speakers 和 Android TV )上对于远端媒体回放的支持</string>
<string name="pref_cast_message_free_flavor">Chromecast 所需要的第三方库文件在这个版本的 AntennaPod 中被禁用</string>
<string name="pref_enqueue_downloaded_summary">向队列添加已下载的节目</string>
+ <string name="back_button_default">默认</string>
+ <string name="back_button_open_drawer">打开导航抽屉</string>
<!--Auto-Flattr dialog-->
<string name="auto_flattr_enable">启用自动 flattring</string>
<string name="auto_flattr_after_percent">当播放到百分之%d时Flattr改曲目</string>
@@ -570,7 +592,11 @@
<string name="proxy_host_empty_error">主机地址不能为空</string>
<string name="proxy_host_invalid_error">主机地址为无效的IP地址或域名</string>
<string name="proxy_port_invalid_error">端口不可用</string>
+ <!--Subscriptions fragment-->
<!--Database import/export-->
+ <string name="label_import">导入</string>
+ <string name="label_export">导出</string>
+ <string name="export_ok">导出成功。</string>
<!--Casting-->
<string name="cast_failed_to_play">媒体回放开始失败</string>
<string name="cast_failed_to_stop">媒体回放停止失败</string>
@@ -579,4 +605,6 @@
<string name="cast_failed_setting_volume">音量设置失败</string>
<string name="cast_failed_media_error_skipping">媒体播放出错.跳转中...</string>
<!--Notification channels-->
+ <string name="notification_channel_downloading">正在下载</string>
+ <string name="notification_channel_error">错误</string>
</resources>
diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml
index 3d730516e..add2dfe14 100644
--- a/core/src/main/res/values/strings.xml
+++ b/core/src/main/res/values/strings.xml
@@ -340,7 +340,7 @@
<!-- Empty list labels -->
<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_items_label">Add an episode by downloading it, or long press an episode and select \"Add to queue\".</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>
@@ -758,6 +758,9 @@
<string name="proxy_host_invalid_error">Host is not a valid IP address or domain</string>
<string name="proxy_port_invalid_error">Port not valid</string>
+ <!-- Subscriptions fragment -->
+ <string name="subscription_num_columns">Number of columns</string>
+
<!-- Database import/export -->
<string name="import_export">Database import/export</string>
<string name="import_export_warning">This experimental function can be used to transfer your subscriptions and played episodes to another device.\n\nExported databases can only be imported when using the same version of AntennaPod. Otherwise, this function will lead to unexpected behavior.\n\nAfter importing, episodes might be displayed as downloaded even though they are not. Just press the play button of the episodes to make AntennaPod detect this.</string>
diff --git a/core/src/main/res/values/styles.xml b/core/src/main/res/values/styles.xml
index b4fb2b3a3..d80137ea3 100644
--- a/core/src/main/res/values/styles.xml
+++ b/core/src/main/res/values/styles.xml
@@ -11,76 +11,76 @@
<item name="progressBarTheme">@style/ProgressBarLight</item>
<item name="buttonStyle">@style/Widget.AntennaPod.Button</item>
<item name="alertDialogTheme">@style/AntennaPod.Dialog.Light</item>
- <item type="attr" name="action_bar_icon_color">@color/grey600</item>
- <item type="attr" name="storage">@drawable/ic_sd_grey600_24dp</item>
- <item type="attr" name="ic_swap">@drawable/ic_swap_vertical_grey600_24dp</item>
- <item type="attr" name="statistics">@drawable/ic_poll_box_grey600_24dp</item>
- <item type="attr" name="action_about">@drawable/ic_info_grey600_24dp</item>
- <item type="attr" name="checkbox_multiple">@drawable/ic_checkbox_multiple_marked_outline_grey600_24dp</item>
- <item type="attr" name="action_search">@drawable/ic_search_grey600_24dp</item>
- <item type="attr" name="action_stream">@drawable/ic_settings_input_antenna_grey600_24dp</item>
- <item type="attr" name="av_download">@drawable/ic_file_download_grey600_24dp</item>
- <item type="attr" name="av_fast_forward">@drawable/ic_fast_forward_grey600_24dp</item>
- <item type="attr" name="av_pause">@drawable/ic_pause_grey600_24dp</item>
- <item type="attr" name="av_play">@drawable/ic_play_arrow_grey600_24dp</item>
- <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>
- <item type="attr" name="navigation_cancel">@drawable/ic_cancel_grey600_24dp</item>
- <item type="attr" name="navigation_expand">@drawable/ic_expand_more_grey600_36dp</item>
- <item type="attr" name="navigation_refresh">@drawable/ic_refresh_grey600_24dp</item>
- <item type="attr" name="navigation_up">@drawable/navigation_up</item>
- <item type="attr" name="social_share">@drawable/ic_share_grey600_24dp</item>
- <item type="attr" name="stat_playlist">@drawable/ic_list_grey600_24dp</item>
- <item type="attr" name="type_audio">@drawable/ic_hearing_grey600_18dp</item>
- <item type="attr" name="type_video">@drawable/ic_remove_red_eye_grey600_18dp</item>
- <item type="attr" name="non_transparent_background">@color/white</item>
- <item type="attr" name="overlay_background">@color/overlay_light</item>
- <item type="attr" name="overlay_drawable">@drawable/overlay_drawable</item>
- <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>
- <item type="attr" name="av_play_big">@drawable/ic_play_arrow_grey600_36dp</item>
- <item type="attr" name="av_pause_big">@drawable/ic_pause_grey600_36dp</item>
- <item type="attr" name="av_ff_big">@drawable/ic_fast_forward_grey600_36dp</item>
- <item type="attr" name="av_rew_big">@drawable/ic_fast_rewind_grey600_36dp</item>
- <item type="attr" name="av_skip_big">@drawable/ic_skip_grey600_36dp</item>
- <item type="attr" name="ic_fav">@drawable/ic_star_border_grey600_24dp</item>
- <item type="attr" name="ic_unfav">@drawable/ic_star_grey600_24dp</item>
- <item type="attr" name="ic_settings">@drawable/ic_settings_grey600_24dp</item>
- <item type="attr" name="ic_lock_open">@drawable/ic_lock_open_grey600_24dp</item>
- <item type="attr" name="ic_lock_closed">@drawable/ic_lock_closed_grey600_24dp</item>
- <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_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="action_bar_icon_color">@color/grey600</item>
+ <item name="storage">@drawable/ic_sd_grey600_24dp</item>
+ <item name="ic_swap">@drawable/ic_swap_vertical_grey600_24dp</item>
+ <item name="statistics">@drawable/ic_poll_box_grey600_24dp</item>
+ <item name="action_about">@drawable/ic_info_grey600_24dp</item>
+ <item name="checkbox_multiple">@drawable/ic_checkbox_multiple_marked_outline_grey600_24dp</item>
+ <item name="action_search">@drawable/ic_search_grey600_24dp</item>
+ <item name="action_stream">@drawable/ic_settings_input_antenna_grey600_24dp</item>
+ <item name="av_download">@drawable/ic_file_download_grey600_24dp</item>
+ <item name="av_fast_forward">@drawable/ic_fast_forward_grey600_24dp</item>
+ <item name="av_pause">@drawable/ic_pause_grey600_24dp</item>
+ <item name="av_play">@drawable/ic_play_arrow_grey600_24dp</item>
+ <item name="av_rewind">@drawable/ic_fast_rewind_grey600_24dp</item>
+ <item name="content_discard">@drawable/ic_delete_grey600_24dp</item>
+ <item name="content_new">@drawable/ic_add_grey600_24dp</item>
+ <item name="content_remove_from_queue">@drawable/ic_remove_grey600</item>
+ <item name="feed">@drawable/ic_feed_grey600_24dp</item>
+ <item name="location_web_site">@drawable/ic_web_grey600_24dp</item>
+ <item name="navigation_accept">@drawable/ic_done_grey600_24dp</item>
+ <item name="navigation_cancel">@drawable/ic_cancel_grey600_24dp</item>
+ <item name="navigation_expand">@drawable/ic_expand_more_grey600_36dp</item>
+ <item name="navigation_refresh">@drawable/ic_refresh_grey600_24dp</item>
+ <item name="navigation_up">@drawable/navigation_up</item>
+ <item name="social_share">@drawable/ic_share_grey600_24dp</item>
+ <item name="stat_playlist">@drawable/ic_list_grey600_24dp</item>
+ <item name="type_audio">@drawable/ic_hearing_grey600_18dp</item>
+ <item name="type_video">@drawable/ic_remove_red_eye_grey600_18dp</item>
+ <item name="non_transparent_background">@color/white</item>
+ <item name="overlay_background">@color/overlay_light</item>
+ <item name="overlay_drawable">@drawable/overlay_drawable</item>
+ <item name="dragview_background">@drawable/ic_drag_vertical_grey600_48dp</item>
+ <item name="dragview_float_background">@color/white</item>
+ <item name="nav_drawer_background">@color/white</item>
+ <item name="drawer_activated_color">@color/highlight_light</item>
+ <item name="ic_new">@drawable/ic_new_releases_grey600_24dp</item>
+ <item name="ic_history">@drawable/ic_history_grey600_24dp</item>
+ <item name="ic_folder">@drawable/ic_folder_grey600_24dp</item>
+ <item name="av_play_big">@drawable/ic_play_arrow_grey600_36dp</item>
+ <item name="av_pause_big">@drawable/ic_pause_grey600_36dp</item>
+ <item name="av_ff_big">@drawable/ic_fast_forward_grey600_36dp</item>
+ <item name="av_rew_big">@drawable/ic_fast_rewind_grey600_36dp</item>
+ <item name="av_skip_big">@drawable/ic_skip_grey600_36dp</item>
+ <item name="ic_fav">@drawable/ic_star_border_grey600_24dp</item>
+ <item name="ic_unfav">@drawable/ic_star_grey600_24dp</item>
+ <item name="ic_settings">@drawable/ic_settings_grey600_24dp</item>
+ <item name="ic_lock_open">@drawable/ic_lock_open_grey600_24dp</item>
+ <item name="ic_lock_closed">@drawable/ic_lock_closed_grey600_24dp</item>
+ <item name="ic_filter">@drawable/ic_filter_grey600_24dp</item>
+ <item name="ic_sleep">@drawable/ic_sleep_grey600_24dp</item>
+ <item name="ic_sleep_off">@drawable/ic_sleep_off_grey600_24dp</item>
+ <item name="ic_select_all">@drawable/ic_select_all_grey600</item>
+ <item name="ic_select_none">@drawable/ic_select_none_grey600</item>
+ <item name="ic_sort">@drawable/ic_sort_grey600_24dp</item>
+ <item name="ic_sd_storage">@drawable/ic_sd_storage_grey600_36dp</item>
+ <item name="ic_create_new_folder">@drawable/ic_create_new_folder_grey600_24dp</item>
+ <item name="ic_cast_disconnect">@drawable/ic_cast_disconnect_grey600_36dp</item>
+ <item name="ic_cellphone_text">@drawable/ic_cellphone_text_grey600_24dp</item>
+ <item name="ic_question_answer">@drawable/ic_forum_grey600_24dp</item>
+ <item name="ic_bug">@drawable/ic_bug_grey600_24dp</item>
+ <item name="ic_known_issues">@drawable/ic_format_list_bulleted_grey600_24dp</item>
+
+ <item name="master_switch_background">@color/master_switch_background_light</item>
+ <item 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>
+ <item name="about_screen_background">#e5e5e5</item>
+ <item name="about_screen_card_background">#ffffff</item>
+ <item name="about_screen_card_border">#d2d2d2</item>
+ <item name="about_screen_font_color">#000000</item>
</style>
<style name="Theme.AntennaPod.Dark" parent="Theme.Base.AntennaPod.Dark">
@@ -95,74 +95,74 @@
<item name="buttonStyle">@style/Widget.AntennaPod.Button</item>
<item name="progressBarTheme">@style/ProgressBarDark</item>
<item name="alertDialogTheme">@style/AntennaPod.Dialog.Dark</item>
- <item type="attr" name="action_bar_icon_color">@color/white</item>
- <item type="attr" name="storage">@drawable/ic_sd_white_24dp</item>
- <item type="attr" name="ic_swap">@drawable/ic_swap_vertical_white_24dp</item>
- <item type="attr" name="statistics">@drawable/ic_poll_box_white_24dp</item>
- <item type="attr" name="action_about">@drawable/ic_info_white_24dp</item>
- <item type="attr" name="checkbox_multiple">@drawable/ic_checkbox_multiple_marked_outline_white_24dp</item>
- <item type="attr" name="action_search">@drawable/ic_search_white_24dp</item>
- <item type="attr" name="action_stream">@drawable/ic_settings_input_antenna_white_24dp</item>
- <item type="attr" name="av_download">@drawable/ic_file_download_white_24dp</item>
- <item type="attr" name="av_fast_forward">@drawable/ic_fast_forward_white_24dp</item>
- <item type="attr" name="av_pause">@drawable/ic_pause_white_24dp</item>
- <item type="attr" name="av_play">@drawable/ic_play_arrow_white_24dp</item>
- <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>
- <item type="attr" name="navigation_cancel">@drawable/ic_cancel_white_24dp</item>
- <item type="attr" name="navigation_expand">@drawable/ic_expand_more_white_36dp</item>
- <item type="attr" name="navigation_refresh">@drawable/ic_refresh_white_24dp</item>
- <item type="attr" name="navigation_up">@drawable/navigation_up_dark</item>
- <item type="attr" name="social_share">@drawable/ic_share_white_24dp</item>
- <item type="attr" name="stat_playlist">@drawable/ic_list_white_24dp</item>
- <item type="attr" name="type_audio">@drawable/ic_hearing_white_18dp</item>
- <item type="attr" name="type_video">@drawable/ic_remove_red_eye_white_18dp</item>
- <item type="attr" name="non_transparent_background">@color/black</item>
- <item type="attr" name="overlay_background">@color/overlay_dark</item>
- <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">@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>
- <item type="attr" name="av_play_big">@drawable/ic_play_arrow_white_36dp</item>
- <item type="attr" name="av_pause_big">@drawable/ic_pause_white_36dp</item>
- <item type="attr" name="av_ff_big">@drawable/ic_fast_forward_white_36dp</item>
- <item type="attr" name="av_rew_big">@drawable/ic_fast_rewind_white_36dp</item>
- <item type="attr" name="av_skip_big">@drawable/ic_skip_white_36dp</item>
- <item type="attr" name="ic_fav">@drawable/ic_star_border_white_24dp</item>
- <item type="attr" name="ic_unfav">@drawable/ic_star_white_24dp</item>
- <item type="attr" name="ic_settings">@drawable/ic_settings_white_24dp</item>
- <item type="attr" name="ic_lock_open">@drawable/ic_lock_open_white_24dp</item>
- <item type="attr" name="ic_lock_closed">@drawable/ic_lock_closed_white_24dp</item>
- <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_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="action_bar_icon_color">@color/white</item>
+ <item name="storage">@drawable/ic_sd_white_24dp</item>
+ <item name="ic_swap">@drawable/ic_swap_vertical_white_24dp</item>
+ <item name="statistics">@drawable/ic_poll_box_white_24dp</item>
+ <item name="action_about">@drawable/ic_info_white_24dp</item>
+ <item name="checkbox_multiple">@drawable/ic_checkbox_multiple_marked_outline_white_24dp</item>
+ <item name="action_search">@drawable/ic_search_white_24dp</item>
+ <item name="action_stream">@drawable/ic_settings_input_antenna_white_24dp</item>
+ <item name="av_download">@drawable/ic_file_download_white_24dp</item>
+ <item name="av_fast_forward">@drawable/ic_fast_forward_white_24dp</item>
+ <item name="av_pause">@drawable/ic_pause_white_24dp</item>
+ <item name="av_play">@drawable/ic_play_arrow_white_24dp</item>
+ <item name="av_rewind">@drawable/ic_fast_rewind_white_24dp</item>
+ <item name="content_discard">@drawable/ic_delete_white_24dp</item>
+ <item name="content_new">@drawable/ic_add_white_24dp</item>
+ <item name="content_remove_from_queue">@drawable/ic_remove_white</item>
+ <item name="feed">@drawable/ic_feed_white_24dp</item>
+ <item name="location_web_site">@drawable/ic_web_white_24dp</item>
+ <item name="navigation_accept">@drawable/ic_done_white_24dp</item>
+ <item name="navigation_cancel">@drawable/ic_cancel_white_24dp</item>
+ <item name="navigation_expand">@drawable/ic_expand_more_white_36dp</item>
+ <item name="navigation_refresh">@drawable/ic_refresh_white_24dp</item>
+ <item name="navigation_up">@drawable/navigation_up_dark</item>
+ <item name="social_share">@drawable/ic_share_white_24dp</item>
+ <item name="stat_playlist">@drawable/ic_list_white_24dp</item>
+ <item name="type_audio">@drawable/ic_hearing_white_18dp</item>
+ <item name="type_video">@drawable/ic_remove_red_eye_white_18dp</item>
+ <item name="non_transparent_background">@color/black</item>
+ <item name="overlay_background">@color/overlay_dark</item>
+ <item name="overlay_drawable">@drawable/overlay_drawable_dark</item>
+ <item name="dragview_background">@drawable/ic_drag_vertical_white_48dp</item>
+ <item name="dragview_float_background">@color/black</item>
+ <item name="nav_drawer_background">@color/nav_drawer_background_dark</item>
+ <item name="drawer_activated_color">@color/nav_drawer_highlighted_dark</item>
+ <item name="ic_new">@drawable/ic_new_releases_white_24dp</item>
+ <item name="ic_history">@drawable/ic_history_white_24dp</item>
+ <item name="ic_folder">@drawable/ic_folder_white_24dp</item>
+ <item name="av_play_big">@drawable/ic_play_arrow_white_36dp</item>
+ <item name="av_pause_big">@drawable/ic_pause_white_36dp</item>
+ <item name="av_ff_big">@drawable/ic_fast_forward_white_36dp</item>
+ <item name="av_rew_big">@drawable/ic_fast_rewind_white_36dp</item>
+ <item name="av_skip_big">@drawable/ic_skip_white_36dp</item>
+ <item name="ic_fav">@drawable/ic_star_border_white_24dp</item>
+ <item name="ic_unfav">@drawable/ic_star_white_24dp</item>
+ <item name="ic_settings">@drawable/ic_settings_white_24dp</item>
+ <item name="ic_lock_open">@drawable/ic_lock_open_white_24dp</item>
+ <item name="ic_lock_closed">@drawable/ic_lock_closed_white_24dp</item>
+ <item name="ic_filter">@drawable/ic_filter_white_24dp</item>
+ <item name="ic_sleep">@drawable/ic_sleep_white_24dp</item>
+ <item name="ic_sleep_off">@drawable/ic_sleep_off_white_24dp</item>
+ <item name="ic_select_all">@drawable/ic_select_all_white</item>
+ <item name="ic_select_none">@drawable/ic_select_none_white</item>
+ <item name="ic_sort">@drawable/ic_sort_white_24dp</item>
+ <item name="ic_sd_storage">@drawable/ic_sd_storage_white_36dp</item>
+ <item name="ic_create_new_folder">@drawable/ic_create_new_folder_white_24dp</item>
+ <item name="ic_cast_disconnect">@drawable/ic_cast_disconnect_white_36dp</item>
+ <item name="ic_cellphone_text">@drawable/ic_cellphone_text_white_24dp</item>
+ <item name="ic_question_answer">@drawable/ic_baseline_question_answer_white_24dp</item>
+ <item name="ic_bug">@drawable/ic_bug_white_24dp</item>
+ <item name="ic_known_issues">@drawable/ic_format_list_bulleted_white_24dp</item>
+ <item name="master_switch_background">@color/master_switch_background_dark</item>
+ <item 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>
+ <item name="about_screen_background">#303030</item>
+ <item name="about_screen_card_background">#424242</item>
+ <item name="about_screen_card_border">#262626</item>
+ <item name="about_screen_font_color">#ffffff</item>
</style>
<style name="Theme.AntennaPod.TrueBlack" parent="Theme.Base.AntennaPod.TrueBlack">
@@ -171,13 +171,13 @@
<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="non_transparent_background">@color/black</item>
+ <item name="overlay_background">@color/black</item>
+ <item name="overlay_drawable">@drawable/overlay_drawable_dark_trueblack</item>
+ <item name="dragview_background">@drawable/ic_drag_vertical_white_48dp</item>
+ <item name="dragview_float_background">@color/black</item>
+ <item name="nav_drawer_background">@color/black</item>
+ <item 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>
@@ -214,14 +214,14 @@
<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="non_transparent_background">@color/black</item>
+ <item name="overlay_background">@color/black</item>
+ <item name="overlay_drawable">@drawable/overlay_drawable_dark_trueblack</item>
+ <item name="dragview_background">@drawable/ic_drag_vertical_white_48dp</item>
+ <item name="dragview_float_background">@color/black</item>
+ <item name="nav_drawer_background">@color/black</item>
+ <item name="drawer_activated_color">@color/highlight_trueblack</item>
+ <item 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>
diff --git a/core/src/play/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceFlavorHelper.java b/core/src/play/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceFlavorHelper.java
index a6b732a4f..7ab1be380 100644
--- a/core/src/play/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceFlavorHelper.java
+++ b/core/src/play/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceFlavorHelper.java
@@ -20,6 +20,8 @@ import com.google.android.gms.cast.ApplicationMetadata;
import com.google.android.libraries.cast.companionlibrary.cast.BaseCastManager;
import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
import de.danoeh.antennapod.core.cast.CastConsumer;
import de.danoeh.antennapod.core.cast.CastManager;
@@ -151,6 +153,7 @@ public class PlaybackServiceFlavorHelper {
// hardware volume buttons control the local device volume
mediaRouter.setMediaSessionCompat(null);
unregisterWifiBroadcastReceiver();
+ callback.setupNotification(false, info);
}
};
}
@@ -174,12 +177,13 @@ public class PlaybackServiceFlavorHelper {
}
callback.sendNotificationBroadcast(PlaybackService.NOTIFICATION_TYPE_RELOAD,
PlaybackService.EXTRA_CODE_CAST);
- switchMediaPlayer(new RemotePSMP(context, callback.getMediaPlayerCallback()),
- info,
- wasLaunched);
+ RemotePSMP remotePSMP = new RemotePSMP(context, callback.getMediaPlayerCallback());
+ switchMediaPlayer(remotePSMP, info, wasLaunched);
+ remotePSMP.init();
// hardware volume buttons control the remote device volume
mediaRouter.setMediaSessionCompat(callback.getMediaSession());
registerWifiBroadcastReceiver();
+ callback.setupNotification(true, info);
}
private void switchMediaPlayer(@NonNull PlaybackServiceMediaPlayer newPlayer,
@@ -188,8 +192,8 @@ public class PlaybackServiceFlavorHelper {
PlaybackServiceMediaPlayer mediaPlayer = callback.getMediaPlayer();
if (mediaPlayer != null) {
try {
- mediaPlayer.stopPlayback(false).get();
- } catch (InterruptedException | ExecutionException e) {
+ mediaPlayer.stopPlayback(false).get(2, TimeUnit.SECONDS);
+ } catch (InterruptedException | ExecutionException | TimeoutException e) {
Log.e(TAG, "There was a problem stopping playback while switching media players", e);
}
mediaPlayer.shutdownQuietly();
diff --git a/core/src/play/java/de/danoeh/antennapod/core/service/playback/RemotePSMP.java b/core/src/play/java/de/danoeh/antennapod/core/service/playback/RemotePSMP.java
index 487849ef5..f91264c59 100644
--- a/core/src/play/java/de/danoeh/antennapod/core/service/playback/RemotePSMP.java
+++ b/core/src/play/java/de/danoeh/antennapod/core/service/playback/RemotePSMP.java
@@ -62,7 +62,9 @@ public class RemotePSMP extends PlaybackServiceMediaPlayer {
startWhenPrepared = new AtomicBoolean(false);
isBuffering = new AtomicBoolean(false);
remoteState = MediaStatus.PLAYER_STATE_UNKNOWN;
+ }
+ public void init () {
try {
if (castMgr.isConnected() && castMgr.isRemoteMediaLoaded()) {
onRemoteMediaPlayerStatusUpdated();
diff --git a/core/src/test/java/de/danoeh/antennapod/core/syndication/parsers/DurationParserTest.java b/core/src/test/java/de/danoeh/antennapod/core/syndication/parsers/DurationParserTest.java
new file mode 100644
index 000000000..e7c861969
--- /dev/null
+++ b/core/src/test/java/de/danoeh/antennapod/core/syndication/parsers/DurationParserTest.java
@@ -0,0 +1,43 @@
+package de.danoeh.antennapod.core.syndication.parsers;
+
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+public class DurationParserTest {
+ private int milliseconds = 1;
+ private int seconds = 1000 * milliseconds;
+ private int minutes = 60 * seconds;
+ private int hours = 60 * minutes;
+
+ @Test
+ public void testSecondDurationInMillis() {
+ long duration = DurationParser.inMillis("00:45");
+ assertEquals(45 * seconds, duration);
+ }
+
+ @Test
+ public void testSingleNumberDurationInMillis() {
+ int twoHoursInSeconds = 2 * 60 * 60;
+ long duration = DurationParser.inMillis(String.valueOf(twoHoursInSeconds));
+ assertEquals(2 * hours, duration);
+ }
+
+ @Test
+ public void testMinuteSecondDurationInMillis() {
+ long duration = DurationParser.inMillis("05:10");
+ assertEquals(5 * minutes + 10 * seconds, duration);
+ }
+
+ @Test
+ public void testHourMinuteSecondDurationInMillis() {
+ long duration = DurationParser.inMillis("02:15:45");
+ assertEquals(2 * hours + 15 * minutes + 45 * seconds, duration);
+ }
+
+ @Test
+ public void testSecondsWithMillisecondsInMillis() {
+ long duration = DurationParser.inMillis("00:00:00.123");
+ assertEquals(123, duration);
+ }
+}