summaryrefslogtreecommitdiff
path: root/core/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/main')
-rw-r--r--core/src/main/AndroidManifest.xml14
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/event/DiscoveryDefaultUpdateEvent.java6
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/feed/Feed.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/feed/FeedItemFilter.java4
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/feed/FeedPreferences.java7
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/feed/SubscriptionsFilter.java106
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/feed/SubscriptionsFilterGroup.java30
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java19
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/receiver/MediaButtonReceiver.java7
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/PlayerWidgetJobService.java4
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/ProviderInstallerInterceptor.java18
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java157
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java3
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadServiceNotification.java6
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/handler/FeedParserTask.java8
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java34
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceNotificationBuilder.java5
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceTaskManager.java32
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/ssl/BackportCaCerts.java73
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/ssl/BackportTrustManager.java58
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/ssl/CompositeX509TrustManager.java60
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/ssl/NoV1SslSocketFactory.java100
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java39
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java1
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/DatabaseExporter.java12
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java111
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/StatisticsItem.java8
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/sync/SyncService.java7
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/NetworkUtils.java172
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/comparator/FeedItemPubdateComparator.java22
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/exception/RxJavaErrorHandlerSetup.java24
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/gui/NotificationUtils.java10
-rw-r--r--core/src/main/res/color/filter_dialog_background_dark.xml5
-rw-r--r--core/src/main/res/color/filter_dialog_background_light.xml5
-rw-r--r--core/src/main/res/drawable-hdpi/ic_notification.pngbin0 -> 1016 bytes
-rw-r--r--core/src/main/res/drawable-mdpi/ic_notification.pngbin0 -> 618 bytes
-rw-r--r--core/src/main/res/drawable-nodpi/ic_launcher_foreground_no_finish.pngbin0 -> 74988 bytes
-rw-r--r--core/src/main/res/drawable-nodpi/teaser.pngbin60183 -> 208621 bytes
-rw-r--r--core/src/main/res/drawable-xhdpi/ic_notification.pngbin0 -> 1441 bytes
-rw-r--r--core/src/main/res/drawable-xxhdpi/ic_notification.pngbin0 -> 2390 bytes
-rw-r--r--core/src/main/res/drawable-xxxhdpi/ic_notification.pngbin0 -> 3121 bytes
-rw-r--r--core/src/main/res/drawable/bg_splash.xml12
-rw-r--r--core/src/main/res/drawable/filter_dialog_background_dark.xml5
-rw-r--r--core/src/main/res/drawable/filter_dialog_background_light.xml5
-rw-r--r--core/src/main/res/drawable/ic_antenna.xml6
-rw-r--r--core/src/main/res/drawable/ic_notifications_black.xml9
-rw-r--r--core/src/main/res/drawable/ic_notifications_white.xml5
-rw-r--r--core/src/main/res/drawable/notification_default_large_icon.xml15
-rw-r--r--core/src/main/res/layout/player_widget.xml8
-rw-r--r--core/src/main/res/mipmap-anydpi-v26/ic_launcher.xml2
-rw-r--r--core/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml2
-rw-r--r--core/src/main/res/mipmap-hdpi/ic_launcher.pngbin4628 -> 8596 bytes
-rw-r--r--core/src/main/res/mipmap-hdpi/ic_launcher_background.pngbin0 -> 7069 bytes
-rw-r--r--core/src/main/res/mipmap-hdpi/ic_launcher_foreground.pngbin4876 -> 20308 bytes
-rw-r--r--core/src/main/res/mipmap-hdpi/ic_launcher_round.pngbin4628 -> 8596 bytes
-rw-r--r--core/src/main/res/mipmap-mdpi/ic_launcher.pngbin2752 -> 4783 bytes
-rw-r--r--core/src/main/res/mipmap-mdpi/ic_launcher_background.pngbin0 -> 3120 bytes
-rw-r--r--core/src/main/res/mipmap-mdpi/ic_launcher_foreground.pngbin2884 -> 10041 bytes
-rw-r--r--core/src/main/res/mipmap-mdpi/ic_launcher_round.pngbin2752 -> 4783 bytes
-rw-r--r--core/src/main/res/mipmap-xhdpi/ic_launcher.pngbin6709 -> 13307 bytes
-rw-r--r--core/src/main/res/mipmap-xhdpi/ic_launcher_background.pngbin0 -> 13262 bytes
-rw-r--r--core/src/main/res/mipmap-xhdpi/ic_launcher_foreground.pngbin6980 -> 34640 bytes
-rw-r--r--core/src/main/res/mipmap-xhdpi/ic_launcher_round.pngbin6709 -> 13307 bytes
-rw-r--r--core/src/main/res/mipmap-xxhdpi/ic_launcher.pngbin10809 -> 24321 bytes
-rw-r--r--core/src/main/res/mipmap-xxhdpi/ic_launcher_background.pngbin0 -> 35451 bytes
-rw-r--r--core/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.pngbin12641 -> 74736 bytes
-rw-r--r--core/src/main/res/mipmap-xxhdpi/ic_launcher_round.pngbin10809 -> 24321 bytes
-rw-r--r--core/src/main/res/mipmap-xxxhdpi/ic_launcher.pngbin15604 -> 37255 bytes
-rw-r--r--core/src/main/res/mipmap-xxxhdpi/ic_launcher_background.pngbin0 -> 64580 bytes
-rw-r--r--core/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.pngbin19600 -> 120501 bytes
-rw-r--r--core/src/main/res/mipmap-xxxhdpi/ic_launcher_round.pngbin15604 -> 37255 bytes
-rw-r--r--core/src/main/res/values-br/strings.xml821
-rw-r--r--core/src/main/res/values-ca/strings.xml118
-rw-r--r--core/src/main/res/values-cs/strings.xml288
-rw-r--r--core/src/main/res/values-da/strings.xml63
-rw-r--r--core/src/main/res/values-de/strings.xml7
-rw-r--r--core/src/main/res/values-es/strings.xml10
-rw-r--r--core/src/main/res/values-et/strings.xml103
-rw-r--r--core/src/main/res/values-eu/strings.xml7
-rw-r--r--core/src/main/res/values-fa/strings.xml10
-rw-r--r--core/src/main/res/values-fi/strings.xml216
-rw-r--r--core/src/main/res/values-fr/strings.xml9
-rw-r--r--core/src/main/res/values-gl/strings.xml11
-rw-r--r--core/src/main/res/values-hu/strings.xml40
-rw-r--r--core/src/main/res/values-it/strings.xml7
-rw-r--r--core/src/main/res/values-iw/strings.xml7
-rw-r--r--core/src/main/res/values-ja/strings.xml2
-rw-r--r--core/src/main/res/values-ko/strings.xml7
-rw-r--r--core/src/main/res/values-lt/strings.xml223
-rw-r--r--core/src/main/res/values-nb/strings.xml5
-rw-r--r--core/src/main/res/values-nl/strings.xml11
-rw-r--r--core/src/main/res/values-pl/strings.xml57
-rw-r--r--core/src/main/res/values-pt-rBR/strings.xml103
-rw-r--r--core/src/main/res/values-pt/strings.xml11
-rw-r--r--core/src/main/res/values-ru/strings.xml112
-rw-r--r--core/src/main/res/values-sv/strings.xml7
-rw-r--r--core/src/main/res/values-uk/strings.xml2
-rw-r--r--core/src/main/res/values-zh-rCN/strings.xml25
-rw-r--r--core/src/main/res/values-zh-rTW/strings.xml768
-rw-r--r--core/src/main/res/values/arrays.xml10
-rw-r--r--core/src/main/res/values/attrs.xml1
-rw-r--r--core/src/main/res/values/colors.xml3
-rw-r--r--core/src/main/res/values/strings.xml46
-rw-r--r--core/src/main/res/values/styles.xml20
105 files changed, 3735 insertions, 635 deletions
diff --git a/core/src/main/AndroidManifest.xml b/core/src/main/AndroidManifest.xml
index 1f6c36c40..ae5e56e55 100644
--- a/core/src/main/AndroidManifest.xml
+++ b/core/src/main/AndroidManifest.xml
@@ -1,5 +1,5 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="de.danoeh.antennapod.core">
+ xmlns:tools="http://schemas.android.com/tools" package="de.danoeh.antennapod.core">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
@@ -12,15 +12,19 @@
<application
android:allowBackup="true"
- android:icon="@mipmap/ic_launcher">
+ android:icon="@mipmap/ic_launcher"
+ android:supportsRtl="true">
<service
android:name=".service.download.DownloadService"
android:enabled="true" />
+
<service android:name=".service.playback.PlaybackService"
android:label="@string/app_name"
android:enabled="true"
- android:exported="true">
+ android:exported="true"
+ tools:ignore="ExportedService">
+
<intent-filter>
<action android:name="android.media.browse.MediaBrowserService"/>
</intent-filter>
@@ -39,8 +43,8 @@
<receiver android:name=".receiver.FeedUpdateReceiver"
android:label="@string/feed_update_receiver_name"
- android:exported="true"> <!-- allow feeds update to be triggered by external apps -->
- </receiver>
+ android:exported="true"
+ tools:ignore="ExportedReceiver" /> <!-- allow feeds update to be triggered by external apps -->
</application>
</manifest>
diff --git a/core/src/main/java/de/danoeh/antennapod/core/event/DiscoveryDefaultUpdateEvent.java b/core/src/main/java/de/danoeh/antennapod/core/event/DiscoveryDefaultUpdateEvent.java
new file mode 100644
index 000000000..f7757935a
--- /dev/null
+++ b/core/src/main/java/de/danoeh/antennapod/core/event/DiscoveryDefaultUpdateEvent.java
@@ -0,0 +1,6 @@
+package de.danoeh.antennapod.core.event;
+
+public class DiscoveryDefaultUpdateEvent {
+ public DiscoveryDefaultUpdateEvent() {
+ }
+}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/Feed.java b/core/src/main/java/de/danoeh/antennapod/core/feed/Feed.java
index 9c1c55d76..a3b66c951 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/feed/Feed.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/feed/Feed.java
@@ -353,7 +353,7 @@ public class Feed extends FeedFile implements ImageResource {
Date mostRecentDate = new Date(0);
FeedItem mostRecentItem = null;
for (FeedItem item : items) {
- if (item.getPubDate().after(mostRecentDate)) {
+ if (item.getPubDate() != null && item.getPubDate().after(mostRecentDate)) {
mostRecentDate = item.getPubDate();
mostRecentItem = item;
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItemFilter.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItemFilter.java
index d34e23506..e8e478a86 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItemFilter.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItemFilter.java
@@ -129,4 +129,8 @@ public class FeedItemFilter {
return mProperties.clone();
}
+ public boolean isShowDownloaded() {
+ return showDownloaded;
+ }
+
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedPreferences.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedPreferences.java
index 2a2568f28..5ffee0d62 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedPreferences.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedPreferences.java
@@ -38,11 +38,8 @@ public class FeedPreferences {
private int feedSkipEnding;
public FeedPreferences(long feedID, boolean autoDownload, AutoDeleteAction auto_delete_action, VolumeAdaptionSetting volumeAdaptionSetting, String username, String password) {
- this(feedID, autoDownload, true, auto_delete_action, volumeAdaptionSetting, username, password, new FeedFilter(), SPEED_USE_GLOBAL);
- }
-
- private FeedPreferences(long feedID, boolean autoDownload, boolean keepUpdated, AutoDeleteAction auto_delete_action, VolumeAdaptionSetting volumeAdaptionSetting, String username, String password, @NonNull FeedFilter filter, float feedPlaybackSpeed) {
- this(feedID, autoDownload, true, auto_delete_action, volumeAdaptionSetting, username, password, new FeedFilter(), feedPlaybackSpeed, 0, 0);
+ this(feedID, autoDownload, true, auto_delete_action, volumeAdaptionSetting,
+ username, password, new FeedFilter(), SPEED_USE_GLOBAL, 0, 0);
}
private FeedPreferences(long feedID, boolean autoDownload, boolean keepUpdated, AutoDeleteAction auto_delete_action, VolumeAdaptionSetting volumeAdaptionSetting, String username, String password, @NonNull FeedFilter filter, float feedPlaybackSpeed, int feedSkipIntro, int feedSkipEnding) {
diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/SubscriptionsFilter.java b/core/src/main/java/de/danoeh/antennapod/core/feed/SubscriptionsFilter.java
new file mode 100644
index 000000000..93f098ecf
--- /dev/null
+++ b/core/src/main/java/de/danoeh/antennapod/core/feed/SubscriptionsFilter.java
@@ -0,0 +1,106 @@
+package de.danoeh.antennapod.core.feed;
+
+import android.text.TextUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import de.danoeh.antennapod.core.util.LongIntMap;
+
+public class SubscriptionsFilter {
+ private static final String divider = ",";
+
+ private final String[] properties;
+
+ private boolean showIfCounterGreaterZero = false;
+
+ private boolean showAutoDownloadEnabled = false;
+ private boolean showAutoDownloadDisabled = false;
+
+ private boolean showUpdatedEnabled = false;
+ private boolean showUpdatedDisabled = false;
+
+ public SubscriptionsFilter(String properties) {
+ this(TextUtils.split(properties, divider));
+ }
+
+
+ public SubscriptionsFilter(String[] properties) {
+ this.properties = properties;
+ for (String property : properties) {
+ // see R.arrays.feed_filter_values
+ switch (property) {
+ case "counter_greater_zero":
+ showIfCounterGreaterZero = true;
+ break;
+ case "enabled_auto_download":
+ showAutoDownloadEnabled = true;
+ break;
+ case "disabled_auto_download":
+ showAutoDownloadDisabled = true;
+ break;
+ case "enabled_updates":
+ showUpdatedEnabled = true;
+ break;
+ case "disabled_updates":
+ showUpdatedDisabled = true;
+ break;
+ default:
+ break;
+ }
+ }
+ }
+
+ public boolean isEnabled() {
+ return properties.length > 0;
+ }
+
+ /**
+ * Run a list of feed items through the filter.
+ */
+ public List<Feed> filter(List<Feed> items, LongIntMap feedCounters) {
+ if (properties.length == 0) {
+ return items;
+ }
+
+ List<Feed> result = new ArrayList<>();
+
+ for (Feed item : items) {
+ FeedPreferences itemPreferences = item.getPreferences();
+
+ // If the item does not meet a requirement, skip it.
+ if (showAutoDownloadEnabled && !itemPreferences.getAutoDownload()) {
+ continue;
+ } else if (showAutoDownloadDisabled && itemPreferences.getAutoDownload()) {
+ continue;
+ }
+
+ if (showUpdatedEnabled && !itemPreferences.getKeepUpdated()) {
+ continue;
+ } else if (showUpdatedDisabled && itemPreferences.getKeepUpdated()) {
+ continue;
+ }
+
+ // If the item reaches here, it meets all criteria (except counter > 0)
+ result.add(item);
+ }
+
+ if (showIfCounterGreaterZero) {
+ for (int i = result.size() - 1; i >= 0; i--) {
+ if (feedCounters.get(result.get(i).getId()) <= 0) {
+ result.remove(i);
+ }
+ }
+ }
+
+ return result;
+ }
+
+ public String[] getValues() {
+ return properties.clone();
+ }
+
+ public String serialize() {
+ return TextUtils.join(divider, getValues());
+ }
+}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/SubscriptionsFilterGroup.java b/core/src/main/java/de/danoeh/antennapod/core/feed/SubscriptionsFilterGroup.java
new file mode 100644
index 000000000..7db0456a0
--- /dev/null
+++ b/core/src/main/java/de/danoeh/antennapod/core/feed/SubscriptionsFilterGroup.java
@@ -0,0 +1,30 @@
+package de.danoeh.antennapod.core.feed;
+
+import de.danoeh.antennapod.core.R;
+
+public enum SubscriptionsFilterGroup {
+ COUNTER_GREATER_ZERO(new ItemProperties(R.string.subscriptions_counter_greater_zero, "counter_greater_zero")),
+ AUTO_DOWNLOAD(new ItemProperties(R.string.auto_downloaded, "enabled_auto_download"),
+ new ItemProperties(R.string.not_auto_downloaded, "disabled_auto_download")),
+ UPDATED(new ItemProperties(R.string.kept_updated, "enabled_updates"),
+ new ItemProperties(R.string.not_kept_updated, "disabled_updates"));
+
+
+ public final ItemProperties[] values;
+
+ SubscriptionsFilterGroup(ItemProperties... values) {
+ this.values = values;
+ }
+
+ public static class ItemProperties {
+
+ public final int displayName;
+ public final String filterId;
+
+ public ItemProperties(int displayName, String filterId) {
+ this.displayName = displayName;
+ this.filterId = filterId;
+ }
+
+ }
+}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java b/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java
index bcbc041a6..1dc4b6093 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java
@@ -32,6 +32,7 @@ import java.util.concurrent.TimeUnit;
import de.danoeh.antennapod.core.R;
import de.danoeh.antennapod.core.feed.MediaType;
+import de.danoeh.antennapod.core.feed.SubscriptionsFilter;
import de.danoeh.antennapod.core.service.download.ProxyConfig;
import de.danoeh.antennapod.core.storage.APCleanupAlgorithm;
import de.danoeh.antennapod.core.storage.APNullCleanupAlgorithm;
@@ -66,7 +67,7 @@ public class UserPreferences {
private static final String PREF_SHOW_AUTO_DOWNLOAD_REPORT = "prefShowAutoDownloadReport";
public static final String PREF_BACK_BUTTON_BEHAVIOR = "prefBackButtonBehavior";
private static final String PREF_BACK_BUTTON_GO_TO_PAGE = "prefBackButtonGoToPage";
- public static final String PREF_FILTER_FEED = "prefFeedFilter";
+ public static final String PREF_FILTER_FEED = "prefSubscriptionsFilter";
public static final String PREF_QUEUE_KEEP_SORTED = "prefQueueKeepSorted";
public static final String PREF_QUEUE_KEEP_SORTED_ORDER = "prefQueueKeepSortedOrder";
@@ -149,8 +150,6 @@ public class UserPreferences {
public static final int FEED_COUNTER_SHOW_UNPLAYED = 2;
public static final int FEED_COUNTER_SHOW_NONE = 3;
public static final int FEED_COUNTER_SHOW_DOWNLOADED = 4;
- public static final int FEED_FILTER_NONE = 0;
- public static final int FEED_FILTER_COUNTER_ZERO = 1;
private static Context context;
private static SharedPreferences prefs;
@@ -249,7 +248,7 @@ public class UserPreferences {
public static void setFeedOrder(String selected) {
prefs.edit()
.putString(PREF_DRAWER_FEED_ORDER, selected)
- .commit();
+ .apply();
}
public static int getFeedCounterSetting() {
@@ -1046,15 +1045,15 @@ public class UserPreferences {
.apply();
}
- public static int getFeedFilter() {
- String value = prefs.getString(PREF_FILTER_FEED, "" + FEED_FILTER_NONE);
- return Integer.parseInt(value);
+ public static SubscriptionsFilter getSubscriptionsFilter() {
+ String value = prefs.getString(PREF_FILTER_FEED, "");
+ return new SubscriptionsFilter(value);
}
- public static void setFeedFilter(String value) {
+ public static void setSubscriptionsFilter(SubscriptionsFilter value) {
prefs.edit()
- .putString(PREF_FILTER_FEED, value)
- .commit();
+ .putString(PREF_FILTER_FEED, value.serialize())
+ .apply();
}
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/receiver/MediaButtonReceiver.java b/core/src/main/java/de/danoeh/antennapod/core/receiver/MediaButtonReceiver.java
index b683f849c..abee9d8d3 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/receiver/MediaButtonReceiver.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/receiver/MediaButtonReceiver.java
@@ -15,6 +15,7 @@ public class MediaButtonReceiver extends BroadcastReceiver {
private static final String TAG = "MediaButtonReceiver";
public static final String EXTRA_KEYCODE = "de.danoeh.antennapod.core.service.extra.MediaButtonReceiver.KEYCODE";
public static final String EXTRA_SOURCE = "de.danoeh.antennapod.core.service.extra.MediaButtonReceiver.SOURCE";
+ public static final String EXTRA_HARDWAREBUTTON = "de.danoeh.antennapod.core.service.extra.MediaButtonReceiver.HARDWAREBUTTON";
public static final String NOTIFY_BUTTON_RECEIVER = "de.danoeh.antennapod.NOTIFY_BUTTON_RECEIVER";
@@ -30,6 +31,12 @@ public class MediaButtonReceiver extends BroadcastReceiver {
Intent serviceIntent = new Intent(context, PlaybackService.class);
serviceIntent.putExtra(EXTRA_KEYCODE, event.getKeyCode());
serviceIntent.putExtra(EXTRA_SOURCE, event.getSource());
+ //detect if this is a hardware button press
+ if (event.getEventTime() > 0 || event.getDownTime() > 0) {
+ serviceIntent.putExtra(EXTRA_HARDWAREBUTTON, true);
+ } else {
+ serviceIntent.putExtra(EXTRA_HARDWAREBUTTON, false);
+ }
ContextCompat.startForegroundService(context, serviceIntent);
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/PlayerWidgetJobService.java b/core/src/main/java/de/danoeh/antennapod/core/service/PlayerWidgetJobService.java
index 7585e9d33..74735a264 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/PlayerWidgetJobService.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/PlayerWidgetJobService.java
@@ -132,7 +132,7 @@ public class PlayerWidgetJobService extends SafeJobIntentService {
views.setImageViewBitmap(R.id.imgvCover, icon);
} catch (Throwable tr) {
Log.e(TAG, "Error loading the media icon for the widget", tr);
- views.setImageViewResource(R.id.imgvCover, R.mipmap.ic_launcher_foreground);
+ views.setImageViewResource(R.id.imgvCover, R.mipmap.ic_launcher_round);
}
views.setTextViewText(R.id.txtvTitle, media.getEpisodeTitle());
@@ -171,7 +171,7 @@ public class PlayerWidgetJobService extends SafeJobIntentService {
views.setViewVisibility(R.id.txtvProgress, View.GONE);
views.setViewVisibility(R.id.txtvTitle, View.GONE);
views.setViewVisibility(R.id.txtNoPlaying, View.VISIBLE);
- views.setImageViewResource(R.id.imgvCover, R.mipmap.ic_launcher_foreground);
+ views.setImageViewResource(R.id.imgvCover, R.mipmap.ic_launcher_round);
views.setImageViewResource(R.id.butPlay, R.drawable.ic_av_play_white_48dp);
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/ProviderInstallerInterceptor.java b/core/src/main/java/de/danoeh/antennapod/core/service/ProviderInstallerInterceptor.java
deleted file mode 100644
index 4fa1fc3d7..000000000
--- a/core/src/main/java/de/danoeh/antennapod/core/service/ProviderInstallerInterceptor.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package de.danoeh.antennapod.core.service;
-
-import androidx.annotation.NonNull;
-import okhttp3.Interceptor;
-import okhttp3.Response;
-
-import java.io.IOException;
-
-public class ProviderInstallerInterceptor implements Interceptor {
- public static Runnable installer = () -> { };
-
- @Override
- @NonNull
- public Response intercept(Chain chain) throws IOException {
- installer.run();
- return chain.proceed(chain.request());
- }
-}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java
index 9d0b3c5ad..a01b3cb52 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java
@@ -1,40 +1,16 @@
package de.danoeh.antennapod.core.service.download;
import android.os.Build;
-import androidx.annotation.NonNull;
import android.text.TextUtils;
import android.util.Log;
-
-import de.danoeh.antennapod.core.service.BasicAuthorizationInterceptor;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.CookieManager;
-import java.net.CookiePolicy;
-import java.net.HttpURLConnection;
-import java.net.InetAddress;
-import java.net.InetSocketAddress;
-import java.net.Proxy;
-import java.net.Socket;
-import java.net.SocketAddress;
-import java.security.GeneralSecurityException;
-import java.security.KeyStore;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.concurrent.TimeUnit;
-
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLSocket;
-import javax.net.ssl.SSLSocketFactory;
-import javax.net.ssl.TrustManager;
-import javax.net.ssl.TrustManagerFactory;
-import javax.net.ssl.X509TrustManager;
-
+import androidx.annotation.NonNull;
import de.danoeh.antennapod.core.preferences.UserPreferences;
-import de.danoeh.antennapod.core.service.ProviderInstallerInterceptor;
+import de.danoeh.antennapod.core.service.BasicAuthorizationInterceptor;
import de.danoeh.antennapod.core.service.UserAgentInterceptor;
+import de.danoeh.antennapod.core.ssl.BackportTrustManager;
+import de.danoeh.antennapod.core.ssl.NoV1SslSocketFactory;
import de.danoeh.antennapod.core.storage.DBWriter;
+import de.danoeh.antennapod.core.util.Flavors;
import okhttp3.Cache;
import okhttp3.CipherSuite;
import okhttp3.ConnectionSpec;
@@ -46,6 +22,19 @@ import okhttp3.Request;
import okhttp3.Response;
import okhttp3.internal.http.StatusLine;
+import javax.net.ssl.X509TrustManager;
+import java.io.File;
+import java.net.CookieManager;
+import java.net.CookiePolicy;
+import java.net.HttpURLConnection;
+import java.net.InetSocketAddress;
+import java.net.Proxy;
+import java.net.SocketAddress;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+
/**
* Provides access to a HttpClient singleton.
*/
@@ -117,7 +106,6 @@ public class AntennapodHttpClient {
}
return response;
});
- builder.interceptors().add(new ProviderInstallerInterceptor());
builder.interceptors().add(new BasicAuthorizationInterceptor());
builder.networkInterceptors().add(new UserAgentInterceptor());
@@ -151,13 +139,20 @@ public class AntennapodHttpClient {
});
}
}
- if (Build.VERSION.SDK_INT < 21) {
- builder.sslSocketFactory(new CustomSslSocketFactory(), trustManager());
+
+ if (Flavors.FLAVOR == Flavors.FREE) {
+ // The Free flavor bundles a modern conscrypt (security provider), so CustomSslSocketFactory
+ // is only used to make sure that modern protocols (TLSv1.3 and TLSv1.2) are enabled and
+ // that old, deprecated, protocols (like SSLv3, TLSv1.0 and TLSv1.1) are disabled.
+ X509TrustManager trustManager = BackportTrustManager.create();
+ builder.sslSocketFactory(new NoV1SslSocketFactory(trustManager), trustManager);
+ } else if (Build.VERSION.SDK_INT < 21) {
+ X509TrustManager trustManager = BackportTrustManager.create();
+ builder.sslSocketFactory(new NoV1SslSocketFactory(trustManager), trustManager);
// workaround for Android 4.x for certain web sites.
// see: https://github.com/square/okhttp/issues/4053#issuecomment-402579554
- List<CipherSuite> cipherSuites = new ArrayList<>(
- ConnectionSpec.MODERN_TLS.cipherSuites());
+ List<CipherSuite> cipherSuites = new ArrayList<>(ConnectionSpec.MODERN_TLS.cipherSuites());
cipherSuites.add(CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA);
cipherSuites.add(CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA);
@@ -170,101 +165,7 @@ public class AntennapodHttpClient {
return builder;
}
- /**
- * Closes expired connections. This method should be called by the using class once has finished its work with
- * the HTTP client.
- */
- public static synchronized void cleanup() {
- if (httpClient != null) {
- // does nothing at the moment
- }
- }
-
- private static X509TrustManager trustManager() {
- try {
- TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(
- TrustManagerFactory.getDefaultAlgorithm());
- trustManagerFactory.init((KeyStore) null);
- TrustManager[] trustManagers = trustManagerFactory.getTrustManagers();
- if (trustManagers.length != 1 || !(trustManagers[0] instanceof X509TrustManager)) {
- throw new IllegalStateException("Unexpected default trust managers:"
- + Arrays.toString(trustManagers));
- }
- return (X509TrustManager) trustManagers[0];
- } catch (Exception e) {
- Log.e(TAG, Log.getStackTraceString(e));
- return null;
- }
- }
-
public static void setCacheDirectory(File cacheDirectory) {
AntennapodHttpClient.cacheDirectory = cacheDirectory;
}
-
- private static class CustomSslSocketFactory extends SSLSocketFactory {
-
- private SSLSocketFactory factory;
-
- public CustomSslSocketFactory() {
- try {
- SSLContext sslContext = SSLContext.getInstance("TLSv1.2");
- sslContext.init(null, null, null);
- factory= sslContext.getSocketFactory();
- } catch(GeneralSecurityException e) {
- e.printStackTrace();
- }
- }
-
- @Override
- public String[] getDefaultCipherSuites() {
- return factory.getDefaultCipherSuites();
- }
-
- @Override
- public String[] getSupportedCipherSuites() {
- return factory.getSupportedCipherSuites();
- }
-
- public Socket createSocket() throws IOException {
- SSLSocket result = (SSLSocket) factory.createSocket();
- configureSocket(result);
- return result;
- }
-
- public Socket createSocket(String var1, int var2) throws IOException {
- SSLSocket result = (SSLSocket) factory.createSocket(var1, var2);
- configureSocket(result);
- return result;
- }
-
- public Socket createSocket(Socket var1, String var2, int var3, boolean var4) throws IOException {
- SSLSocket result = (SSLSocket) factory.createSocket(var1, var2, var3, var4);
- configureSocket(result);
- return result;
- }
-
- public Socket createSocket(InetAddress var1, int var2) throws IOException {
- SSLSocket result = (SSLSocket) factory.createSocket(var1, var2);
- configureSocket(result);
- return result;
- }
-
- public Socket createSocket(String var1, int var2, InetAddress var3, int var4) throws IOException {
- SSLSocket result = (SSLSocket) factory.createSocket(var1, var2, var3, var4);
- configureSocket(result);
- return result;
- }
-
- public Socket createSocket(InetAddress var1, int var2, InetAddress var3, int var4) throws IOException {
- SSLSocket result = (SSLSocket) factory.createSocket(var1, var2, var3, var4);
- configureSocket(result);
- return result;
- }
-
- private void configureSocket(SSLSocket s) {
- s.setEnabledProtocols(new String[] { "TLSv1.2", "TLSv1.1", "TLSv1" } );
- }
-
- }
-
}
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 e44aa716a..f1b35fe23 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
@@ -10,6 +10,7 @@ import android.content.IntentFilter;
import android.os.Binder;
import android.os.Handler;
import android.os.IBinder;
+import android.os.Looper;
import android.text.TextUtils;
import android.util.Log;
@@ -178,7 +179,7 @@ public class DownloadService extends Service {
public void onCreate() {
Log.d(TAG, "Service started");
isRunning = true;
- handler = new Handler();
+ handler = new Handler(Looper.getMainLooper());
notificationManager = new DownloadServiceNotification(this);
IntentFilter cancelDownloadReceiverFilter = new IntentFilter();
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadServiceNotification.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadServiceNotification.java
index 64666d25d..975bc3cb3 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadServiceNotification.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadServiceNotification.java
@@ -153,7 +153,11 @@ public class DownloadServiceNotification {
iconId = R.drawable.ic_notification_sync_error;
intent = ClientConfig.downloadServiceCallbacks.getReportNotificationContentIntent(context);
id = R.id.notification_download_report;
- content = String.format(context.getString(R.string.download_report_content), successfulDownloads, failedDownloads);
+ content = context.getResources()
+ .getQuantityString(R.plurals.download_report_content,
+ successfulDownloads,
+ successfulDownloads,
+ failedDownloads);
}
NotificationCompat.Builder builder = new NotificationCompat.Builder(context, channelId);
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java
index 61608992b..65b7ed7d1 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java
@@ -71,6 +71,7 @@ public class HttpDownloader extends Downloader {
// set header explicitly so that okhttp doesn't do transparent gzip
Log.d(TAG, "addHeader(\"Accept-Encoding\", \"identity\")");
httpReq.addHeader("Accept-Encoding", "identity");
+ httpReq.cacheControl(new CacheControl.Builder().noCache().build()); // noStore breaks CDNs
}
if (!TextUtils.isEmpty(request.getLastModified())) {
@@ -259,7 +260,6 @@ public class HttpDownloader extends Downloader {
onFail(DownloadError.ERROR_CONNECTION_ERROR, request.getSource());
} finally {
IOUtils.closeQuietly(out);
- AntennapodHttpClient.cleanup();
IOUtils.closeQuietly(responseBody);
}
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/handler/FeedParserTask.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/handler/FeedParserTask.java
index c50162788..18c5fce27 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/download/handler/FeedParserTask.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/handler/FeedParserTask.java
@@ -18,7 +18,6 @@ import org.xml.sax.SAXException;
import javax.xml.parsers.ParserConfigurationException;
import java.io.File;
import java.io.IOException;
-import java.util.Date;
import java.util.concurrent.Callable;
public class FeedParserTask implements Callable<FeedHandlerResult> {
@@ -104,13 +103,6 @@ public class FeedParserTask implements Callable<FeedHandlerResult> {
if (item.getTitle() == null) {
throw new InvalidFeedException("Item has no title: " + item);
}
- if (item.getPubDate() == null) {
- Log.e(TAG, "Item has no pubDate. Using current time as pubDate");
- if (item.getTitle() != null) {
- Log.e(TAG, "Title of invalid item: " + item.getTitle());
- }
- item.setPubDate(new Date());
- }
}
}
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 bf485e55f..9f53c6da0 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
@@ -3,6 +3,7 @@ package de.danoeh.antennapod.core.service.playback;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
+import android.app.UiModeManager;
import android.bluetooth.BluetoothA2dp;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
@@ -10,6 +11,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
+import android.content.res.Configuration;
import android.graphics.Bitmap;
import android.media.AudioManager;
import android.media.MediaPlayer;
@@ -83,6 +85,7 @@ import io.reactivex.Observable;
import io.reactivex.Single;
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;
@@ -314,7 +317,10 @@ public class PlaybackService extends MediaBrowserServiceCompat {
}
}
emitter.onSuccess(queueItems);
- }).subscribe(queueItems -> mediaSession.setQueue(queueItems), Throwable::printStackTrace);
+ })
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(queueItems -> mediaSession.setQueue(queueItems), Throwable::printStackTrace);
flavorHelper.initializeMediaPlayer(PlaybackService.this);
mediaSession.setActive(true);
@@ -451,6 +457,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
notificationManager.cancel(R.id.notification_streaming_confirmation);
final int keycode = intent.getIntExtra(MediaButtonReceiver.EXTRA_KEYCODE, -1);
+ final boolean hardwareButton = intent.getBooleanExtra(MediaButtonReceiver.EXTRA_HARDWAREBUTTON, false);
final boolean castDisconnect = intent.getBooleanExtra(EXTRA_CAST_DISCONNECT, false);
Playable playable = intent.getParcelableExtra(EXTRA_PLAYABLE);
if (keycode == -1 && playable == null && !castDisconnect) {
@@ -464,8 +471,15 @@ public class PlaybackService extends MediaBrowserServiceCompat {
stateManager.stopForeground(true);
} else {
if (keycode != -1) {
- Log.d(TAG, "Received media button event");
- boolean handled = handleKeycode(keycode, true);
+ boolean notificationButton;
+ if (hardwareButton) {
+ Log.d(TAG, "Received hardware button event");
+ notificationButton = false;
+ } else {
+ Log.d(TAG, "Received media button event");
+ notificationButton = true;
+ }
+ boolean handled = handleKeycode(keycode, notificationButton);
if (!handled && !stateManager.hasReceivedValidStartCommand()) {
stateManager.stopService();
return Service.START_NOT_STICKY;
@@ -1179,6 +1193,20 @@ public class PlaybackService extends MediaBrowserServiceCompat {
capabilities = capabilities | PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS;
}
+ UiModeManager uiModeManager = (UiModeManager) getApplicationContext().getSystemService(Context.UI_MODE_SERVICE);
+ if (uiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_CAR) {
+ sessionState.addCustomAction(
+ new PlaybackStateCompat.CustomAction.Builder(
+ CUSTOM_ACTION_REWIND,
+ getString(R.string.rewind_label), R.drawable.ic_notification_fast_rewind)
+ .build());
+ sessionState.addCustomAction(
+ new PlaybackStateCompat.CustomAction.Builder(
+ CUSTOM_ACTION_FAST_FORWARD,
+ getString(R.string.fast_forward_label), R.drawable.ic_notification_fast_forward)
+ .build());
+ }
+
sessionState.setActions(capabilities);
flavorHelper.sessionStateAddActionForWear(sessionState,
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
index 3239f3378..632ac07ea 100644
--- 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
@@ -85,7 +85,7 @@ public class PlaybackServiceNotificationBuilder {
private Bitmap getDefaultIcon() {
if (defaultIcon == null) {
- defaultIcon = getBitmap(context, R.drawable.notification_default_large_icon);
+ defaultIcon = getBitmap(context, R.mipmap.ic_launcher);
}
return defaultIcon;
}
@@ -136,9 +136,10 @@ public class PlaybackServiceNotificationBuilder {
notification.setContentIntent(getPlayerActivityPendingIntent());
notification.setWhen(0);
- notification.setSmallIcon(R.drawable.ic_antenna);
+ notification.setSmallIcon(R.drawable.ic_notification);
notification.setOngoing(false);
notification.setOnlyAlertOnce(true);
+ notification.setShowWhen(false);
notification.setPriority(UserPreferences.getNotifyPriority());
notification.setVisibility(NotificationCompat.VISIBILITY_PUBLIC);
notification.setColor(NotificationCompat.COLOR_DEFAULT);
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 55212cd46..05d64ea3e 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
@@ -8,6 +8,7 @@ import androidx.annotation.NonNull;
import android.util.Log;
import de.danoeh.antennapod.core.preferences.SleepTimerPreferences;
+import io.reactivex.disposables.Disposable;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
@@ -57,7 +58,7 @@ public class PlaybackServiceTaskManager {
private ScheduledFuture<?> widgetUpdaterFuture;
private ScheduledFuture<?> sleepTimerFuture;
private volatile Future<List<FeedItem>> queueFuture;
- private volatile Future<?> chapterLoaderFuture;
+ private volatile Disposable chapterLoaderFuture;
private SleepTimer sleepTimer;
@@ -102,7 +103,7 @@ public class PlaybackServiceTaskManager {
private synchronized void loadQueue() {
if (!isQueueLoaderActive()) {
- queueFuture = schedExecutor.submit(DBReader::getQueue);
+ queueFuture = schedExecutor.submit(() -> DBReader.getQueue());
}
}
@@ -289,28 +290,19 @@ public class PlaybackServiceTaskManager {
}
}
- private synchronized void cancelChapterLoader() {
- if (isChapterLoaderActive()) {
- chapterLoaderFuture.cancel(true);
- }
- }
-
- private synchronized boolean isChapterLoaderActive() {
- return chapterLoaderFuture != null && !chapterLoaderFuture.isDone();
- }
-
/**
* Starts a new thread that loads the chapter marks from a playable object. If another chapter loader is already active,
* it will be cancelled first.
* On completion, the callback's onChapterLoaded method will be called.
*/
public synchronized void startChapterLoader(@NonNull final Playable media) {
- if (isChapterLoaderActive()) {
- cancelChapterLoader();
+ if (chapterLoaderFuture != null) {
+ chapterLoaderFuture.dispose();
+ chapterLoaderFuture = null;
}
if (media.getChapters() == null) {
- Completable.create(emitter -> {
+ chapterLoaderFuture = Completable.create(emitter -> {
media.loadChapterMarks(context);
emitter.onComplete();
})
@@ -330,7 +322,11 @@ public class PlaybackServiceTaskManager {
cancelWidgetUpdater();
disableSleepTimer();
cancelQueueLoader();
- cancelChapterLoader();
+
+ if (chapterLoaderFuture != null) {
+ chapterLoaderFuture.dispose();
+ chapterLoaderFuture = null;
+ }
}
/**
@@ -347,7 +343,7 @@ public class PlaybackServiceTaskManager {
if (Looper.myLooper() == Looper.getMainLooper()) {
// Called in main thread => ExoPlayer is used
// Run on ui thread even if called from schedExecutor
- Handler handler = new Handler();
+ Handler handler = new Handler(Looper.getMainLooper());
return () -> handler.post(runnable);
} else {
return runnable;
@@ -374,7 +370,7 @@ public class PlaybackServiceTaskManager {
if (UserPreferences.useExoplayer() && Looper.myLooper() == Looper.getMainLooper()) {
// Run callbacks in main thread so they can call ExoPlayer methods themselves
- this.handler = new Handler();
+ this.handler = new Handler(Looper.getMainLooper());
} else {
this.handler = null;
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/ssl/BackportCaCerts.java b/core/src/main/java/de/danoeh/antennapod/core/ssl/BackportCaCerts.java
new file mode 100644
index 000000000..720d6a9d9
--- /dev/null
+++ b/core/src/main/java/de/danoeh/antennapod/core/ssl/BackportCaCerts.java
@@ -0,0 +1,73 @@
+package de.danoeh.antennapod.core.ssl;
+
+public class BackportCaCerts {
+ public static final String SECTIGO_USER_TRUST = "-----BEGIN CERTIFICATE-----\n"
+ + "MIIF3jCCA8agAwIBAgIQAf1tMPyjylGoG7xkDjUDLTANBgkqhkiG9w0BAQwFADCB\n"
+ + "iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl\n"
+ + "cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV\n"
+ + "BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAw\n"
+ + "MjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMCVVMxEzARBgNV\n"
+ + "BAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU\n"
+ + "aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2Vy\n"
+ + "dGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK\n"
+ + "AoICAQCAEmUXNg7D2wiz0KxXDXbtzSfTTK1Qg2HiqiBNCS1kCdzOiZ/MPans9s/B\n"
+ + "3PHTsdZ7NygRK0faOca8Ohm0X6a9fZ2jY0K2dvKpOyuR+OJv0OwWIJAJPuLodMkY\n"
+ + "tJHUYmTbf6MG8YgYapAiPLz+E/CHFHv25B+O1ORRxhFnRghRy4YUVD+8M/5+bJz/\n"
+ + "Fp0YvVGONaanZshyZ9shZrHUm3gDwFA66Mzw3LyeTP6vBZY1H1dat//O+T23LLb2\n"
+ + "VN3I5xI6Ta5MirdcmrS3ID3KfyI0rn47aGYBROcBTkZTmzNg95S+UzeQc0PzMsNT\n"
+ + "79uq/nROacdrjGCT3sTHDN/hMq7MkztReJVni+49Vv4M0GkPGw/zJSZrM233bkf6\n"
+ + "c0Plfg6lZrEpfDKEY1WJxA3Bk1QwGROs0303p+tdOmw1XNtB1xLaqUkL39iAigmT\n"
+ + "Yo61Zs8liM2EuLE/pDkP2QKe6xJMlXzzawWpXhaDzLhn4ugTncxbgtNMs+1b/97l\n"
+ + "c6wjOy0AvzVVdAlJ2ElYGn+SNuZRkg7zJn0cTRe8yexDJtC/QV9AqURE9JnnV4ee\n"
+ + "UB9XVKg+/XRjL7FQZQnmWEIuQxpMtPAlR1n6BB6T1CZGSlCBst6+eLf8ZxXhyVeE\n"
+ + "Hg9j1uliutZfVS7qXMYoCAQlObgOK6nyTJccBz8NUvXt7y+CDwIDAQABo0IwQDAd\n"
+ + "BgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rIDZsswDgYDVR0PAQH/BAQDAgEGMA8G\n"
+ + "A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAFzUfA3P9wF9QZllDHPF\n"
+ + "Up/L+M+ZBn8b2kMVn54CVVeWFPFSPCeHlCjtHzoBN6J2/FNQwISbxmtOuowhT6KO\n"
+ + "VWKR82kV2LyI48SqC/3vqOlLVSoGIG1VeCkZ7l8wXEskEVX/JJpuXior7gtNn3/3\n"
+ + "ATiUFJVDBwn7YKnuHKsSjKCaXqeYalltiz8I+8jRRa8YFWSQEg9zKC7F4iRO/Fjs\n"
+ + "8PRF/iKz6y+O0tlFYQXBl2+odnKPi4w2r78NBc5xjeambx9spnFixdjQg3IM8WcR\n"
+ + "iQycE0xyNN+81XHfqnHd4blsjDwSXWXavVcStkNr/+XeTWYRUc+ZruwXtuhxkYze\n"
+ + "Sf7dNXGiFSeUHM9h4ya7b6NnJSFd5t0dCy5oGzuCr+yDZ4XUmFF0sbmZgIn/f3gZ\n"
+ + "XHlKYC6SQK5MNyosycdiyA5d9zZbyuAlJQG03RoHnHcAP9Dc1ew91Pq7P8yF1m9/\n"
+ + "qS3fuQL39ZeatTXaw2ewh0qpKJ4jjv9cJ2vhsE/zB+4ALtRZh8tSQZXq9EfX7mRB\n"
+ + "VXyNWQKV3WKdwrnuWih0hKWbt5DHDAff9Yk2dDLWKMGwsAvgnEzDHNb842m1R0aB\n"
+ + "L6KCq9NjRHDEjf8tM7qtj3u1cIiuPhnPQCjY/MiQu12ZIvVS5ljFH4gxQ+6IHdfG\n"
+ + "jjxDah2nGN59PRbxYvnKkKj9\n"
+ + "-----END CERTIFICATE-----\n";
+
+ public static final String COMODO = "-----BEGIN CERTIFICATE-----\n"
+ + "MIIF2DCCA8CgAwIBAgIQTKr5yttjb+Af907YWwOGnTANBgkqhkiG9w0BAQwFADCB\n"
+ + "hTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G\n"
+ + "A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNV\n"
+ + "BAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAwMTE5\n"
+ + "MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgT\n"
+ + "EkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR\n"
+ + "Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNh\n"
+ + "dGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR\n"
+ + "6FSS0gpWsawNJN3Fz0RndJkrN6N9I3AAcbxT38T6KhKPS38QVr2fcHK3YX/JSw8X\n"
+ + "pz3jsARh7v8Rl8f0hj4K+j5c+ZPmNHrZFGvnnLOFoIJ6dq9xkNfs/Q36nGz637CC\n"
+ + "9BR++b7Epi9Pf5l/tfxnQ3K9DADWietrLNPtj5gcFKt+5eNu/Nio5JIk2kNrYrhV\n"
+ + "/erBvGy2i/MOjZrkm2xpmfh4SDBF1a3hDTxFYPwyllEnvGfDyi62a+pGx8cgoLEf\n"
+ + "Zd5ICLqkTqnyg0Y3hOvozIFIQ2dOciqbXL1MGyiKXCJ7tKuY2e7gUYPDCUZObT6Z\n"
+ + "+pUX2nwzV0E8jVHtC7ZcryxjGt9XyD+86V3Em69FmeKjWiS0uqlWPc9vqv9JWL7w\n"
+ + "qP/0uK3pN/u6uPQLOvnoQ0IeidiEyxPx2bvhiWC4jChWrBQdnArncevPDt09qZah\n"
+ + "SL0896+1DSJMwBGB7FY79tOi4lu3sgQiUpWAk2nojkxl8ZEDLXB0AuqLZxUpaVIC\n"
+ + "u9ffUGpVRr+goyhhf3DQw6KqLCGqR84onAZFdr+CGCe01a60y1Dma/RMhnEw6abf\n"
+ + "Fobg2P9A3fvQQoh/ozM6LlweQRGBY84YcWsr7KaKtzFcOmpH4MN5WdYgGq/yapiq\n"
+ + "crxXStJLnbsQ/LBMQeXtHT1eKJ2czL+zUdqnR+WEUwIDAQABo0IwQDAdBgNVHQ4E\n"
+ + "FgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB\n"
+ + "/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAArx1UaEt65Ru2yyTUEUAJNMnMvl\n"
+ + "wFTPoCWOAvn9sKIN9SCYPBMtrFaisNZ+EZLpLrqeLppysb0ZRGxhNaKatBYSaVqM\n"
+ + "4dc+pBroLwP0rmEdEBsqpIt6xf4FpuHA1sj+nq6PK7o9mfjYcwlYRm6mnPTXJ9OV\n"
+ + "2jeDchzTc+CiR5kDOF3VSXkAKRzH7JsgHAckaVd4sjn8OoSgtZx8jb8uk2Intzna\n"
+ + "FxiuvTwJaP+EmzzV1gsD41eeFPfR60/IvYcjt7ZJQ3mFXLrrkguhxuhoqEwWsRqZ\n"
+ + "CuhTLJK7oQkYdQxlqHvLI7cawiiFwxv/0Cti76R7CZGYZ4wUAc1oBmpjIXUDgIiK\n"
+ + "boHGhfKppC3n9KUkEEeDys30jXlYsQab5xoq2Z0B15R97QNKyvDb6KkBPvVWmcke\n"
+ + "jkk9u+UJueBPSZI9FoJAzMxZxuY67RIuaTxslbH9qh17f4a+Hg4yRvv7E491f0yL\n"
+ + "S0Zj/gA0QHDBw7mh3aZw4gSzQbzpgJHqZJx64SIDqZxubw5lT2yHh17zbqD5daWb\n"
+ + "QOhTsiedSrnAdyGN/4fy3ryM7xfft0kL0fJuMAsaDk527RH89elWsn2/x20Kk4yl\n"
+ + "0MC2Hb46TpSi125sC8KKfPog88Tk5c0NqMuRkrF8hey1FGlmDoLnzc7ILaZRfyHB\n"
+ + "NVOFBkpdn627G190\n"
+ + "-----END CERTIFICATE-----";
+}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/ssl/BackportTrustManager.java b/core/src/main/java/de/danoeh/antennapod/core/ssl/BackportTrustManager.java
new file mode 100644
index 000000000..b8fe950b2
--- /dev/null
+++ b/core/src/main/java/de/danoeh/antennapod/core/ssl/BackportTrustManager.java
@@ -0,0 +1,58 @@
+package de.danoeh.antennapod.core.ssl;
+
+import android.util.Log;
+
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.TrustManagerFactory;
+import javax.net.ssl.X509TrustManager;
+import java.io.ByteArrayInputStream;
+import java.nio.charset.Charset;
+import java.security.KeyStore;
+import java.security.KeyStoreException;
+import java.security.NoSuchAlgorithmException;
+import java.security.cert.CertificateFactory;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * SSL trust manager that allows old Android systems to use modern certificates.
+ */
+public class BackportTrustManager {
+ private static final String TAG = "BackportTrustManager";
+
+ private static X509TrustManager getSystemTrustManager(KeyStore keystore) {
+ TrustManagerFactory factory;
+ try {
+ factory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
+ factory.init(keystore);
+ for (TrustManager manager : factory.getTrustManagers()) {
+ if (manager instanceof X509TrustManager) {
+ return (X509TrustManager) manager;
+ }
+ }
+ } catch (NoSuchAlgorithmException | KeyStoreException e) {
+ e.printStackTrace();
+ }
+ throw new IllegalStateException("Unexpected default trust managers");
+ }
+
+ public static X509TrustManager create() {
+ try {
+ KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
+ keystore.load(null); // Clear
+ CertificateFactory cf = CertificateFactory.getInstance("X.509");
+ keystore.setCertificateEntry("BACKPORT_COMODO_ROOT_CA", cf.generateCertificate(
+ new ByteArrayInputStream(BackportCaCerts.COMODO.getBytes(Charset.forName("UTF-8")))));
+ keystore.setCertificateEntry("SECTIGO_USER_TRUST_CA", cf.generateCertificate(
+ new ByteArrayInputStream(BackportCaCerts.SECTIGO_USER_TRUST.getBytes(Charset.forName("UTF-8")))));
+
+ List<X509TrustManager> managers = new ArrayList<>();
+ managers.add(getSystemTrustManager(keystore));
+ managers.add(getSystemTrustManager(null));
+ return new CompositeX509TrustManager(managers);
+ } catch (Exception e) {
+ Log.e(TAG, Log.getStackTraceString(e));
+ return null;
+ }
+ }
+}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/ssl/CompositeX509TrustManager.java b/core/src/main/java/de/danoeh/antennapod/core/ssl/CompositeX509TrustManager.java
new file mode 100644
index 000000000..7af96a492
--- /dev/null
+++ b/core/src/main/java/de/danoeh/antennapod/core/ssl/CompositeX509TrustManager.java
@@ -0,0 +1,60 @@
+package de.danoeh.antennapod.core.ssl;
+
+import javax.net.ssl.X509TrustManager;
+import java.security.cert.CertificateException;
+import java.security.cert.X509Certificate;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * Represents an ordered list of {@link X509TrustManager}s with additive trust. If any one of the composed managers
+ * trusts a certificate chain, then it is trusted by the composite manager.
+ * Based on https://stackoverflow.com/a/16229909
+ */
+public class CompositeX509TrustManager implements X509TrustManager {
+ private final List<X509TrustManager> trustManagers;
+
+ public CompositeX509TrustManager(List<X509TrustManager> trustManagers) {
+ this.trustManagers = trustManagers;
+ }
+
+ @Override
+ public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
+ CertificateException reason = null;
+ for (X509TrustManager trustManager : trustManagers) {
+ try {
+ trustManager.checkClientTrusted(chain, authType);
+ return; // someone trusts them. success!
+ } catch (CertificateException e) {
+ // maybe someone else will trust them
+ reason = e;
+ }
+ }
+ throw reason;
+ }
+
+ @Override
+ public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
+ CertificateException reason = null;
+ for (X509TrustManager trustManager : trustManagers) {
+ try {
+ trustManager.checkServerTrusted(chain, authType);
+ return; // someone trusts them. success!
+ } catch (CertificateException e) {
+ // maybe someone else will trust them
+ reason = e;
+ }
+ }
+ throw reason;
+ }
+
+ @Override
+ public X509Certificate[] getAcceptedIssuers() {
+ List<X509Certificate> certificates = new ArrayList<>();
+ for (X509TrustManager trustManager : trustManagers) {
+ certificates.addAll(Arrays.asList(trustManager.getAcceptedIssuers()));
+ }
+ return certificates.toArray(new X509Certificate[0]);
+ }
+}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/ssl/NoV1SslSocketFactory.java b/core/src/main/java/de/danoeh/antennapod/core/ssl/NoV1SslSocketFactory.java
new file mode 100644
index 000000000..96a42f22d
--- /dev/null
+++ b/core/src/main/java/de/danoeh/antennapod/core/ssl/NoV1SslSocketFactory.java
@@ -0,0 +1,100 @@
+package de.danoeh.antennapod.core.ssl;
+
+import de.danoeh.antennapod.core.util.Flavors;
+
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLSocket;
+import javax.net.ssl.SSLSocketFactory;
+import javax.net.ssl.TrustManager;
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.Socket;
+import java.security.GeneralSecurityException;
+
+/**
+ * SSLSocketFactory that does not use TLS 1.0
+ * This fixes issues with old Android versions that abort if the server does not know TLS 1.0
+ */
+public class NoV1SslSocketFactory extends SSLSocketFactory {
+ private SSLSocketFactory factory;
+
+ public NoV1SslSocketFactory(TrustManager trustManager) {
+ try {
+ SSLContext sslContext;
+
+ if (Flavors.FLAVOR == Flavors.FREE) {
+ // Free flavor (bundles modern conscrypt): support for TLSv1.3 is guaranteed.
+ sslContext = SSLContext.getInstance("TLSv1.3");
+ } else {
+ // Play flavor (security provider can vary): only TLSv1.2 is guaranteed.
+ sslContext = SSLContext.getInstance("TLSv1.2");
+ }
+
+ sslContext.init(null, new TrustManager[] {trustManager}, null);
+ factory = sslContext.getSocketFactory();
+ } catch (GeneralSecurityException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public String[] getDefaultCipherSuites() {
+ return factory.getDefaultCipherSuites();
+ }
+
+ @Override
+ public String[] getSupportedCipherSuites() {
+ return factory.getSupportedCipherSuites();
+ }
+
+ public Socket createSocket() throws IOException {
+ SSLSocket result = (SSLSocket) factory.createSocket();
+ configureSocket(result);
+ return result;
+ }
+
+ public Socket createSocket(String var1, int var2) throws IOException {
+ SSLSocket result = (SSLSocket) factory.createSocket(var1, var2);
+ configureSocket(result);
+ return result;
+ }
+
+ public Socket createSocket(Socket var1, String var2, int var3, boolean var4) throws IOException {
+ SSLSocket result = (SSLSocket) factory.createSocket(var1, var2, var3, var4);
+ configureSocket(result);
+ return result;
+ }
+
+ public Socket createSocket(InetAddress var1, int var2) throws IOException {
+ SSLSocket result = (SSLSocket) factory.createSocket(var1, var2);
+ configureSocket(result);
+ return result;
+ }
+
+ public Socket createSocket(String var1, int var2, InetAddress var3, int var4) throws IOException {
+ SSLSocket result = (SSLSocket) factory.createSocket(var1, var2, var3, var4);
+ configureSocket(result);
+ return result;
+ }
+
+ public Socket createSocket(InetAddress var1, int var2, InetAddress var3, int var4) throws IOException {
+ SSLSocket result = (SSLSocket) factory.createSocket(var1, var2, var3, var4);
+ configureSocket(result);
+ return result;
+ }
+
+ private void configureSocket(SSLSocket s) {
+ if (Flavors.FLAVOR == Flavors.FREE) {
+ // Free flavor (bundles modern conscrypt): TLSv1.3 and modern cipher suites are
+ // guaranteed. Protocols older than TLSv1.2 are now deprecated and can be disabled.
+ s.setEnabledProtocols(new String[] { "TLSv1.3", "TLSv1.2" });
+ } else {
+ // Play flavor (security provider can vary): only TLSv1.2 is guaranteed, supported
+ // cipher suites may vary. Old protocols might be necessary to keep things working.
+
+ // TLS 1.0 is enabled by default on some old systems, which causes connection errors.
+ // This disables that.
+ s.setEnabledProtocols(new String[] { "TLSv1.2", "TLSv1.1", "TLSv1" });
+ }
+ }
+} \ No newline at end of file
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java
index 0de67b306..892254507 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java
@@ -19,6 +19,7 @@ import de.danoeh.antennapod.core.feed.Feed;
import de.danoeh.antennapod.core.feed.FeedItem;
import de.danoeh.antennapod.core.feed.FeedMedia;
import de.danoeh.antennapod.core.feed.FeedPreferences;
+import de.danoeh.antennapod.core.feed.SubscriptionsFilter;
import de.danoeh.antennapod.core.preferences.UserPreferences;
import de.danoeh.antennapod.core.service.download.DownloadStatus;
import de.danoeh.antennapod.core.util.LongIntMap;
@@ -143,6 +144,7 @@ public final class DBReader {
Feed feed = feedIndex.get(item.getFeedId());
if (feed == null) {
Log.w(TAG, "No match found for item with ID " + item.getId() + ". Feed ID was " + item.getFeedId());
+ feed = new Feed("", "", "Error: Item without feed");
}
item.setFeed(feed);
}
@@ -744,6 +746,7 @@ public final class DBReader {
long episodesStarted = 0;
long episodesStartedIncludingMarked = 0;
long totalDownloadSize = 0;
+ long episodesDownloadCount = 0;
List<FeedItem> items = getFeed(feed.getId()).getItems();
for (FeedItem item : items) {
FeedMedia media = item.getMedia();
@@ -771,13 +774,14 @@ public final class DBReader {
if (media.isDownloaded()) {
totalDownloadSize = totalDownloadSize + media.getSize();
+ episodesDownloadCount++;
}
episodes++;
}
feedTime.add(new StatisticsItem(
feed, feedTotalTime, feedPlayedTime, feedPlayedTimeCountAll, episodes,
- episodesStarted, episodesStartedIncludingMarked, totalDownloadSize));
+ episodesStarted, episodesStartedIncludingMarked, totalDownloadSize, episodesDownloadCount));
}
adapter.close();
@@ -794,6 +798,7 @@ public final class DBReader {
Log.d(TAG, "getNavDrawerData() called with: " + "");
PodDBAdapter adapter = PodDBAdapter.getInstance();
adapter.open();
+
List<Feed> feeds = getFeedList(adapter);
long[] feedIds = new long[feeds.size()];
for (int i = 0; i < feeds.size(); i++) {
@@ -801,15 +806,8 @@ public final class DBReader {
}
final LongIntMap feedCounters = adapter.getFeedCounters(feedIds);
- int feedFilter = UserPreferences.getFeedFilter();
- if (feedFilter == UserPreferences.FEED_FILTER_COUNTER_ZERO) {
- for (int i = feeds.size() - 1; i >= 0; i--) {
- if (feedCounters.get(feeds.get(i).getId()) <= 0) {
- feedCounters.delete(feeds.get(i).getId());
- feeds.remove(i);
- }
- }
- }
+ SubscriptionsFilter subscriptionsFilter = UserPreferences.getSubscriptionsFilter();
+ feeds = subscriptionsFilter.filter(getFeedList(adapter), feedCounters);
Comparator<Feed> comparator;
int feedOrder = UserPreferences.getFeedOrder();
@@ -854,24 +852,11 @@ public final class DBReader {
}
};
} else {
+ final Map<Long, Long> recentPubDates = adapter.getMostRecentItemDates();
comparator = (lhs, rhs) -> {
- if (lhs.getItems() == null || lhs.getItems().size() == 0) {
- List<FeedItem> items = DBReader.getFeedItemList(lhs);
- lhs.setItems(items);
- }
- if (rhs.getItems() == null || rhs.getItems().size() == 0) {
- List<FeedItem> items = DBReader.getFeedItemList(rhs);
- rhs.setItems(items);
- }
- if (lhs.getMostRecentItem() == null) {
- return 1;
- } else if (rhs.getMostRecentItem() == null) {
- return -1;
- } else {
- Date d1 = lhs.getMostRecentItem().getPubDate();
- Date d2 = rhs.getMostRecentItem().getPubDate();
- return d2.compareTo(d1);
- }
+ long dateLhs = recentPubDates.containsKey(lhs.getId()) ? recentPubDates.get(lhs.getId()) : 0;
+ long dateRhs = recentPubDates.containsKey(rhs.getId()) ? recentPubDates.get(rhs.getId()) : 0;
+ return Long.compare(dateRhs, dateLhs);
};
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java
index 477a39968..c059e696a 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java
@@ -263,7 +263,6 @@ public final class DBTasks {
EventBus.getDefault().post(new MessageEvent(context.getString(R.string.error_file_not_found)));
}
- @VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE)
public static List<? extends FeedItem> enqueueFeedItemsToDownload(final Context context,
List<? extends FeedItem> items) throws InterruptedException, ExecutionException {
List<FeedItem> itemsToEnqueue = new ArrayList<>();
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DatabaseExporter.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DatabaseExporter.java
index 234c01b20..271babc6e 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/DatabaseExporter.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DatabaseExporter.java
@@ -5,6 +5,7 @@ import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.net.Uri;
import android.os.ParcelFileDescriptor;
+import android.text.format.Formatter;
import android.util.Log;
import de.danoeh.antennapod.core.R;
import org.apache.commons.io.FileUtils;
@@ -53,7 +54,16 @@ public class DatabaseExporter {
if (currentDB.exists()) {
src = new FileInputStream(currentDB).getChannel();
dst = outFileStream.getChannel();
- dst.transferFrom(src, 0, src.size());
+ long srcSize = src.size();
+ dst.transferFrom(src, 0, srcSize);
+
+ long newDstSize = dst.size();
+ if (newDstSize != srcSize) {
+ throw new IOException(String.format(
+ "Unable to write entire database. Expected to write %s, but wrote %s.",
+ Formatter.formatShortFileSize(context, srcSize),
+ Formatter.formatShortFileSize(context, newDstSize)));
+ }
} else {
throw new IOException("Can not access current database");
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java b/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java
index 4c594783a..935b06cd6 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java
@@ -21,9 +21,11 @@ import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
-import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
import java.util.List;
import java.util.Locale;
+import java.util.Map;
import java.util.Set;
import de.danoeh.antennapod.core.feed.Chapter;
@@ -609,6 +611,11 @@ public class PodDBAdapter {
* @return the id of the entry
*/
private long setFeedItem(FeedItem item, boolean saveFeed) {
+ if (item.getId() == 0 && item.getPubDate() == null) {
+ Log.e(TAG, "Newly saved item has no pubDate. Using current date as pubDate");
+ item.setPubDate(new Date());
+ }
+
ContentValues values = new ContentValues();
values.put(KEY_TITLE, item.getTitle());
values.put(KEY_LINK, item.getLink());
@@ -1217,6 +1224,25 @@ public class PodDBAdapter {
return conditionalFeedCounterRead(whereRead, feedIds);
}
+ public final Map<Long, Long> getMostRecentItemDates() {
+ final String query = "SELECT " + KEY_FEED + ","
+ + " MAX(" + TABLE_NAME_FEED_ITEMS + "." + KEY_PUBDATE + ") AS most_recent_pubdate"
+ + " FROM " + TABLE_NAME_FEED_ITEMS
+ + " GROUP BY " + KEY_FEED;
+
+ Cursor c = db.rawQuery(query, null);
+ Map<Long, Long> result = new HashMap<>();
+ if (c.moveToFirst()) {
+ do {
+ long feedId = c.getLong(0);
+ long date = c.getLong(1);
+ result.put(feedId, date);
+ } while (c.moveToNext());
+ }
+ c.close();
+ return result;
+ }
+
public final int getNumberOfDownloadedEpisodes() {
final String query = "SELECT COUNT(DISTINCT " + KEY_ID + ") AS count FROM " + TABLE_NAME_FEED_MEDIA +
" WHERE " + KEY_DOWNLOADED + " > 0";
@@ -1234,12 +1260,17 @@ public class PodDBAdapter {
* Uses DatabaseUtils to escape a search query and removes ' at the
* beginning and the end of the string returned by the escape method.
*/
- private String prepareSearchQuery(String query) {
- StringBuilder builder = new StringBuilder();
- DatabaseUtils.appendEscapedSQLString(builder, query);
- builder.deleteCharAt(0);
- builder.deleteCharAt(builder.length() - 1);
- return builder.toString();
+ private String[] prepareSearchQuery(String query) {
+ String[] queryWords = query.split("\\s+");
+ for (int i = 0; i < queryWords.length; ++i) {
+ StringBuilder builder = new StringBuilder();
+ DatabaseUtils.appendEscapedSQLString(builder, queryWords[i]);
+ builder.deleteCharAt(0);
+ builder.deleteCharAt(builder.length() - 1);
+ queryWords[i] = builder.toString();
+ }
+
+ return queryWords;
}
/**
@@ -1249,7 +1280,7 @@ public class PodDBAdapter {
* @return A cursor with all search results in SEL_FI_EXTRA selection.
*/
public Cursor searchItems(long feedID, String searchQuery) {
- String preparedQuery = prepareSearchQuery(searchQuery);
+ String[] queryWords = prepareSearchQuery(searchQuery);
String queryFeedId;
if (feedID != 0) {
@@ -1260,14 +1291,28 @@ public class PodDBAdapter {
queryFeedId = "1 = 1";
}
- String query = SELECT_FEED_ITEMS_AND_MEDIA_WITH_DESCRIPTION
- + " WHERE " + queryFeedId + " AND ("
- + KEY_DESCRIPTION + " LIKE '%" + preparedQuery + "%' OR "
- + KEY_CONTENT_ENCODED + " LIKE '%" + preparedQuery + "%' OR "
- + KEY_TITLE + " LIKE '%" + preparedQuery + "%'"
- + ") ORDER BY " + KEY_PUBDATE + " DESC "
- + "LIMIT 300";
- return db.rawQuery(query, null);
+ String queryStart = SELECT_FEED_ITEMS_AND_MEDIA_WITH_DESCRIPTION
+ + " WHERE " + queryFeedId + " AND (";
+ StringBuilder sb = new StringBuilder(queryStart);
+
+ for (int i = 0; i < queryWords.length; i++) {
+ sb
+ .append("(")
+ .append(KEY_DESCRIPTION + " LIKE '%").append(queryWords[i])
+ .append("%' OR ")
+ .append(KEY_CONTENT_ENCODED).append(" LIKE '%").append(queryWords[i])
+ .append("%' OR ")
+ .append(KEY_TITLE).append(" LIKE '%").append(queryWords[i])
+ .append("%') ");
+
+ if (i != queryWords.length - 1) {
+ sb.append("AND ");
+ }
+ }
+
+ sb.append(") ORDER BY " + KEY_PUBDATE + " DESC LIMIT 300");
+
+ return db.rawQuery(sb.toString(), null);
}
/**
@@ -1276,15 +1321,31 @@ public class PodDBAdapter {
* @return A cursor with all search results in SEL_FI_EXTRA selection.
*/
public Cursor searchFeeds(String searchQuery) {
- String preparedQuery = prepareSearchQuery(searchQuery);
- String query = "SELECT * FROM " + TABLE_NAME_FEEDS + " WHERE "
- + KEY_TITLE + " LIKE '%" + preparedQuery + "%' OR "
- + KEY_CUSTOM_TITLE + " LIKE '%" + preparedQuery + "%' OR "
- + KEY_AUTHOR + " LIKE '%" + preparedQuery + "%' OR "
- + KEY_DESCRIPTION + " LIKE '%" + preparedQuery + "%' "
- + "ORDER BY " + KEY_TITLE + " ASC "
- + "LIMIT 300";
- return db.rawQuery(query, null);
+ String[] queryWords = prepareSearchQuery(searchQuery);
+
+ String queryStart = "SELECT * FROM " + TABLE_NAME_FEEDS + " WHERE ";
+ StringBuilder sb = new StringBuilder(queryStart);
+
+ for (int i = 0; i < queryWords.length; i++) {
+ sb
+ .append("(")
+ .append(KEY_TITLE).append(" LIKE '%").append(queryWords[i])
+ .append("%' OR ")
+ .append(KEY_CUSTOM_TITLE).append(" LIKE '%").append(queryWords[i])
+ .append("%' OR ")
+ .append(KEY_AUTHOR).append(" LIKE '%").append(queryWords[i])
+ .append("%' OR ")
+ .append(KEY_DESCRIPTION).append(" LIKE '%").append(queryWords[i])
+ .append("%') ");
+
+ if (i != queryWords.length - 1) {
+ sb.append("AND ");
+ }
+ }
+
+ sb.append("ORDER BY " + KEY_TITLE + " ASC LIMIT 300");
+
+ return db.rawQuery(sb.toString(), null);
}
/**
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/StatisticsItem.java b/core/src/main/java/de/danoeh/antennapod/core/storage/StatisticsItem.java
index f96af185b..18a5403a7 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/StatisticsItem.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/StatisticsItem.java
@@ -36,9 +36,14 @@ public class StatisticsItem {
*/
public final long totalDownloadSize;
+ /**
+ * Stores the number of episodes downloaded.
+ */
+ public final long episodesDownloadCount;
+
public StatisticsItem(Feed feed, long time, long timePlayed, long timePlayedCountAll,
long episodes, long episodesStarted, long episodesStartedIncludingMarked,
- long totalDownloadSize) {
+ long totalDownloadSize, long episodesDownloadCount) {
this.feed = feed;
this.time = time;
this.timePlayed = timePlayed;
@@ -47,5 +52,6 @@ public class StatisticsItem {
this.episodesStarted = episodesStarted;
this.episodesStartedIncludingMarked = episodesStartedIncludingMarked;
this.totalDownloadSize = totalDownloadSize;
+ this.episodesDownloadCount = episodesDownloadCount;
}
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/sync/SyncService.java b/core/src/main/java/de/danoeh/antennapod/core/sync/SyncService.java
index 4c89ebc19..1f5d9b75f 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/sync/SyncService.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/sync/SyncService.java
@@ -39,6 +39,7 @@ import de.danoeh.antennapod.core.sync.model.ISyncService;
import de.danoeh.antennapod.core.sync.model.SubscriptionChanges;
import de.danoeh.antennapod.core.sync.model.SyncServiceException;
import de.danoeh.antennapod.core.sync.model.UploadChangesResponse;
+import de.danoeh.antennapod.core.util.LongList;
import de.danoeh.antennapod.core.util.URLChecker;
import de.danoeh.antennapod.core.util.gui.NotificationUtils;
import io.reactivex.Completable;
@@ -456,7 +457,7 @@ public class SyncService extends Worker {
break;
}
}
-
+ LongList queueToBeRemoved = new LongList();
List<FeedItem> updatedItems = new ArrayList<>();
for (EpisodeAction action : mostRecentPlayAction.values()) {
FeedItem playItem = DBReader.getFeedItemByUrl(action.getPodcast(), action.getEpisode());
@@ -467,10 +468,12 @@ public class SyncService extends Worker {
if (playItem.getMedia().hasAlmostEnded()) {
Log.d(TAG, "Marking as played");
playItem.setPlayed(true);
+ queueToBeRemoved.add(playItem.getId());
}
updatedItems.add(playItem);
}
}
+ DBWriter.removeQueueItem(getApplicationContext(), false, queueToBeRemoved.toArray());
DBWriter.setItemList(updatedItems);
}
@@ -491,7 +494,7 @@ public class SyncService extends Worker {
PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(),
R.id.pending_intent_sync_error, intent, PendingIntent.FLAG_UPDATE_CURRENT);
Notification notification = new NotificationCompat.Builder(getApplicationContext(),
- NotificationUtils.CHANNEL_ID_ERROR)
+ NotificationUtils.CHANNEL_ID_SYNC_ERROR)
.setContentTitle(getApplicationContext().getString(R.string.gpodnetsync_error_title))
.setContentText(description)
.setContentIntent(pendingIntent)
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 a9e46e42c..8cca2f28f 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
@@ -2,9 +2,12 @@ package de.danoeh.antennapod.core.util;
import android.content.Context;
import android.net.ConnectivityManager;
+import android.net.Network;
+import android.net.NetworkCapabilities;
import android.net.NetworkInfo;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
+import android.os.Build;
import androidx.core.net.ConnectivityManagerCompat;
import android.text.TextUtils;
import android.util.Log;
@@ -29,65 +32,65 @@ import okhttp3.Response;
public class NetworkUtils {
private NetworkUtils(){}
- private static final String TAG = NetworkUtils.class.getSimpleName();
-
- private static Context context;
-
- public static void init(Context context) {
- NetworkUtils.context = context;
- }
-
- /**
- * Returns true if the device is connected to Wi-Fi and the Wi-Fi filter for
- * automatic downloads is disabled or the device is connected to a Wi-Fi
- * network that is on the 'selected networks' list of the Wi-Fi filter for
- * automatic downloads and false otherwise.
- * */
- public static boolean autodownloadNetworkAvailable() {
- ConnectivityManager cm = (ConnectivityManager) context
- .getSystemService(Context.CONNECTIVITY_SERVICE);
- NetworkInfo networkInfo = cm.getActiveNetworkInfo();
- if (networkInfo != null) {
- if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
- Log.d(TAG, "Device is connected to Wi-Fi");
- if (networkInfo.isConnected()) {
- if (!UserPreferences.isEnableAutodownloadWifiFilter()) {
- Log.d(TAG, "Auto-dl filter is disabled");
- return true;
- } else {
- WifiManager wm = (WifiManager) context.getApplicationContext()
- .getSystemService(Context.WIFI_SERVICE);
- WifiInfo wifiInfo = wm.getConnectionInfo();
- List<String> selectedNetworks = Arrays
- .asList(UserPreferences
- .getAutodownloadSelectedNetworks());
- if (selectedNetworks.contains(Integer.toString(wifiInfo
- .getNetworkId()))) {
- Log.d(TAG, "Current network is on the selected networks list");
- return true;
- }
- }
- }
- } else if (networkInfo.getType() == ConnectivityManager.TYPE_ETHERNET) {
- Log.d(TAG, "Device is connected to Ethernet");
- if (networkInfo.isConnected()) {
- return true;
- }
- } else {
- if (!UserPreferences.isAllowMobileAutoDownload()) {
- Log.d(TAG, "Auto Download not enabled on Mobile");
- return false;
- }
- if (networkInfo.isRoaming()) {
- Log.d(TAG, "Roaming on foreign network");
- return false;
- }
- return true;
- }
- }
- Log.d(TAG, "Network for auto-dl is not available");
- return false;
- }
+ private static final String TAG = NetworkUtils.class.getSimpleName();
+
+ private static Context context;
+
+ public static void init(Context context) {
+ NetworkUtils.context = context;
+ }
+
+ /**
+ * Returns true if the device is connected to Wi-Fi and the Wi-Fi filter for
+ * automatic downloads is disabled or the device is connected to a Wi-Fi
+ * network that is on the 'selected networks' list of the Wi-Fi filter for
+ * automatic downloads and false otherwise.
+ * */
+ public static boolean autodownloadNetworkAvailable() {
+ ConnectivityManager cm = (ConnectivityManager) context
+ .getSystemService(Context.CONNECTIVITY_SERVICE);
+ NetworkInfo networkInfo = cm.getActiveNetworkInfo();
+ if (networkInfo != null) {
+ if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
+ Log.d(TAG, "Device is connected to Wi-Fi");
+ if (networkInfo.isConnected()) {
+ if (!UserPreferences.isEnableAutodownloadWifiFilter()) {
+ Log.d(TAG, "Auto-dl filter is disabled");
+ return true;
+ } else {
+ WifiManager wm = (WifiManager) context.getApplicationContext()
+ .getSystemService(Context.WIFI_SERVICE);
+ WifiInfo wifiInfo = wm.getConnectionInfo();
+ List<String> selectedNetworks = Arrays
+ .asList(UserPreferences
+ .getAutodownloadSelectedNetworks());
+ if (selectedNetworks.contains(Integer.toString(wifiInfo
+ .getNetworkId()))) {
+ Log.d(TAG, "Current network is on the selected networks list");
+ return true;
+ }
+ }
+ }
+ } else if (networkInfo.getType() == ConnectivityManager.TYPE_ETHERNET) {
+ Log.d(TAG, "Device is connected to Ethernet");
+ if (networkInfo.isConnected()) {
+ return true;
+ }
+ } else {
+ if (!UserPreferences.isAllowMobileAutoDownload()) {
+ Log.d(TAG, "Auto Download not enabled on Mobile");
+ return false;
+ }
+ if (networkInfo.isRoaming()) {
+ Log.d(TAG, "Roaming on foreign network");
+ return false;
+ }
+ return true;
+ }
+ }
+ Log.d(TAG, "Network for auto-dl is not available");
+ return false;
+ }
public static boolean networkAvailable() {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
@@ -96,7 +99,7 @@ public class NetworkUtils {
}
public static boolean isEpisodeDownloadAllowed() {
- return UserPreferences.isAllowMobileEpisodeDownload() || !NetworkUtils.isNetworkMetered();
+ return UserPreferences.isAllowMobileEpisodeDownload() || !NetworkUtils.isNetworkRestricted();
}
public static boolean isEpisodeHeadDownloadAllowed() {
@@ -106,22 +109,53 @@ public class NetworkUtils {
}
public static boolean isImageAllowed() {
- return UserPreferences.isAllowMobileImages() || !NetworkUtils.isNetworkMetered();
+ return UserPreferences.isAllowMobileImages() || !NetworkUtils.isNetworkRestricted();
}
public static boolean isStreamingAllowed() {
- return UserPreferences.isAllowMobileStreaming() || !NetworkUtils.isNetworkMetered();
+ return UserPreferences.isAllowMobileStreaming() || !NetworkUtils.isNetworkRestricted();
}
public static boolean isFeedRefreshAllowed() {
- return UserPreferences.isAllowMobileFeedRefresh() || !NetworkUtils.isNetworkMetered();
+ return UserPreferences.isAllowMobileFeedRefresh() || !NetworkUtils.isNetworkRestricted();
+ }
+
+ public static boolean isNetworkRestricted() {
+ return isNetworkMetered() || isNetworkCellular();
}
- private static boolean isNetworkMetered() {
- ConnectivityManager connManager = (ConnectivityManager) context
- .getSystemService(Context.CONNECTIVITY_SERVICE);
+ private static boolean isNetworkMetered() {
+ ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
return ConnectivityManagerCompat.isActiveNetworkMetered(connManager);
- }
+ }
+
+ private static boolean isNetworkCellular() {
+ ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
+ if (Build.VERSION.SDK_INT >= 23) {
+ Network network = connManager.getActiveNetwork();
+ if (network == null) {
+ return false; // Nothing connected
+ }
+ NetworkInfo info = connManager.getNetworkInfo(network);
+ if (info == null) {
+ return true; // Better be safe than sorry
+ }
+ NetworkCapabilities capabilities = connManager.getNetworkCapabilities(network);
+ if (capabilities == null) {
+ return true; // Better be safe than sorry
+ }
+ return capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR);
+ } else {
+ // if the default network is a VPN,
+ // this method will return the NetworkInfo for one of its underlying networks
+ NetworkInfo info = connManager.getActiveNetworkInfo();
+ if (info == null) {
+ return false; // Nothing connected
+ }
+ //noinspection deprecation
+ return info.getType() == ConnectivityManager.TYPE_MOBILE;
+ }
+ }
/**
* Returns the SSID of the wifi connection, or <code>null</code> if there is no wifi.
@@ -135,7 +169,7 @@ public class NetworkUtils {
return null;
}
- public static Single<Long> getFeedMediaSizeObservable(FeedMedia media) {
+ public static Single<Long> getFeedMediaSizeObservable(FeedMedia media) {
return Single.create((SingleOnSubscribe<Long>) emitter -> {
if (!NetworkUtils.isEpisodeHeadDownloadAllowed()) {
emitter.onSuccess(0L);
@@ -188,7 +222,7 @@ public class NetworkUtils {
DBWriter.setFeedMedia(media);
})
.subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread());
+ .observeOn(AndroidSchedulers.mainThread());
}
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/comparator/FeedItemPubdateComparator.java b/core/src/main/java/de/danoeh/antennapod/core/util/comparator/FeedItemPubdateComparator.java
index 51fe2da78..ad81a1d17 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/comparator/FeedItemPubdateComparator.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/comparator/FeedItemPubdateComparator.java
@@ -4,16 +4,20 @@ import java.util.Comparator;
import de.danoeh.antennapod.core.feed.FeedItem;
-/** Compares the pubDate of two FeedItems for sorting*/
+/**
+ * Compares the pubDate of two FeedItems for sorting.
+ */
public class FeedItemPubdateComparator implements Comparator<FeedItem> {
- /** Returns a new instance of this comparator in reverse order.
- public static FeedItemPubdateComparator newInstance() {
- FeedItemPubdateComparator
- }*/
- @Override
- public int compare(FeedItem lhs, FeedItem rhs) {
- return rhs.getPubDate().compareTo(lhs.getPubDate());
- }
+ /**
+ * Returns a new instance of this comparator in reverse order.
+ */
+ @Override
+ public int compare(FeedItem lhs, FeedItem rhs) {
+ if (rhs.getPubDate() == null || lhs.getPubDate() == null) {
+ return 0;
+ }
+ return rhs.getPubDate().compareTo(lhs.getPubDate());
+ }
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/exception/RxJavaErrorHandlerSetup.java b/core/src/main/java/de/danoeh/antennapod/core/util/exception/RxJavaErrorHandlerSetup.java
deleted file mode 100644
index 223104d2e..000000000
--- a/core/src/main/java/de/danoeh/antennapod/core/util/exception/RxJavaErrorHandlerSetup.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package de.danoeh.antennapod.core.util.exception;
-
-import android.util.Log;
-import io.reactivex.exceptions.UndeliverableException;
-import io.reactivex.plugins.RxJavaPlugins;
-
-public class RxJavaErrorHandlerSetup {
-
- private RxJavaErrorHandlerSetup() {
-
- }
-
- public static void setupRxJavaErrorHandler() {
- RxJavaPlugins.setErrorHandler(e -> {
- if (e instanceof UndeliverableException) {
- // Probably just disposed because the fragment was left
- Log.d("RxJavaErrorHandler", "Ignored exception: " + Log.getStackTraceString(e));
- return;
- }
- Thread.currentThread().getUncaughtExceptionHandler()
- .uncaughtException(Thread.currentThread(), e);
- });
- }
-}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/gui/NotificationUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/gui/NotificationUtils.java
index f546ca019..ddbe68938 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/gui/NotificationUtils.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/gui/NotificationUtils.java
@@ -14,6 +14,7 @@ public class NotificationUtils {
public static final String CHANNEL_ID_DOWNLOADING = "downloading";
public static final String CHANNEL_ID_PLAYING = "playing";
public static final String CHANNEL_ID_ERROR = "error";
+ public static final String CHANNEL_ID_SYNC_ERROR = "sync_error";
public static final String CHANNEL_ID_AUTO_DOWNLOAD = "auto_download";
public static void createChannels(Context context) {
@@ -27,6 +28,7 @@ public class NotificationUtils {
mNotificationManager.createNotificationChannel(createChannelDownloading(context));
mNotificationManager.createNotificationChannel(createChannelPlaying(context));
mNotificationManager.createNotificationChannel(createChannelError(context));
+ mNotificationManager.createNotificationChannel(createChannelSyncError(context));
mNotificationManager.createNotificationChannel(createChannelAutoDownload(context));
}
}
@@ -66,6 +68,14 @@ public class NotificationUtils {
}
@RequiresApi(api = Build.VERSION_CODES.O)
+ private static NotificationChannel createChannelSyncError(Context c) {
+ NotificationChannel notificationChannel = new NotificationChannel(CHANNEL_ID_SYNC_ERROR,
+ c.getString(R.string.notification_channel_sync_error), NotificationManager.IMPORTANCE_HIGH);
+ notificationChannel.setDescription(c.getString(R.string.notification_channel_sync_error_description));
+ return notificationChannel;
+ }
+
+ @RequiresApi(api = Build.VERSION_CODES.O)
private static NotificationChannel createChannelAutoDownload(Context c) {
NotificationChannel mChannel = new NotificationChannel(CHANNEL_ID_AUTO_DOWNLOAD,
c.getString(R.string.notification_channel_auto_download), NotificationManager.IMPORTANCE_DEFAULT);
diff --git a/core/src/main/res/color/filter_dialog_background_dark.xml b/core/src/main/res/color/filter_dialog_background_dark.xml
deleted file mode 100644
index 3df2a80dc..000000000
--- a/core/src/main/res/color/filter_dialog_background_dark.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:color="@color/accent_dark" android:state_checked="true"/>
- <item android:color="@color/dialog_filter_inactive_dark" />
-</selector> \ No newline at end of file
diff --git a/core/src/main/res/color/filter_dialog_background_light.xml b/core/src/main/res/color/filter_dialog_background_light.xml
deleted file mode 100644
index 930325629..000000000
--- a/core/src/main/res/color/filter_dialog_background_light.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:color="@color/accent_light" android:state_checked="true" />
- <item android:color="@color/dialog_filter_inactive_light" />
-</selector> \ No newline at end of file
diff --git a/core/src/main/res/drawable-hdpi/ic_notification.png b/core/src/main/res/drawable-hdpi/ic_notification.png
new file mode 100644
index 000000000..e0b0f7f18
--- /dev/null
+++ b/core/src/main/res/drawable-hdpi/ic_notification.png
Binary files differ
diff --git a/core/src/main/res/drawable-mdpi/ic_notification.png b/core/src/main/res/drawable-mdpi/ic_notification.png
new file mode 100644
index 000000000..42943c7f0
--- /dev/null
+++ b/core/src/main/res/drawable-mdpi/ic_notification.png
Binary files differ
diff --git a/core/src/main/res/drawable-nodpi/ic_launcher_foreground_no_finish.png b/core/src/main/res/drawable-nodpi/ic_launcher_foreground_no_finish.png
new file mode 100644
index 000000000..33a5b3fe4
--- /dev/null
+++ b/core/src/main/res/drawable-nodpi/ic_launcher_foreground_no_finish.png
Binary files differ
diff --git a/core/src/main/res/drawable-nodpi/teaser.png b/core/src/main/res/drawable-nodpi/teaser.png
index 3b5261b28..d339ed512 100644
--- a/core/src/main/res/drawable-nodpi/teaser.png
+++ b/core/src/main/res/drawable-nodpi/teaser.png
Binary files differ
diff --git a/core/src/main/res/drawable-xhdpi/ic_notification.png b/core/src/main/res/drawable-xhdpi/ic_notification.png
new file mode 100644
index 000000000..2c633ba6b
--- /dev/null
+++ b/core/src/main/res/drawable-xhdpi/ic_notification.png
Binary files differ
diff --git a/core/src/main/res/drawable-xxhdpi/ic_notification.png b/core/src/main/res/drawable-xxhdpi/ic_notification.png
new file mode 100644
index 000000000..16cc2aaf4
--- /dev/null
+++ b/core/src/main/res/drawable-xxhdpi/ic_notification.png
Binary files differ
diff --git a/core/src/main/res/drawable-xxxhdpi/ic_notification.png b/core/src/main/res/drawable-xxxhdpi/ic_notification.png
new file mode 100644
index 000000000..fbbb94cd0
--- /dev/null
+++ b/core/src/main/res/drawable-xxxhdpi/ic_notification.png
Binary files differ
diff --git a/core/src/main/res/drawable/bg_splash.xml b/core/src/main/res/drawable/bg_splash.xml
index 32241ec22..929fe411a 100644
--- a/core/src/main/res/drawable/bg_splash.xml
+++ b/core/src/main/res/drawable/bg_splash.xml
@@ -1,13 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
- <item
- android:drawable="@color/ic_launcher_background"/>
+ <item>
+ <shape android:shape="rectangle" >
+ <gradient
+ android:angle="-90"
+ android:startColor="@color/icon_background_gradient_start"
+ android:endColor="@color/icon_background_gradient_end" />
+ </shape>
+ </item>
<item>
<bitmap
android:gravity="center"
- android:src="@mipmap/ic_launcher_foreground"/>
+ android:src="@drawable/ic_launcher_foreground_no_finish"/>
</item>
</layer-list> \ No newline at end of file
diff --git a/core/src/main/res/drawable/filter_dialog_background_dark.xml b/core/src/main/res/drawable/filter_dialog_background_dark.xml
new file mode 100644
index 000000000..9ea827147
--- /dev/null
+++ b/core/src/main/res/drawable/filter_dialog_background_dark.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:drawable="@color/accent_dark" android:state_checked="true"/>
+ <item android:drawable="@color/dialog_filter_inactive_dark" />
+</selector> \ No newline at end of file
diff --git a/core/src/main/res/drawable/filter_dialog_background_light.xml b/core/src/main/res/drawable/filter_dialog_background_light.xml
new file mode 100644
index 000000000..e0a80737c
--- /dev/null
+++ b/core/src/main/res/drawable/filter_dialog_background_light.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:drawable="@color/accent_light" android:state_checked="true" />
+ <item android:drawable="@color/dialog_filter_inactive_light" />
+</selector> \ No newline at end of file
diff --git a/core/src/main/res/drawable/ic_antenna.xml b/core/src/main/res/drawable/ic_antenna.xml
deleted file mode 100644
index 9fcfab000..000000000
--- a/core/src/main/res/drawable/ic_antenna.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<vector android:height="24dp" android:viewportHeight="12.7"
- android:viewportWidth="12.7" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
- <path android:fillAlpha="1" android:fillColor="#ffffff"
- android:pathData="m6.0631,0.4728v0.3274c1.1582,0.0249 1.911,0.4225 2.5991,1.1189 0.6881,0.6964 1.0924,1.7043 1.1125,2.9246h0.3211c0.0078,-1.3792 -0.5291,-2.4905 -1.1981,-3.1576C8.2288,1.019 7.3415,0.4734 6.0631,0.4728ZM6.0631,1.4283v0.3453c0.859,0.0361 1.3465,0.2123 1.9398,0.8081 0.5933,0.5957 0.843,1.3669 0.8598,2.2621L9.2029,4.8438c-0.0088,-1.2333 -0.5414,-2.0907 -0.9568,-2.5047 -0.4154,-0.4139 -0.9948,-0.9065 -2.183,-0.9108zM6.0625,2.4323 L6.0631,2.7495c0.3968,0.007 0.8308,0.1395 1.2089,0.5642 0.3781,0.4247 0.495,1.0244 0.51,1.53h0.3255c-0.0016,-0.669 -0.2787,-1.3891 -0.6153,-1.747 -0.3366,-0.358 -0.7368,-0.6621 -1.4298,-0.6645zM6.0906,3.7766c-0.4059,0.0002 -0.7349,0.3294 -0.7347,0.7353 0.0001,0.2677 0.1459,0.5142 0.3804,0.6434l-3.0102,6.2227 0.5151,0.3351 0.607,-1.2485 5.3821,1.5453 0.083,0.1609 0.5732,-0.2508 -3.4927,-6.7397c0.2624,-0.1189 0.4311,-0.3802 0.4315,-0.6683 0.0002,-0.4059 -0.3287,-0.7352 -0.7347,-0.7353zM6.065,5.8631 L6.5929,6.8882 5.2882,7.4761zM6.6976,7.0918 L7.6065,8.8561 5.137,7.8016zM5.0259,8.0199 L7.611,9.1184 4.0314,10.0854zM7.8395,9.3086 L9.081,11.7201 4.1489,10.3069z"
- android:strokeAlpha="1" android:strokeColor="#00000000" android:strokeWidth="0.32680494"/>
-</vector>
diff --git a/core/src/main/res/drawable/ic_notifications_black.xml b/core/src/main/res/drawable/ic_notifications_black.xml
new file mode 100644
index 000000000..7009a6763
--- /dev/null
+++ b/core/src/main/res/drawable/ic_notifications_black.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0">
+ <path
+ android:fillColor="#FF000000"
+ android:pathData="M12,22c1.1,0 2,-0.9 2,-2h-4c0,1.1 0.89,2 2,2zM18,16v-5c0,-3.07 -1.64,-5.64 -4.5,-6.32L13.5,4c0,-0.83 -0.67,-1.5 -1.5,-1.5s-1.5,0.67 -1.5,1.5v0.68C7.63,5.36 6,7.92 6,11v5l-2,2v1h16v-1l-2,-2z"/>
+</vector>
diff --git a/core/src/main/res/drawable/ic_notifications_white.xml b/core/src/main/res/drawable/ic_notifications_white.xml
new file mode 100644
index 000000000..10239aadd
--- /dev/null
+++ b/core/src/main/res/drawable/ic_notifications_white.xml
@@ -0,0 +1,5 @@
+<vector android:height="24dp" android:tint="#FFFFFF"
+ android:viewportHeight="24.0" android:viewportWidth="24.0"
+ android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+ <path android:fillColor="#FFFFFFFF" android:pathData="M12,22c1.1,0 2,-0.9 2,-2h-4c0,1.1 0.89,2 2,2zM18,16v-5c0,-3.07 -1.64,-5.64 -4.5,-6.32L13.5,4c0,-0.83 -0.67,-1.5 -1.5,-1.5s-1.5,0.67 -1.5,1.5v0.68C7.63,5.36 6,7.92 6,11v5l-2,2v1h16v-1l-2,-2z"/>
+</vector>
diff --git a/core/src/main/res/drawable/notification_default_large_icon.xml b/core/src/main/res/drawable/notification_default_large_icon.xml
deleted file mode 100644
index 6da31b1bb..000000000
--- a/core/src/main/res/drawable/notification_default_large_icon.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
- android:viewportHeight="12.7"
- android:viewportWidth="12.7"
- android:height="64dp"
- android:width="64dp">
-
- <path
- android:fillColor="#ff007DBA"
- android:pathData="M 0,0 L 12.7,0 12.7,12.7 0,12.7 z"/>
-
- <path
- android:fillColor="#ffffffff"
- android:pathData="m5.7552,2.2412l0,0.2651c0.9377,0.0202 1.5471,0.342 2.1043,0.9059 0.5571,0.5639 0.8845,1.3798 0.9007,2.3678l0.2599,0C9.0264,4.6634 8.5918,3.7637 8.0502,3.2236 7.5085,2.6834 6.7902,2.2418 5.7552,2.2412ZM5.7552,3.0148l0,0.2796c0.6954,0.0292 1.0901,0.1719 1.5704,0.6542 0.4803,0.4823 0.6825,1.1066 0.6961,1.8314l0.2754,0c-0.0071,-0.9985 -0.4383,-1.6927 -0.7746,-2.0278 -0.3363,-0.3351 -0.8054,-0.734 -1.7673,-0.7374zM5.7547,3.8277 L5.7552,4.0845c0.3213,0.006 0.6726,0.1129 0.9788,0.4568 0.3061,0.3439 0.4008,0.8294 0.4129,1.2387l0.2635,0C7.4091,5.2384 7.1848,4.6554 6.9122,4.3656 6.6397,4.0758 6.3157,3.8296 5.7547,3.8277ZM5.7774,4.916c-0.3286,0.0001 -0.595,0.2667 -0.5948,0.5953 0.0001,0.2168 0.1181,0.4163 0.308,0.5209l-2.4371,5.0379 0.417,0.2713 0.4914,-1.0108 4.3574,1.2511 0.0672,0.1302 0.4641,-0.2031L6.0229,6.0523c0.2124,-0.0963 0.349,-0.3078 0.3493,-0.5411 0.0002,-0.3286 -0.2661,-0.5952 -0.5948,-0.5953zM5.7567,6.6053 L6.1841,7.4352 5.1278,7.9111zM6.2689,7.6001 L7.0047,9.0284 5.0054,8.1747zM4.9154,8.3514 L7.0083,9.2408 4.1103,10.0237zM7.1934,9.3948 L8.1985,11.3471 4.2054,10.203Z" />
-
-</vector>
diff --git a/core/src/main/res/layout/player_widget.xml b/core/src/main/res/layout/player_widget.xml
index b0e5e0fd8..8e38d7f6e 100644
--- a/core/src/main/res/layout/player_widget.xml
+++ b/core/src/main/res/layout/player_widget.xml
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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:padding="@dimen/widget_margin" >
@@ -8,8 +9,8 @@
android:id="@+id/widgetLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:background="#262C31" >
-
+ android:background="#262C31"
+ tools:ignore="UselessParent">
<ImageButton
android:id="@+id/butPlay"
@@ -40,7 +41,8 @@
android:id="@+id/imgvCover"
android:layout_width="@android:dimen/app_icon_size"
android:layout_height="match_parent"
- android:src="@drawable/ic_antenna"
+ android:src="@mipmap/ic_launcher_round"
+ android:importantForAccessibility="no"
android:layout_margin="12dp" />
<LinearLayout
diff --git a/core/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/core/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
index 036d09bc5..4ae7d1237 100644
--- a/core/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
+++ b/core/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
- <background android:drawable="@color/ic_launcher_background"/>
+ <background android:drawable="@mipmap/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon> \ No newline at end of file
diff --git a/core/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/core/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
index 036d09bc5..4ae7d1237 100644
--- a/core/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
+++ b/core/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
- <background android:drawable="@color/ic_launcher_background"/>
+ <background android:drawable="@mipmap/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon> \ No newline at end of file
diff --git a/core/src/main/res/mipmap-hdpi/ic_launcher.png b/core/src/main/res/mipmap-hdpi/ic_launcher.png
index 12e9b3395..9c922ce1c 100644
--- a/core/src/main/res/mipmap-hdpi/ic_launcher.png
+++ b/core/src/main/res/mipmap-hdpi/ic_launcher.png
Binary files differ
diff --git a/core/src/main/res/mipmap-hdpi/ic_launcher_background.png b/core/src/main/res/mipmap-hdpi/ic_launcher_background.png
new file mode 100644
index 000000000..92b669f3e
--- /dev/null
+++ b/core/src/main/res/mipmap-hdpi/ic_launcher_background.png
Binary files differ
diff --git a/core/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/core/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
index d687f94bb..b487de37d 100644
--- a/core/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
+++ b/core/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
Binary files differ
diff --git a/core/src/main/res/mipmap-hdpi/ic_launcher_round.png b/core/src/main/res/mipmap-hdpi/ic_launcher_round.png
index 12e9b3395..9c922ce1c 100644
--- a/core/src/main/res/mipmap-hdpi/ic_launcher_round.png
+++ b/core/src/main/res/mipmap-hdpi/ic_launcher_round.png
Binary files differ
diff --git a/core/src/main/res/mipmap-mdpi/ic_launcher.png b/core/src/main/res/mipmap-mdpi/ic_launcher.png
index 1da13d374..ef741cee7 100644
--- a/core/src/main/res/mipmap-mdpi/ic_launcher.png
+++ b/core/src/main/res/mipmap-mdpi/ic_launcher.png
Binary files differ
diff --git a/core/src/main/res/mipmap-mdpi/ic_launcher_background.png b/core/src/main/res/mipmap-mdpi/ic_launcher_background.png
new file mode 100644
index 000000000..7f16ee8ba
--- /dev/null
+++ b/core/src/main/res/mipmap-mdpi/ic_launcher_background.png
Binary files differ
diff --git a/core/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/core/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
index 2e7a4b74d..4003de0ea 100644
--- a/core/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
+++ b/core/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
Binary files differ
diff --git a/core/src/main/res/mipmap-mdpi/ic_launcher_round.png b/core/src/main/res/mipmap-mdpi/ic_launcher_round.png
index 1da13d374..ef741cee7 100644
--- a/core/src/main/res/mipmap-mdpi/ic_launcher_round.png
+++ b/core/src/main/res/mipmap-mdpi/ic_launcher_round.png
Binary files differ
diff --git a/core/src/main/res/mipmap-xhdpi/ic_launcher.png b/core/src/main/res/mipmap-xhdpi/ic_launcher.png
index 32b022ada..b05c50d44 100644
--- a/core/src/main/res/mipmap-xhdpi/ic_launcher.png
+++ b/core/src/main/res/mipmap-xhdpi/ic_launcher.png
Binary files differ
diff --git a/core/src/main/res/mipmap-xhdpi/ic_launcher_background.png b/core/src/main/res/mipmap-xhdpi/ic_launcher_background.png
new file mode 100644
index 000000000..170e2f72e
--- /dev/null
+++ b/core/src/main/res/mipmap-xhdpi/ic_launcher_background.png
Binary files differ
diff --git a/core/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/core/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
index 5f90a1d11..0cd7ee47a 100644
--- a/core/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
+++ b/core/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
Binary files differ
diff --git a/core/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/core/src/main/res/mipmap-xhdpi/ic_launcher_round.png
index 32b022ada..b05c50d44 100644
--- a/core/src/main/res/mipmap-xhdpi/ic_launcher_round.png
+++ b/core/src/main/res/mipmap-xhdpi/ic_launcher_round.png
Binary files differ
diff --git a/core/src/main/res/mipmap-xxhdpi/ic_launcher.png b/core/src/main/res/mipmap-xxhdpi/ic_launcher.png
index 321600e15..9d0116d26 100644
--- a/core/src/main/res/mipmap-xxhdpi/ic_launcher.png
+++ b/core/src/main/res/mipmap-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/core/src/main/res/mipmap-xxhdpi/ic_launcher_background.png b/core/src/main/res/mipmap-xxhdpi/ic_launcher_background.png
new file mode 100644
index 000000000..adf055c06
--- /dev/null
+++ b/core/src/main/res/mipmap-xxhdpi/ic_launcher_background.png
Binary files differ
diff --git a/core/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/core/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
index d72ffedbb..fb39d3c71 100644
--- a/core/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
+++ b/core/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
Binary files differ
diff --git a/core/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/core/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
index 321600e15..9d0116d26 100644
--- a/core/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
+++ b/core/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
Binary files differ
diff --git a/core/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/core/src/main/res/mipmap-xxxhdpi/ic_launcher.png
index ff2870dca..3c61e7dfc 100644
--- a/core/src/main/res/mipmap-xxxhdpi/ic_launcher.png
+++ b/core/src/main/res/mipmap-xxxhdpi/ic_launcher.png
Binary files differ
diff --git a/core/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png b/core/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png
new file mode 100644
index 000000000..f0be130f2
--- /dev/null
+++ b/core/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png
Binary files differ
diff --git a/core/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/core/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
index 0af16fadf..c3fd1eb5a 100644
--- a/core/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
+++ b/core/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
Binary files differ
diff --git a/core/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/core/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
index ff2870dca..3c61e7dfc 100644
--- a/core/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
+++ b/core/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
Binary files differ
diff --git a/core/src/main/res/values-br/strings.xml b/core/src/main/res/values-br/strings.xml
new file mode 100644
index 000000000..12fbbdb23
--- /dev/null
+++ b/core/src/main/res/values-br/strings.xml
@@ -0,0 +1,821 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources xmlns:tools="http://schemas.android.com/tools">
+ <!--Activity and fragment titles-->
+ <string name="feed_update_receiver_name">Hizivaat ar c\'houmanantoù</string>
+ <string name="feeds_label">Podskignadoù</string>
+ <string name="statistics_label">Stadegoù</string>
+ <string name="add_feed_label">Ouzhpennañ ur podskignad</string>
+ <string name="episodes_label">Rannoù</string>
+ <string name="all_episodes_short_label">An holl</string>
+ <string name="new_episodes_label">Nevez</string>
+ <string name="favorite_episodes_label">Sinedoù</string>
+ <string name="new_label">Nevez</string>
+ <string name="settings_label">Gwellvezioù</string>
+ <string name="downloads_label">Pellgargadennoù</string>
+ <string name="downloads_running_label">Oc\'h erounit</string>
+ <string name="downloads_completed_label">Echuet</string>
+ <string name="downloads_log_label">Kerzhlevr</string>
+ <string name="subscriptions_label">Koumanantoù</string>
+ <string name="subscriptions_list_label">Roll ar c\'houmanantoù</string>
+ <string name="cancel_download_label">Nullañ ar pellgargadennoù</string>
+ <string name="playback_history_label">Roll istor seniñ</string>
+ <string name="gpodnet_main_label">gpodder.net</string>
+ <string name="gpodnet_auth_label">Titouroù kennaskañ gpodder.net</string>
+ <string name="episode_cache_full_title">Leun eo al lec\'h evit enrollañ rannoù</string>
+ <string name="episode_cache_full_message">Tizhet eo bet bevenn pellgargadurioù ar rannoù. Gallout a rit kreskaat ment ar c\'hrubuilh en arventennoù.</string>
+ <string name="playback_statistics_label">Lenn</string>
+ <string name="download_statistics_label">Pellgargadurioù</string>
+ <!--Statistics fragment-->
+ <string name="total_time_listened_to_podcasts">Padelezh selaouet hollek</string>
+ <string name="statistics_details_dialog">%1$d war %2$d rann kroget.\n\nLennet %3$s war %4$s.</string>
+ <string name="statistics_mode">Doareoù stadegoù</string>
+ <string name="statistics_mode_normal">Jediñ ar padelezh selaouet e gwirionez. Ar rannoù selaouet div wech a gont doubl hag ar re merket evel anlennet ne gontont ket</string>
+ <string name="statistics_mode_count_all">Sammañ an holl bodskignadoù merket evel lennet</string>
+ <string name="statistics_speed_not_counted">Evezhiadenn: tizh al lenn n\'eo morse kemeret e kont.</string>
+ <string name="statistics_reset_data">Adderaouekaat ar roadennoù stadegoù</string>
+ <string name="statistics_reset_data_msg">Dilemel a raio roll istor ar padelezh lennet evit an holl rannoù. Sur oc\'h e fell deoc\'h kenderc\'hel?</string>
+ <!--Download Statistics fragment-->
+ <string name="total_size_downloaded_podcasts">Ment pellgarget hollek</string>
+ <!--Main activity-->
+ <string name="drawer_open">Digeriñ al lañser</string>
+ <string name="drawer_close">Serriñ al lañser</string>
+ <string name="drawer_preferences">Gwellvezioù ar stalaf</string>
+ <string name="drawer_feed_order_unplayed_episodes">Rummañ dre gonter</string>
+ <string name="drawer_feed_order_alphabetical">Rummañ dre urzh al lizherenneg</string>
+ <string name="drawer_feed_order_last_update">Rummañ dre an deiziad embann</string>
+ <string name="drawer_feed_order_most_played">Rummañ dre an niver a rannoù lennet</string>
+ <string name="drawer_feed_counter_new_unplayed">Niver a rannoù nevez n\'int ket bet lennet</string>
+ <string name="drawer_feed_counter_new">Niver a rannoù nevez</string>
+ <string name="drawer_feed_counter_unplayed">Niver a rannoù n\'int ket bet lennet</string>
+ <string name="drawer_feed_counter_downloaded">Niver a rannoù pelglarget</string>
+ <string name="drawer_feed_counter_none">Hini ebet</string>
+ <!--Webview actions-->
+ <string name="open_in_browser_label">Digeriñ er merdeer</string>
+ <string name="copy_url_label">Eilañ an URL</string>
+ <string name="share_url_label">Rannañ an URL</string>
+ <string name="copied_url_msg">URL eilet er golver</string>
+ <string name="go_to_position_label">Mont d\'al lec\'hiadur</string>
+ <!--Playback history-->
+ <string name="clear_history_label">Dilemel ar roll istor</string>
+ <!--Other-->
+ <string name="confirm_label">Kadarnaat</string>
+ <string name="cancel_label">Nullañ</string>
+ <string name="yes">Ya</string>
+ <string name="no">Ket</string>
+ <string name="reset">Adderaouekaat</string>
+ <string name="author_label">Aozer(ien.ezed)</string>
+ <string name="language_label">Yezh</string>
+ <string name="url_label">URL</string>
+ <string name="cover_label">Skeudenn</string>
+ <string name="error_label">Fazi</string>
+ <string name="error_msg_prefix">Degouezhet ez eus bet ur fazi:</string>
+ <string name="needs_storage_permission">Ret eo kaout an aotre kadaviñ evit ober se</string>
+ <string name="refresh_label">Azgrenaat</string>
+ <string name="external_storage_error_msg">N\'eus bet kavet kadaviñ diavaez ebet. Gwiriekait ez eo kennasket ar c\'hadaviñ diavaez evit ma c\'hallfe an arload mont en-dro.</string>
+ <string name="chapters_label">Chabistroù</string>
+ <string name="chapter_duration">Padelezh: %1$s</string>
+ <string name="description_label">Deskrivadur</string>
+ <string name="episodes_suffix">\u0020rannoù</string>
+ <string name="processing_label">O keweriañ</string>
+ <string name="save_username_password_label">Enrollañ ho titouroù kennaskañ</string>
+ <string name="close_label">Serriñ</string>
+ <string name="retry_label">Klask en-dro</string>
+ <string name="auto_download_label">Pellgargañ emgefreek</string>
+ <string name="auto_download_apply_to_items_title">Arloañ d\'ar rannoù kent</string>
+ <string name="auto_download_apply_to_items_message">An arventenn nevez <i>Pellgargañ Emgefreek</i> a vo arloet d\'ar rannoù nevez ent emgefreek.\nHa fellout a rafe deoc\'h e lakaat war ar rannoù kent ivez?</string>
+ <string name="auto_delete_label">Dilemel ar rannoù ent emgefreek</string>
+ <string name="feed_volume_reduction">Izelaat an ampled</string>
+ <string name="feed_volume_reduction_summary">Izelaat ampled ar rannoù da-heul: %1$s</string>
+ <string name="feed_volume_reduction_off">hini ebet</string>
+ <string name="feed_volume_reduction_light">izel</string>
+ <string name="feed_volume_reduction_heavy">pounner</string>
+ <string name="parallel_downloads_suffix">\u0020pellgargadurioù kenstur</string>
+ <string name="feed_auto_download_global">Dre ziouer</string>
+ <string name="feed_auto_download_always">Bepred</string>
+ <string name="feed_auto_download_never">Morse</string>
+ <string name="send_label">Kas...</string>
+ <string name="episode_cleanup_never">Morse</string>
+ <string name="episode_cleanup_queue_removal">Pa n\'emañ ket el lost</string>
+ <string name="episode_cleanup_after_listening">Goude bezañ echuet</string>
+ <plurals name="episode_cleanup_hours_after_listening">
+ <item quantity="one">%d eur goude bezañ selaouet</item>
+ <item quantity="two">%d eur goude bezañ selaouet</item>
+ <item quantity="few">%d eur goude bezañ selaouet</item>
+ <item quantity="many">%d eur goude bezañ selaouet</item>
+ <item quantity="other">%d eur goude bezañ selaouet</item>
+ </plurals>
+ <plurals name="episode_cleanup_days_after_listening">
+ <item quantity="one">%d devezh goude vefe echuet </item>
+ <item quantity="two">%d zevezh goude vefe echuet </item>
+ <item quantity="few">%d devezh goude vefe echuet </item>
+ <item quantity="many">%d a zevezhioù goude vefe echuet </item>
+ <item quantity="other">%d devezh goude vefe echuet </item>
+ </plurals>
+ <plurals name="num_selected_label">
+ <item quantity="one">%d diuzet</item>
+ <item quantity="two">%d diuzet</item>
+ <item quantity="few">%d diuzet</item>
+ <item quantity="many">%d diuzet</item>
+ <item quantity="other">%d diuzet</item>
+ </plurals>
+ <string name="loading_more">O kargañ...</string>
+ <!--Actions on feeds-->
+ <string name="mark_all_read_label">Merkañ an holl evel lennet</string>
+ <string name="mark_all_read_msg">Merket eo bet an holl rannoù evel lennet</string>
+ <string name="mark_all_read_confirmation_msg">Kadarnait e fell deoc\'h merkañ an holl rannoù evel lennet.</string>
+ <string name="mark_all_read_feed_confirmation_msg">Kadarnait e fell deoc\'h merkañ an holl rannoù er podskignad evel lennet.</string>
+ <string name="remove_all_new_flags_label">Tennañ an holl verkoù \"nevez\"</string>
+ <string name="removed_all_new_flags_msg">Tennet eo bet an holl verkoù \"nevez\"</string>
+ <string name="remove_all_new_flags_confirmation_msg">Kadarnait e fell deoc\'h tennañ ar merk \"nevez\" eus an holl rannoù.</string>
+ <string name="show_info_label">Diskouez ar munudoù</string>
+ <string name="show_feed_settings_label">Arventennoù ar podksignad...</string>
+ <string name="feed_info_label">Titouroù ar podskignad</string>
+ <string name="feed_settings_label">Arventennoù ar podskignad</string>
+ <string name="rename_feed_label">Adenvel ar podskignad</string>
+ <string name="remove_feed_label">Dilemel ar podskignad</string>
+ <string name="share_label">Rannañ...</string>
+ <string name="share_link_label">Rannañ an ere</string>
+ <string name="share_link_with_position_label">Rannañ an ere gant al lec\'hiadur</string>
+ <string name="share_file_label">Rannañ ar restr</string>
+ <string name="share_website_url_label">Rannañ ere al lec\'hienn</string>
+ <string name="share_feed_url_label">Rannañ ere ar podskignad</string>
+ <string name="share_item_url_label">Rannañ ere ar restr</string>
+ <string name="share_item_url_with_position_label">Rannañ ere ar restr gant al lec\'hiadur</string>
+ <string name="feed_delete_confirmation_msg">Kadarnait e fell deoc\'h dilemel ar podskignad \"%1$s\" hag e holl rannoù pellgarget.</string>
+ <string name="feed_remover_msg">O tilemel ar podskignad</string>
+ <string name="load_complete_feed">Hizivaat ar podskignad a-bezh</string>
+ <string name="multi_select">Diuzañ meur a elfenn</string>
+ <string name="select_all_above">Diuzañ gant ar re a-us</string>
+ <string name="select_all_below">Diuzañ gant ar re dindan</string>
+ <string name="hide_unplayed_episodes_label">Amlennet</string>
+ <string name="hide_paused_episodes_label">Ehanet</string>
+ <string name="hide_played_episodes_label">Lennet</string>
+ <string name="hide_queued_episodes_label">El lost</string>
+ <string name="hide_not_queued_episodes_label">N\'emañ ket el lost</string>
+ <string name="hide_downloaded_episodes_label">Pellgarget</string>
+ <string name="hide_not_downloaded_episodes_label">N\'eo ket pellgarget</string>
+ <string name="hide_has_media_label">Gant ur media</string>
+ <string name="hide_is_favorite_label">Ur sined eo</string>
+ <string name="filtered_label">Silet</string>
+ <string name="refresh_failed_msg">{fa-exclamation-circle} C\'hwitet war an azgrenaat diwezhañ</string>
+ <string name="open_podcast">Digeriñ ar podskignad</string>
+ <string name="please_wait_for_data">Gortozit dibenn pellgargadur ar roadennoù</string>
+ <!--actions on feeditems-->
+ <string name="download_label">Pellgargañ</string>
+ <plurals name="downloading_batch_label">
+ <item quantity="one">O pellgargañ %d rann</item>
+ <item quantity="two">O pellgargañ %d rann</item>
+ <item quantity="few">O pellgargañ %d rann</item>
+ <item quantity="many">O pellgargañ %d rann</item>
+ <item quantity="other">O pellgargañ %d rann</item>
+ </plurals>
+ <string name="play_label">Len</string>
+ <string name="pause_label">Ehan</string>
+ <string name="stream_label">Streaming</string>
+ <string name="delete_label">Dilemel</string>
+ <string name="delete_failed">N\'haller ket dilemel ar restr. Gallout a rit klask adloc\'hañ.</string>
+ <string name="delete_episode_label">Dilemel ar rann</string>
+ <plurals name="deleted_episode_batch_label">
+ <item quantity="one">%d rann dilamet </item>
+ <item quantity="two">%d rann dilamet </item>
+ <item quantity="few">%d rann dilamet </item>
+ <item quantity="many">%d rann dilamet </item>
+ <item quantity="other">%d rann dilamet </item>
+ </plurals>
+ <string name="remove_new_flag_label">Tennañ ar merk \"nevez\"</string>
+ <string name="removed_new_flag_label">Tennet eo bet ar merk \"nevez\"</string>
+ <string name="mark_read_label">Merkañ evel lennet</string>
+ <string name="marked_as_read_label">Merkañ evel lennet</string>
+ <string name="mark_read_no_media_label">Merkañ evel lennet</string>
+ <string name="marked_as_read_no_media_label">Merket evel lennet</string>
+ <string name="play_this_to_seek_position">Evit kemmañ al lec\'hiadur e rankit lenn ar rann</string>
+ <plurals name="marked_read_batch_label">
+ <item quantity="one">%d rann merket evel lennet</item>
+ <item quantity="two">%d rann merket evel lennet</item>
+ <item quantity="few">%d rann merket evel lennet</item>
+ <item quantity="many">%d rann merket evel lennet</item>
+ <item quantity="other">%d rann merket evel lennet</item>
+ </plurals>
+ <string name="mark_unread_label">Merkañ evel anlennet</string>
+ <string name="mark_unread_label_no_media">Merkañ evel anlennet</string>
+ <plurals name="marked_unread_batch_label">
+ <item quantity="one">%d rann merket evel anlennet. </item>
+ <item quantity="two">%d rann merket evel anlennet. </item>
+ <item quantity="few">%d rann merket evel anlennet. </item>
+ <item quantity="many">%d rann merket evel anlennet.</item>
+ <item quantity="other">%d rann merket evel anlennet. </item>
+ </plurals>
+ <string name="add_to_queue_label">Ouzhpennañ el lost</string>
+ <string name="added_to_queue_label">Ouzhpennet el lost</string>
+ <plurals name="added_to_queue_batch_label">
+ <item quantity="one">%d rann ouzhpennet el lost</item>
+ <item quantity="two">%d rann ouzhpennet el lost</item>
+ <item quantity="few">%d rann ouzhpennet el lost</item>
+ <item quantity="many">%d rann ouzhpennet el lost</item>
+ <item quantity="other">%d rann ouzhpennet el lost</item>
+ </plurals>
+ <string name="remove_from_queue_label">Dilemel eus al lost</string>
+ <plurals name="removed_from_queue_batch_label">
+ <item quantity="one">%d rann tennet eus al lost</item>
+ <item quantity="two">%d rann tennet eus al lost</item>
+ <item quantity="few">%d rann tennet eus al lost</item>
+ <item quantity="many">%d rann tennet eus al lost</item>
+ <item quantity="other">%d rann tennet eus al lost</item>
+ </plurals>
+ <string name="add_to_favorite_label">Ouzhpennañ er sinedoù</string>
+ <string name="added_to_favorites">Ouzhpennet er sinedoù</string>
+ <string name="remove_from_favorite_label">Dilemel eus ar sindeoù</string>
+ <string name="removed_from_favorites">Dilamet eus ar sinedoù</string>
+ <string name="visit_website_label">Gweladenniñ al lec\'hienn</string>
+ <string name="skip_episode_label">Tremen a rann</string>
+ <string name="activate_auto_download">Gweredekaat ar pellgargañ emgefreek</string>
+ <string name="deactivate_auto_download">Diweredekaat ar pellgargañ emgefreek</string>
+ <string name="reset_position">Adderaouekaat al lec\'hiadur lenn</string>
+ <string name="removed_item">Elfenn dilamet</string>
+ <string name="no_items_selected">N\'eus bet diuzet netra</string>
+ <!--Download messages and labels-->
+ <string name="download_successful">echuet</string>
+ <string name="download_pending">Pellgargadur war c\'hortoz</string>
+ <string name="download_running">O pellgargañ</string>
+ <string name="download_error_details">Munudoù</string>
+ <string name="download_error_details_message">%1$s \n\nURL ar restr:\n%2$s</string>
+ <string name="download_error_device_not_found">N\'eo ket bet kavet ar c\'hadaviñ</string>
+ <string name="download_error_insufficient_space">N\'eus ket trawalc\'h a blas</string>
+ <string name="download_error_http_data_error">Fazi roadennoù HTTP</string>
+ <string name="download_error_error_unknown">Fazi dianav</string>
+ <string name="download_error_parser_exception">Kemennadenn Fazi</string>
+ <string name="download_error_unsupported_type">Doare lanv anskor</string>
+ <string name="download_error_connection_error">Fazi kennaskañ</string>
+ <string name="download_error_unknown_host">Ostiz dianav</string>
+ <string name="download_error_unauthorized">Fazi dilesa</string>
+ <string name="download_error_file_type_type">Fazi rizh ar restr</string>
+ <string name="download_error_forbidden">Difennet</string>
+ <string name="download_canceled_msg">Pellgargadur nullet</string>
+ <string name="download_canceled_autodownload_enabled_msg">Pellgargadur nullet\nDiweredekaet ar <i>pellgargadur emgefreek</i> evit an elfenn-mañ</string>
+ <string name="download_report_title">Pellgargañ echuet gant fazi(où)</string>
+ <string name="auto_download_report_title">Pellgargañ emgefreek echuet</string>
+ <string name="download_report_content_title">Danevell ar pellgargadurioù</string>
+ <string name="download_error_malformed_url">URL direizh</string>
+ <string name="download_error_io_error">Fazi lenn/skrivañ</string>
+ <string name="download_error_request_error">Fazi azgoulenn</string>
+ <string name="download_error_db_access">Fazi Haeziñ ar Stlennvon</string>
+ <plurals name="downloads_left">
+ <item quantity="one">%d pellgargadur a chom</item>
+ <item quantity="two">%d bellgargadur a chom</item>
+ <item quantity="few">%d fellgargadur a chom</item>
+ <item quantity="many">%d a bellgargadurioù a chom</item>
+ <item quantity="other">%d pellgargadur a chom</item>
+ </plurals>
+ <string name="downloads_processing">O keweriañ ar pellgargadennoù</string>
+ <string name="download_notification_title">O pellgargañ roadennoù ar podskignad</string>
+ <string name="download_report_content">%1$d rann pellgarget gant berzh, %2$d c\'hwitet</string>
+ <string name="download_log_title_unknown">Titl dianav</string>
+ <string name="download_type_feed">Lanv</string>
+ <string name="download_type_media">Restr media</string>
+ <string name="download_request_error_dialog_message_prefix">Degouezhet ez eus bet ur fazi en ur glask pellgargañ ar restr:\u0020</string>
+ <string name="null_value_podcast_error">N\'eus podskignad ebet a glot.</string>
+ <string name="authentication_notification_title">Dilesa rekiz</string>
+ <string name="authentication_notification_msg">Un anv arveriad hag ur ger-tremen a zo dleet gant al loaz goulennet</string>
+ <string name="confirm_mobile_download_dialog_title">Kadarnaat ar pellgargadur hezoug</string>
+ <string name="confirm_mobile_download_dialog_message_not_in_queue">Diweredekaet eo ar pellgargadur war ar c\'hennask hezoug en arventennoù.\n\nGallout a rit dibab ouzhpennañ ar rann el lost pe aotren ar pellgargadur ent padennek.\n\n<small>Dalc\'het vo soñj eus ho tibab e-pad 10 munutenn.</small></string>
+ <string name="confirm_mobile_download_dialog_message">Diweredekaet eo ar pellgargadur war ar c\'hennask hezoug en arventennoù.\n\nFellout a ra deoc\'h aotren ent padennek?\n\n<small>Dalc\'het vo soñj eus ho tibab e-pad 10 munutenn.</small></string>
+ <string name="confirm_mobile_streaming_notification_title">Kadarnaat ar streaming hezoug</string>
+ <string name="confirm_mobile_streaming_notification_message">Diweredekaet eo ar streaming war ar c\'hennask hezoug en arventennoù. Stokit da lenn e streaming memestra.</string>
+ <string name="confirm_mobile_streaming_button_always">Aotren atav</string>
+ <string name="confirm_mobile_download_dialog_only_add_to_queue">Lakaat el lost</string>
+ <string name="confirm_mobile_download_dialog_enable_temporarily">Aotren ent padennek</string>
+ <!--Mediaplayer messages-->
+ <string name="player_error_msg">Fazi!</string>
+ <string name="player_stopped_msg">N\'eus netra o vezañ lennet</string>
+ <string name="player_preparing_msg">O prientiñ</string>
+ <string name="player_ready_msg">Prest</string>
+ <string name="player_seeking_msg">O klask</string>
+ <string name="playback_error_server_died">An dafariad na respont ket</string>
+ <string name="playback_error_unsupported">Rizh media anskor</string>
+ <string name="playback_error_timeout">Gwezhiadur diamzeret</string>
+ <string name="playback_error_source">N\'haller ket haeziñ ar restr</string>
+ <string name="playback_error_unknown">Fazi dianav</string>
+ <string name="no_media_playing_label">N\'eus netra o vezañ lennet</string>
+ <string name="player_buffering_msg">O skurzañ</string>
+ <string name="player_go_to_picture_in_picture">Mod skeudenn-ouzh-skeudenn</string>
+ <string name="unknown_media_key">AntennaPod - stokell vedia dianav: %1$d</string>
+ <string name="error_file_not_found">N\'eo ket bet kavet ar restr</string>
+ <!--Queue operations-->
+ <string name="lock_queue">Prennañ al lost</string>
+ <string name="unlock_queue">Dibrennañ al lost</string>
+ <string name="queue_locked">Lost prennet</string>
+ <string name="queue_unlocked">Lost dibrennet</string>
+ <string name="queue_lock_warning">Ma prennit al lost ne vo ket tu deoc\'h riklañ pe adurzhiañ ar rannoù.</string>
+ <string name="checkbox_do_not_show_again">Na ziskouez ken</string>
+ <string name="clear_queue_label">Skarzhañ al lost</string>
+ <string name="undo">Nullañ</string>
+ <string name="move_to_top_label">Lakaat e penn ar roll</string>
+ <string name="move_to_bottom_label">Lakaat e dibenn ar roll</string>
+ <string name="sort">Rummañ</string>
+ <string name="keep_sorted">Mirout an urzh</string>
+ <string name="date">Deiziad</string>
+ <string name="duration">Padelezh</string>
+ <string name="episode_title">Titl ar rann</string>
+ <string name="feed_title">Titl ar podskignad</string>
+ <string name="random">Dre zegouezh</string>
+ <string name="smart_shuffle">Urzh emgefreek</string>
+ <string name="ascending">War-gresk</string>
+ <string name="descending">War zigresk</string>
+ <string name="clear_queue_confirmation_msg">Kadarnait e fell deoc\'h dilemel holl rannoù el lost </string>
+ <string name="time_left_label">Padelezh a chom:\u0020</string>
+ <!--Variable Speed-->
+ <string name="download_plugin_label">Pellgargañ un enlugellad</string>
+ <string name="no_playback_plugin_title">N\'eo ket bet staliet an enlugellad</string>
+ <string name="no_playback_plugin_or_sonic_msg">Evit gallout kemmañ tizh al lenn ez eo erbedet gweredekaat al lenner media diabarzh Sonic.</string>
+ <string name="set_playback_speed_label">Tizh lenn</string>
+ <string name="enable_sonic">Gweredekaat Sonic</string>
+ <!--Empty list labels-->
+ <string name="no_items_header_label">Rann ebet er roll len</string>
+ <string name="no_items_label">Gallout a rit ouzhpennañ ur rann en ur bellgargañ anezhi, pe gant ur stokadenn hir hag en ur zibab \"Ouzhpennañ el lost\"</string>
+ <string name="no_shownotes_label">N\'eus notenn evet evit ar rann-mañ.</string>
+ <string name="no_run_downloads_head_label">Pellgargadenn ebe</string>
+ <string name="no_run_downloads_label">Gallout a rit pellgargañ rannoù war skramm munudoù ar podskignad.</string>
+ <string name="no_comp_downloads_head_label">Rann ebet pellgarget</string>
+ <string name="no_comp_downloads_label">Gallout a rit pellgargañ rannoù war skramm munudoù ar podskignad.</string>
+ <string name="no_log_downloads_head_label">Pellgargadur ebet er roll istor</string>
+ <string name="no_log_downloads_label">Roll istor ar pellgargadennoù a vo diskouezet amañ pa ne vo ket goulo ken.</string>
+ <string name="no_history_head_label">Roll istor ebet</string>
+ <string name="no_history_label">Goude bezañ selaouet ur rann e vo diskouezet amañ</string>
+ <string name="no_all_episodes_head_label">Rann ebe</string>
+ <string name="no_all_episodes_label">Pa ouzhpennit ur podskignad e vo diskouezet ar rannoù amañ.</string>
+ <string name="no_new_episodes_head_label">Rann nevez ebe</string>
+ <string name="no_new_episodes_label">Pa vo rannoù nevez e vint skrammet amañ.</string>
+ <string name="no_fav_episodes_head_label">Rann ebet er sinedoù</string>
+ <string name="no_fav_episodes_label">Gallout a rit lakaat ur rann er sinedoù en ur stokañ hir warni</string>
+ <string name="no_chapters_head_label">Chabistr ebet</string>
+ <string name="no_chapters_label">N\'eus chabistr ebet er rann-mañ</string>
+ <string name="no_subscriptions_head_label">Koumanant ebet</string>
+ <string name="no_subscriptions_label">Evit koumanantiñ d\'ur podskignad, pouezit war an arlun mui.</string>
+ <!--Preferences-->
+ <string name="storage_pref">Kadaviñ</string>
+ <string name="storage_sum">Dilemel emgefreek ar rannoù, Enporzhiañ, Ezporzhiañ</string>
+ <string name="project_pref">Raktres</string>
+ <string name="queue_label">Lost</string>
+ <string name="synchronization_pref">Goubredañ</string>
+ <string name="synchronization_sum">Ober gant gpodder.net evit goubredañ gant binviji all</string>
+ <string name="automation">Emgefreekañ</string>
+ <string name="download_pref_details">Munudoù</string>
+ <string name="import_export_pref">Enporzhiadur / Ezporzhiadur</string>
+ <string name="import_export_search_keywords">gwarediñ, assav</string>
+ <string name="appearance">Neuz</string>
+ <string name="external_elements">Elfennoù diavaez</string>
+ <string name="interruptions"> Diskrogoù</string>
+ <string name="playback_control">Reoliadurioù lenn</string>
+ <string name="preference_search_hint">Klask...</string>
+ <string name="preference_search_no_results">Disoc\'h ebet</string>
+ <string name="preference_search_clear_history">Skarzhañ ar roll istor</string>
+ <string name="media_player">Lenner liesvedia</string>
+ <string name="pref_episode_cleanup_title">Naetaat ar rannoù</string>
+ <string name="pref_episode_cleanup_summary">Ar rannoù n\'int ket el lost nag er sinedoù a c\'hall bezañ dilamet ma vez ezhomm muioc\'h a egor dieub gant ar pellgargañ emgefreek.</string>
+ <string name="pref_pauseOnDisconnect_sum">Paouez gant al lenn pa vez diluget selaouelloù pe bluetooth</string>
+ <string name="pref_unpauseOnHeadsetReconnect_sum">Kenderc\'hel al lenn pa vez adluget ar selaouelloù</string>
+ <string name="pref_unpauseOnBluetoothReconnect_sum">Adstagañ gant al lenn pa vez adkennasket ar bluetooth</string>
+ <string name="pref_hardwareForwardButtonSkips_title">An afell \'war-raok\' a dremen ar rann</string>
+ <string name="pref_hardwareForwardButtonSkips_sum">Tremen d\'ar rann da-heul kentoc\'h eget ober ul lamm en a-raok pa vez pouezet war \'lamm en a-raok\' war ur benveg bluetooth</string>
+ <string name="pref_hardwarePreviousButtonRestarts_title">An afell \'lamm a-dreñv\' a adloc\'h ar rann</string>
+ <string name="pref_hardwarePreviousButtonRestarts_sum">Adloc\'hañ adalek ar penn-kentañ pa vez pouezet war un afell \'lamm a-dreñv\' kentoc\'h eget mont war-gil</string>
+ <string name="pref_followQueue_sum">Tremen d\'ar rann goude ur wech echuet gant unan</string>
+ <string name="pref_auto_delete_sum">Dilemel ar rann p\'eo echuet gant al lenn</string>
+ <string name="pref_auto_delete_title">Dilemel ent emgefreek</string>
+ <string name="pref_smart_mark_as_played_sum">Merket e vo ar rannoù evel lennet zoken ma chom un nebeud eilennoù da echuiñ</string>
+ <string name="pref_smart_mark_as_played_title">Merkañ evel lennet speredek</string>
+ <string name="pref_skip_keeps_episodes_sum">Mirout ar rannoù pa vezont tremenet</string>
+ <string name="pref_skip_keeps_episodes_title">Mirout ar rannoù tremenet</string>
+ <string name="pref_favorite_keeps_episodes_sum">Mirout ar rannoù pa vezont lakaet er sinedoù</string>
+ <string name="pref_favorite_keeps_episodes_title">Mirout ar rannoù er sinedoù</string>
+ <string name="playback_pref">Lenn</string>
+ <string name="playback_pref_sum">Reoliadur ar selaouelloù, hirder al lammoù, lostoù</string>
+ <string name="network_pref">Rouedad</string>
+ <string name="network_pref_sum">Etremez an hizivadennoù, reoliadurioù pellgargañ, roadennoù hezoug</string>
+ <string name="pref_autoUpdateIntervallOrTime_title">Etremez pe eur hizivaat</string>
+ <string name="pref_autoUpdateIntervallOrTime_sum">Despizañ un etremez pe un eur resis evit hizivaat ar podskignadoù ent emgefreek</string>
+ <string name="pref_autoUpdateIntervallOrTime_message">Gallout a rit despizañ un <i>etremez</i> evel \"bep 2 eur\", pe un <i>eur</i> resis evel \"7 eur am\" pe <small>diweredekaat</small> an hizivadennoù emgefreek penn-da-benn.\n\n<small>Dalc\'hit soñj: n\'eo ket resis an eurioù hizivaat. Un daleig e c\'hallont kaout.</small></string>
+ <string name="pref_autoUpdateIntervallOrTime_Disable">Diweredekaat</string>
+ <string name="pref_autoUpdateIntervallOrTime_Interval">Dibab un etremez</string>
+ <string name="pref_autoUpdateIntervallOrTime_TimeOfDay">Dibab un eur</string>
+ <string name="pref_autoUpdateIntervallOrTime_every">bep %1$s</string>
+ <string name="pref_autoUpdateIntervallOrTime_at">da %1$s</string>
+ <string name="pref_followQueue_title">Lenn kendalc\'hus</string>
+ <string name="pref_pauseOnHeadsetDisconnect_title">Digennask ar selaouelloù</string>
+ <string name="pref_unpauseOnHeadsetReconnect_title">Lugañ ar selaouelloù</string>
+ <string name="pref_unpauseOnBluetoothReconnect_title">Adkennaskañ ar bluetooth</string>
+ <string name="pref_stream_over_download_title">Ober gant ar streaming da gentañ</string>
+ <string name="pref_stream_over_download_sum">Diskouez an afell stream e plas an afell pellgargañ er rolloù.</string>
+ <string name="pref_mobileUpdate_title">Hizivadennoù hezoug</string>
+ <string name="pref_mobileUpdate_sum">Dibab ar pezh a zo aotreet gant ar c\'hennask hezoug</string>
+ <string name="pref_mobileUpdate_refresh">Hizivaat ar podskignadoù</string>
+ <string name="pref_mobileUpdate_images">Skeudennoù golo</string>
+ <string name="pref_mobileUpdate_auto_download">Pellgargañ emgefreek</string>
+ <string name="pref_mobileUpdate_episode_download">Pellgargañ ar rann</string>
+ <string name="pref_mobileUpdate_streaming">Streaming</string>
+ <string name="user_interface_label">Ketal arveriad</string>
+ <string name="user_interface_sum">Neuz, urzh ar c\'houmanantoù, skramm prennañ</string>
+ <string name="pref_set_theme_title">Dibab un neuz</string>
+ <string name="pref_nav_drawer_items_title">Kemmañ elfennoù ar stalaf merdeiñ</string>
+ <string name="pref_nav_drawer_items_sum">Kemmañ an elfennoù diskouezet er stalaf merdeiñ</string>
+ <string name="pref_nav_drawer_feed_order_title">Despizañ urzh ar c\'houmanantoù</string>
+ <string name="pref_nav_drawer_feed_order_sum">Kemmañ urzh ar c\'houmanantoù</string>
+ <string name="pref_nav_drawer_feed_counter_title">Despizañ ar c\'honter koumanant</string>
+ <string name="pref_nav_drawer_feed_counter_sum">Kemmañ an titour diskouezet war ar c\'honter koumanantoù. Kemmañ a ra ivez urzh ar podskignadoù mard eo urzh ar podskignadoù lakaet da \"Konter\".</string>
+ <string name="pref_set_theme_sum">Kemmañ neuz AntennaPod</string>
+ <string name="pref_automatic_download_title">Pellgargañ emgefreek</string>
+ <string name="pref_automatic_download_sum">Kefluniañ pellgargañ emgefreek ar rannoù.</string>
+ <string name="pref_autodl_wifi_filter_title">Gweredekaat ar sil Wi-Fi</string>
+ <string name="pref_autodl_wifi_filter_sum">Aotren ar pellgargañ emgefreek war ar rouedadoù Wi-Fi diuzet nemetken.</string>
+ <string name="pref_automatic_download_on_battery_title">Pellgargañ pa ne vez ket o kargañ</string>
+ <string name="pref_automatic_download_on_battery_sum">Aotren ar pellgargañ emgefreek pa ne vez ket ar benveg o kargañ</string>
+ <string name="pref_parallel_downloads_title">Pellgargadurioù kenstur</string>
+ <string name="pref_episode_cache_title">Niver a rannoù enrollet</string>
+ <string name="pref_episode_cache_summary">Niver hollek a rannoù pellgarget lakaet e krubuilh ar benveg. Diweredekaet e vo ar pellgargañ emgefreek mard eo tizhet an niver-mañ.</string>
+ <string name="pref_episode_cover_title">Skeudenn ar rannoù</string>
+ <string name="pref_episode_cover_summary">Ober gant golo ar rann pa vez dioutañ. Mard eo digevasket e vo graet gant golo ar podskignad.</string>
+ <string name="pref_theme_title_use_system">Neuz ar reizhiad</string>
+ <string name="pref_theme_title_light">Sklaer</string>
+ <string name="pref_theme_title_dark">Teñval</string>
+ <string name="pref_theme_title_trueblack">Du (evit ar skrammoù AMOLED)</string>
+ <string name="pref_episode_cache_unlimited">Divevenn</string>
+ <string name="pref_update_interval_hours_plural">eur</string>
+ <string name="pref_update_interval_hours_singular">eur</string>
+ <string name="pref_update_interval_hours_manual">Dre zorn</string>
+ <string name="pref_gpodnet_authenticate_title">Anv arveriad</string>
+ <string name="pref_gpodnet_authenticate_sum">Kennaskit gant ho kont gpodder evit goubredañ ho koumanantoù.</string>
+ <string name="pref_gpodnet_logout_title">Digennaskañ</string>
+ <string name="pref_gpodnet_logout_toast">Digennasket gant berzh</string>
+ <string name="pref_gpodnet_setlogin_information_title">Kemmañ an titouroù kennaskañ</string>
+ <string name="pref_gpodnet_setlogin_information_sum">Kemmañ ho titouroù kennaskañ evit ho kont gpodder.net.</string>
+ <string name="pref_gpodnet_sync_changes_title">Goubredañ bremañ</string>
+ <string name="pref_gpodnet_sync_changes_sum">Goubredañ stad ar c\'houmanantoù hag ar rannoù gant gpodder.net</string>
+ <string name="pref_gpodnet_full_sync_title">Rediañ ur goubredañ klok</string>
+ <string name="pref_gpodnet_full_sync_sum">Goubredañ an holl goumanantoù ha stadoù ar rannoù gant gpodder.net.</string>
+ <string name="pref_gpodnet_login_status"><![CDATA[Kennasket evel <i>%1$s</i> gant ar benveg <i>%2$s</i>]]></string>
+ <string name="pref_gpodnet_notifications_title">Diskouez ar rebuzadurioù fazioù goubredañ</string>
+ <string name="pref_gpodnet_notifications_sum">An arventenn-mañ na vez ket arloet d\'ar rebuzadurioù fazi.</string>
+ <string name="pref_playback_speed_title">Tizhioù lenn</string>
+ <string name="pref_playback_speed_sum">Dibab an tizhioù a c\'haller dibab pa vez lennet ar son</string>
+ <string name="pref_feed_playback_speed_sum">Tizh dre ziouer ar rannoù</string>
+ <string name="pref_feed_skip">Lamm emgefreek</string>
+ <string name="pref_feed_skip_sum">Tremen penn-kentañ ha dibenn ar rannoù</string>
+ <string name="pref_feed_skip_ending">Tremen an dibenn</string>
+ <string name="pref_feed_skip_intro">Tremen ar penn-kentañ</string>
+ <string name="pref_feed_skip_ending_toast">Tremenet an %d eilenn diwezhañ</string>
+ <string name="pref_feed_skip_intro_toast">Tremenet an %d eilenn kentañ</string>
+ <string name="pref_playback_time_respects_speed_title">Azasaat titouroù ar media hervez an tizh lenn</string>
+ <string name="pref_playback_time_respects_speed_sum">Al lec\'hiadur hag ar padelezh diskouezet a zo azasaet d\'an tizh lenn</string>
+ <string name="pref_fast_forward">Padelezh al lamm amzer</string>
+ <string name="pref_fast_forward_sum">Personelaat an niver a eilennoù da lammat war-raok pa vez pouezet war an afell war-raok.</string>
+ <string name="pref_rewind">Padelezh al lamm a-dreñv</string>
+ <string name="pref_rewind_sum">Dibabit ar c\'hementad a eilennoù da lammat an a-dreñv pa vez pouezet war \'lamm a-dreñv\'</string>
+ <string name="pref_gpodnet_sethostname_title">Dibab un anv ostiz</string>
+ <string name="pref_gpodnet_sethostname_use_default_host">Ober gant an ostiz dre ziouer</string>
+ <string name="pref_expandNotify_title">Tevet rebuzadurioù a live uhel</string>
+ <string name="pref_expandNotify_sum">Sañset e brasa ar rebuzadur evit diskouez an afelloù lenn.</string>
+ <string name="pref_persistNotify_title">Afelloù lenn peurzalc\'hus</string>
+ <string name="pref_persistNotify_sum">Mirout ar rebuzadur ha reoliadurioù ar skramm prennañ p\'eo ehanet al lenn.</string>
+ <string name="pref_compact_notification_buttons_title">Despizañ an afelloù war ar skramm-prennañ</string>
+ <string name="pref_compact_notification_buttons_sum">Kemmañ a ra an afelloù lenn war ar skramm-prennañ. An afell lenn/ehan a vo diskouezet bepred.</string>
+ <string name="pref_compact_notification_buttons_dialog_title">Dibab %1$d elfenn d\'ar muiañ</string>
+ <string name="pref_compact_notification_buttons_dialog_error">Gallout a rit dibab %1$d elfenn d\'ar muiañ.</string>
+ <string name="pref_lockscreen_background_title">Kemmañ skramm-prennañ an drekleur</string>
+ <string name="pref_lockscreen_background_sum">Lakaat skeudenn ar rann e plas skeudenn drekleur ar skramm-prennañ. Diskouez a raio ivez ar skeudenn en arloadoù all.</string>
+ <string name="pref_showDownloadReport_title">Diskouez danevell ar pellgargadurioù</string>
+ <string name="pref_showDownloadReport_sum">Ma c\'hwit ar pellgargadurioù, sevel un danevell a ziskouez munudoù ar c\'hwitadenn.</string>
+ <string name="pref_showAutoDownloadReport_title">Rentañ-kont ar pellgargañ emgefreek</string>
+ <string name="pref_showAutoDownloadReport_sum">Diskouez ur rebuzadur evit ar rannoù pellgarget ent emgefreek.</string>
+ <string name="pref_expand_notify_unsupport_toast">Handelvoù Android a-raok 4.1 na skoront ket ar rebuzadurioù astennet.</string>
+ <string name="pref_enqueue_location_title">Lec\'hiadur ar rannoù el lost</string>
+ <string name="pref_enqueue_location_sum">Ouzhpennañ ar rannoù da: %1$s</string>
+ <string name="enqueue_location_back">E dibenn ar roll</string>
+ <string name="enqueue_location_front">E penn ar roll</string>
+ <string name="enqueue_location_after_current">Goude ar rann bremanel</string>
+ <string name="pref_smart_mark_as_played_disabled">Diweredekaet</string>
+ <string name="pref_image_cache_size_title">Ment krubuilh ar skeudennoù</string>
+ <string name="pref_image_cache_size_sum">Ment ar c\'hrubuilh evit ar skeudennoù.</string>
+ <string name="visit_user_forum">Forom an implijerien</string>
+ <string name="bug_report_title">Danevellañ ur beug</string>
+ <string name="open_bug_tracker">Digeriñ heulier ar beugoù</string>
+ <string name="export_logs">Ezporzhiañ ar c\'herzhlevrioù</string>
+ <string name="copy_to_clipboard">Eilañ er golver</string>
+ <string name="copied_to_clipboard">Eilet er golver</string>
+ <string name="experimental_pref">Arnodel</string>
+ <string name="pref_media_player_message">Dibab al lenner da implij evit lenn ar restroù</string>
+ <string name="pref_current_value">Talvoud bremanel: %1$s</string>
+ <string name="pref_proxy_title">Proksi</string>
+ <string name="pref_proxy_sum">Arventennañ ur rouedad proksi</string>
+ <string name="pref_faq">Foar ar Goulennoù</string>
+ <string name="pref_no_browser_found">N\'eus bet kavet merdeer ebet.</string>
+ <string name="pref_cast_title">Skor Chromecast</string>
+ <string name="pref_cast_message_play_flavor">Gweredekaat al lenn a-bell war ar binviji Cast (evel ChromeCast, Audio Speaker pe Android TV)</string>
+ <string name="pref_cast_message_free_flavor">Chromecast a c\'houlenn levraouegoù diavaez a zo diweredekaet en handelv-mañ eus AntennaPod</string>
+ <string name="pref_enqueue_downloaded_title">Ouzhpennañ el lost ur wech pellgarget</string>
+ <string name="pref_enqueue_downloaded_summary">Ouzhpennañ ar rannoù pellgarget el lost</string>
+ <string name="media_player_builtin">Lenner genidik Android</string>
+ <string name="media_player_switch_to_exoplayer">Ober gant ExoPlayer</string>
+ <string name="media_player_switched_to_exoplayer">Kemmet eo bet al lenner evit ExoPlayer</string>
+ <string name="pref_skip_silence_title">Tremen ar mareoù didrouz en aodio</string>
+ <string name="pref_videoBehavior_title">Pa vez kuitaet ur video</string>
+ <string name="pref_videoBehavior_sum">Despizañ ar pezh a c\'hoarvez pa vez kuitaet ar video p\'emañ o vezañ lennet</string>
+ <string name="stop_playback">Paouez al len</string>
+ <string name="continue_playback">Kenderc\'hel gant al len</string>
+ <string name="behavior">Emzalc\'h</string>
+ <string name="pref_back_button_behavior_title">Emzalc\'h an afell Distreiñ</string>
+ <string name="pref_back_button_behavior_sum">Kemmañ a ra emzalc\'h an afell Distreiñ</string>
+ <string name="back_button_default">Dre ziouer</string>
+ <string name="back_button_open_drawer">Digeriñ ar stalaf merdeiñ</string>
+ <string name="back_button_double_tap">Stokit 2 wech da guitaat</string>
+ <string name="back_button_show_prompt">Kadarnaat e fell deoc\'h kuitaat</string>
+ <string name="close_prompt">Sur oc\'h e fell deoc\'h kuitaat AntennaPod?</string>
+ <string name="double_tap_toast">Stokañ ur wech ouzhpenn evit kuitaa</string>
+ <string name="back_button_go_to_page">Mont d\'ar bajenn...</string>
+ <string name="back_button_go_to_page_title">Diuzañ ur bajen</string>
+ <string name="pref_delete_removes_from_queue_title">Dilemel a denn eus al lost</string>
+ <string name="pref_delete_removes_from_queue_sum">Tennañ ur rann eus al lost ent emgefreek pa vez dilamet.</string>
+ <!--About screen-->
+ <string name="about_pref">A-zivout</string>
+ <string name="antennapod_version">Handelv AntennaPod</string>
+ <string name="contributors">Kendaolerien</string>
+ <string name="contributors_summary">An holl a c\'hall skoazellañ da wellaat AntennaPod - en ur c\'houleviñ, en ur dreiñ pe en ur sikour an implijerien en hor forom</string>
+ <string name="developers">Diorroerien</string>
+ <string name="translators">Troerien</string>
+ <string name="special_thanks">Trugarekadennoù ispisial</string>
+ <string name="privacy_policy">Reolenn a-fet buhez prevez</string>
+ <string name="licenses">Lañvazioù</string>
+ <string name="licenses_summary">AntennaPod a ra gant meziantoù all</string>
+ <!--Search-->
+ <string name="search_status_no_results">N\'eus bet kavet disoc\'h ebet</string>
+ <string name="search_label">Klask</string>
+ <string name="no_results_for_query">N\'eus bet kavet disoc\'h ebet evit \"%1$s\"</string>
+ <!--Synchronization-->
+ <string name="sync_status_started">Goubredañ loc\'het</string>
+ <string name="sync_status_episodes_upload">Oc\'h uskargañ kemmoù ar rannoù</string>
+ <string name="sync_status_episodes_download">O pellgargañ kemmoù ar rannoù</string>
+ <string name="sync_status_upload_played">Oc\'h uskargañ ar statudoù lenn...</string>
+ <string name="sync_status_subscriptions">O c\'houbredañ ar c\'houmanantoù...</string>
+ <string name="sync_status_success">Goubredet gant berzh</string>
+ <string name="sync_status_error">C\'hwitadenn en ur c\'houbredañ</string>
+ <!--import and export-->
+ <string name="import_export_summary">Dilec\'hiañ ar c\'houmanantoù ha lakaat e lost ur benveg all</string>
+ <string name="database">Stlennvon</string>
+ <string name="opml">OPML</string>
+ <string name="html">HTML</string>
+ <string name="html_export_summary">Diskouez ho koumanantoù d\'ur v⋅mignon⋅ez</string>
+ <string name="opml_export_summary">Treuzkas ho koumanantoù d\'un arload podskignad all</string>
+ <string name="opml_import_summary">Enporzhiañ ho koumanantoù adalek un arload podskignad all</string>
+ <string name="database_export_summary">Treuzkas ar c\'houmanantoù, ar rannoù lennet hag el lost da AntennaPod war ur benveg all</string>
+ <string name="database_import_summary">Enporzhiañ stlennvon AntennaPod adalek ur benveg all</string>
+ <string name="opml_import_label">Enporzhiañ ur restr OPML</string>
+ <string name="opml_reader_error">Degouezhet ez eus bet ur fazi en ul lenn ar restr OPML</string>
+ <string name="opml_import_error_no_file">Restr ebet diuzet!</string>
+ <string name="select_all_label">Diuzañ an holl</string>
+ <string name="deselect_all_label">Na zibab netra</string>
+ <string name="opml_export_label">Ezporzhiañ en ur restr OPML</string>
+ <string name="html_export_label">Ezporzh HTML</string>
+ <string name="database_export_label">Ezporzhiañ ar stlennvon</string>
+ <string name="database_import_label">Enporzhiañ ar stlennvon</string>
+ <string name="database_import_warning">Enporzhiañ ur stlennvon a amsavo ho holl goumanantoù ha roll istor lenn. Erbediñ a reomp ezporzhiañ ho stlennvon en a-raok. Fellout a ra deoc\'h enporzhiañ?</string>
+ <string name="please_wait">Gortozit un tamm...</string>
+ <string name="export_error_label">Fazi ezporzhiañ</string>
+ <string name="export_success_title">Ezporzhiet gant berzh</string>
+ <string name="export_success_sum">Ezporzhiet eo bet ar restr e:\n\n%1$s</string>
+ <string name="opml_import_ask_read_permission">Ret eo aotren haeziñ ar c\'hadaviñ diavaez evit lenn ar restr OPML</string>
+ <string name="import_select_file">Diuzit ar restr da enporzhiañ</string>
+ <string name="import_ok">Enporzhiet gant berzh.\n\nPouezit war OK evit adloc\'hañ AntennaPod</string>
+ <string name="import_no_downgrade">Enporzhiet eo bet ar stlennvon gant un handelv nevesoc\'h eus AntennPod. Ho staliadur bremanel na oar ket c\'hoazh penaos merañ ar restr-mañ.</string>
+ <string name="favorites_export_label">Ezporzhiañ ar sinedoù</string>
+ <string name="favorites_export_summary">Ezporzhiañ ar sinedoù en ur restr</string>
+ <!--Sleep timer-->
+ <string name="set_sleeptimer_label">Lakaat ar munuter</string>
+ <string name="disable_sleeptimer_label">Tennañ ar munuter</string>
+ <string name="sleep_timer_label">Munuter</string>
+ <string name="time_dialog_invalid_input">Enankañ didalvoudek: ret eo d\'ar padelezh bezañ un niveren anterin</string>
+ <string name="shake_to_reset_label">Hejañ evit adloc\'hañ</string>
+ <string name="timer_vibration_label">Froumal a-raok paouez</string>
+ <string name="time_seconds">eilennoù</string>
+ <string name="time_minutes">munutennoù</string>
+ <string name="time_hours">eurioù</string>
+ <plurals name="time_seconds_quantified">
+ <item quantity="one">%d eilenn</item>
+ <item quantity="two">%d eilenn</item>
+ <item quantity="few">%d eilenn</item>
+ <item quantity="many">%d a eilennoù</item>
+ <item quantity="other">%d eilenn</item>
+ </plurals>
+ <plurals name="time_minutes_quantified">
+ <item quantity="one">%d vunutenn</item>
+ <item quantity="two">%d munutenn</item>
+ <item quantity="few">%d munutenn</item>
+ <item quantity="many">%d a vunutennoù</item>
+ <item quantity="other">%d munutenn</item>
+ </plurals>
+ <plurals name="time_hours_quantified">
+ <item quantity="one">%d eur</item>
+ <item quantity="two">%d eur</item>
+ <item quantity="few">%d eur</item>
+ <item quantity="many">%d eur</item>
+ <item quantity="other">%d eur</item>
+ </plurals>
+ <string name="auto_enable_label">Gweredekaat emgefreek</string>
+ <string name="sleep_timer_enabled_label">Harzh emgefreek gweredekaet</string>
+ <!--gpodder.net-->
+ <string name="gpodnet_taglist_header">RUMMADOÙ</string>
+ <string name="gpodnet_toplist_header">PODSKIGNADOÙ BRUDET</string>
+ <string name="gpodnet_suggestions_header">ALIOÙ</string>
+ <string name="gpodnet_search_hint">Klask war gpodder.ner</string>
+ <string name="gpodnetauth_login_title">Kennaskañ</string>
+ <string name="gpodnetauth_login_descr">Donemat war an hentenn kennaskañ gpodder.net. Da gentañ penn, biziatait ho titouroù kennaskañ:</string>
+ <string name="gpodnetauth_login_butLabel">Kennaskañ</string>
+ <string name="gpodnetauth_login_register">Ma n\'ho peus ket a gont c\'hoazh e c\'hallit krouiñ unan amañ:\nhttps://gpodder.net/register/</string>
+ <string name="username_label">Anv arveriad</string>
+ <string name="password_label">Ger-tremen</string>
+ <string name="gpodnetauth_device_title">Dibab ar benveg</string>
+ <string name="gpodnetauth_device_descr">Krouiñ ur benveg nevez evit ho kont gpodder.net pe dibabit ur benveg a zo anezhañ:</string>
+ <string name="gpodnetauth_device_deviceID">Naoudi ar benveg:\u0020</string>
+ <string name="gpodnetauth_device_caption">Alc\'hwez</string>
+ <string name="gpodnetauth_device_butCreateNewDevice">Krouiñ ur benveg nevez</string>
+ <string name="gpodnetauth_device_chooseExistingDevice">Dibab ur benveg a zo anezhañ:</string>
+ <string name="gpodnetauth_device_errorEmpty">Ret eo deoc\'h leuniañ naoudi ar benveg</string>
+ <string name="gpodnetauth_device_errorAlreadyUsed">Implijet eo an naoudi-se endeo</string>
+ <string name="gpodnetauth_device_caption_errorEmpty">An anv n\'hall ket bezañ goullo</string>
+ <string name="gpodnetauth_device_butChoose">Dibab</string>
+ <string name="gpodnetauth_finish_title">Kennasket gant berzh!</string>
+ <string name="gpodnetauth_finish_descr">Gourc\'hemennoù! Liammet eo ho kont gpodder.net gant ho penveg. Goubredet e vo ent emgefreek ar c\'houmanantoù war ho penveg gant ho kont gpodder.net.</string>
+ <string name="gpodnetauth_finish_butsyncnow">Kregiñ gant ar goubredañ bremañ </string>
+ <string name="gpodnetauth_finish_butgomainscreen">Mont d\'ar skramm degemer</string>
+ <string name="gpodnetsync_auth_error_title">fazi dilesa gpodder.net</string>
+ <string name="gpodnetsync_auth_error_descr">Titouroù kennaskañ pe ger-tremen</string>
+ <string name="gpodnetsync_error_title">fazi goubredañ gpodder.net</string>
+ <string name="gpodnetsync_error_descr">Degouezhet ez eus bet ur fazi en ur c\'houbredañ:\u0020</string>
+ <string name="gpodnetsync_pref_report_successful">Berzh</string>
+ <string name="gpodnetsync_pref_report_failed">C\'hwitet</string>
+ <string name="gpodnetsync_username_characters_error">Gallout a rit lakaat lizherennoù, niveroù pe tiredoù en anv arveriad hepken.</string>
+ <!--Directory chooser-->
+ <string name="selected_folder_label">Teuliad dibabet:</string>
+ <string name="create_folder_label">Krouiñ un teuliad</string>
+ <string name="choose_data_directory">Dibab teuliad ar roadennoù</string>
+ <string name="choose_data_directory_message">Dibabit an teuliad lec\'h ma vo enrollet ar roadennoù. Krouet e vo an is-teuliadoù rekiz gant AntennaPod.</string>
+ <string name="choose_data_directory_permission_rationale">Ret eo aotren haeziñ ar c\'hadaviñ diavaez evit kemmañ teuliad ar roadennoù</string>
+ <string name="choose_data_directory_available_space">%1$s war %2$s dieub</string>
+ <string name="create_folder_msg">Krouiñ un teuliad nevez gant an anv \"%1$s\"?</string>
+ <string name="create_folder_success">Teuliad krouet</string>
+ <string name="create_folder_error_no_write_access">N\'haller ket skrivañ en teuliad-mañ</string>
+ <string name="create_folder_error_already_exists">Un teuliad gant an anv-mañ a zo endeo</string>
+ <string name="create_folder_error">N\'haller ket krouiñ an teuliad</string>
+ <string name="folder_does_not_exist_error">N\'eus ket eus \"%1$s\"</string>
+ <string name="folder_not_readable_error">N\'haller ket lenn \"%1$s\"</string>
+ <string name="folder_not_writable_error">N\'haller ket skrivañ e \"%1$s\"</string>
+ <string name="folder_not_empty_dialog_title">N\'eo ket goullo an teuliad</string>
+ <string name="folder_not_empty_dialog_msg">N\'eo ket goullo an teuliad dibabet ganeoc\'h. Ar pellgargadurioù media hag ar restroù all a vo lakaet en teuliad-mañ war-eeun. Kenderc\'hel memestra?</string>
+ <string name="set_to_default_folder">Dibab an teuliad dre ziouer</string>
+ <string name="pref_pausePlaybackForFocusLoss_sum">Ehaniñ al lenn kentoc\'h eget izelaat ar son pa fell d\'un arload all ober sonioù</string>
+ <string name="pref_pausePlaybackForFocusLoss_title">Ehaniñ pa vez arsavet</string>
+ <string name="pref_resumeAfterCall_sum">Adstagañ gant al lenn ur wech echu gant ur bellgomzadenn</string>
+ <string name="pref_resumeAfterCall_title">Adstagañ goude ur bellgomzadenn</string>
+ <string name="pref_restart_required">Ret eo adloc\'hañ AntennaPod evit ma vefe arloet ar c\'hemm.</string>
+ <!--Online feed view-->
+ <string name="subscribe_label">Koumanantiñ</string>
+ <string name="subscribing_label">O koumanantiñ...</string>
+ <string name="preview_episode">Raklenn</string>
+ <string name="stop_preview">Paouez ar raklen</string>
+ <!--Content descriptions for image buttons-->
+ <string name="rewind_label">Lamm war-gil</string>
+ <string name="fast_forward_label">Lamm en ar-raok</string>
+ <string name="increase_speed">Fonnusaat</string>
+ <string name="decrease_speed">Gorrekaat</string>
+ <string name="media_type_audio_label">Aodio</string>
+ <string name="media_type_video_label">Vdeo</string>
+ <string name="navigate_upwards_label">Merdeiñ en nec\'h</string>
+ <string name="status_downloading_label">War bellgargañ emañ ar ran</string>
+ <string name="in_queue_label">El lost emañ ar rann</string>
+ <string name="is_favorite_label">Ouzhpennet eo bet ar rann er sinedoù</string>
+ <string name="drag_handle_content_description">Lakait da riklañ evit kemmañ lec\'hiadur an elfenn-mañ</string>
+ <string name="load_next_page_label">Kargañ ar bajenn da-heul</string>
+ <string name="switch_pages">Kemmañ ar pajennoù</string>
+ <string name="position">Lec\'hiadur: %1$s</string>
+ <string name="apply_action">Arloañ ar gwezhiadur</string>
+ <!--Feed information screen-->
+ <string name="authentication_label">Dilesa</string>
+ <string name="authentication_descr">Kemmit hoc\'h anv arveriad hag ho ker-tremen evit ar podskignad-mañ hag e rannoù.</string>
+ <string name="auto_download_settings_label">Arventennoù ar pellgargañ emgefreek</string>
+ <string name="episode_filters_label">Sil ar rannoù</string>
+ <string name="episode_filters_description">Roll ar gerioù implijet evit dibab ma rank ur rann bezañ ebarzhet pe laosket a-gostez pa vez pellgarget ent emgefreek</string>
+ <string name="episode_filters_include">Ebarzhiñ</string>
+ <string name="episode_filters_exclude">Leuskel a-gostez</string>
+ <string name="episode_filters_hint">Gerioù o-unan \n\"Meur a c\'her\"</string>
+ <string name="keep_updated">Leuskel hizivaet</string>
+ <string name="keep_updated_summary">Ebarzhiñ ar podskignad pa vez hizivaet an holl bodskignadoù</string>
+ <string name="auto_download_disabled_globally">N\'eo ket gweredekaet al lenn emgefreek e arventennoù pennañ AntennaPod</string>
+ <!--Progress information-->
+ <string name="progress_upgrading_database">Oc\'h hizivaat ar stlennvon</string>
+ <!--AntennaPodSP-->
+ <string name="sp_apps_importing_feeds_msg">Oc\'h enporzhiañ ar c\'houmanantoù diwar arloadoù gant un arver unel...</string>
+ <!--Add podcast fragment-->
+ <string name="search_podcast_hint">Klask ur podskignad...</string>
+ <string name="search_itunes_label">Klask war iTunes</string>
+ <string name="search_fyyd_label">Klask war fydd</string>
+ <string name="advanced">Araokaet</string>
+ <string name="add_podcast_by_url">Ouzhpennañ ur podskignad gant e URL</string>
+ <string name="browse_gpoddernet_label">Klask war gpodder.net</string>
+ <string name="discover">Dizoloeiñ</string>
+ <string name="discover_more">muioc\'h »</string>
+ <string name="search_powered_by">Klask gant %1$s</string>
+ <string name="filter">Sil</string>
+ <!--Episodes apply actions-->
+ <string name="all_label">An holl</string>
+ <string name="selected_all_label">Diuzet eo bet an holl rannoù</string>
+ <string name="none_label">Hini ebet</string>
+ <string name="deselected_all_label">Diziuzet eo bet an holl rannoù</string>
+ <string name="played_label">Lennet</string>
+ <string name="selected_played_label">Rannoù lennet diuzet</string>
+ <string name="unplayed_label">Anlennet </string>
+ <string name="selected_unplayed_label">Rannoù anlennet diuzet</string>
+ <string name="downloaded_label">Pellgarget</string>
+ <string name="selected_downloaded_label">Rannoù pellgarget diuzet</string>
+ <string name="not_downloaded_label">N\'eo ket pellgarget</string>
+ <string name="selected_not_downloaded_label">Rannoù n\'int ket pellgarget diuzet</string>
+ <string name="queued_label">Lakaet el lost</string>
+ <string name="selected_queued_label">Rannoù diuzet el lost</string>
+ <string name="not_queued_label">N\'emañ ket el lost</string>
+ <string name="selected_not_queued_label">Rannoù diuzet n\'int ket el lost</string>
+ <string name="has_media">Gant ur media</string>
+ <string name="selected_has_media_label">Diuzañ ar rannoù gant media</string>
+ <!--Sort-->
+ <string name="sort_title_a_z">Titl (A \u2192 Z)</string>
+ <string name="sort_title_z_a">Titl (Z \u2192 A)</string>
+ <string name="sort_date_new_old">Deiziad (Nevez \u2192 Kozh)</string>
+ <string name="sort_date_old_new">Deiziad (Kozh \u2192 Nevez)</string>
+ <string name="sort_duration_short_long">Padelezh (Berr \u2192 Hir)</string>
+ <string name="sort_duration_long_short">Padelezh (Hir \u2192 Berr)</string>
+ <string name="sort_a_z">A \u2192 Z</string>
+ <string name="sort_z_a">Z \u2192 A</string>
+ <string name="sort_new_old">Nevez \u2192 Kozh</string>
+ <string name="sort_old_new">Kozh \u2192 Nevez</string>
+ <string name="sort_short_long">Berr \u2192 Hir</string>
+ <string name="sort_long_short">Hir \u2192 Berr</string>
+ <!--Rating dialog-->
+ <string name="rating_title">Plijout a ra AntennaPod deoc\'h?</string>
+ <string name="rating_message">Laouen e vefemp ma \'z afec\'h da notenniñ AntennaPod.</string>
+ <string name="rating_never_label">Laoskit ac\'hanon e peoc\'h</string>
+ <string name="rating_later_label">Adlakaat da soñj diwezhatoc\'h</string>
+ <string name="rating_now_label">Deomp dezhi!</string>
+ <!--Audio controls-->
+ <string name="audio_controls">Reoliadurioù aodio</string>
+ <string name="playback_speed">Tizh lenn</string>
+ <string name="volume">Ampled</string>
+ <string name="left_short">K</string>
+ <string name="right_short">D</string>
+ <string name="audio_effects">Efedoù aodio</string>
+ <string name="stereo_to_mono">Meskañ: stereo pe mono</string>
+ <string name="sonic_only">Sonic hepken</string>
+ <string name="exoplayer_only">ExoPlayer hepken</string>
+ <!--proxy settings-->
+ <string name="proxy_type_label">RIzh</string>
+ <string name="host_label">Ostiz</string>
+ <string name="port_label">Porzh</string>
+ <string name="optional_hint">(Diret)</string>
+ <string name="proxy_test_label">Amprouiñ</string>
+ <string name="proxy_checking">O wiriañ...</string>
+ <string name="proxy_test_successful">Amprouet gant berzh</string>
+ <string name="proxy_test_failed">C\'hwitet</string>
+ <string name="proxy_host_empty_error">N\'hall ket an ostiz bezañ goullo</string>
+ <string name="proxy_host_invalid_error">An ostiz n\'eo ket ur chomlec\'h IP pe un domani talvoudek </string>
+ <string name="proxy_port_invalid_error">Porzh didalvoudek</string>
+ <!--Subscriptions fragment-->
+ <string name="subscription_num_columns">Niver a vannoù</string>
+ <!--Casting-->
+ <string name="cast_media_route_menu_title">Lenn war...</string>
+ <string name="cast_disconnect_label">Digennaskañ an estez cas</string>
+ <string name="cast_not_castable">Ar benveg cast n\'eo ket keverlec\'h gant ar media diuzet</string>
+ <string name="cast_failed_to_play">Fazi en ul lenn ar media</string>
+ <string name="cast_failed_to_stop">C\'hwitadenn en ur baouez da lenn ar media</string>
+ <string name="cast_failed_to_pause">C\'hwitadenn en un ehanañ lenn ar media</string>
+ <string name="cast_failed_setting_volume">C\'hwitadenn en ur zibab an ampled</string>
+ <string name="cast_failed_no_connection">N\'eus kennask evet d\'ar benveg Cast</string>
+ <string name="cast_failed_no_connection_trans">Kollet eo bet ar c\'hennask d\'ar benveg cast. Emañ an arload o klask adkennaskañ mard eo posupl. Gortozit un nebeud eilennoù ha klaskit en-dro.</string>
+ <string name="cast_failed_status_request">C\'hwitadenn en ur c\'houbredañ ar benveg cast</string>
+ <string name="cast_failed_seek">C\'hwitadenn en ur glask al lec\'hiadur nevez war ar benveg cast</string>
+ <string name="cast_failed_receiver_player_error">Ur fazi grevus a zo degouezhet gant al lenner degemer</string>
+ <string name="cast_failed_media_error_skipping">Fazi en ul lenn ar media. O tremen...</string>
+ <!--Notification channels-->
+ <string name="notification_channel_user_action">Ober rekiz</string>
+ <string name="notification_channel_user_action_description">Skrammet e vo mard eo ret deoc\'h ober un dra bennak, enankañ ur ger-tremen da skouer.</string>
+ <string name="notification_channel_downloading">O pellgargañ</string>
+ <string name="notification_channel_downloading_description">Diskouezet eo pa vez o pellgargañ.</string>
+ <string name="notification_channel_playing">O lenn</string>
+ <string name="notification_channel_playing_description">Evit reoliañ al lenn. Ar rebuzadur pennañ an hini eo pa lennit ur podskignat.</string>
+ <string name="notification_channel_error">Fazioù</string>
+ <string name="notification_channel_error_description">Diskouezet eo pa vez ur gudenn, ma c\'hwit ur pellgargadur pe ur goubredañ.</string>
+ <string name="notification_channel_auto_download">Pellgargañ emgefreek</string>
+ <string name="notification_channel_episode_auto_download">Diskouezet eo pa vez pellgarget rannoù ent emgefreek</string>
+ <!--Widget settings-->
+ <string name="widget_settings">Gwellvezioù ar widjet</string>
+ <string name="widget_create_button">Krouiñ ur widjet</string>
+ <string name="widget_opacity">Demerez</string>
+ <!--On-Demand configuration-->
+ <string name="on_demand_config_setting_changed">Arventenn hizivaet</string>
+ <string name="on_demand_config_stream_text">War a-seblant e lennit e streaming kalz. Fellout a ra deoc\'h e vefe diskouezet an afelloù lenn e streaming er roll?</string>
+ <string name="on_demand_config_download_text">War a-seblant e pellgargit kalz. Fellout a ra deoc\'h e vefe diskouezet an afelloù pellgargañ er roll?</string>
+</resources>
diff --git a/core/src/main/res/values-ca/strings.xml b/core/src/main/res/values-ca/strings.xml
index 1a72af232..30a71465a 100644
--- a/core/src/main/res/values-ca/strings.xml
+++ b/core/src/main/res/values-ca/strings.xml
@@ -2,6 +2,7 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<!--Activity and fragment titles-->
<string name="feed_update_receiver_name">Actualitzar subscripcions</string>
+ <string name="feeds_label">Podcasts</string>
<string name="statistics_label">Estadístiques</string>
<string name="add_feed_label">Afegeix podcast</string>
<string name="episodes_label">Episodis</string>
@@ -22,6 +23,8 @@
<string name="gpodnet_auth_label">Inici de sessió a gpodder.net</string>
<string name="episode_cache_full_title">La memòria cau d\'episodis és plena</string>
<string name="episode_cache_full_message">S\'ha arribat al límit de la memòria cau d\'episodis. Pots incrementar-ne la capacitat a la configuració.</string>
+ <string name="playback_statistics_label">Reproducció</string>
+ <string name="download_statistics_label">Baixades</string>
<!--Statistics fragment-->
<string name="total_time_listened_to_podcasts">Temps total de podcasts reproduïts</string>
<string name="statistics_details_dialog">%1$d de %2$depisodis començats.\n\nReproduïts %3$s de %4$s.</string>
@@ -29,7 +32,10 @@
<string name="statistics_mode_normal">Calcula el temps que realment s\'ha reproduït. La reproducció repetida es comptarà repetides vegades, mentre que no es tindrà en compte si s\'ha marcat com a reproduït. </string>
<string name="statistics_mode_count_all">Suma tots els podcasts marcats com a reproduïts</string>
<string name="statistics_speed_not_counted">Avís: la velocitat de reproducció mai no es té en compte.</string>
+ <string name="statistics_reset_data">Resetejar dades estadístiques</string>
+ <string name="statistics_reset_data_msg">Açò esborrarà l\'històric de la duració reproduïda per a tots els episodis. ¿Segur que vols continuar?</string>
<!--Download Statistics fragment-->
+ <string name="total_size_downloaded_podcasts">Mida total dels podcasts baixats:</string>
<!--Main activity-->
<string name="drawer_open">Obre menú</string>
<string name="drawer_close">Tanca menú</string>
@@ -78,6 +84,11 @@
<string name="auto_download_apply_to_items_title">Aplica als episodis previs</string>
<string name="auto_download_apply_to_items_message">El nou ajustament de <i>baixada automàtica</i> s\'aplicarà als nous episodis.\nVols que també sigui aplicat als episodis publicats prèviament?</string>
<string name="auto_delete_label">Esborra episodi automàticament</string>
+ <string name="feed_volume_reduction">Reducció de volum</string>
+ <string name="feed_volume_reduction_summary">Baixa el volum per a episodis d\'aquest feed: %1$s</string>
+ <string name="feed_volume_reduction_off">Off</string>
+ <string name="feed_volume_reduction_light">Lleuger</string>
+ <string name="feed_volume_reduction_heavy">Fort</string>
<string name="parallel_downloads_suffix">\u0020baixades en paral·lel</string>
<string name="feed_auto_download_global">Valor predeterminat global</string>
<string name="feed_auto_download_always">Sempre</string>
@@ -86,15 +97,27 @@
<string name="episode_cleanup_never">Mai</string>
<string name="episode_cleanup_queue_removal">Quan no està a la cua</string>
<string name="episode_cleanup_after_listening">Després d\'acabar</string>
+ <plurals name="episode_cleanup_hours_after_listening">
+ <item quantity="one">1 hora després d\'acabar</item>
+ <item quantity="other">%d hours després d\'acabar</item>
+ </plurals>
<plurals name="episode_cleanup_days_after_listening">
<item quantity="one">1 dia després d\'acabar</item>
<item quantity="other">%d dies després d\'acabar</item>
</plurals>
+ <plurals name="num_selected_label">
+ <item quantity="one">%d seleccionat</item>
+ <item quantity="other">%dseleccionats</item>
+ </plurals>
+ <string name="loading_more">Carregant més...</string>
<!--Actions on feeds-->
<string name="mark_all_read_label">Marca-ho tot com a llegit</string>
<string name="mark_all_read_msg">S\'han marcat tots els episodis com a llegits</string>
<string name="mark_all_read_confirmation_msg">Si us plau confirma que vols marcar tots els episodis com reproduits.</string>
<string name="mark_all_read_feed_confirmation_msg">Si us plau, confirmeu que voleu marcar tots els episodis d\'aquest podcast com a reproduïts.</string>
+ <string name="remove_all_new_flags_label">Retirar totes les banderes de \"nou\"</string>
+ <string name="removed_all_new_flags_msg">Retirades totes les banderes de \"nou\"</string>
+ <string name="remove_all_new_flags_confirmation_msg">Si us plau, confirma que vols retirar la bandera \"nou\" de tots els episodis.</string>
<string name="show_info_label">Mostra informació</string>
<string name="show_feed_settings_label">Mostrar configuració del podcast</string>
<string name="feed_info_label">Informació del podcast</string>
@@ -105,11 +128,16 @@
<string name="share_link_label">Comparteix l\'adreça de l\'episodi</string>
<string name="share_link_with_position_label">Comparteix l\'adreça de l\'episodi i la posició</string>
<string name="share_file_label">Comparteix el fitxer</string>
+ <string name="share_website_url_label">Comparteix URL de la pàgina </string>
+ <string name="share_feed_url_label">Comparteix URL de podcast</string>
<string name="share_item_url_label">Comparteix l\'adreça del fitxer multimèdia</string>
<string name="share_item_url_with_position_label">Comparteix l\'adreça del fitxer multimèdia i la posició</string>
<string name="feed_delete_confirmation_msg">Si us plau, confirmeu que voleu eliminar el podcast \"%1$s\" i tots els seus episodis (fins i tot els ja baixats).</string>
<string name="feed_remover_msg">Eliminant podcast</string>
<string name="load_complete_feed">Refrescar tot el podcast</string>
+ <string name="multi_select">Selecció múltiple</string>
+ <string name="select_all_above">Seleccionar tots cap amunt</string>
+ <string name="select_all_below">Seleccionar cap a baix</string>
<string name="hide_unplayed_episodes_label">Per reproduir</string>
<string name="hide_paused_episodes_label">Pausat</string>
<string name="hide_played_episodes_label">Reproduit</string>
@@ -122,19 +150,51 @@
<string name="filtered_label">Filtrat</string>
<string name="refresh_failed_msg">{fa-exclamation-circle} Darrera actualització fallida</string>
<string name="open_podcast">Obrir podcast</string>
+ <string name="please_wait_for_data">Per favor, espera fins a que les dades estiguen carregades</string>
<!--actions on feeditems-->
<string name="download_label">Baixa</string>
+ <plurals name="downloading_batch_label">
+ <item quantity="one">Baixant %d episodi.</item>
+ <item quantity="other">Baixant %d episodis.</item>
+ </plurals>
<string name="play_label">Reprodueix</string>
<string name="pause_label">Pausa</string>
<string name="stream_label">Reprodueix sense baixar</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="delete_episode_label">Esborrar episodi.</string>
+ <plurals name="deleted_episode_batch_label">
+ <item quantity="one">%d episodi esborrat.</item>
+ <item quantity="other">%d episodis esborrats.</item>
+ </plurals>
+ <string name="remove_new_flag_label">Retirar bandera de \"nou\"</string>
+ <string name="removed_new_flag_label">Retirada bandera de \"nou\"</string>
<string name="mark_read_label">Marca com a llegit</string>
<string name="marked_as_read_label">Marcats com llegits</string>
+ <string name="mark_read_no_media_label">Marcar com a llegit</string>
+ <string name="marked_as_read_no_media_label">Marcar com a llegit</string>
+ <string name="play_this_to_seek_position">Per a botar a posicions deus reproduir l\'episodi.</string>
+ <plurals name="marked_read_batch_label">
+ <item quantity="one">%d episodi marcat com a reproduït.</item>
+ <item quantity="other">%d episodis marcats com a reproduïts. </item>
+ </plurals>
<string name="mark_unread_label">Marca com a pendent</string>
+ <string name="mark_unread_label_no_media">Marcar com a no llegit</string>
+ <plurals name="marked_unread_batch_label">
+ <item quantity="one">%d episodi marcat com a no llegit.</item>
+ <item quantity="other">%d episodis marcats com a no llegits.</item>
+ </plurals>
<string name="add_to_queue_label">Afegeix a la cua</string>
<string name="added_to_queue_label">Afegit a la cua</string>
+ <plurals name="added_to_queue_batch_label">
+ <item quantity="one">%d episodi afegit a la cua.</item>
+ <item quantity="other">%d episodis afegits a la cua.</item>
+ </plurals>
<string name="remove_from_queue_label">Suprimeix de la cua</string>
+ <plurals name="removed_from_queue_batch_label">
+ <item quantity="one">%d episodi retirat de la cua.</item>
+ <item quantity="other">%d episodis retirats de la cua.</item>
+ </plurals>
<string name="add_to_favorite_label">Afegit a preferits</string>
<string name="added_to_favorites">Afegit a preferits</string>
<string name="remove_from_favorite_label">Suprimeix de preferits</string>
@@ -145,6 +205,7 @@
<string name="deactivate_auto_download">Desactiva les baixades automàtiques</string>
<string name="reset_position">Restablir posició de reproducció</string>
<string name="removed_item">S\'ha suprimit l\'element</string>
+ <string name="no_items_selected">Cap item seleccionat.</string>
<!--Download messages and labels-->
<string name="download_successful">ha funcionat</string>
<string name="download_pending">Baixada pendent</string>
@@ -165,6 +226,7 @@
<string name="download_canceled_msg">S\'ha cancel·lat la baixada</string>
<string name="download_canceled_autodownload_enabled_msg">Baixada cancel·lada\nDesactivada les <i>baixades automàtiques</i> per aquest element</string>
<string name="download_report_title">Baixades completades amb error(s)</string>
+ <string name="auto_download_report_title">Auto-baixades completades.</string>
<string name="download_report_content_title">Registre de baixades</string>
<string name="download_error_malformed_url">URL mal formatada</string>
<string name="download_error_io_error">Error d\'E/S</string>
@@ -181,11 +243,15 @@
<string name="download_type_feed">Canal</string>
<string name="download_type_media">Fitxer</string>
<string name="download_request_error_dialog_message_prefix">S\'ha produït un error en intentar baixar el fitxer:\u0020</string>
+ <string name="null_value_podcast_error">No s\'ha proporcionat cap podcast que puga mostrar-se.</string>
<string name="authentication_notification_title">Cal autenticar-se</string>
<string name="authentication_notification_msg">Es necessita un usuari i una contrasenya per accedir al recurs</string>
<string name="confirm_mobile_download_dialog_title">Confirma baixada mòvil</string>
<string name="confirm_mobile_download_dialog_message_not_in_queue">La baixada amb connexió de dades mòbils està desactivada.\n\nPots escollir entre afegir l\'episodi a la cua, o permetre la descàrrega de forma temporal.\n\n<small>La teva tria es recordarà durant 10 minuts.</small></string>
<string name="confirm_mobile_download_dialog_message">La baixada amb connexió de dades mòbils està desactivada.\n\nVols permetre la descàrrega de forma temporal?\n\n<small>La teva tria es recordarà durant 10 minuts.</small></string>
+ <string name="confirm_mobile_streaming_notification_title">Confirmar streaming per mòbil.</string>
+ <string name="confirm_mobile_streaming_notification_message">Streaming per xarxa mòbil està deshabilitat als ajustos. Toca la pantalla per a fer-ho de totes maners.</string>
+ <string name="confirm_mobile_streaming_button_always">Permet sempre.</string>
<string name="confirm_mobile_download_dialog_only_add_to_queue">En cua</string>
<string name="confirm_mobile_download_dialog_enable_temporarily">Permetre temporalment</string>
<!--Mediaplayer messages-->
@@ -195,21 +261,28 @@
<string name="player_ready_msg">Preparat</string>
<string name="player_seeking_msg">S\'està cercant</string>
<string name="playback_error_server_died">El servidor no està operatiu</string>
+ <string name="playback_error_unsupported">Tipus de medi no suportat.</string>
+ <string name="playback_error_timeout">La operació ha tardat massa.</string>
+ <string name="playback_error_source">No s\'ha pogut accedir al arxiu de media.</string>
<string name="playback_error_unknown">Error desconegut</string>
<string name="no_media_playing_label">No s\'està reproduint res</string>
<string name="player_buffering_msg">S\'està carregant</string>
<string name="player_go_to_picture_in_picture">Mode Picture-in-picture</string>
<string name="unknown_media_key">AntennaPod - Control desconegut: %1$d</string>
+ <string name="error_file_not_found">Arxiu no trobat</string>
<!--Queue operations-->
<string name="lock_queue">Bloqueja la cua</string>
<string name="unlock_queue">Desbloqueja la cua</string>
<string name="queue_locked">Cua bloquejada</string>
<string name="queue_unlocked">Cua no bloquejada</string>
+ <string name="queue_lock_warning">Si bloqueges la cua no podràs arrastrar o reordenar episodis.</string>
+ <string name="checkbox_do_not_show_again">No mostres més.</string>
<string name="clear_queue_label">Buida la cua</string>
<string name="undo">Desfés</string>
<string name="move_to_top_label">Mou al principi</string>
<string name="move_to_bottom_label">Mou al final</string>
<string name="sort">Ordena</string>
+ <string name="keep_sorted">Manté ordenats.</string>
<string name="date">Data</string>
<string name="duration">Durada</string>
<string name="episode_title">Títol de l\'episodi</string>
@@ -223,22 +296,49 @@
<!--Variable Speed-->
<string name="download_plugin_label">Baixa el connector</string>
<string name="no_playback_plugin_title">Connector no instal·lat</string>
+ <string name="no_playback_plugin_or_sonic_msg">Per a que la velocitat de reproducció variable funcione recomanem activar el reproductor de medis Sonic.</string>
<string name="set_playback_speed_label">Velocitats de reproducció</string>
<string name="enable_sonic">Activa Sonic</string>
<!--Empty list labels-->
+ <string name="no_items_header_label">No hi ha episodis a la cua.</string>
+ <string name="no_items_label">Afegeix un episodi baixant-lo, o polsa un episodi durant un moment i selecciona \"Afegir a la cua\"</string>
<string name="no_shownotes_label">Aquest episodi no té notes.</string>
+ <string name="no_run_downloads_head_label">No hi ha baixades en marxa.</string>
+ <string name="no_run_downloads_label">Pots baixar episodis a la pantalla de detalls del podcast</string>
+ <string name="no_comp_downloads_head_label">Cap episodi baixat.</string>
+ <string name="no_comp_downloads_label">Pots baixar episodis a la pantalla de detalls del podcast</string>
+ <string name="no_log_downloads_head_label">No hi ha registre de baixades</string>
+ <string name="no_log_downloads_label">Els registres de baixades apareixeran ací quan estiguen disponibles.</string>
+ <string name="no_history_head_label">No hi ha històric</string>
+ <string name="no_history_label">Després d\'haver escoltat un episodi apareixerà ací.</string>
+ <string name="no_all_episodes_head_label">No hi ha episodis</string>
+ <string name="no_all_episodes_label">Al afegir un podcast els episodis apareixeran ací.</string>
+ <string name="no_new_episodes_head_label">No hi ha episodis nous.</string>
+ <string name="no_new_episodes_label">Quan arriben nous episodis apareixeran ací. </string>
+ <string name="no_fav_episodes_head_label">No hi ha episodis favorits. </string>
+ <string name="no_fav_episodes_label">Pots afegir episodis a favorits tocant-los i mantenint.</string>
+ <string name="no_chapters_head_label">No hi ha capitols</string>
<string name="no_chapters_label">Aquest episodi no té capítols</string>
+ <string name="no_subscriptions_head_label">No hi ha subscripcions</string>
+ <string name="no_subscriptions_label">Per a subscriure\'t a un podcast, toca la icona + més avall.</string>
<!--Preferences-->
<string name="storage_pref">Emmagatzematge</string>
+ <string name="storage_sum">Auto-esborrat d\'episodis, Importar, Exportar</string>
<string name="project_pref">Projecte</string>
<string name="queue_label">Cua</string>
+ <string name="synchronization_pref">Sincronització</string>
+ <string name="synchronization_sum">Sincronitza amb altres dispositius usant gpodder.net</string>
<string name="automation">Automatització</string>
<string name="download_pref_details">Detalls</string>
<string name="import_export_pref">Importa/Exporta</string>
+ <string name="import_export_search_keywords">còpia de seguretat, restaurar</string>
<string name="appearance">Aparença</string>
<string name="external_elements">Elements externs</string>
<string name="interruptions">Interrupcions</string>
+ <string name="playback_control">Control de reproducció</string>
<string name="preference_search_hint">Cerca…</string>
+ <string name="preference_search_no_results">No hi ha resultats</string>
+ <string name="preference_search_clear_history">Esborra l\'historial</string>
<string name="media_player">Reproductor multimèdia</string>
<string name="pref_episode_cleanup_title">Neteja l\'episodi</string>
<string name="pref_episode_cleanup_summary">Els episodis que no es troben a la cua i no són preferits seran candidats a ser suprimits si l\'Auto Descàrrega necessita espai per a nous episodis</string>
@@ -246,6 +346,7 @@
<string name="pref_unpauseOnHeadsetReconnect_sum">Continua la reproducció en connectar novament els auriculars</string>
<string name="pref_unpauseOnBluetoothReconnect_sum">Continua la reproducció en connectar novament el bluetooth</string>
<string name="pref_hardwareForwardButtonSkips_title">Endavant per saltar</string>
+ <string name="pref_hardwareForwardButtonSkips_sum">En prémer el botó d\'avançada en un dispositiu bluetooth bota al següent episodi en lloc d\'avançar.</string>
<string name="pref_hardwarePreviousButtonRestarts_title">Endarrere per reiniciar</string>
<string name="pref_hardwarePreviousButtonRestarts_sum">En prémer un botó físic, reinicieu l\'episodi actual en lloc de rebobinar-lo</string>
<string name="pref_followQueue_sum">Salta al següent element de la cua en acabar la reproducció</string>
@@ -258,8 +359,11 @@
<string name="pref_favorite_keeps_episodes_sum">Conserva els episodis marcats com a preferits.</string>
<string name="pref_favorite_keeps_episodes_title">Conserva els episodis preferits.</string>
<string name="playback_pref">Reproducció</string>
+ <string name="playback_pref_sum">Controls d\'auriculars, Intervals d\'avançada, Cua</string>
<string name="network_pref">Xarxa</string>
+ <string name="network_pref_sum">Interval d\'actualització, Controls de baixada, Dades mòbils</string>
<string name="pref_autoUpdateIntervallOrTime_title">Actualitza interval o horari del dia</string>
+ <string name="pref_autoUpdateIntervallOrTime_sum">Especifica un interval o una hora del dia específica per a refrescar els podcasts automáticament</string>
<string name="pref_autoUpdateIntervallOrTime_message">Pots establir un <i>interval</i> com ara \"cada 2 hores\", establir una <i>hora del dia</i> com ara \"7:00 AM\" o <i>disactiva</i> l\'actualització automàtica del conjunt.\n\n<small>Tingues en compte que les actualitzacions no són exactes i pot donar-se una breu demora.</small></string>
<string name="pref_autoUpdateIntervallOrTime_Disable">Desactivar</string>
<string name="pref_autoUpdateIntervallOrTime_Interval">Establir interval</string>
@@ -270,8 +374,17 @@
<string name="pref_pauseOnHeadsetDisconnect_title">Desconnexió d\'auriculars</string>
<string name="pref_unpauseOnHeadsetReconnect_title">Connexió d\'auriculars</string>
<string name="pref_unpauseOnBluetoothReconnect_title">Connexió de bluetooth</string>
+ <string name="pref_stream_over_download_title">Preferir streaming</string>
+ <string name="pref_stream_over_download_sum">Mostra botó d\'streaming en compte de botó de descarrega a les llistes</string>
<string name="pref_mobileUpdate_title">Actualitzacions sobre xarxes mòbils</string>
+ <string name="pref_mobileUpdate_sum">Selecciona què és permès a la connexió de la xarxa mòbil</string>
+ <string name="pref_mobileUpdate_refresh">Refrescar podcast</string>
+ <string name="pref_mobileUpdate_images">Cobre images</string>
+ <string name="pref_mobileUpdate_auto_download">Baixada automática</string>
+ <string name="pref_mobileUpdate_episode_download">Baixada d\'episodis</string>
+ <string name="pref_mobileUpdate_streaming">Streaming</string>
<string name="user_interface_label">Interfície d\'usuari</string>
+ <string name="user_interface_sum">Aparença, Ordre de les subscripcions, pantalla de bloqueig</string>
<string name="pref_set_theme_title">Selecciona el tema</string>
<string name="pref_nav_drawer_items_title">Estableix els elements del calaix de navegació</string>
<string name="pref_nav_drawer_items_sum">Canvia els elements que apareixen al calaix de navegació.</string>
@@ -288,6 +401,10 @@
<string name="pref_automatic_download_on_battery_sum">Permet les baixades automàtiques mentre la bateria no es carrega</string>
<string name="pref_parallel_downloads_title">Baixades paral·leles</string>
<string name="pref_episode_cache_title">Memòria cau d\'episodis</string>
+ <string name="pref_episode_cache_summary">Nombre total d\'episodis baixats al dispositiu. La baixada automàtica serà suspesa si s\'arriba a aquest nombre.</string>
+ <string name="pref_episode_cover_title">Usa la coberta de l\'episodi</string>
+ <string name="pref_episode_cover_summary">Usa la coberta específica de l\'episodi quan siga possible. Si no es marca aquesta opció s\'usarà sempre la imatge del podcast com a coberta.</string>
+ <string name="pref_theme_title_use_system">Usa el tema del sistema</string>
<string name="pref_theme_title_light">Clar</string>
<string name="pref_theme_title_dark">Fosc</string>
<string name="pref_theme_title_trueblack">Negra (per AMOLED)</string>
@@ -301,6 +418,7 @@
<string name="pref_gpodnet_logout_toast">Heu sortit de la sessió</string>
<string name="pref_gpodnet_setlogin_information_title">Dades d\'inici de sessió</string>
<string name="pref_gpodnet_setlogin_information_sum">Canvia les dades d\'inici de sessió del vostre compte de gpodder.net</string>
+ <string name="pref_gpodnet_sync_changes_title">Sincronitza ara</string>
<string name="pref_gpodnet_sync_changes_sum">Sincronitza amb gpodder.net les subscripcions i els estats dels episodis.</string>
<string name="pref_gpodnet_full_sync_sum">Sincronitza amb gpodder.net totes les subscripcions i els estats dels episodis.</string>
<string name="pref_gpodnet_login_status"><![CDATA[Connectat com a <i>%1$s</i> amb el dispositiu <i>%2$s</i>]]></string>
diff --git a/core/src/main/res/values-cs/strings.xml b/core/src/main/res/values-cs/strings.xml
index 01f5ad018..ec6f20941 100644
--- a/core/src/main/res/values-cs/strings.xml
+++ b/core/src/main/res/values-cs/strings.xml
@@ -2,6 +2,7 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<!--Activity and fragment titles-->
<string name="feed_update_receiver_name">Aktualizovat sbírky</string>
+ <string name="feeds_label">Podcasty</string>
<string name="statistics_label">Statistiky</string>
<string name="add_feed_label">Přidat podcast</string>
<string name="episodes_label">Epizody</string>
@@ -22,17 +23,27 @@
<string name="gpodnet_auth_label">Login pro gpodder.net</string>
<string name="episode_cache_full_title">Odkládací prostor pro epizody je plný</string>
<string name="episode_cache_full_message">Došlo k zaplnění limitu odkládacího prostoru pro epizody. Můžete navýšit vyhrazený prostor v Nastavení.</string>
+ <string name="playback_statistics_label">Přehrávání</string>
+ <string name="download_statistics_label">Stažené</string>
<!--Statistics fragment-->
<string name="total_time_listened_to_podcasts">Celkový čas poslechnutých podcastů:</string>
<string name="statistics_details_dialog">%1$d z %2$d započatých epizod.\n\nPřehraných %3$s z %4$s.</string>
+ <string name="statistics_mode">Režim statistik</string>
+ <string name="statistics_mode_normal">Počítat skutečně přehraný čas. Tj. 5 minutová epizoda poslechnutá dvakrát je 10 minut, 7 minutová epizoda pouze označená jako poslechnutá je 0 minut.</string>
+ <string name="statistics_mode_count_all">Sečíst délky všech podcastů označených jako poslechnutých.</string>
+ <string name="statistics_speed_not_counted">Upozornění: Rychlost přehrávání se nikdy nebere v potaz.</string>
+ <string name="statistics_reset_data">Vynulovat statistiky</string>
+ <string name="statistics_reset_data_msg">Toto smaže veškerou historii přehrávání pro všechny epizody. Vážně chcete pokračovat?</string>
<!--Download Statistics fragment-->
+ <string name="total_size_downloaded_podcasts">Celková velikost stažených podcastů:</string>
<!--Main activity-->
<string name="drawer_open">Otevřít menu</string>
<string name="drawer_close">Zavřít menu</string>
<string name="drawer_preferences">Nastavení panelu</string>
- <string name="drawer_feed_order_unplayed_episodes">Řadit dle počtu</string>
+ <string name="drawer_feed_order_unplayed_episodes">Řadit dle čítače</string>
<string name="drawer_feed_order_alphabetical">Řadit abecedně</string>
<string name="drawer_feed_order_last_update">Řadit dle data zveřejnění</string>
+ <string name="drawer_feed_order_most_played">Řadit podle počtu poslechnutých epizod</string>
<string name="drawer_feed_counter_new_unplayed">Počet nových a nepřehraných epizod</string>
<string name="drawer_feed_counter_new">Počet nových epizod</string>
<string name="drawer_feed_counter_unplayed">Počet nepřehraných epizod</string>
@@ -59,6 +70,7 @@
<string name="cover_label">Obrázek</string>
<string name="error_label">Chyba</string>
<string name="error_msg_prefix">Došlo k chybě:</string>
+ <string name="needs_storage_permission">Tato operace vyžaduje oprávnění pro přístup do úložiště</string>
<string name="refresh_label">Obnovit</string>
<string name="external_storage_error_msg">Není dostupné žádné externí uložiště. Pro správnou funkci aplikace se prosím ujistěte, že je připojeno externí úložiště.</string>
<string name="chapters_label">Kapitoly</string>
@@ -73,6 +85,11 @@
<string name="auto_download_apply_to_items_title">Použít na předchozí epizody</string>
<string name="auto_download_apply_to_items_message">Nové nastavení <i>automatického stahování</i> bude použito pro nové epizody.\nChcete ho použít také na epizody zveřejněné dříve?</string>
<string name="auto_delete_label">Automatické mazání epizod</string>
+ <string name="feed_volume_reduction">Snížení hlasitosti</string>
+ <string name="feed_volume_reduction_summary">Snížení hlasitosti epizod tohoto podcastu: %1$s&lt;br&gt;</string>
+ <string name="feed_volume_reduction_off">Vypnuto</string>
+ <string name="feed_volume_reduction_light">Nízké</string>
+ <string name="feed_volume_reduction_heavy">Vysoké</string>
<string name="parallel_downloads_suffix">\u0020paralelních stahování</string>
<string name="feed_auto_download_global">Globální nastavení</string>
<string name="feed_auto_download_always">Vždy</string>
@@ -81,26 +98,53 @@
<string name="episode_cleanup_never">Nikdy</string>
<string name="episode_cleanup_queue_removal">Pokud není ve frontě</string>
<string name="episode_cleanup_after_listening">Po dokončení</string>
+ <plurals name="episode_cleanup_hours_after_listening">
+ <item quantity="one">%d hodinu po dokončení</item>
+ <item quantity="few">%d hodiny po dokončení</item>
+ <item quantity="many">%d hodin po dokončení</item>
+ <item quantity="other">%d hodin po dokončení</item>
+ </plurals>
<plurals name="episode_cleanup_days_after_listening">
<item quantity="one">1 den po dokončení</item>
<item quantity="few">%d dny po dokončení</item>
<item quantity="many">%d dnů po dokončení</item>
<item quantity="other">%d dnů po dokončení</item>
</plurals>
+ <plurals name="num_selected_label">
+ <item quantity="one">%d vybrána</item>
+ <item quantity="few">%d vybrány</item>
+ <item quantity="many">%d vybráno</item>
+ <item quantity="other">%d vybráno</item>
+ </plurals>
+ <string name="loading_more">Načítají se další…</string>
<!--Actions on feeds-->
<string name="mark_all_read_label">Označit vše jako poslechnuté</string>
<string name="mark_all_read_msg">Všechny epizody označeny jako poslechnuté</string>
<string name="mark_all_read_confirmation_msg">Potvrďte prosím, že chcete označit všechny vybrané epizody jako poslechnuté.</string>
+ <string name="mark_all_read_feed_confirmation_msg">Potvrďte prosím, že chcete označit všechny epizody tohoto podcastu jako poslechnuté.</string>
+ <string name="remove_all_new_flags_label">Odstranit příznak „nová“ ze všech epizod</string>
+ <string name="removed_all_new_flags_msg">Příznak „nová“ odstraněn ze všech epizod</string>
+ <string name="remove_all_new_flags_confirmation_msg">Potvrďte prosím, že chcete odstranit příznak „nová“ ze všech epizod.</string>
<string name="show_info_label">Informace o zdroji</string>
+ <string name="show_feed_settings_label">Zobrazit nastavení podcastu</string>
+ <string name="feed_info_label">Informace o podcastu</string>
+ <string name="feed_settings_label">Nastavení podcastu</string>
<string name="rename_feed_label">Přejmenovat podcast</string>
<string name="remove_feed_label">Odstranit podcast</string>
<string name="share_label">Sdílet</string>
<string name="share_link_label">Sdílet URL epizody</string>
<string name="share_link_with_position_label">Sdílet URL epizody s časovou značkou</string>
<string name="share_file_label">Sdílet soubor</string>
+ <string name="share_website_url_label">Sdílet URL webu</string>
+ <string name="share_feed_url_label">Sdílet URL podcastu</string>
<string name="share_item_url_label">Sdílet URL souboru</string>
<string name="share_item_url_with_position_label">Sdílet URL souboru s časovou značkou</string>
+ <string name="feed_delete_confirmation_msg">Potvrďte prosím, že chcete smazat podcast „%1$s“ a VŠECHNY jeho epizody (včetně stažených epizod).</string>
<string name="feed_remover_msg">Odstraňování podcastu</string>
+ <string name="load_complete_feed">Aktualizovat celý podcast</string>
+ <string name="multi_select">Výběr více položek</string>
+ <string name="select_all_above">Vybrat všechny výše</string>
+ <string name="select_all_below">Vybrat všechny níže</string>
<string name="hide_unplayed_episodes_label">Neposlechnuté</string>
<string name="hide_paused_episodes_label">Pozastavené</string>
<string name="hide_played_episodes_label">Poslechnuté</string>
@@ -109,23 +153,67 @@
<string name="hide_downloaded_episodes_label">Stažené</string>
<string name="hide_not_downloaded_episodes_label">Nestažené</string>
<string name="hide_has_media_label">Obsahuje média</string>
+ <string name="hide_is_favorite_label">Je mezi oblíbenými</string>
<string name="filtered_label">Filtrované</string>
<string name="refresh_failed_msg">{fa-exclamation-circle} Poslední aktualizace selhala</string>
<string name="open_podcast">Otevřít podcast</string>
+ <string name="please_wait_for_data">Počkejte prosím na dokončení načítání</string>
<!--actions on feeditems-->
<string name="download_label">Stáhnout</string>
+ <plurals name="downloading_batch_label">
+ <item quantity="one">Stahuje se %d epizoda.</item>
+ <item quantity="few">Stahují se %d epizody.</item>
+ <item quantity="many">Stahuje se %d epizod.</item>
+ <item quantity="other">Stahuje se %d epizod.</item>
+ </plurals>
<string name="play_label">Přehrát</string>
<string name="pause_label">Pozastavit</string>
<string name="stream_label">Vysílat</string>
<string name="delete_label">Smazat</string>
<string name="delete_failed">Nelze smazat soubor. Restart přístroje může pomoci.</string>
<string name="delete_episode_label">Smazat epizodu</string>
+ <plurals name="deleted_episode_batch_label">
+ <item quantity="one">%d epizoda stažena.</item>
+ <item quantity="few">%d epizody staženy.</item>
+ <item quantity="many">%d epizod staženo.</item>
+ <item quantity="other">%d epizod staženo.</item>
+ </plurals>
+ <string name="remove_new_flag_label">Odstranit příznak „nová“</string>
+ <string name="removed_new_flag_label">Příznak „nová“ odstraněn</string>
<string name="mark_read_label">Označit jako poslechnuté</string>
<string name="marked_as_read_label">Označeno jako poslechnuté</string>
+ <string name="mark_read_no_media_label">Označit jako poslechnuté</string>
+ <string name="marked_as_read_no_media_label">Označeno jako poslechnuté</string>
+ <string name="play_this_to_seek_position">Pro přeskočení na pozice musíte epizodu přehrát</string>
+ <plurals name="marked_read_batch_label">
+ <item quantity="one">%d epizoda označena jako přehraná</item>
+ <item quantity="few">%d epizody označeny jako přehrané</item>
+ <item quantity="many">%d epizod označeno jako přehrané</item>
+ <item quantity="other">%d epizod označeno jako přehrané</item>
+ </plurals>
<string name="mark_unread_label">Označit jako neposlechnuté</string>
+ <string name="mark_unread_label_no_media">Označit jako nepřečtené</string>
+ <plurals name="marked_unread_batch_label">
+ <item quantity="one">%d epizoda označena jako neposlechnutá</item>
+ <item quantity="few">%d epizody označeny jako neposlechnuté</item>
+ <item quantity="many">%d epizod označeno jako neposlechnuté</item>
+ <item quantity="other">%d epizod označeno jako neposlechnuté</item>
+ </plurals>
<string name="add_to_queue_label">Přidat do fronty</string>
<string name="added_to_queue_label">Přidáno do fronty</string>
+ <plurals name="added_to_queue_batch_label">
+ <item quantity="one">%d epizoda přidána do fronty</item>
+ <item quantity="few">%d epizody přidány do fronty</item>
+ <item quantity="many">%d epizod přidáno do fronty</item>
+ <item quantity="other">%d epizod přidáno do fronty</item>
+ </plurals>
<string name="remove_from_queue_label">Odebrat z fronty</string>
+ <plurals name="removed_from_queue_batch_label">
+ <item quantity="one">%d epizoda odebrána z fronty</item>
+ <item quantity="few">%d epizody odebrány z fronty</item>
+ <item quantity="many">%d epizod odebráno z fronty</item>
+ <item quantity="other">%d epizod odebráno z fronty</item>
+ </plurals>
<string name="add_to_favorite_label">Přidat k oblíbeným</string>
<string name="added_to_favorites">Přidáno k oblíbeným</string>
<string name="remove_from_favorite_label">Odebrat z obíbených</string>
@@ -136,6 +224,7 @@
<string name="deactivate_auto_download">Deaktivovat automatické stahování</string>
<string name="reset_position">Vymazat pozici přehrávání</string>
<string name="removed_item">Položka odebrána</string>
+ <string name="no_items_selected">Nic není vybráno</string>
<!--Download messages and labels-->
<string name="download_successful">úspěšné</string>
<string name="download_pending">Čeká na stažení</string>
@@ -156,6 +245,7 @@
<string name="download_canceled_msg">Stahování zrušeno</string>
<string name="download_canceled_autodownload_enabled_msg">Stahování zrušeno\nVypnuto <i>automatické stahování</i> této položky</string>
<string name="download_report_title">Stahování dokončeno s chybou</string>
+ <string name="auto_download_report_title">Automatické stahování dokončeno</string>
<string name="download_report_content_title">Report stahování</string>
<string name="download_error_malformed_url">Chybné URL</string>
<string name="download_error_io_error">IO chyba</string>
@@ -174,11 +264,15 @@
<string name="download_type_feed">Kanál</string>
<string name="download_type_media">Soubor</string>
<string name="download_request_error_dialog_message_prefix">Nastala chyba při pokusu o stažení souboru:\u0020</string>
+ <string name="null_value_podcast_error">Nebyl poskytnut žádný podcast, co by mohl být zobrazen.</string>
<string name="authentication_notification_title">Vyžadováno ověření</string>
<string name="authentication_notification_msg">Zdroj který jste vybrali vyžaduje zadání uživatelského jména a hesla</string>
<string name="confirm_mobile_download_dialog_title">Potvrdit mobilní stahování</string>
<string name="confirm_mobile_download_dialog_message_not_in_queue">Stahování dat přes mobilní připojení je v nastavení vypnuto.\n\nDočasně povolit nebo pouze přidat do fronty?\n\n<small>Tato volba bude platná po dalších 10 minut.</small></string>
<string name="confirm_mobile_download_dialog_message">Stahování dat přes mobilní připojení je v nastavení vypnuto.\n\nDočasně povolit?\n\n<small>Tato volba bude platná po dalších 10 minut.</small></string>
+ <string name="confirm_mobile_streaming_notification_title">Potvrďtě prosím streamování přes mobilní data</string>
+ <string name="confirm_mobile_streaming_notification_message">Streamování přes mobilní data je zakázáno v nastavení. Streamování můžete spustit dotykem, pokud i přesto chcete streamovat přes mobilní data.</string>
+ <string name="confirm_mobile_streaming_button_always">Vždy povolit</string>
<string name="confirm_mobile_download_dialog_only_add_to_queue">Pouze přidat do fronty</string>
<string name="confirm_mobile_download_dialog_enable_temporarily">Dočasně povolit</string>
<!--Mediaplayer messages-->
@@ -188,20 +282,28 @@
<string name="player_ready_msg">Připraven</string>
<string name="player_seeking_msg">Přetáčím</string>
<string name="playback_error_server_died">Server nereaguje</string>
+ <string name="playback_error_unsupported">Nepodporovaný typ média</string>
+ <string name="playback_error_timeout">Vypršel časový limit operace</string>
+ <string name="playback_error_source">Není přístup k mediálnímu souboru</string>
<string name="playback_error_unknown">Neznámá chyba</string>
<string name="no_media_playing_label">Žádné probíhající přehrávání</string>
<string name="player_buffering_msg">Načítání</string>
+ <string name="player_go_to_picture_in_picture">Režim obraz v obraze</string>
<string name="unknown_media_key">AntennaPod - Neznámý klíč médií: %1$d</string>
+ <string name="error_file_not_found">Soubor nebyl nalezen</string>
<!--Queue operations-->
<string name="lock_queue">Zamknout frontu</string>
<string name="unlock_queue">Odemknout frontu</string>
<string name="queue_locked">Fronta zamknuta</string>
<string name="queue_unlocked">Fronta odemknuta</string>
+ <string name="queue_lock_warning">Pokud zamknete frontu, tak nemůžete měnit pořadí epizod tažením.</string>
+ <string name="checkbox_do_not_show_again">Znovu již nezobrazovat</string>
<string name="clear_queue_label">Vyprázdnit frontu</string>
<string name="undo">Zpět</string>
<string name="move_to_top_label">Posunout na začátek</string>
<string name="move_to_bottom_label">Posunout na konec</string>
<string name="sort">Řazení</string>
+ <string name="keep_sorted">Udržovat seřazené</string>
<string name="date">Datum</string>
<string name="duration">Délka</string>
<string name="episode_title">Název epizody</string>
@@ -215,27 +317,57 @@
<!--Variable Speed-->
<string name="download_plugin_label">Stáhnout modul</string>
<string name="no_playback_plugin_title">Modul není nainstalován</string>
+ <string name="no_playback_plugin_or_sonic_msg">Pro správnou funkci proměnlivé rychlosti přehrávání je doporučeno povolit vestavěný přehrávač Sonic.</string>
<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_header_label">Žádné epizody ve frontě</string>
+ <string name="no_items_label">Přidejte epizodu stažením nebo dlouhým dotykem a volbou „Přidat do fronty“.</string>
<string name="no_shownotes_label">Tato epizoda neobsahuje žádné poznámky.</string>
<string name="no_run_downloads_head_label">Neběží žádná stahování</string>
+ <string name="no_run_downloads_label">Můžete stáhnout epizody tohoto podcastu z obrazovky s jeho detaily.</string>
+ <string name="no_comp_downloads_head_label">Žádné stažené epizody</string>
+ <string name="no_comp_downloads_label">Můžete stáhnout epizody tohoto podcastu z obrazovky s jeho detaily.</string>
+ <string name="no_log_downloads_head_label">Žádné záznamy o stahování</string>
+ <string name="no_log_downloads_label">Až proběhnou nějaká stahování, tak se záznamy o nich objeví zde.</string>
<string name="no_history_head_label">Žádná historie</string>
+ <string name="no_history_label">Až si poslechnete nějakou epizodu, tak se objeví zde.</string>
<string name="no_all_episodes_head_label">Žádné epizody</string>
+ <string name="no_all_episodes_label">Až si přidáte nějaký podcast, tak se objeví zde.</string>
<string name="no_new_episodes_head_label">Žádné nové epizody</string>
+ <string name="no_new_episodes_label">Až budou zveřejněny nové epizody, tak se objeví zde.</string>
<string name="no_fav_episodes_head_label">Žádné oblíbené epizody</string>
+ <string name="no_fav_episodes_label">Epizody si můžete přidat mezi oblíbené dlouhým dotykem.</string>
+ <string name="no_chapters_head_label">Žádné kapitoly</string>
<string name="no_chapters_label">Tato epizoda nemá žádné kapitoly.</string>
+ <string name="no_subscriptions_head_label">Žádené sbírky</string>
+ <string name="no_subscriptions_label">Pro přidání podcastu do sbírky se dotkněte ikonky plus níže.</string>
<!--Preferences-->
<string name="storage_pref">Úložiště</string>
+ <string name="storage_sum">Automatické mazání epizod, Import, Export</string>
<string name="project_pref">Projekt</string>
<string name="queue_label">Fronta</string>
+ <string name="synchronization_pref">Synchronizace</string>
+ <string name="synchronization_sum">Synchronizace s dalšími zařízeními pomocí služby gpodder.net</string>
+ <string name="automation">Automatizace</string>
+ <string name="download_pref_details">Detaily</string>
<string name="import_export_pref">Importovat/Exportovat</string>
+ <string name="import_export_search_keywords">zálohovat, obnovit</string>
<string name="appearance">Vzhled</string>
+ <string name="external_elements">Externí elementy</string>
+ <string name="interruptions">Přerušení</string>
+ <string name="playback_control">Ovládání přehrávání</string>
+ <string name="preference_search_hint">Vyhledávání…</string>
+ <string name="preference_search_no_results">Žádné výsledky</string>
+ <string name="preference_search_clear_history">Vymazat historii</string>
+ <string name="media_player">Přehrávač médií</string>
<string name="pref_episode_cleanup_title">Vyčistit epizody</string>
<string name="pref_episode_cleanup_summary">Epizody, které nejsou ve frontě a nejsou označeny za oblíbené by mělo být možné smazat, pokud bude funkce automatického stahování potřebovat místo pro nové epizody</string>
<string name="pref_pauseOnDisconnect_sum">Při odpojení sluchátek nebo bluetooth připojení pozastavit přehrávání.</string>
<string name="pref_unpauseOnHeadsetReconnect_sum">Pokračovat v přehrávání po připojení sluchátek</string>
<string name="pref_unpauseOnBluetoothReconnect_sum">Pokračovat v přehrávání po připojení bluetooth</string>
+ <string name="pref_hardwareForwardButtonSkips_title">Tlačítko rychle vpřed přeskakuje</string>
+ <string name="pref_hardwareForwardButtonSkips_sum">Stisk tlačítka rychle vpřed (FF) na připojeném zařízení Bluetooth přeskočí na další epizodu místo rychlého přetočení vpřed.</string>
<string name="pref_hardwarePreviousButtonRestarts_title">Tlačítko zpět restartuje</string>
<string name="pref_hardwarePreviousButtonRestarts_sum">Po stlačení hardwarového tlačítka pro posun zpět místo přetočení vpřed restartovat přehrávání aktuální epizody</string>
<string name="pref_followQueue_sum">Po přehrání položky z fronty přejít automaticky na další</string>
@@ -245,10 +377,14 @@
<string name="pref_smart_mark_as_played_title">Chytré označování jako poslechnuté</string>
<string name="pref_skip_keeps_episodes_sum">Neodstraňovat epizody při jejich přeskočení</string>
<string name="pref_skip_keeps_episodes_title">Nemazat přeskočené epizody</string>
+ <string name="pref_favorite_keeps_episodes_sum">Nemazat epizody, které jsou mezi oblíbenými.</string>
<string name="pref_favorite_keeps_episodes_title">Nemazat oblíbené epizody</string>
<string name="playback_pref">Přehrávání</string>
+ <string name="playback_pref_sum">Ovládání tlačítky sluchátek, přeskakování, fronta</string>
<string name="network_pref">Síť</string>
+ <string name="network_pref_sum">Četnost aktualizací, ovládání stahování, mobilní data</string>
<string name="pref_autoUpdateIntervallOrTime_title">Aktualizovat interval nebo čas v průběhu dne</string>
+ <string name="pref_autoUpdateIntervallOrTime_sum">Zvolte čas mezi aktualizacemi nebo čas v rámci dne, kdy proběhne automatická aktualizace podcastů</string>
<string name="pref_autoUpdateIntervallOrTime_message">Můžete nastavit <i>interval</i> jako třeba \"každé 2 hodiny\", nastavit specifický <i>čas v průběhu dne</i> jako \"7:00\" nebo úplně <i>vypnout</i> automatické aktualizace.\n\n<small>Mějte na paměti: Časy aktualizací nejsou přesné. Možná zaznamenáte krátká zpoždění.</small></string>
<string name="pref_autoUpdateIntervallOrTime_Disable">Vypnout</string>
<string name="pref_autoUpdateIntervallOrTime_Interval">Nastavit interval</string>
@@ -259,14 +395,24 @@
<string name="pref_pauseOnHeadsetDisconnect_title">Sluchátka odpojena</string>
<string name="pref_unpauseOnHeadsetReconnect_title">Sluchátka připojena</string>
<string name="pref_unpauseOnBluetoothReconnect_title">Bluetooth připojeno</string>
+ <string name="pref_stream_over_download_title">Upřednostnit streamování</string>
+ <string name="pref_stream_over_download_sum">Zobrazit tlačítko streamovat místo tlačítka stáhnout v seznamech.</string>
<string name="pref_mobileUpdate_title">Mobilní aktualizace</string>
+ <string name="pref_mobileUpdate_sum">Vyberte, co by mělo být povoleno přes mobilní data</string>
+ <string name="pref_mobileUpdate_refresh">Obnovit podcast</string>
+ <string name="pref_mobileUpdate_images">Obrázky podcastů/epizod</string>
+ <string name="pref_mobileUpdate_auto_download">Automatické stahování</string>
+ <string name="pref_mobileUpdate_episode_download">Stahování epizod</string>
+ <string name="pref_mobileUpdate_streaming">Streamování</string>
<string name="user_interface_label">Uživatelské rozhraní</string>
+ <string name="user_interface_sum">Vzhled, poradí ve sbírce, uzamčená obrazovka</string>
<string name="pref_set_theme_title">Vybrat motiv</string>
<string name="pref_nav_drawer_items_title">Změnit navigační panel</string>
<string name="pref_nav_drawer_items_sum">Upravit zobrazení položek v navigačním panelu.</string>
<string name="pref_nav_drawer_feed_order_title">Nastavit pořadí sbírek</string>
<string name="pref_nav_drawer_feed_order_sum">Upravit pořadí vašich sbírek</string>
- <string name="pref_nav_drawer_feed_counter_title">Nastavit počítadlo sbírek</string>
+ <string name="pref_nav_drawer_feed_counter_title">Nastavit čítač sbírek</string>
+ <string name="pref_nav_drawer_feed_counter_sum">Změnit informaci zobrazenou čítačem sbírek. Též ovlivňuje řazení, je-li nastaveno na „podle čítače“.</string>
<string name="pref_set_theme_sum">Změnit vzhled AntennaPod.</string>
<string name="pref_automatic_download_title">Automatické stahování</string>
<string name="pref_automatic_download_sum">Nastavení automatického stahování epizod.</string>
@@ -276,8 +422,13 @@
<string name="pref_automatic_download_on_battery_sum">Povolit automatické stahování i pokud není baterie nabíjena</string>
<string name="pref_parallel_downloads_title">Paralelní stahování</string>
<string name="pref_episode_cache_title">Historie epizod</string>
+ <string name="pref_episode_cache_summary">Celkový počet epizod stažených na zařízení. Automatické stahování se zastaví při dosažení této hodnoty.</string>
+ <string name="pref_episode_cover_title">Použít obrázek epizody</string>
+ <string name="pref_episode_cover_summary">Použít obrázek přímo z epizody, pokud je k dispozici. Není-li tato možnost zaškrtnuta, tak se vžy použije obrázek podcastu.</string>
+ <string name="pref_theme_title_use_system">Použít systémové téma</string>
<string name="pref_theme_title_light">Světlý</string>
<string name="pref_theme_title_dark">Tmavý</string>
+ <string name="pref_theme_title_trueblack">Černá (vhodná pro AMOLED)</string>
<string name="pref_episode_cache_unlimited">Bez omezení</string>
<string name="pref_update_interval_hours_plural">hodin</string>
<string name="pref_update_interval_hours_singular">hodina</string>
@@ -288,21 +439,34 @@
<string name="pref_gpodnet_logout_toast">Úspěšně odhlášeno</string>
<string name="pref_gpodnet_setlogin_information_title">Změna přihlašovacích údajů</string>
<string name="pref_gpodnet_setlogin_information_sum">Změní přihlašovací údaje k vašemu gpodder.net účtu.</string>
+ <string name="pref_gpodnet_sync_changes_title">Synchronizovat ihned</string>
<string name="pref_gpodnet_sync_changes_sum">Synchronizovat odběr a změny stavu epizody s gpodder.net.</string>
+ <string name="pref_gpodnet_full_sync_title">Synchronizovat vše ihned</string>
<string name="pref_gpodnet_full_sync_sum">Synchronizovat všechny odběry a stav epizod s gpodder.net.</string>
<string name="pref_gpodnet_login_status"><![CDATA[Přihlášen jako <i>%1$s</i> z přístroje <i>%2$s</i>]]></string>
- <string name="pref_gpodnet_notifications_title">Zobrazovat upozornění na chyby synchronizace</string>
+ <string name="pref_gpodnet_notifications_title">Zobrazovat oznámení o chybách synchronizace</string>
<string name="pref_gpodnet_notifications_sum">Toto nastavení se netýká chyb přihlášení.</string>
<string name="pref_playback_speed_title">Rychlosti přehrávání</string>
<string name="pref_playback_speed_sum">Přizpůsobení rychlosti je dostupné pro přehrávání zvuku různými rychlostmi</string>
+ <string name="pref_feed_playback_speed_sum">Rychlost, která bude použita při zahájení přehrávání epizod tohoto podcastu</string>
+ <string name="pref_feed_skip">Automatické přeskočení</string>
+ <string name="pref_feed_skip_sum">Přeskočit úvod a závěr.</string>
+ <string name="pref_feed_skip_ending">Přeskočit posledních</string>
+ <string name="pref_feed_skip_intro">Přeskočit prvních</string>
+ <string name="pref_feed_skip_ending_toast">Přeskočeno posledních %d sekund</string>
+ <string name="pref_feed_skip_intro_toast">Přeskočeno prvních %d sekund</string>
+ <string name="pref_playback_time_respects_speed_title">Upravit informace o médiu vzhledem k rychlosti přehrávání.</string>
+ <string name="pref_playback_time_respects_speed_sum">Zobrazené délka a pozice jsou upravené vzhledem k rychlosti přehrávání</string>
<string name="pref_fast_forward">Délka času posunu vpřed</string>
+ <string name="pref_fast_forward_sum">Upravit o kolik sekund se přeskočí dopředu při stisku tlačítka rychle vpřed (FF).</string>
<string name="pref_rewind">Délka času posunu zpět</string>
+ <string name="pref_rewind_sum">Upravit o kolik sekund se přeskočí zpět při stisku tlačítka přetočit zpět (RW).</string>
<string name="pref_gpodnet_sethostname_title">Nastavit hostname</string>
<string name="pref_gpodnet_sethostname_use_default_host">Použít přednastaveného hosta</string>
- <string name="pref_expandNotify_title">Vysoká priorita pro upozornění</string>
+ <string name="pref_expandNotify_title">Vysoká priorita pro oznámení</string>
<string name="pref_expandNotify_sum">Toto obvykle přidá tlačítka ovládání přehrávání do zpráv upozornění</string>
<string name="pref_persistNotify_title">Pevné ovládání přehrávání</string>
- <string name="pref_persistNotify_sum">Zachovat upozornění a ovládání na obrazovce uzamčení i při pozastaveném přehrávání.</string>
+ <string name="pref_persistNotify_sum">Zachovat oznámení a ovládání na obrazovce uzamčení i při pozastaveném přehrávání.</string>
<string name="pref_compact_notification_buttons_title">Nastavení tlačítek uzamčené obrazovky</string>
<string name="pref_compact_notification_buttons_sum">Změnit tlačítka ovládání na obrazovce uzamčení. Tlačítka přehrát/pozastavit jsou vždy zobrazena.</string>
<string name="pref_compact_notification_buttons_dialog_title">Vybrat maximálně %1$d položek</string>
@@ -311,27 +475,89 @@
<string name="pref_lockscreen_background_sum">Nastavit pozadí uzamčené obrazovky na obrázek aktuální epizody. Jako vedlejší efekt zobrazí toto nastavení obrázek i v aplikacích třetích stran. </string>
<string name="pref_showDownloadReport_title">Zobrazit report stahování</string>
<string name="pref_showDownloadReport_sum">Pokud selže stahování, vygenerovat report zobrazující detaily o chybě.</string>
- <string name="pref_expand_notify_unsupport_toast">Verze Androidu nižší než 4.1 nepodporují rozšířená upozornění.</string>
+ <string name="pref_showAutoDownloadReport_title">Zobrazovat hlášení automatického stahování</string>
+ <string name="pref_showAutoDownloadReport_sum">Zobrazovat oznámení o automaticky stažených epizodách.</string>
+ <string name="pref_expand_notify_unsupport_toast">Verze Androidu nižší než 4.1 nepodporují rozšířená oznámení.</string>
+ <string name="pref_enqueue_location_title">Pozice přidávání do fronty</string>
+ <string name="pref_enqueue_location_sum">Přidávat epizody na: %1$s</string>
+ <string name="enqueue_location_back">konec</string>
+ <string name="enqueue_location_front">začátek</string>
+ <string name="enqueue_location_after_current">za hrající epizodu</string>
<string name="pref_smart_mark_as_played_disabled">Vypnuto</string>
<string name="pref_image_cache_size_title">Velikost odkládací paměti obrázků</string>
<string name="pref_image_cache_size_sum">Velikost diskové paměti pro obrázky.</string>
+ <string name="visit_user_forum">Uživatelské fórum</string>
+ <string name="bug_report_title">Nahlásit chybu</string>
+ <string name="open_bug_tracker">Otevřít systém pro sledování a hlášení chyb (bug tracker)</string>
+ <string name="export_logs">Exportovat záznamy</string>
+ <string name="copy_to_clipboard">Zkopírovat do schránky</string>
+ <string name="copied_to_clipboard">Zkopírováno do schránky</string>
<string name="experimental_pref">Experimentální</string>
+ <string name="pref_media_player_message">Vybrat přehrávač pro přehrávání souborů</string>
<string name="pref_current_value">Aktuální hodnota: %1$s</string>
<string name="pref_proxy_title">Proxy</string>
<string name="pref_proxy_sum">Nastavit síťovou proxy</string>
+ <string name="pref_faq">Často kladené otázky</string>
<string name="pref_no_browser_found">Webový prohlížeč nenalezen.</string>
<string name="pref_cast_title">Chromecast podpora</string>
<string name="pref_cast_message_play_flavor">Povolit podporu vzdáleného přehrávání médií na Cast přístrojích (jako třeba Chromecast, Audio Speakers nebo Android TV)</string>
<string name="pref_cast_message_free_flavor">Chromecast vyžaduje proprietární knihovny třetích stran, které jsou vypnuty v této verzi AntennaPod</string>
+ <string name="pref_enqueue_downloaded_title">Zařadit stažené</string>
+ <string name="pref_enqueue_downloaded_summary">Přidat stažené epizody do fronty</string>
+ <string name="media_player_builtin">Vestavěný přehrávač Androidu</string>
+ <string name="media_player_switch_to_exoplayer">Přepnout na ExoPlayer</string>
+ <string name="media_player_switched_to_exoplayer">Přepnuto na ExoPlayer</string>
<string name="pref_skip_silence_title">Přeskočit ticho v audio souboru</string>
+ <string name="pref_videoBehavior_title">Při opuštění videa</string>
+ <string name="pref_videoBehavior_sum">Chování při opuštění videa</string>
+ <string name="stop_playback">Zastavit přehrávání</string>
+ <string name="continue_playback">Pokračovat v přehrávání zvuku</string>
+ <string name="behavior">Chování</string>
+ <string name="pref_back_button_behavior_title">Chování tlačítka zpět</string>
+ <string name="pref_back_button_behavior_sum">Změnit chování tlačítka zpět.</string>
+ <string name="back_button_default">Výchozí</string>
+ <string name="back_button_open_drawer">Otevřít hamburgrové menu</string>
+ <string name="back_button_double_tap">Zavřít aplikaci dvojitým dotykem</string>
+ <string name="back_button_show_prompt">Potvrdit ukončení aplikace</string>
+ <string name="close_prompt">Skutečně chcete zavřít AntennaPod?</string>
+ <string name="double_tap_toast">Znovu se dotkněte tlačítka zpět pro ukončení aplikace</string>
+ <string name="back_button_go_to_page">Přejít na stránku…</string>
+ <string name="back_button_go_to_page_title">Vybrat stránku</string>
+ <string name="pref_delete_removes_from_queue_title">Mazání také odstraňuje epizody z fronty</string>
+ <string name="pref_delete_removes_from_queue_sum">Automaticky odstraní epizodu z fronty poté, co je smazána.</string>
<!--About screen-->
<string name="about_pref">O aplikaci</string>
+ <string name="antennapod_version">Verze aplikace AntennaPod</string>
+ <string name="contributors">Přispěvatelé</string>
+ <string name="contributors_summary">Kdokoli může pomoct vylepšit AntennaPod – kódem, překlady nebo pomáháním ostatním v našem fóru</string>
+ <string name="developers">Vývojáři</string>
+ <string name="translators">Překladatelé</string>
+ <string name="special_thanks">Zvláštní poděkování</string>
+ <string name="privacy_policy">Zásady ochrany osobních údajů</string>
+ <string name="licenses">Licence</string>
+ <string name="licenses_summary">AntennaPod používá další skvělý software</string>
<!--Search-->
<string name="search_status_no_results">Žádné výsledky</string>
<string name="search_label">Vyhledat</string>
<string name="no_results_for_query">Nebyly nalezeny žádné výsledky pro \"%1$s\"</string>
<!--Synchronization-->
+ <string name="sync_status_started">Synchronizace započala</string>
+ <string name="sync_status_episodes_upload">Nahrávají se změny epizod…</string>
+ <string name="sync_status_episodes_download">Stahují se změny epizod…</string>
+ <string name="sync_status_upload_played">Nahrává se stav poslechnutí…</string>
+ <string name="sync_status_subscriptions">Synchronizují se sbírky…</string>
+ <string name="sync_status_success">Synchronizace proběhla úspěšně</string>
+ <string name="sync_status_error">Synchronizace selhala</string>
<!--import and export-->
+ <string name="import_export_summary">Přesunout zbírky a frontu do jiného zařízení</string>
+ <string name="database">Databáze</string>
+ <string name="opml">OPML</string>
+ <string name="html">HTML</string>
+ <string name="html_export_summary">Ukažte své sbírky přátelům</string>
+ <string name="opml_export_summary">Přenést sbírky do jiné podcastové aplikace</string>
+ <string name="opml_import_summary">Importovat vaše sbírky z jiné podcastové aplikace</string>
+ <string name="database_export_summary">Přenést sbírky, poslechnuté epizody a frontu do aplikace AntennaPod na jiném zařízení</string>
+ <string name="database_import_summary">Importovat AntennaPod databázi z jiného zařízení</string>
<string name="opml_import_label">OPML import</string>
<string name="opml_reader_error">Došlo k chybě při čtení OPML dokumentu:</string>
<string name="opml_import_error_no_file">Nebyl vybrán žádný soubor!</string>
@@ -339,17 +565,26 @@
<string name="deselect_all_label">Zrušit výběr</string>
<string name="opml_export_label">OPML export</string>
<string name="html_export_label">HTML export</string>
+ <string name="database_export_label">Export databáze</string>
+ <string name="database_import_label">Import databáze</string>
+ <string name="database_import_warning">Importem databáze nahradíte všechny svoje sbírky a historii poslechu. Doporučujeme nejdřív zvážit exportování současné databáze pro případnou obnovu. Vážně chcete databázi nahradit?</string>
+ <string name="please_wait">Čekejte prosím…</string>
<string name="export_error_label">Chyba exportu</string>
<string name="export_success_title">Export úspěšný</string>
<string name="export_success_sum">Exportovaný soubor zapsán do:\n\n%1$s</string>
<string name="opml_import_ask_read_permission">Pro přečtení OPML souboru je vyžadován přístup k externímu úložišti</string>
<string name="import_select_file">Vybrat soubor pro import</string>
<string name="import_ok">Import úspěšný.\n\nPotvrďte restart AntennaPod tlačítkem OK</string>
+ <string name="import_no_downgrade">Tato databáze byla exportována z novější verze aplikace AntennaPod. Vaše instalovaná verze není schopná ji zpracovat.</string>
+ <string name="favorites_export_label">Export oblíbených</string>
+ <string name="favorites_export_summary">Exportovat oblíbené do souboru</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">Nastavit časovač vypnutí</string>
<string name="disable_sleeptimer_label">Deaktivovat časovač vypnutí</string>
<string name="sleep_timer_label">Časovač vypnutí</string>
<string name="time_dialog_invalid_input">Neplatný vstup, musí být zadáno celé číslo</string>
+ <string name="shake_to_reset_label">Restartujte zatřesením</string>
+ <string name="timer_vibration_label">Krátce zavibrovat před koncem</string>
<string name="time_seconds">sekund</string>
<string name="time_minutes">minut</string>
<string name="time_hours">hodin</string>
@@ -404,12 +639,14 @@
<string name="gpodnetsync_error_descr">V průběhu synchronizace nastala chyba:\u0020</string>
<string name="gpodnetsync_pref_report_successful">Úspěšné</string>
<string name="gpodnetsync_pref_report_failed">Selhalo</string>
+ <string name="gpodnetsync_username_characters_error">Uživatelské jméno může obsahovat pouze písmena, čísla, pomlčky a podtržítka.</string>
<!--Directory chooser-->
<string name="selected_folder_label">Vybraný adresář:</string>
<string name="create_folder_label">Vytvořit adresář</string>
<string name="choose_data_directory">Vybrat umístění dat</string>
<string name="choose_data_directory_message">Vyberte prosím váš výchozí datový adresář. AntennaPod vytvoří všechny potřebné podadresáře.</string>
<string name="choose_data_directory_permission_rationale">Ke změně datového adresáře je vyžadován přístup k externímu úložišti</string>
+ <string name="choose_data_directory_available_space">%1$s z %2$s zdarma</string>
<string name="create_folder_msg">Vytvořit adresář \"%1$s\"?</string>
<string name="create_folder_success">Nový adresář vytvořen</string>
<string name="create_folder_error_no_write_access">Nelze zapisovat do adresáře</string>
@@ -428,16 +665,25 @@
<string name="pref_restart_required">Pro aktivování změn nastavení bylo třeba restartovat aplikaci AntennaPod.</string>
<!--Online feed view-->
<string name="subscribe_label">Odebírat</string>
+ <string name="subscribing_label">Přidává se do sbírky…</string>
+ <string name="preview_episode">Spustit ukázku</string>
+ <string name="stop_preview">Zastavit ukázku</string>
<!--Content descriptions for image buttons-->
<string name="rewind_label">Posunout zpět</string>
<string name="fast_forward_label">Posunout vpřed</string>
+ <string name="increase_speed">Zvýšit rychlost</string>
+ <string name="decrease_speed">Snížit rychlost</string>
<string name="media_type_audio_label">Audio</string>
<string name="media_type_video_label">Video</string>
<string name="navigate_upwards_label">Navigovat vzhůru</string>
<string name="status_downloading_label">Epizoda je právě stahována</string>
<string name="in_queue_label">Epizoda je ve frontě</string>
+ <string name="is_favorite_label">Epizoda je označená jako oblíbená</string>
<string name="drag_handle_content_description">Tahem změnit pozici této položky</string>
<string name="load_next_page_label">Načíst další stranu</string>
+ <string name="switch_pages">Přehodit stránku</string>
+ <string name="position">Pozice: %1$s</string>
+ <string name="apply_action">Vykonat</string>
<!--Feed information screen-->
<string name="authentication_label">Ověření</string>
<string name="authentication_descr">Změnit uživatelské jméno a heslo pro tento podcast a jeho epizody.</string>
@@ -448,15 +694,22 @@
<string name="episode_filters_exclude">Vyřadit</string>
<string name="episode_filters_hint">Jednoslovné \n\"Víceslovné\"</string>
<string name="keep_updated">Udržovat aktuální</string>
+ <string name="keep_updated_summary">Zahrnout tento podcast při (automatickém) obnovování všech podcastů</string>
+ <string name="auto_download_disabled_globally">Automatické stahování je zakázané v hlavním nastavení AntennaPodu</string>
<!--Progress information-->
<string name="progress_upgrading_database">Probíhá aktualizace databáze</string>
<!--AntennaPodSP-->
<string name="sp_apps_importing_feeds_msg">Importuji odběry z jednoúčelových aplikací...</string>
<!--Add podcast fragment-->
+ <string name="search_podcast_hint">Vyhledat podcast…</string>
<string name="search_itunes_label">Prohledat iTunes</string>
<string name="search_fyyd_label">Prohledat fyyd</string>
+ <string name="advanced">Pokročilé</string>
+ <string name="add_podcast_by_url">Přidat podcast pomocí URL</string>
<string name="browse_gpoddernet_label">Prohledávat gpodder.net</string>
+ <string name="discover">Objevit</string>
<string name="discover_more">více »</string>
+ <string name="search_powered_by">Vyhledávání poskytuje %1$s</string>
<string name="filter">Filtr</string>
<!--Episodes apply actions-->
<string name="all_label">Vše</string>
@@ -484,6 +737,12 @@
<string name="sort_date_old_new">Data (Staré \u2192 Nové)</string>
<string name="sort_duration_short_long">Délka (Krátké \u2192 Dlouhé)</string>
<string name="sort_duration_long_short">Délka (Dlouhé \u2192 Krátké)</string>
+ <string name="sort_a_z">A \u2192 Ž</string>
+ <string name="sort_z_a">Ž \u2192 A</string>
+ <string name="sort_new_old">Nové \u2192 Staré</string>
+ <string name="sort_old_new">Staré \u2192 Nové</string>
+ <string name="sort_short_long">Krátké \u2192 Dlouhé</string>
+ <string name="sort_long_short">Dlouhé \u2192 Krátké</string>
<!--Rating dialog-->
<string name="rating_title">Líbí se vám AntennaPod?</string>
<string name="rating_message">Oceníme, pokud věnujete chvíli času ohodnocení AntennaPod.</string>
@@ -499,6 +758,7 @@
<string name="audio_effects">Audio efekty</string>
<string name="stereo_to_mono">Downmix: Stereo na mono</string>
<string name="sonic_only">Pouze Sonic</string>
+ <string name="exoplayer_only">Pouze pro ExoPlayer</string>
<!--proxy settings-->
<string name="proxy_type_label">Typ</string>
<string name="host_label">Host</string>
@@ -512,6 +772,7 @@
<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-->
+ <string name="subscription_num_columns">Počet sloupců</string>
<!--Casting-->
<string name="cast_media_route_menu_title">Přehrát na...</string>
<string name="cast_disconnect_label">Odpojit sezení vysílání</string>
@@ -527,7 +788,22 @@
<string name="cast_failed_receiver_player_error">Přijímač zaznamenal závažnou chybu</string>
<string name="cast_failed_media_error_skipping">Chyba přehrávání médií. Přeskakuji...</string>
<!--Notification channels-->
+ <string name="notification_channel_user_action">Je vyžadována činnost z vaší strany</string>
+ <string name="notification_channel_user_action_description">Zobrazuje se, pokud je požadována činnost z vaší strany. Například je-li potřeba zadat heslo.</string>
<string name="notification_channel_downloading">Stahuji</string>
+ <string name="notification_channel_downloading_description">Zobrazuje se v průběhu stahování.</string>
+ <string name="notification_channel_playing">Přehrává se</string>
+ <string name="notification_channel_playing_description">Umožňuje ovládat přehrávání. Toto je to hlavní oznámení, které uvidité při přehrávání podcastu.</string>
+ <string name="notification_channel_error">Chyby</string>
+ <string name="notification_channel_error_description">Zobrazuje se, když se něco nepovedlo. Například pokud selhalo stahování anebo synchronizace gpodder.</string>
+ <string name="notification_channel_auto_download">Automatické stahování</string>
+ <string name="notification_channel_episode_auto_download">Zobrazuje se po automatickém stažení epizod.</string>
<!--Widget settings-->
+ <string name="widget_settings">Nastavení widgetu</string>
+ <string name="widget_create_button">Vytvořit widget</string>
+ <string name="widget_opacity">Průhlednost</string>
<!--On-Demand configuration-->
+ <string name="on_demand_config_setting_changed">Nastavení úspěšně aktualizováno</string>
+ <string name="on_demand_config_stream_text"> Vypadá to, že častěji streamujete než stahujete. Chcete zobrazovat tlačítko streamovat v seznamu epizod? </string>
+ <string name="on_demand_config_download_text">Vypadá to, že častěji stahujete než streamujete. Chcete zobrazovat tlačítko stáhnout v seznamu epizod?</string>
</resources>
diff --git a/core/src/main/res/values-da/strings.xml b/core/src/main/res/values-da/strings.xml
index 479492a7f..01026e021 100644
--- a/core/src/main/res/values-da/strings.xml
+++ b/core/src/main/res/values-da/strings.xml
@@ -85,7 +85,7 @@
<string name="auto_download_apply_to_items_message">Den nye <i>Automatisk overførsel</i>-indstilling vil automatisk blive anvendt på nye udsendelser.\nVil du også anvende den på tidligere udsendelser?</string>
<string name="auto_delete_label">Slet udsendelser automatisk</string>
<string name="feed_volume_reduction">Lydstyrkereduktion</string>
- <string name="feed_volume_reduction_summary">Skru lyd ned for episoder i dette feed</string>
+ <string name="feed_volume_reduction_summary">Skrug lyd ned for episoder i dette feed</string>
<string name="feed_volume_reduction_off">Fra</string>
<string name="feed_volume_reduction_light">Lidt</string>
<string name="feed_volume_reduction_heavy">Meget</string>
@@ -296,6 +296,7 @@
<!--Variable Speed-->
<string name="download_plugin_label">Hent plugin</string>
<string name="no_playback_plugin_title">Plugin er ikke installeret</string>
+ <string name="no_playback_plugin_or_sonic_msg">For ændring af afspilningshastighed, vi forslår at bruge den indbyggede Sonic medie afspiller.</string>
<string name="set_playback_speed_label">Afspilningshastigheder</string>
<string name="enable_sonic">Slå Sonic til</string>
<!--Empty list labels-->
@@ -305,6 +306,7 @@
<string name="no_run_downloads_head_label">Ingen overførsler i gang</string>
<string name="no_run_downloads_label">Du kan downloade episode ved podcastens beskrivelse</string>
<string name="no_comp_downloads_head_label">Ingen overførte udsendelser</string>
+ <string name="no_comp_downloads_label">Du kan downloade episoden på podcastens detaljerede skærm. </string>
<string name="no_log_downloads_head_label">Ingen overførselslog</string>
<string name="no_log_downloads_label">Download raport vil blive vist her når muligt</string>
<string name="no_history_head_label">Ingen historik</string>
@@ -333,6 +335,7 @@
<string name="appearance">Udseende</string>
<string name="external_elements">Externe elementer</string>
<string name="interruptions">Afbrydelser</string>
+ <string name="playback_control">Afspilningskontrol</string>
<string name="preference_search_hint">Søg...</string>
<string name="preference_search_no_results">Ingen resultater</string>
<string name="preference_search_clear_history">Slet historik</string>
@@ -343,6 +346,7 @@
<string name="pref_unpauseOnHeadsetReconnect_sum">Genoptag afspilning når hovedtelefonerne tilsluttes igen</string>
<string name="pref_unpauseOnBluetoothReconnect_sum">Genoptag afspilning når bluetooth forbinder igen</string>
<string name="pref_hardwareForwardButtonSkips_title">Fremadknap springer over</string>
+ <string name="pref_hardwareForwardButtonSkips_sum">Når der trykkes på næste knappen på de tilsluttede høretelefoner, skift til næste episode istedet for at springe frem.</string>
<string name="pref_hardwarePreviousButtonRestarts_title">Tilbageknap genstarter</string>
<string name="pref_hardwarePreviousButtonRestarts_sum">Når der trykkes på en fysisk tilbageknap, skal den aktuelle udsendelse afspilles forfra i stedet for at der spoles tilbage.</string>
<string name="pref_followQueue_sum">Spring til næste element i køen når afspilningen er færdig</string>
@@ -355,8 +359,11 @@
<string name="pref_favorite_keeps_episodes_sum">Behold udsendelser, som er markeret som foretrukne</string>
<string name="pref_favorite_keeps_episodes_title">Behold foretrukne udsendelser</string>
<string name="playback_pref">Afspilning</string>
+ <string name="playback_pref_sum">Hovedtelefon kontrol, Overspring intervaller, Kø</string>
<string name="network_pref">Netværk</string>
+ <string name="network_pref_sum">Opdateringsinterval, hente kontroller, mobildata</string>
<string name="pref_autoUpdateIntervallOrTime_title">Opdateringsinterval eller -klokkeslæt</string>
+ <string name="pref_autoUpdateIntervallOrTime_sum">Spicifik interval, eller spicifik tid på dagen, genindlæs podcasts automatisk</string>
<string name="pref_autoUpdateIntervallOrTime_message">Du kan indstille et <i>interval</i> som \"hver anden time\", indstille et bestemt <i>klokkeslæt</i> som \"7:00\", eller <i>slå</i> automatiske opdateringer helt <i>fra</i>.\n\n<small>Bemærk: Opdateringstider er ikke eksakte. Du kan opleve en kort forsinkelse.</small></string>
<string name="pref_autoUpdateIntervallOrTime_Disable">Slå fra</string>
<string name="pref_autoUpdateIntervallOrTime_Interval">Indstil interval</string>
@@ -368,19 +375,23 @@
<string name="pref_unpauseOnHeadsetReconnect_title">Tilslutning af hovedtelefoner igen</string>
<string name="pref_unpauseOnBluetoothReconnect_title">Bluetooth forbundet igen</string>
<string name="pref_stream_over_download_title">Foretræk streaming</string>
+ <string name="pref_stream_over_download_sum">Vis stream knap, i stedet for download knap i listen.</string>
<string name="pref_mobileUpdate_title">Mobile opdateringer</string>
+ <string name="pref_mobileUpdate_sum">Vælg hvad der skal være tilladt via mobil data forbindelse</string>
<string name="pref_mobileUpdate_refresh">Opdatere podcast</string>
<string name="pref_mobileUpdate_images">Omslag billeder</string>
<string name="pref_mobileUpdate_auto_download">Hent automatisk</string>
<string name="pref_mobileUpdate_episode_download">Download af udsendelser</string>
<string name="pref_mobileUpdate_streaming">Streaming</string>
<string name="user_interface_label">Brugergrænseflade</string>
+ <string name="user_interface_sum">Udseende, abonnements ordre, låseskærm</string>
<string name="pref_set_theme_title">Vælg tema</string>
<string name="pref_nav_drawer_items_title">Vælg elementer i navigationspanelet</string>
<string name="pref_nav_drawer_items_sum">Vælg hvilke elementer, der skal vises i navigationspanelet.</string>
<string name="pref_nav_drawer_feed_order_title">Vælg abonnementsorden</string>
<string name="pref_nav_drawer_feed_order_sum">Ændr rækkefølgen af dine abonnementer</string>
<string name="pref_nav_drawer_feed_counter_title">Indstil abonnementstæller</string>
+ <string name="pref_nav_drawer_feed_counter_sum">Ændre informationen vist af abonnoment tæller. Ændre også ved abonnement rækkefølge, hvis abonnement rækkefølge er sat til \'Tæller\'</string>
<string name="pref_set_theme_sum">Ændr AntennaPods udseende.</string>
<string name="pref_automatic_download_title">Automatisk overførsel</string>
<string name="pref_automatic_download_sum">Konfigurer automatisk overførsel af udsendelser</string>
@@ -390,7 +401,9 @@
<string name="pref_automatic_download_on_battery_sum">Tillad automatisk overførsel, når batteriet ikke oplades</string>
<string name="pref_parallel_downloads_title">Parallelle overførsler</string>
<string name="pref_episode_cache_title">Mellemlager for udsendelser</string>
+ <string name="pref_episode_cache_summary">Total nummer af episoder downloades på din enhed. Stop automatisk download, når dette nummer nåes.</string>
<string name="pref_episode_cover_title">Brug afsnit omslag</string>
+ <string name="pref_episode_cover_summary">Brug det specifikke episode cover, når muligt. Hvis tændt, vil app\'en altid bruge podcast cover billedet.</string>
<string name="pref_theme_title_use_system">Brug systemtema</string>
<string name="pref_theme_title_light">Lys</string>
<string name="pref_theme_title_dark">Mørk</string>
@@ -407,13 +420,22 @@
<string name="pref_gpodnet_setlogin_information_sum">Ændr din gpodder.net-kontos loginoplysninger.</string>
<string name="pref_gpodnet_sync_changes_title">Synkroniser nu</string>
<string name="pref_gpodnet_sync_changes_sum">Synkroniser tilstandsændringer for abonnementer og udsendelser med gpodder.net.</string>
+ <string name="pref_gpodnet_full_sync_title">Tving fuld synkronisering</string>
<string name="pref_gpodnet_full_sync_sum">Synkroniser tilstande for alle abonnementer og udsendelser med gpodder.net.</string>
<string name="pref_gpodnet_login_status"><![CDATA[Logget ind som <i>%1$s</i> med enheden <i>%2$s</i>]]></string>
<string name="pref_gpodnet_notifications_title">Vis notifikationer med synkroniseringsfejl</string>
<string name="pref_gpodnet_notifications_sum">Denne indstilling vedrører ikke godkendelsesfejl.</string>
<string name="pref_playback_speed_title">Afspilningshastigheder</string>
<string name="pref_playback_speed_sum">Tilpas tilgængelige hastigheder for lydafspilning med variabel hastighed</string>
+ <string name="pref_feed_playback_speed_sum">Hastighed, der skal bruges, når lydafspilning startes til afsnit i denne podcast</string>
<string name="pref_feed_skip">Overspring automatisk</string>
+ <string name="pref_feed_skip_sum">Overspring introduktioner og slut kreditter.</string>
+ <string name="pref_feed_skip_ending">Overspring sidste</string>
+ <string name="pref_feed_skip_intro">Overspring første</string>
+ <string name="pref_feed_skip_ending_toast">Overspring sidste %d sekunder</string>
+ <string name="pref_feed_skip_intro_toast">Overspring første %d sekunder</string>
+ <string name="pref_playback_time_respects_speed_title">Justere medie information for afspilningshastighed</string>
+ <string name="pref_playback_time_respects_speed_sum">Vist position og varighed er tilpasset afspilningshastighed</string>
<string name="pref_fast_forward">Tidshop for fremadspoling</string>
<string name="pref_fast_forward_sum">Indstil antallet af sekunder, der skal springes fremad, når der trykkes på fremadspolingsknappen</string>
<string name="pref_rewind">Tidshop for tilbagespoling</string>
@@ -450,9 +472,11 @@
<string name="copy_to_clipboard">Kopier til udklipsholder</string>
<string name="copied_to_clipboard">Kopieret til udklipsholder</string>
<string name="experimental_pref">Eksperimentelt</string>
+ <string name="pref_media_player_message">Vlg hvilken medieafspiller der skal bruges for at afspille filer</string>
<string name="pref_current_value">Nuværende værdi: %1$s</string>
<string name="pref_proxy_title">Proxy</string>
<string name="pref_proxy_sum">Indstil en netværksproxy</string>
+ <string name="pref_faq">Ofte Stillede Spørgsmål</string>
<string name="pref_no_browser_found">Ingen webbrowser fundet</string>
<string name="pref_cast_title">Chromecast-understøttelse</string>
<string name="pref_cast_message_play_flavor">Aktiver understøttelse af fjernafspilning på Cast-enheder (såsom Chromecast, højttalere med indbygget Chromecast, eller Android TV)</string>
@@ -462,6 +486,7 @@
<string name="media_player_builtin">Indbygget Android-afspiller</string>
<string name="media_player_switch_to_exoplayer">Skift til ExoPlayer</string>
<string name="media_player_switched_to_exoplayer">Skiftet til ExoPlayer.</string>
+ <string name="pref_skip_silence_title">Overspring stilhed i lyd</string>
<string name="pref_videoBehavior_title">Når videoen forlades</string>
<string name="pref_videoBehavior_sum">Opførsel når videoafspilning forlades</string>
<string name="stop_playback">Stop afspilning</string>
@@ -477,24 +502,41 @@
<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>
+ <string name="pref_delete_removes_from_queue_title">Slet fjernet fra kø</string>
+ <string name="pref_delete_removes_from_queue_sum">Fjern automatisk afsnit fra køen, når den slettes.</string>
<!--About screen-->
<string name="about_pref">Om</string>
<string name="antennapod_version">AntennaPod version</string>
+ <string name="contributors">Bidragere</string>
+ <string name="contributors_summary">Alle kan hjælpe med at lave AntennaPod bedre - med kode, oversættelse eller hjælpe brugere i vores forum</string>
<string name="developers">Udviklere</string>
<string name="translators">Oversættere</string>
+ <string name="special_thanks">Særlig tak</string>
<string name="privacy_policy">Privatlivspolitik</string>
<string name="licenses">Licenser</string>
+ <string name="licenses_summary">AntennaPod bruger anden fantastisk software</string>
<!--Search-->
<string name="search_status_no_results">Fandt ingen resultater</string>
<string name="search_label">Søg</string>
<string name="no_results_for_query">Ingen resultater fundet for \"%1$s\"</string>
<!--Synchronization-->
<string name="sync_status_started">Synkronisering startet</string>
+ <string name="sync_status_episodes_upload">Overfører udsendelse ændringer...</string>
+ <string name="sync_status_episodes_download">Henter udsendelse ændringer...</string>
+ <string name="sync_status_upload_played">Overfører afspillet status...</string>
+ <string name="sync_status_subscriptions">Synkroniserer abonnementer...</string>
+ <string name="sync_status_success">Synkroniseret</string>
<string name="sync_status_error">Synkronisering mislykkedes</string>
<!--import and export-->
+ <string name="import_export_summary">Flyt abonnementer og kø til anden enhed</string>
<string name="database">Database</string>
<string name="opml">OPML</string>
<string name="html">HTML</string>
+ <string name="html_export_summary">Vis abonnementer</string>
+ <string name="opml_export_summary">Flyt abonnementer til anden podcast program</string>
+ <string name="opml_import_summary">Importerer abonnementer fra anden podcast program</string>
+ <string name="database_export_summary">Flyt abonnementer, aflyttede afsnit og kø til AntennaPod på en anden enhed</string>
+ <string name="database_import_summary">Importere AntennaPod database fra anden enhed</string>
<string name="opml_import_label">OPML-import</string>
<string name="opml_reader_error">Der opstod en fejl, da OPML-dokumentet blev forsøgt indlæst</string>
<string name="opml_import_error_no_file">Ingen fil valgt!</string>
@@ -504,6 +546,7 @@
<string name="html_export_label">HTML-eksport</string>
<string name="database_export_label">Eksportere database</string>
<string name="database_import_label">Importere database</string>
+ <string name="database_import_warning">Importerong af ny database vil overskrive alle dine nuværende abonnenter og lytte historik. Du burde exportere din nuværende database som en backup. Vil du overskrive?</string>
<string name="please_wait">Vent...</string>
<string name="export_error_label">Eksportfejl</string>
<string name="export_success_title">Eksport lykkedes</string>
@@ -511,12 +554,16 @@
<string name="opml_import_ask_read_permission">Adgang til eksternt lager er påkrævet for at læse OPML-filen</string>
<string name="import_select_file">Vælg fil til import</string>
<string name="import_ok">Importen lykkedes.\n\nTryk venligst OK for at genstarte AntennaPod</string>
+ <string name="import_no_downgrade">Databasen var exporteret af en nyere version af AntennaPod. Din nuværende installation ved ikke endnu hvordan den skal håndtere denne fil.</string>
+ <string name="favorites_export_label">Foretrukne eksport</string>
+ <string name="favorites_export_summary">Eksportere gemte foretrukne til fil</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">Indstil søvntimer</string>
<string name="disable_sleeptimer_label">Slå søvntimer fra</string>
<string name="sleep_timer_label">Søvn timer</string>
<string name="time_dialog_invalid_input">Ugyldig indtastning: tid skal være et heltal</string>
<string name="shake_to_reset_label">Ryst for at nulstille</string>
+ <string name="timer_vibration_label">Vibrere kort før afslutning</string>
<string name="time_seconds">sekunder</string>
<string name="time_minutes">minutter</string>
<string name="time_hours">timer</string>
@@ -565,6 +612,7 @@
<string name="gpodnetsync_error_descr">En fejl opstod under synkronisering:\u0020</string>
<string name="gpodnetsync_pref_report_successful">Lykkedes</string>
<string name="gpodnetsync_pref_report_failed">Fejlede</string>
+ <string name="gpodnetsync_username_characters_error">Brugernavne kan kun indeholde bogstaver, tal, bindestreger og understreger.</string>
<!--Directory chooser-->
<string name="selected_folder_label">Valgt mappe:</string>
<string name="create_folder_label">Opret mappe</string>
@@ -603,9 +651,11 @@
<string name="navigate_upwards_label">Naviger opad</string>
<string name="status_downloading_label">Udsendelse overføres</string>
<string name="in_queue_label">Udsendelse er i køen</string>
+ <string name="is_favorite_label">Afsnit er markeret som favorit</string>
<string name="drag_handle_content_description">Træk for at ændre dette elements placering</string>
<string name="load_next_page_label">Indlæs næste side</string>
<string name="switch_pages">Skift sider</string>
+ <string name="position">Position: %1$s</string>
<string name="apply_action">Anvend handling</string>
<!--Feed information screen-->
<string name="authentication_label">Godkendelse</string>
@@ -617,6 +667,8 @@
<string name="episode_filters_exclude">Udelad</string>
<string name="episode_filters_hint">Enkelte ord\n\"Flere ord\"</string>
<string name="keep_updated">Hold opdateret</string>
+ <string name="keep_updated_summary">Inkludere denne podcast når alle podcast genindlæses</string>
+ <string name="auto_download_disabled_globally">Automatisk download slået fra i de generelle AntennaPod indstilinger</string>
<!--Progress information-->
<string name="progress_upgrading_database">Opgraderer databasen</string>
<!--AntennaPodSP-->
@@ -626,9 +678,11 @@
<string name="search_itunes_label">Søg i iTunes</string>
<string name="search_fyyd_label">Søg i fyyd</string>
<string name="advanced">Avanceret</string>
+ <string name="add_podcast_by_url">Tilføje podcast ved URL</string>
<string name="browse_gpoddernet_label">Gennemse gpodder.net</string>
<string name="discover">Opdag</string>
<string name="discover_more">mere »</string>
+ <string name="search_powered_by">Søgning drevet af %1$s</string>
<string name="filter">Filtrér</string>
<!--Episodes apply actions-->
<string name="all_label">Alle</string>
@@ -708,14 +762,21 @@
<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_user_action_description">Vist hvis din handling er nødvendig, for eksempel hvis du skal skrive et kodeord.</string>
<string name="notification_channel_downloading">Henter</string>
<string name="notification_channel_downloading_description">Vises samtidig med den hentes.</string>
<string name="notification_channel_playing">Spiller nu</string>
+ <string name="notification_channel_playing_description">Giver adgang til at kontrollere afspilning. Dette er den mest normale notifikation du vil se, mens du afspiller en podcast.</string>
<string name="notification_channel_error">Fejl</string>
+ <string name="notification_channel_error_description">Vist hvis noget gik galt, for eksempel ved download eller gpodder synkroniserings fejl.</string>
<string name="notification_channel_auto_download">Automatisk hentninger</string>
+ <string name="notification_channel_episode_auto_download">Vist når episoder automatisk var blevet downloaded.</string>
<!--Widget settings-->
<string name="widget_settings">Kontrol opsætning</string>
<string name="widget_create_button">Opret kontrol</string>
<string name="widget_opacity">Ugennemsigtighed</string>
<!--On-Demand configuration-->
+ <string name="on_demand_config_setting_changed">Indstilling opdateret.</string>
+ <string name="on_demand_config_stream_text">Det ser ud til at du streamer en del. Vil du have vist stream knappen i episode lister?</string>
+ <string name="on_demand_config_download_text">Det ser ud til at du har overført meget. Vil du have overfør knappen til at blive vist i episode lister?</string>
</resources>
diff --git a/core/src/main/res/values-de/strings.xml b/core/src/main/res/values-de/strings.xml
index 2ba6a9d72..c9fd04079 100644
--- a/core/src/main/res/values-de/strings.xml
+++ b/core/src/main/res/values-de/strings.xml
@@ -507,10 +507,11 @@
<!--About screen-->
<string name="about_pref">Über</string>
<string name="antennapod_version">AntennaPod-Version</string>
+ <string name="contributors">Beitragende</string>
+ <string name="contributors_summary">Jeder kann helfen, AntennaPod besser zu machen - durch Code, Übersetzungen oder durch Unterstützen anderer Nutzer in unserem Forum.</string>
<string name="developers">Entwickler</string>
- <string name="developers_summary">Jeder kann helfen, AntennaPod besser zu machen</string>
<string name="translators">Übersetzer</string>
- <string name="translators_summary">Übersetzungen werden von Nutzern auf Transifex erstellt</string>
+ <string name="special_thanks">Besonderen Dank</string>
<string name="privacy_policy">Datenschutzrichtlinie</string>
<string name="licenses">Lizenzen</string>
<string name="licenses_summary">AntennaPod verwendet nützliche andere Software</string>
@@ -554,6 +555,8 @@
<string name="import_select_file">Zu importierende Datei auswählen</string>
<string name="import_ok">Import erfolgreich.\n\nBitte OK drücken, um AntennaPod neuzustarten</string>
<string name="import_no_downgrade">Diese Datenbank wurde mit einer neueren Version von AntennaPod exportiert. Deine im Moment installierte Version kann die Datei leider nicht bearbeiten.</string>
+ <string name="favorites_export_label">Favoriten exportieren</string>
+ <string name="favorites_export_summary">Speichere Favoriten in einer Datei</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">Timer einstellen</string>
<string name="disable_sleeptimer_label">Schlummerfunktion deaktivieren</string>
diff --git a/core/src/main/res/values-es/strings.xml b/core/src/main/res/values-es/strings.xml
index b8f1f0b25..5f956d839 100644
--- a/core/src/main/res/values-es/strings.xml
+++ b/core/src/main/res/values-es/strings.xml
@@ -2,7 +2,7 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<!--Activity and fragment titles-->
<string name="feed_update_receiver_name">Actualizar suscripciones</string>
- <string name="feeds_label">Podcasts</string>
+ <string name="feeds_label">Pódcast</string>
<string name="statistics_label">Estadísticas</string>
<string name="add_feed_label">Añadir pódcast</string>
<string name="episodes_label">Episodios</string>
@@ -33,9 +33,9 @@
<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>
<string name="statistics_reset_data">Borrar estadísticas</string>
- <string name="statistics_reset_data_msg">Esto borrará el historial de duración de todos los episodios. ¿Estás seguro de que quieres hacerlo?</string>
+ <string name="statistics_reset_data_msg">Esto borrará el historial de duración reproducida de todos los episodios. ¿Confirma que quiere hacerlo?</string>
<!--Download Statistics fragment-->
- <string name="total_size_downloaded_podcasts">Tamaño total de podcast descargados:</string>
+ <string name="total_size_downloaded_podcasts">Tamaño total de pódcast descargados:</string>
<!--Main activity-->
<string name="drawer_open">Abrir menú</string>
<string name="drawer_close">Cerrar menú</string>
@@ -53,7 +53,7 @@
<string name="open_in_browser_label">Abrir en el navegador</string>
<string name="copy_url_label">Copiar URL</string>
<string name="share_url_label">Compartir URL</string>
- <string name="copied_url_msg">URL copiada al portapapeles</string>
+ <string name="copied_url_msg">URL copiado en el portapapeles</string>
<string name="go_to_position_label">Ir a esa posición</string>
<!--Playback history-->
<string name="clear_history_label">Vaciar el historial</string>
@@ -508,9 +508,7 @@
<string name="about_pref">Acerca de</string>
<string name="antennapod_version">Versión de AntennaPod</string>
<string name="developers">Desarrolladores</string>
- <string name="developers_summary">Todos pueden ayudar a mejorar AntennaPod</string>
<string name="translators">Traductores</string>
- <string name="translators_summary">Las traducciones las crean los usuarios de AntennaPod usando Transifex</string>
<string name="privacy_policy">Política de privacidad</string>
<string name="licenses">Licencias</string>
<string name="licenses_summary">AntennaPod usa otros software estupendos</string>
diff --git a/core/src/main/res/values-et/strings.xml b/core/src/main/res/values-et/strings.xml
index 8d6c6347b..db10f6ca4 100644
--- a/core/src/main/res/values-et/strings.xml
+++ b/core/src/main/res/values-et/strings.xml
@@ -2,6 +2,7 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<!--Activity and fragment titles-->
<string name="feed_update_receiver_name">Uuenda tellimusi</string>
+ <string name="feeds_label">Taskuhäälingud</string>
<string name="statistics_label">Statistika</string>
<string name="add_feed_label">Lisa taskuhääling</string>
<string name="episodes_label">Saated</string>
@@ -22,6 +23,8 @@
<string name="gpodnet_auth_label">gpodder.net kasutajanimi</string>
<string name="episode_cache_full_title">Saadete vahemälu on täis</string>
<string name="episode_cache_full_message">Saadete vahemälu limiit on täis. Vahemälu limiiti saab suurendada seadete alt.</string>
+ <string name="playback_statistics_label">Esitamine</string>
+ <string name="download_statistics_label">Allalaadimised</string>
<!--Statistics fragment-->
<string name="total_time_listened_to_podcasts">Kuulatud taskuhäälingute kogupikkus:</string>
<string name="statistics_details_dialog">%1$d %2$d-st saatest on alustatud.\n\nKuulatud on %3$s saadet %4$s-st.</string>
@@ -32,6 +35,7 @@
<string name="statistics_reset_data">Lähtesta statistika andmed</string>
<string name="statistics_reset_data_msg">See lähtestab kõigi esitatud saadete kuulamise pikkuse ajaloo. Kas oled kindel, et tahad jätkata?</string>
<!--Download Statistics fragment-->
+ <string name="total_size_downloaded_podcasts">Allalaaditud taskuhäälingute kogumaht:</string>
<!--Main activity-->
<string name="drawer_open">Ava menüü</string>
<string name="drawer_close">Sulge menüü</string>
@@ -80,6 +84,11 @@
<string name="auto_download_apply_to_items_title">Rakenda eelmistele saadetele</string>
<string name="auto_download_apply_to_items_message">Uus <i>Automaatse allalaadimise</i> säte rakendatakse uutele saadetele.\nKas tahad seda rakendada ka varem avaldatud saadetele?</string>
<string name="auto_delete_label">Saadete automaatne kustutamine</string>
+ <string name="feed_volume_reduction">Valjuse vähendamine</string>
+ <string name="feed_volume_reduction_summary">See voo saadete valjuse vähendamine: %1$s</string>
+ <string name="feed_volume_reduction_off">Väljas</string>
+ <string name="feed_volume_reduction_light">Kerge</string>
+ <string name="feed_volume_reduction_heavy">Tugev</string>
<string name="parallel_downloads_suffix">\u0020samaaegset allalaadimist</string>
<string name="feed_auto_download_global">Üldine vaikeväärtus</string>
<string name="feed_auto_download_always">Alati</string>
@@ -96,6 +105,11 @@
<item quantity="one">1 päev pärast lõpetamist</item>
<item quantity="other">%d päeva pärast lõpetamist</item>
</plurals>
+ <plurals name="num_selected_label">
+ <item quantity="one">%d valitud</item>
+ <item quantity="other">%d valitud</item>
+ </plurals>
+ <string name="loading_more">Laadimine…</string>
<!--Actions on feeds-->
<string name="mark_all_read_label">Märgi kuulatuks</string>
<string name="mark_all_read_msg">Märgi kõik saated kuulatuks</string>
@@ -115,11 +129,13 @@
<string name="share_link_with_position_label">Jaga saate linki koos asukohaga</string>
<string name="share_file_label">Jaga faili</string>
<string name="share_website_url_label">Jaga veebilehe linki</string>
+ <string name="share_feed_url_label">Jaga taskuhäälingu linki</string>
<string name="share_item_url_label">Jaga meediafaili linki</string>
<string name="share_item_url_with_position_label">Jaga meediafaili linki koos asukohaga</string>
<string name="feed_delete_confirmation_msg">Palun kinnita, et tahad kustutada taskuhäälingu \"%1$s\" ja KÕIK selle saated (ka allalaaditud saated).</string>
<string name="feed_remover_msg">Taskuhäälingu eemaldamine</string>
<string name="load_complete_feed">Värskenda kogu taskuhääling</string>
+ <string name="multi_select">Mitme valimine</string>
<string name="select_all_above">Vali kõik ülemised</string>
<string name="select_all_below">Vali kõik alumised</string>
<string name="hide_unplayed_episodes_label">Esitamata</string>
@@ -134,6 +150,7 @@
<string name="filtered_label">Filtreeritud</string>
<string name="refresh_failed_msg">{fa-exclamation-circle} Viimane värskendamine ebaõnnestus</string>
<string name="open_podcast">Ava taskuhääling</string>
+ <string name="please_wait_for_data">Palun oota andmete laadimist</string>
<!--actions on feeditems-->
<string name="download_label">Laadi alla</string>
<plurals name="downloading_batch_label">
@@ -154,11 +171,15 @@
<string name="removed_new_flag_label">Eemaldati silt \"uus\"</string>
<string name="mark_read_label">Märgi kuulatuks</string>
<string name="marked_as_read_label">Märgitud kuulatuks</string>
+ <string name="mark_read_no_media_label">Märgi loetuks</string>
+ <string name="marked_as_read_no_media_label">Märgiti loetuks</string>
+ <string name="play_this_to_seek_position">Asukohale hüppamiseks pead saadet esitama</string>
<plurals name="marked_read_batch_label">
<item quantity="one">%d saade märgiti kuulatuks.</item>
<item quantity="other">%d saadet märgiti kuulatuks.</item>
</plurals>
<string name="mark_unread_label">Märgitud kui kuulamata</string>
+ <string name="mark_unread_label_no_media">Märgi mitteloetuks</string>
<plurals name="marked_unread_batch_label">
<item quantity="one">%d saade märgiti kui kuulamata.</item>
<item quantity="other">%d saadet märgiti kui kuulamata.</item>
@@ -184,6 +205,7 @@
<string name="deactivate_auto_download">Lülita automaatne allalaadimine välja</string>
<string name="reset_position">Nulli esitamise asukoht</string>
<string name="removed_item">Kirje on eemaldatud</string>
+ <string name="no_items_selected">Ühtegi pole valitud</string>
<!--Download messages and labels-->
<string name="download_successful">korras</string>
<string name="download_pending">Ootel allalaadimine</string>
@@ -204,6 +226,7 @@
<string name="download_canceled_msg">Allalaadimine on tühistatud</string>
<string name="download_canceled_autodownload_enabled_msg">Allalaadimine tühistati\nKeelati selle saate <i>automaatne allalaadimine</i></string>
<string name="download_report_title">Allalaadimised lõpetati veaga (vigadega)</string>
+ <string name="auto_download_report_title">Automaatsed allalaadimised lõpetatud</string>
<string name="download_report_content_title">Allalaadimise aruanne</string>
<string name="download_error_malformed_url">Vigane URL-i vorming</string>
<string name="download_error_io_error">IO viga</string>
@@ -240,11 +263,13 @@
<string name="playback_error_server_died">Server suri ära</string>
<string name="playback_error_unsupported">Toetamata meedia liik</string>
<string name="playback_error_timeout">Tegevus aegus</string>
+ <string name="playback_error_source">Puudub ligipääs meediafailile</string>
<string name="playback_error_unknown">Tundmatu tõrge</string>
<string name="no_media_playing_label">Mingit faili ei esitata</string>
<string name="player_buffering_msg">Puhverdamine</string>
<string name="player_go_to_picture_in_picture">Pilt-pildis režiim</string>
<string name="unknown_media_key">AntennaPod - Tundmatu meedia võti: %1$d</string>
+ <string name="error_file_not_found">Faili ei leitud</string>
<!--Queue operations-->
<string name="lock_queue">Lukusta järjekord</string>
<string name="unlock_queue">Eemalda järjekorra lukustus</string>
@@ -271,6 +296,7 @@
<!--Variable Speed-->
<string name="download_plugin_label">Laadi plugin alla</string>
<string name="no_playback_plugin_title">Pluginat pole paigaldatud</string>
+ <string name="no_playback_plugin_or_sonic_msg">Muutuva kiirusega taasesituse jaoks soovitame lubada sisseehitatud Sonic meediaesitaja.</string>
<string name="set_playback_speed_label">Esitamise kiirused</string>
<string name="enable_sonic">Luba Sonicu kasutamine</string>
<!--Empty list labels-->
@@ -297,8 +323,11 @@
<string name="no_subscriptions_label">Taskuhäälingu tellimiseks vajuta all plussmärgil.</string>
<!--Preferences-->
<string name="storage_pref">Salvestusruum</string>
+ <string name="storage_sum">Saate automaatne kustutamine, importimine, eksportimine</string>
<string name="project_pref">Projekt</string>
<string name="queue_label">Järjekord</string>
+ <string name="synchronization_pref">Sünkroonimine</string>
+ <string name="synchronization_sum">Sünkrooni teiste seadmetega gpodder.net abil</string>
<string name="automation">Automaatika</string>
<string name="download_pref_details">Üksikasjad</string>
<string name="import_export_pref">Import/eksport</string>
@@ -330,8 +359,11 @@
<string name="pref_favorite_keeps_episodes_sum">Saadete säilitamine, kui need on märgitud lemmikuks</string>
<string name="pref_favorite_keeps_episodes_title">Säilita lemmikosad</string>
<string name="playback_pref">Esitamine</string>
+ <string name="playback_pref_sum">Kõrvaklappide juhtimine, vahelejätmine, ootejärjekord</string>
<string name="network_pref">Võrk</string>
+ <string name="network_pref_sum">Uuendamise sagedus, allalaadimine, mobiilinett</string>
<string name="pref_autoUpdateIntervallOrTime_title">Uuendamise intervall või kellaaeg</string>
+ <string name="pref_autoUpdateIntervallOrTime_sum">Määra ajavahemik või täpne aeg, millal taskuhäälinguid automaatselt värskendada</string>
<string name="pref_autoUpdateIntervallOrTime_message">Sa võid määrata <i>intervalli</i>, näiteks \"iga 2 tunni järel\", või määrata <i>millal päeva jooksul</i>, näiteks \"7:00\" või <i>keelata</i> automaatsed uuendused täielikult.\n\n<small>Pane tähele: uuendamise ajad ei ole täpsed. Võib esineda väike viivitus.</small></string>
<string name="pref_autoUpdateIntervallOrTime_Disable">Lülita välja</string>
<string name="pref_autoUpdateIntervallOrTime_Interval">Määra intervall</string>
@@ -346,11 +378,13 @@
<string name="pref_stream_over_download_sum">Loeteludes kuvatakse allalaadimise asemel voogedastuse nuppu.</string>
<string name="pref_mobileUpdate_title">Uuendamine üle andmeside</string>
<string name="pref_mobileUpdate_sum">Vali, mis peaks olema lubatud andmeside kaudu</string>
+ <string name="pref_mobileUpdate_refresh">Taskuhäälingu värskendamine</string>
<string name="pref_mobileUpdate_images">Kaanepildid</string>
<string name="pref_mobileUpdate_auto_download">Automaatne allalaadimine</string>
<string name="pref_mobileUpdate_episode_download">Saate allalaadimine</string>
<string name="pref_mobileUpdate_streaming">Voogedastus</string>
<string name="user_interface_label">Kasutajaliides</string>
+ <string name="user_interface_sum">Välimus, tellimuste järjekord, lukuekraan</string>
<string name="pref_set_theme_title">Vali teema</string>
<string name="pref_nav_drawer_items_title">Määra peamenüü osad</string>
<string name="pref_nav_drawer_items_sum">Määra, mis osad on peamenüüs.</string>
@@ -384,13 +418,22 @@
<string name="pref_gpodnet_logout_toast">Väljalogimine oli edukas</string>
<string name="pref_gpodnet_setlogin_information_title">Muuda kasutajakonto infot</string>
<string name="pref_gpodnet_setlogin_information_sum">Muuda oma gpodder.net konto sisselogimise andmeid.</string>
+ <string name="pref_gpodnet_sync_changes_title">Sünkroniseeri kohe</string>
<string name="pref_gpodnet_sync_changes_sum">Sünkroniseeri oma tellimuste ja saadete olekute muutuseid gpodder.net-iga</string>
+ <string name="pref_gpodnet_full_sync_title">Nõua täielikku sünkroonimist</string>
<string name="pref_gpodnet_full_sync_sum">Sünkroniseeri kõiki tellimusi ja saate olekuid gpodder.net-iga.</string>
<string name="pref_gpodnet_login_status"><![CDATA[Sisseloginud kui <i>%1$s</i> seadmega <i>%2$s</i>]]></string>
<string name="pref_gpodnet_notifications_title">Kuva sünkroniseerimise vigu teadaannetena</string>
<string name="pref_gpodnet_notifications_sum">See seadistus ei rakendu autentimise vigadele.</string>
<string name="pref_playback_speed_title">Esitamise kiirused</string>
<string name="pref_playback_speed_sum">Muuda, millised valikud on audio esitamisel kiiruste loendis</string>
+ <string name="pref_feed_playback_speed_sum">Millise kiirusega esitatakse selle tellimuse saadete heli</string>
+ <string name="pref_feed_skip">Automaatne vahelejätmine</string>
+ <string name="pref_feed_skip_sum">Sissejuhatuse ja lõputänu vahele jätmine.</string>
+ <string name="pref_feed_skip_ending">Jäta vahele lõpust</string>
+ <string name="pref_feed_skip_intro">Jäta vahele algusest</string>
+ <string name="pref_feed_skip_ending_toast">Lõpust jäeti vahele %d sekundit</string>
+ <string name="pref_feed_skip_intro_toast">Algusest jäeti vahele %d sekundit</string>
<string name="pref_playback_time_respects_speed_title">Meedia info kohandamine esituse kiirusega</string>
<string name="pref_playback_time_respects_speed_sum">Kuvatav asukoht ja kestus kohandatakse esituse kiiruse järgi</string>
<string name="pref_fast_forward">Edasi kerimise hüpe</string>
@@ -411,6 +454,8 @@
<string name="pref_lockscreen_background_sum">Määra lukuekraani taustaks selle saate pilt. Kõrvalmõjuna kuvab see pilti ka teistes rakendustes.</string>
<string name="pref_showDownloadReport_title">Näita allalaadimise aruannet</string>
<string name="pref_showDownloadReport_sum">Kui allalaadimised nurjuvad, genereeri raport, mis kuvab vea üksikasju.</string>
+ <string name="pref_showAutoDownloadReport_title">Kuva automaatse allalaadimise raportit</string>
+ <string name="pref_showAutoDownloadReport_sum">Teate kuvamine automaatselt allalaaditud saadete kohta.</string>
<string name="pref_expand_notify_unsupport_toast">Vanemad Androidi versioonid kui 4.1 ei toeta laiendatud teavitusi.</string>
<string name="pref_enqueue_location_title">Järjekorra asukoht</string>
<string name="pref_enqueue_location_sum">Saated lisatakse: %1$s</string>
@@ -420,8 +465,10 @@
<string name="pref_smart_mark_as_played_disabled">Välja lülitatud</string>
<string name="pref_image_cache_size_title">Piltide vahemälu suurus</string>
<string name="pref_image_cache_size_sum">Piltide jaoks kasutatava vahemälu suurus</string>
+ <string name="visit_user_forum">Kasutajate foorum</string>
<string name="bug_report_title">Raporteeri veast</string>
<string name="open_bug_tracker">Ava vigade loetelu</string>
+ <string name="export_logs">Ekspordi logid</string>
<string name="copy_to_clipboard">Kopeeri lõikelauale</string>
<string name="copied_to_clipboard">Kopeeritud lõikelauale</string>
<string name="experimental_pref">Katsetamisel</string>
@@ -437,6 +484,8 @@
<string name="pref_enqueue_downloaded_title">Järjekord allalaaditud</string>
<string name="pref_enqueue_downloaded_summary">Allalaaditud saadete lisamine järjekorda</string>
<string name="media_player_builtin">Sisseehitatud Androidi esitaja</string>
+ <string name="media_player_switch_to_exoplayer">Vaheta ExoPlayerile</string>
+ <string name="media_player_switched_to_exoplayer">Vahetati ExoPlayerile.</string>
<string name="pref_skip_silence_title">Audios vaikuse vahele jätmine</string>
<string name="pref_videoBehavior_title">Videost väljumisel</string>
<string name="pref_videoBehavior_sum">Mida tehakse video esitamisest lahkumisel</string>
@@ -458,10 +507,11 @@
<!--About screen-->
<string name="about_pref">Info</string>
<string name="antennapod_version">AntennaPodi versioon</string>
+ <string name="contributors">Kaastöölised</string>
+ <string name="contributors_summary">Igaüks võib aidata teha AntennaPodi paremaks - kirjutades koodi, tõlkides või aidates foorumis teisi kasutajaid</string>
<string name="developers">Arendajad</string>
- <string name="developers_summary">Igaüks võib aidata AntennaPodi paremaks teha</string>
<string name="translators">Tõlkijad</string>
- <string name="translators_summary">Tõlkeid lisavad AntennaPodi kasutajad Transifex keskkonnas</string>
+ <string name="special_thanks">Eritänu</string>
<string name="privacy_policy">Privaatsus</string>
<string name="licenses">Litsentsid</string>
<string name="licenses_summary">AntennaPod kasutab teiste suurepärast tarkvara</string>
@@ -470,7 +520,23 @@
<string name="search_label">Otsi</string>
<string name="no_results_for_query">\"%1$s\" otsimine ei andnud tulemusi</string>
<!--Synchronization-->
+ <string name="sync_status_started">Sünkroonimine algas</string>
+ <string name="sync_status_episodes_upload">Saadete muudatuse üleslaadimine…</string>
+ <string name="sync_status_episodes_download">Saadete muudatuste allalaadimine…</string>
+ <string name="sync_status_upload_played">Esitamise oleku uuendamine…</string>
+ <string name="sync_status_subscriptions">Tellimuste sünkroonimine…</string>
+ <string name="sync_status_success">Sünkroonimine õnnestus</string>
+ <string name="sync_status_error">Sünkroonimine nurjus</string>
<!--import and export-->
+ <string name="import_export_summary">Tellimuste ja ootejärjekorra liigutamine teise seadmesse</string>
+ <string name="database">Andmebaas</string>
+ <string name="opml">OPML</string>
+ <string name="html">HTML</string>
+ <string name="html_export_summary">Näita oma tellimusi sõbrale</string>
+ <string name="opml_export_summary">Tellimuste liigutamine teise taskuhäälingu äppi</string>
+ <string name="opml_import_summary">Tellimuste importimine teisest taskuhäälingu äpist</string>
+ <string name="database_export_summary">Tellimuste, kuulatud saadete ja ooterjärjekorra liigutamine AntennaPodi mõnes teises seadmes</string>
+ <string name="database_import_summary">AntennaPodi andmebaasi import teisest seadmest</string>
<string name="opml_import_label">OPML import</string>
<string name="opml_reader_error">OPML dokumendi lugemisel tekkis tõrge:</string>
<string name="opml_import_error_no_file">Ühtegi faili pole valitud!</string>
@@ -478,17 +544,26 @@
<string name="deselect_all_label">Ära vali midagi</string>
<string name="opml_export_label">OPML eksport</string>
<string name="html_export_label">HTML eksport</string>
+ <string name="database_export_label">Andmebaasi eksport</string>
+ <string name="database_import_label">Andmebaasi import</string>
+ <string name="database_import_warning">Andmebaasi importimine asendab kõik sinu praegused tellimused ja kuulamiste ajaloo. Peaksid oma praeguse andmebaasi varundamise eesmärgil enne eksportima. Kas soovid andmed asendada?</string>
+ <string name="please_wait">Palun oota…</string>
<string name="export_error_label">Viga eksportimisel</string>
<string name="export_success_title">Eksportimine edukas</string>
<string name="export_success_sum">Eksporditud fail salvestati asukohta:\n\n%1$s</string>
<string name="opml_import_ask_read_permission">OPML faili lugemiseks on vajalik ligipääs välisele salvestusruumile</string>
<string name="import_select_file">Vali fail, mida importida</string>
<string name="import_ok">Importimine edukas.\n\nAntennaPodi taaskäivitamiseks vajuta OK</string>
+ <string name="import_no_downgrade">See andmebaas on eksporditud AntennaPodi uuemast versioonist. Sinu praegune äpp ei oska seda faili käsitseda.</string>
+ <string name="favorites_export_label">Lemmikute eksport</string>
+ <string name="favorites_export_summary">Ekspordi salvestatud lemmikud faili</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">Määra unetaimer</string>
<string name="disable_sleeptimer_label">Keela unetaimer</string>
<string name="sleep_timer_label">Unetaimer</string>
<string name="time_dialog_invalid_input">Vigane sisend, aeg peab olema täisarv</string>
+ <string name="shake_to_reset_label">Raputa uuesti alustamiseks</string>
+ <string name="timer_vibration_label">Enne lõppu lühike värin</string>
<string name="time_seconds">sekundit</string>
<string name="time_minutes">minutit</string>
<string name="time_hours">tundi</string>
@@ -564,16 +639,24 @@
<!--Online feed view-->
<string name="subscribe_label">Telli</string>
<string name="subscribing_label">Tellimine...</string>
+ <string name="preview_episode">Eelvaade</string>
+ <string name="stop_preview">Lõpeta eelvaade</string>
<!--Content descriptions for image buttons-->
<string name="rewind_label">Keri tagasi</string>
<string name="fast_forward_label">Keri edasi</string>
+ <string name="increase_speed">Suurenda kiirust</string>
+ <string name="decrease_speed">Vähenda kiirust</string>
<string name="media_type_audio_label">Heli</string>
<string name="media_type_video_label">Video</string>
<string name="navigate_upwards_label">Liigu ülespoole</string>
<string name="status_downloading_label">Saade laaditakse alla</string>
<string name="in_queue_label">Saade on järjekorras</string>
+ <string name="is_favorite_label">Saade on märgitud lemmikuks</string>
<string name="drag_handle_content_description">Kirje asukoha muutmiseks lohista</string>
<string name="load_next_page_label">Laadi järgmine lehekülg</string>
+ <string name="switch_pages">Vaheta lehti</string>
+ <string name="position">Asukoht: %1$s</string>
+ <string name="apply_action">Vii ellu</string>
<!--Feed information screen-->
<string name="authentication_label">Autentimine</string>
<string name="authentication_descr">Muuda kasutajanime ja parooli selle taskuhäälingu ja saadete jaoks.</string>
@@ -584,6 +667,7 @@
<string name="episode_filters_exclude">Jäta välja</string>
<string name="episode_filters_hint">Üksikud sõnad \n\"Mitu sõna\"</string>
<string name="keep_updated">Hoia uuendatuna</string>
+ <string name="keep_updated_summary">Uuenda koos teiste taskuhäälingute (automaatse) värskendamisega ka seda</string>
<string name="auto_download_disabled_globally">Automaatne allalaadimine on keelatud AntennaPodi peamistes seadetes</string>
<!--Progress information-->
<string name="progress_upgrading_database">Andmebaasi uuendamine</string>
@@ -593,9 +677,12 @@
<string name="search_podcast_hint">Otsi taskuhäälingut...</string>
<string name="search_itunes_label">Otsi iTunest</string>
<string name="search_fyyd_label">Search fyyd-ist</string>
+ <string name="advanced">Täpsem</string>
+ <string name="add_podcast_by_url">Lisa taskuhääling URL abil</string>
<string name="browse_gpoddernet_label">Sirvi gpodder.net-i</string>
<string name="discover">Avasta</string>
<string name="discover_more">veel »</string>
+ <string name="search_powered_by">Otsingut pakub %1$s</string>
<string name="filter">Filter</string>
<!--Episodes apply actions-->
<string name="all_label">Kõik</string>
@@ -623,6 +710,12 @@
<string name="sort_date_old_new">Kuupäev (vana \u2192 uus)</string>
<string name="sort_duration_short_long">Kestus (lühike \u2192 pikk)</string>
<string name="sort_duration_long_short">Kestus (pikk \u2192 lühike)</string>
+ <string name="sort_a_z">A \u2192 Z</string>
+ <string name="sort_z_a">Z \u2192 A</string>
+ <string name="sort_new_old">Uus \u2192 vana</string>
+ <string name="sort_old_new">Vana \u2192 uus</string>
+ <string name="sort_short_long">Lühike \u2192 pikk</string>
+ <string name="sort_long_short">Pikk \u2192 lühike</string>
<!--Rating dialog-->
<string name="rating_title">Kas sulle meeldib AntennaPod?</string>
<string name="rating_message">Oleks suur asi, kui sa saaksid võtta aega, et anda AntennaPodile hinnang.</string>
@@ -676,8 +769,14 @@
<string name="notification_channel_playing_description">Võimaldab esitust juhtida. See on saate kuulamise ajal peamine teade.</string>
<string name="notification_channel_error">Vead</string>
<string name="notification_channel_error_description">Näidatakse, kui miski läks valesti, näiteks allalaadimine või gpodderiga sükroonimine nurjus.</string>
+ <string name="notification_channel_auto_download">Automaatsed allalaadimised</string>
+ <string name="notification_channel_episode_auto_download">Näita, kui saateid laaditi automaatselt alla.</string>
<!--Widget settings-->
+ <string name="widget_settings">Vidina seaded</string>
<string name="widget_create_button">Lisa vidin</string>
<string name="widget_opacity">Läbipaistvus</string>
<!--On-Demand configuration-->
+ <string name="on_demand_config_setting_changed">Seade uuendati edukalt.</string>
+ <string name="on_demand_config_stream_text">Paistab, et striimid palju. Kas soovid, et saadete loetelus oleks striimimise nupud?</string>
+ <string name="on_demand_config_download_text">Paistab, et laadid tihti saated alla. Kas soovid, et saadete loetelus oleks allalaadimise nupud?</string>
</resources>
diff --git a/core/src/main/res/values-eu/strings.xml b/core/src/main/res/values-eu/strings.xml
index 2536b2d3c..e4b4fe4b6 100644
--- a/core/src/main/res/values-eu/strings.xml
+++ b/core/src/main/res/values-eu/strings.xml
@@ -509,10 +509,11 @@
<!--About screen-->
<string name="about_pref">Honi buruz</string>
<string name="antennapod_version">AntennaPod bertsioa</string>
+ <string name="contributors">Laguntzaileak</string>
+ <string name="contributors_summary">Denek lagun dezakete gure foroan kodea, itzulpenak edo erabiltzaileei laguntza emanez.</string>
<string name="developers">Garatzaileak</string>
- <string name="developers_summary">Edonork lagun dezake AntennaPod hobetzen</string>
<string name="translators">Itzultzaileak</string>
- <string name="translators_summary">Itzulpenek AntennaPod erabiltzaile berriak sortzen dituzte Transifex erabiliz</string>
+ <string name="special_thanks">Esker bereziak</string>
<string name="privacy_policy">Pribatutasun politika</string>
<string name="licenses">Baimenak</string>
<string name="licenses_summary">AntennaPod-ek beste software ezin hobeak erabiltzen ditu</string>
@@ -556,6 +557,8 @@
<string name="import_select_file">Aukeratu inportatzeko fitxategia</string>
<string name="import_ok">Inportazio arrakastatsua.\n\nSakatu OK, AntennaPod berrabiarazteko</string>
<string name="import_no_downgrade">Datu-basea AntennaPod-en bertsio berriago batekin esportatu zen. Uneko aplikazioak ez daki nola inportatu.</string>
+ <string name="favorites_export_label">Gogokoak esportatu</string>
+ <string name="favorites_export_summary">Gorde diren gogokoak esportatu artxibatzeko</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">Ezarri tenporizadore bat</string>
<string name="disable_sleeptimer_label">Desgaitu tenporizadorea</string>
diff --git a/core/src/main/res/values-fa/strings.xml b/core/src/main/res/values-fa/strings.xml
index f060ee338..0ac3b684d 100644
--- a/core/src/main/res/values-fa/strings.xml
+++ b/core/src/main/res/values-fa/strings.xml
@@ -85,6 +85,7 @@
<string name="auto_download_apply_to_items_message">تنظیمات جدید <i>بارگیری خودکار</i> به طور خودکار بر قسمت‌های جدید اعمال خواهد شد.\nآیا می‌خواهید بر قسمت‌هایی قبلاً منتشر شده هم اعمال شود؟</string>
<string name="auto_delete_label">حذف خودکار قسمت</string>
<string name="feed_volume_reduction">کم کردن صدا</string>
+ <string name="feed_volume_reduction_summary">برای قسمت‌های این خوراک، صدا کم شود: %1$s</string>
<string name="feed_volume_reduction_off">خاموش</string>
<string name="feed_volume_reduction_light">سبک</string>
<string name="feed_volume_reduction_heavy">سنگین</string>
@@ -104,6 +105,10 @@
<item quantity="one">%dروز بعد از اتمام</item>
<item quantity="other">%dروز بعد از اتمام</item>
</plurals>
+ <plurals name="num_selected_label">
+ <item quantity="one">%d گزیده</item>
+ <item quantity="other">%dگزیده</item>
+ </plurals>
<string name="loading_more">بارگیری بیشتر…</string>
<!--Actions on feeds-->
<string name="mark_all_read_label">علامت‌گذاری همه به‌عنوان پخش‌شده</string>
@@ -200,6 +205,7 @@
<string name="deactivate_auto_download">غیر فعال کردن بارگیری خودکار</string>
<string name="reset_position">تنظیم مجدد موقعیت پخش</string>
<string name="removed_item">مورد حذف شده است</string>
+ <string name="no_items_selected">چیزی انتخاب نشده است</string>
<!--Download messages and labels-->
<string name="download_successful">موفقیت‌آمیز</string>
<string name="download_pending">بارگیری معوق</string>
@@ -320,6 +326,8 @@
<string name="storage_sum">حذف خودکار قسمت، درون‌ریزی، برون‌ریزی</string>
<string name="project_pref">پروژه</string>
<string name="queue_label">صف</string>
+ <string name="synchronization_pref">هم‌گام‌سازی</string>
+ <string name="synchronization_sum">با کمک gpodder.net با دستگاه‌های دیگر هم‌گام کنید</string>
<string name="automation">اتوماسیون</string>
<string name="download_pref_details">جزئیات</string>
<string name="import_export_pref">وارد/صادر کرد</string>
@@ -346,6 +354,7 @@
<string name="pref_autoUpdateIntervallOrTime_TimeOfDay">تنظیم زمان روز</string>
<string name="user_interface_label">رابط کاربری</string>
<string name="pref_set_theme_title">انتخاب پوسته</string>
+ <string name="pref_episode_cover_title">استفاده از عکس قسمت</string>
<string name="pref_theme_title_light">روشن</string>
<string name="pref_theme_title_dark">تاریک</string>
<string name="pref_theme_title_trueblack">سیاه (مناسب AMOLED)</string>
@@ -380,7 +389,6 @@
<string name="antennapod_version">نسخه AntennaPod</string>
<string name="developers">توسعه‌دهندگان</string>
<string name="translators">مترجمان</string>
- <string name="translators_summary">ترجمه‌ها به کمک کاربران AntennaPod و با استفاده از Transifex انجام شده‌اند</string>
<string name="privacy_policy">سیاست حریم شخصی</string>
<string name="licenses">پروانه‌ها</string>
<!--Search-->
diff --git a/core/src/main/res/values-fi/strings.xml b/core/src/main/res/values-fi/strings.xml
index 3b94dbe85..f30824d7a 100644
--- a/core/src/main/res/values-fi/strings.xml
+++ b/core/src/main/res/values-fi/strings.xml
@@ -14,7 +14,7 @@
<string name="downloads_label">Lataukset</string>
<string name="downloads_running_label">Ajossa</string>
<string name="downloads_completed_label">Valmis</string>
- <string name="downloads_log_label">Logi</string>
+ <string name="downloads_log_label">Loki</string>
<string name="subscriptions_label">Tilaukset</string>
<string name="subscriptions_list_label">Tilauslista</string>
<string name="cancel_download_label">Peruuta\nLataus</string>
@@ -35,6 +35,7 @@
<string name="statistics_reset_data">Nollaa tilastotiedot</string>
<string name="statistics_reset_data_msg">Tämä poistaa kaikkien jaksojen soiton keston historian. Haluatko varmasti jatkaa?</string>
<!--Download Statistics fragment-->
+ <string name="total_size_downloaded_podcasts">Ladattujen podcastien yhteiskoko</string>
<!--Main activity-->
<string name="drawer_open">Avaa menu</string>
<string name="drawer_close">Sulje menu</string>
@@ -83,6 +84,11 @@
<string name="auto_download_apply_to_items_title">Aseta edellisiin jaksoihin</string>
<string name="auto_download_apply_to_items_message">Uusi <i>Automaattinen lataus</i> asetus tullaan asettamaan uusiin jaksoihin.\nHaluatko asettaa myös aikaisemmin julkaistuihin jaksoihin?</string>
<string name="auto_delete_label">Auto deletoi jakso</string>
+ <string name="feed_volume_reduction">Äänenvoimakkuuden vähentäminen</string>
+ <string name="feed_volume_reduction_summary">Vähennä äänenvoimakkuutta jaksoille syötteestä: %1$s</string>
+ <string name="feed_volume_reduction_off">Pois käytöstä</string>
+ <string name="feed_volume_reduction_light">Kevyt</string>
+ <string name="feed_volume_reduction_heavy">Voimakas</string>
<string name="parallel_downloads_suffix">\u0020yhtäaikaiset lataukset</string>
<string name="feed_auto_download_global">Globaali oletus</string>
<string name="feed_auto_download_always">Aina</string>
@@ -99,6 +105,11 @@
<item quantity="one">1 päivä lataamisen jälkeen</item>
<item quantity="other">%d päivää lataamisen jälkeen</item>
</plurals>
+ <plurals name="num_selected_label">
+ <item quantity="one">%d valittu</item>
+ <item quantity="other">%d valittua</item>
+ </plurals>
+ <string name="loading_more">Ladataan lisää...</string>
<!--Actions on feeds-->
<string name="mark_all_read_label">Merkkaa kaikki soitetuksi</string>
<string name="mark_all_read_msg">Merkkaa kaikki episodit soitetuiksi</string>
@@ -117,11 +128,14 @@
<string name="share_link_label">Jaa jakson URL</string>
<string name="share_link_with_position_label">Jaa jakson URL soittoajan kanssa</string>
<string name="share_file_label">Jaa tietodosto</string>
- <string name="share_item_url_label">Jaa Media tiedoston URL</string>
- <string name="share_item_url_with_position_label">Jaa Media tiedoston URL soittoajan kanssa</string>
- <string name="feed_delete_confirmation_msg">Varmista, että haluat poistaa podcastin \"%1$s\" ja KAIKKI sen jaksot (mukaanlukien ladatut jaksot).</string>
+ <string name="share_website_url_label">Jaa verkkosivuston URL</string>
+ <string name="share_feed_url_label">Jaa podcastin URL</string>
+ <string name="share_item_url_label">Jaa mediatiedoston URL</string>
+ <string name="share_item_url_with_position_label">Jaa mediatiedoston URL toistosijainnin kanssa</string>
+ <string name="feed_delete_confirmation_msg">Vahvista, että haluat poistaa podcastin \"%1$s\" ja KAIKKI sen jaksot (mukaan lukien ladatut jaksot).</string>
<string name="feed_remover_msg">Poistetaan podcast</string>
<string name="load_complete_feed">Päivitä podcast</string>
+ <string name="multi_select">Monivalinta</string>
<string name="select_all_above">Valitse kaikki yllä</string>
<string name="select_all_below">Valitse kaikki alla</string>
<string name="hide_unplayed_episodes_label">Soittamaton</string>
@@ -133,37 +147,42 @@
<string name="hide_not_downloaded_episodes_label">Ei ladattu</string>
<string name="hide_has_media_label">Sisältää mediaa</string>
<string name="hide_is_favorite_label">On suosikki</string>
- <string name="filtered_label">Filteröity</string>
+ <string name="filtered_label">Suodatettu</string>
<string name="refresh_failed_msg">{fa-exclamation-circle} Viimeisin päivitys epäonnistui</string>
<string name="open_podcast">Avaa podcast</string>
+ <string name="please_wait_for_data">Odota kunnes tiedot ovat ladattu</string>
<!--actions on feeditems-->
<string name="download_label">Lataa</string>
<plurals name="downloading_batch_label">
- <item quantity="one">Lataa %d jakso</item>
- <item quantity="other">Lataa %d jaksoja.</item>
+ <item quantity="one">Ladataan %d jaksoa.</item>
+ <item quantity="other">Ladataan %d jaksoa.</item>
</plurals>
<string name="play_label">Soita</string>
- <string name="pause_label">Pause</string>
- <string name="stream_label">Striimaa</string>
- <string name="delete_label">Deletoi</string>
+ <string name="pause_label">Tauko</string>
+ <string name="stream_label">Suoratoista</string>
+ <string name="delete_label">Poista</string>
<string name="delete_failed">Ei voida poistaa tiedostoa. Laitteen uudelleenkäynnistys saattaa auttaa.</string>
- <string name="delete_episode_label">Deletoi jakso</string>
+ <string name="delete_episode_label">Poista jakso</string>
<plurals name="deleted_episode_batch_label">
- <item quantity="one">%d jakso deletoitu.</item>
- <item quantity="other">%d jaksoa deletoitu.</item>
+ <item quantity="one">%d jakso poistettu.</item>
+ <item quantity="other">%d jaksoa poistettu.</item>
</plurals>
- <string name="remove_new_flag_label">Poista \"uusi\" lippu</string>
- <string name="removed_new_flag_label">Poistettiin \"uusi\" lippu</string>
+ <string name="remove_new_flag_label">Poista \"uusi\"-lippu</string>
+ <string name="removed_new_flag_label">Poistettiin \"uusi\"-lippu</string>
<string name="mark_read_label">Merkitse soitetuksi</string>
- <string name="marked_as_read_label">Merkattu soitetuksi</string>
+ <string name="marked_as_read_label">Merkitty soitetuksi</string>
+ <string name="mark_read_no_media_label">Merkitse luetuksi</string>
+ <string name="marked_as_read_no_media_label">Merkitty luetuksi</string>
+ <string name="play_this_to_seek_position">Jaksoa pitää toistaa siirtyäksesi kohtiin</string>
<plurals name="marked_read_batch_label">
- <item quantity="one">%d jakso merkattu soitetuksi.</item>
- <item quantity="other">%d jaksoa merkattu soitetuksi</item>
+ <item quantity="one">%d jakso merkitty soitetuksi.</item>
+ <item quantity="other">%d jaksoa merkitty soitetuksi</item>
</plurals>
- <string name="mark_unread_label">Merkkaa soittamattomaksi</string>
+ <string name="mark_unread_label">Merkitse soittamattomaksi</string>
+ <string name="mark_unread_label_no_media">Merkitse lukemattomaksi</string>
<plurals name="marked_unread_batch_label">
- <item quantity="one">%d jakso merkattu soittamattomaksi.</item>
- <item quantity="other">%d jaksoa merkattu soittamattomaksi.</item>
+ <item quantity="one">%d jakso merkitty soittamattomaksi.</item>
+ <item quantity="other">%d jaksoa merkitty soittamattomaksi.</item>
</plurals>
<string name="add_to_queue_label">Lisää jonoon</string>
<string name="added_to_queue_label">Lisätty jonoon</string>
@@ -180,12 +199,13 @@
<string name="added_to_favorites">Lisätty suosikkeihin</string>
<string name="remove_from_favorite_label">Poista suosikeista</string>
<string name="removed_from_favorites">Poistettu suosikeista</string>
- <string name="visit_website_label">Selaa Web-sivustoa</string>
- <string name="skip_episode_label">Skippaa jakso</string>
- <string name="activate_auto_download">Aktivoi autolataukset</string>
- <string name="deactivate_auto_download">Deaktivoi automaattinen lataus</string>
- <string name="reset_position">Resetoi soittoaika</string>
- <string name="removed_item">Asia poistettu</string>
+ <string name="visit_website_label">Vieraile verkkosivustolla</string>
+ <string name="skip_episode_label">Ohita jakso</string>
+ <string name="activate_auto_download">Aktivoi automaattiset lataukset</string>
+ <string name="deactivate_auto_download">Poista automaattinen lataus käytöstä</string>
+ <string name="reset_position">Nollaa toistosijainti</string>
+ <string name="removed_item">Nimike poistettu</string>
+ <string name="no_items_selected">Ei valittuja nimikkeitä</string>
<!--Download messages and labels-->
<string name="download_successful">onnistui</string>
<string name="download_pending">Lataus odottamassa</string>
@@ -195,17 +215,18 @@
<string name="download_error_device_not_found">Tallennuslaitetta ei löytynyt</string>
<string name="download_error_insufficient_space">Ei tarpeeksi tilaa</string>
<string name="download_error_http_data_error">HTTP Data virhe</string>
- <string name="download_error_error_unknown">Odottamaton virhe</string>
- <string name="download_error_parser_exception">Parserin virhe</string>
- <string name="download_error_unsupported_type">Ei tuettu tiedostotyyppi</string>
- <string name="download_error_connection_error">Yhteysongelma</string>
- <string name="download_error_unknown_host">Tuntematon Host</string>
- <string name="download_error_unauthorized">Autentikaatio virhe</string>
+ <string name="download_error_error_unknown">Tuntematon virhe</string>
+ <string name="download_error_parser_exception">Jäsenninpoikkeus</string>
+ <string name="download_error_unsupported_type">Ei tuettu syötetyyppi</string>
+ <string name="download_error_connection_error">Yhteysvirhe</string>
+ <string name="download_error_unknown_host">Tuntematon isäntä</string>
+ <string name="download_error_unauthorized">Todentamisvirhe</string>
<string name="download_error_file_type_type">Tiedostotyyppivirhe</string>
<string name="download_error_forbidden">Ei sallittu</string>
<string name="download_canceled_msg">Lataus peruutettu</string>
<string name="download_canceled_autodownload_enabled_msg">Lataus peruutettu\nPoistettu <i>Automaattinen lataus</i> tälle tiedolle </string>
- <string name="download_report_title">Lataukset valmistuivat virhe(ide)n kanssa</string>
+ <string name="download_report_title">Lataukset valmistuivat virhe(id)en kanssa</string>
+ <string name="auto_download_report_title">Automaattiset lataukset valmistuivat</string>
<string name="download_report_content_title">Latausraportti</string>
<string name="download_error_malformed_url">Huonosti koostettu URL</string>
<string name="download_error_io_error">IO virhe</string>
@@ -215,43 +236,53 @@
<item quantity="one">%d lataus jäljellä</item>
<item quantity="other">%d latausta jäljellä</item>
</plurals>
- <string name="downloads_processing">Prosessoi latauksia</string>
- <string name="download_notification_title">Lataa podcastin tietoja</string>
+ <string name="downloads_processing">Käsitellään latauksia</string>
+ <string name="download_notification_title">Ladataan podcastin tietoja</string>
<string name="download_report_content">%1$d latausta onnistui, %2$d epäonnistui</string>
<string name="download_log_title_unknown">Tuntematon otsikko</string>
<string name="download_type_feed">Syöte</string>
<string name="download_type_media">Mediatiedosto</string>
<string name="download_request_error_dialog_message_prefix">Tiedoston latauksen aikana tapahtui virhe:\u0020</string>
<string name="null_value_podcast_error">Ei voida näyttää olematonta podcastia</string>
- <string name="authentication_notification_title">Vaaditaan autentikaatio</string>
+ <string name="authentication_notification_title">Todentaminen vaaditaan</string>
<string name="authentication_notification_msg">Pyytämäsi resurssi vaatii käyttäjätunnuksen ja salasanan</string>
<string name="confirm_mobile_download_dialog_title">Varmista mobiililataus</string>
<string name="confirm_mobile_download_dialog_message_not_in_queue">Lataaminen mobiilidatayhteydellä on estettu asetuksissa.\n\nVoit lisätä yhden jakson jonoon tai sallia lataamisen väliaikaisesti.\n\n<small>Valinta muistetaan 10 minuutin ajan.</small></string>
- <string name="confirm_mobile_download_dialog_message">Lataamienn mobiilidatayhteydellä on estettu asetuksissa.\n\nHaluatko sallia lataamisen väliaikaisesti?\n\n<small>Valinta muistetaan 10 minuutin ajan.</small></string>
+ <string name="confirm_mobile_download_dialog_message">Lataaminen mobiilidatayhteydellä on estetty asetuksissa.\n\nHaluatko sallia lataamisen väliaikaisesti?\n\n<small>Valinta muistetaan 10 minuutin ajan.</small></string>
+ <string name="confirm_mobile_streaming_notification_title">Vahvista suoratoisto mobiilidatayhteydellä</string>
+ <string name="confirm_mobile_streaming_notification_message">Suoratoisto mobiilidatayhteydellä on estetty asetuksissa. Napsauta suoratoistaaksesi silti.</string>
+ <string name="confirm_mobile_streaming_button_always">Salli aina</string>
<string name="confirm_mobile_download_dialog_only_add_to_queue">Lisää jonoon</string>
<string name="confirm_mobile_download_dialog_enable_temporarily">Salli väliaikaisesti</string>
<!--Mediaplayer messages-->
<string name="player_error_msg">Virhe!</string>
- <string name="player_stopped_msg">Media ei soi</string>
- <string name="player_preparing_msg">Valmistelee</string>
+ <string name="player_stopped_msg">Mediaa ei toisteta</string>
+ <string name="player_preparing_msg">Valmistellaan</string>
<string name="player_ready_msg">Valmis</string>
- <string name="player_seeking_msg">Hakee</string>
- <string name="playback_error_server_died">Palvelin tipahti</string>
+ <string name="player_seeking_msg">Haetaan</string>
+ <string name="playback_error_server_died">Palvelin lakkasi toimimasta</string>
+ <string name="playback_error_unsupported">Ei tuettu mediatyyppi</string>
+ <string name="playback_error_timeout">Toiminto aikakatkaistiin</string>
+ <string name="playback_error_source">Mediatiedostoa ei voida käyttää</string>
<string name="playback_error_unknown">Tuntematon virhe</string>
- <string name="no_media_playing_label">Media ei soi</string>
- <string name="player_buffering_msg">Bufferoi</string>
+ <string name="no_media_playing_label">Mediaa ei toisteta</string>
+ <string name="player_buffering_msg">Puskuroidaan</string>
<string name="player_go_to_picture_in_picture">Kuva-kuvassa-tila</string>
<string name="unknown_media_key">AntennaPod - Tuntematon media avain: %1$d</string>
+ <string name="error_file_not_found">Tiedostoa ei löytynyt</string>
<!--Queue operations-->
<string name="lock_queue">Lukitse jono</string>
<string name="unlock_queue">Avaa jono</string>
<string name="queue_locked">Jono lukittu</string>
<string name="queue_unlocked">Jono avattu</string>
+ <string name="queue_lock_warning">Jos lukitset jonon, et voi enää sipaista tai lajitella jaksoja uudelleen.</string>
+ <string name="checkbox_do_not_show_again">Älä näytä uudestaan</string>
<string name="clear_queue_label">Tyhjennä jono</string>
<string name="undo">Peruuta</string>
<string name="move_to_top_label">Siirrä ylimmäiseksi</string>
<string name="move_to_bottom_label">Siirrä alimmaikseksi</string>
<string name="sort">Lajittele</string>
+ <string name="keep_sorted">Pidä lajiteltuna</string>
<string name="date">Päivä</string>
<string name="duration">Kesto</string>
<string name="episode_title">Jakson otsikko</string>
@@ -260,96 +291,119 @@
<string name="smart_shuffle">Älykäs sekoitus</string>
<string name="ascending">Nouseva</string>
<string name="descending">Laskeva</string>
- <string name="clear_queue_confirmation_msg">Varmista että haluat tyhjentää jonon KAIKISTA jaksoista</string>
+ <string name="clear_queue_confirmation_msg">Vahvista, että haluat tyhjentää jonon KAIKISTA jaksoista</string>
<string name="time_left_label">Aikaa jäljellä:\u0020</string>
<!--Variable Speed-->
- <string name="download_plugin_label">Lataa plugin</string>
- <string name="no_playback_plugin_title">Plugin ei asennettu</string>
+ <string name="download_plugin_label">Lataa laajennus</string>
+ <string name="no_playback_plugin_title">Laajennus ei asennettu</string>
+ <string name="no_playback_plugin_or_sonic_msg">Vaihtelevan nopeuden toiston toimimiseksi suosittelemme ottamaan käyttöön sisäänrakennetun Sonic-mediasoittimen.</string>
<string name="set_playback_speed_label">Soittonopeudet</string>
- <string name="enable_sonic">Aloita Sonic</string>
+ <string name="enable_sonic">Ota Sonic käyttöön</string>
<!--Empty list labels-->
<string name="no_items_header_label">Ei jaksoja jonossa</string>
- <string name="no_items_label">Lisää jakso lataamalla ja painamalla pitkään jaksoa ja valitse \"Lisää jonoon\".</string>
+ <string name="no_items_label">Lisää jakso lataamalla se, tai painamalla sitä pitkään ja valitsemalla \"Lisää jonoon\".</string>
<string name="no_shownotes_label">Jaksolla ei ole jaksomuistiota</string>
<string name="no_run_downloads_head_label">Ei latauksia</string>
<string name="no_run_downloads_label">Voit ladata jakson podcastin lisätietosivulla.</string>
<string name="no_comp_downloads_head_label">Ei ladattuja jaksoja</string>
<string name="no_comp_downloads_label">Voit ladata jakson podcastin listätietosivulla.</string>
- <string name="no_log_downloads_head_label">Ei latauksien logia</string>
- <string name="no_log_downloads_label">Latauslogi ilmestyy tänne kun se on saatavilla.</string>
+ <string name="no_log_downloads_head_label">Ei latauslokia</string>
+ <string name="no_log_downloads_label">Latausloki ilmestyy tänne, kun se on saatavilla.</string>
<string name="no_history_head_label">Ei historiaa</string>
<string name="no_history_label">Jakson kuuntelun jälkeen se ilmestyy tänne.</string>
<string name="no_all_episodes_head_label">Ei jaksoja</string>
- <string name="no_all_episodes_label">Kun lisää podcastin sen jaksot näkyvät täällä.</string>
+ <string name="no_all_episodes_label">Kun lisää podcastin, sen jaksot näkyvät täällä.</string>
<string name="no_new_episodes_head_label">Ei uusia jaksoja</string>
- <string name="no_new_episodes_label">Kun uusia jaksoja ilmestyy ne näkyvät täällä.</string>
+ <string name="no_new_episodes_label">Kun uusia jaksoja ilmestyy, ne näkyvät täällä.</string>
<string name="no_fav_episodes_head_label">Ei suosikkijaksoja</string>
<string name="no_fav_episodes_label">Voit lisätä jaksoja suosikkeihin painamalla niitä pitkään.</string>
<string name="no_chapters_head_label">Ei kappaleita</string>
<string name="no_chapters_label">Jaksolla ei ole kappaleita.</string>
+ <string name="no_subscriptions_head_label">Ei tilauksia</string>
+ <string name="no_subscriptions_label">Tilataksesi podcastin, paina plus-kuvaketta alla</string>
<!--Preferences-->
<string name="storage_pref">Tallennus</string>
+ <string name="storage_sum">Jakson automaattinen poisto, tuonti, vienti</string>
<string name="project_pref">Projekti</string>
<string name="queue_label">Jono</string>
+ <string name="synchronization_pref">Synkronointi</string>
+ <string name="synchronization_sum">Synkronoi muiden laitteiden kanssa käyttäen gpodder.net-palvelua</string>
<string name="automation">Automaatio</string>
<string name="download_pref_details">Tietoja</string>
<string name="import_export_pref">Tuo/Vie</string>
- <string name="import_export_search_keywords">backup, palautus</string>
+ <string name="import_export_search_keywords">varmuuskopiointi, palautus</string>
<string name="appearance">Näkymä</string>
<string name="external_elements">Ulkoiset elementit</string>
<string name="interruptions">Keskeytykset</string>
- <string name="playback_control">Soiton kontrollit</string>
- <string name="media_player">Mediasoitto</string>
+ <string name="playback_control">Toistonhallinta</string>
+ <string name="preference_search_hint">Hae...</string>
+ <string name="preference_search_no_results">Ei tuloksia</string>
+ <string name="preference_search_clear_history">Tyhjennä historia</string>
+ <string name="media_player">Mediasoitin</string>
<string name="pref_episode_cleanup_title">Jakson siivous</string>
<string name="pref_episode_cleanup_summary">Jaksot, jotka eivät ole jonossa ja eivät ole suosikkeja tulisi olla valmiita poistoon jos Automaattiinen lataus tarvitsee tilaa uusille jaksoille</string>
<string name="pref_pauseOnDisconnect_sum">Pysäytä soitto kun kuulokkeet tai bluetooth katkaistaan</string>
<string name="pref_unpauseOnHeadsetReconnect_sum">Jatka soittoa kun kuulokkeet yhdistetään uudestaan</string>
<string name="pref_unpauseOnBluetoothReconnect_sum">Jatka soittoa kun bluetooth yhdistyy uudestaan</string>
- <string name="pref_hardwareForwardButtonSkips_title">Seuraava nappi skippaa</string>
- <string name="pref_hardwareForwardButtonSkips_sum">Kun painetaan seuraava nappia bluetooth-laitteessa, hyppää seuraavaan jaksoon etuhaun sijasta.</string>
- <string name="pref_hardwarePreviousButtonRestarts_title">Edellinen nappi uudelleenaloittaa</string>
- <string name="pref_hardwarePreviousButtonRestarts_sum">Kun painetaan edellinen nappia, uudelleenkäynnistä nykyinen jakso takaisinhaun sijasta</string>
+ <string name="pref_hardwareForwardButtonSkips_title">Seuraava nappi ohittaa</string>
+ <string name="pref_hardwareForwardButtonSkips_sum">Kun painetaan seuraava-nappia bluetooth-laitteessa, hyppää seuraavaan jaksoon eteenpäin siirtymisen sijasta.</string>
+ <string name="pref_hardwarePreviousButtonRestarts_title">Edellinen-nappi aloittaa alusta</string>
+ <string name="pref_hardwarePreviousButtonRestarts_sum">Kun painetaan edellinen-nappia, aloita nykyinen jakso alusta taaksepäin siirtymisen sijasta</string>
<string name="pref_followQueue_sum">Hyppää seuraavaan jonossa kun soitto valmistuu</string>
- <string name="pref_auto_delete_sum">Deletoi jakso kun soitto valmistuu</string>
- <string name="pref_auto_delete_title">Autodeletoi</string>
- <string name="pref_smart_mark_as_played_sum">Merkkaa jaksot soitetuiksi jos tietty määrä sekunteja soittoajasta on vielä jäljellä</string>
- <string name="pref_smart_mark_as_played_title">Älykäs soitetuksi merkkaus</string>
- <string name="pref_skip_keeps_episodes_sum">Säilytä jaksot kun ne skiptaaan</string>
- <string name="pref_skip_keeps_episodes_title">Säilytä skiptatut jaksot</string>
- <string name="pref_favorite_keeps_episodes_sum">Säilytä jaksot jotka on merkattu suosikeiksi</string>
+ <string name="pref_auto_delete_sum">Poista jakso toiston loputtua</string>
+ <string name="pref_auto_delete_title">Automaattinen poisto</string>
+ <string name="pref_smart_mark_as_played_sum">Merkitse jaksot soitetuiksi, vaikka vähemmän kuin tietty määrä sekunteja soittoajasta on vielä jäljellä</string>
+ <string name="pref_smart_mark_as_played_title">Älykäs soitetuksi merkitseminen</string>
+ <string name="pref_skip_keeps_episodes_sum">Säilytä jaksot, kun ne ohitetaan</string>
+ <string name="pref_skip_keeps_episodes_title">Säilytä ohitetut jaksot</string>
+ <string name="pref_favorite_keeps_episodes_sum">Säilytä suosikeiksi merkityt jaksot</string>
<string name="pref_favorite_keeps_episodes_title">Säilytä suosikkijaksot</string>
- <string name="playback_pref">Soitto</string>
+ <string name="playback_pref">Toisto</string>
+ <string name="playback_pref_sum">Kuulokkeiden ohjaimet, ohitusaikavälit, jono</string>
<string name="network_pref">Verkko</string>
- <string name="pref_autoUpdateIntervallOrTime_title">Päivitysintervalli tai ajankohta</string>
- <string name="pref_autoUpdateIntervallOrTime_message">Voit asettaa <i>intervallin</i> kuten \"joka 2 tuntia\", asettaa tietyn <i>ajankohdan</i> kuten \"7:00 AM\" tai <i>disabloida</i> automaattiset päivitykset.\n\n<small>Huomio: Päivitysajankohdat ovat epätarkkoja. Saatat huomata lyhyen välin.</small></string>
- <string name="pref_autoUpdateIntervallOrTime_Disable">Disabloi</string>
- <string name="pref_autoUpdateIntervallOrTime_Interval">Aseta intervalli</string>
+ <string name="network_pref_sum">Päivitysaikaväli, latauksen ohjaimet, mobiilidata</string>
+ <string name="pref_autoUpdateIntervallOrTime_title">Päivitysaikaväli tai -ajankohta</string>
+ <string name="pref_autoUpdateIntervallOrTime_sum">Määritä aikaväli tai tietty ajankohta podcastien automaattiselle päivitykselle</string>
+ <string name="pref_autoUpdateIntervallOrTime_message">Voit asettaa <i>aikavälin</i>, kuten \"2 tunnin välein\", tietyn <i>ajankohdan</i> kuten \"7.00\", tai <i>poistaa käytöstä</i> automaattiset päivitykset.\n\n<small>Huomio: Päivitysajankohdat ovat epätarkkoja. Lyhyt viive saattaa esiintyä.</small></string>
+ <string name="pref_autoUpdateIntervallOrTime_Disable">Poista käytöstä</string>
+ <string name="pref_autoUpdateIntervallOrTime_Interval">Aseta aikaväli</string>
<string name="pref_autoUpdateIntervallOrTime_TimeOfDay">Aseta ajankohta</string>
<string name="pref_autoUpdateIntervallOrTime_every">joka %1$s</string>
<string name="pref_autoUpdateIntervallOrTime_at">aika %1$s</string>
- <string name="pref_followQueue_title">Jatkuva soitto</string>
+ <string name="pref_followQueue_title">Jatkuva toisto</string>
<string name="pref_pauseOnHeadsetDisconnect_title">Kuulokkeiden irrotus</string>
<string name="pref_unpauseOnHeadsetReconnect_title">Kuulokkeiden uudelleenyhdistyminen</string>
<string name="pref_unpauseOnBluetoothReconnect_title">Bluetooth uudelleenyhdistyminen</string>
+ <string name="pref_stream_over_download_title">Suosi suoratoistoa</string>
+ <string name="pref_stream_over_download_sum">Näytä suoratoistonappi latausnapin sijaan listauksissa</string>
<string name="pref_mobileUpdate_title">Mobiilipäivitykset</string>
+ <string name="pref_mobileUpdate_sum">Valitse, mikä on sallittua mobiiliyhteydellä</string>
+ <string name="pref_mobileUpdate_refresh">Podcastien päivitys</string>
+ <string name="pref_mobileUpdate_images">Kansikuvat</string>
+ <string name="pref_mobileUpdate_auto_download">Automaattinen lataus</string>
+ <string name="pref_mobileUpdate_episode_download">Jaksojen lataus</string>
+ <string name="pref_mobileUpdate_streaming">Suoratoisto</string>
<string name="user_interface_label">Käyttöliittymä</string>
+ <string name="user_interface_sum">Ulkonäkö, tilausten järjestys, lukitusnäyttö</string>
<string name="pref_set_theme_title">Valitse teema</string>
<string name="pref_nav_drawer_items_title">Aseta navigointihyllyn asiat</string>
<string name="pref_nav_drawer_items_sum">Vaihda navigointihyllyssä esiintyviä asioita.</string>
<string name="pref_nav_drawer_feed_order_title">Aseta tilauksien järjestys</string>
<string name="pref_nav_drawer_feed_order_sum">Vaihda tilauksiesi järjestystä</string>
- <string name="pref_nav_drawer_feed_counter_title">Aseta tilauksien laskuri</string>
- <string name="pref_nav_drawer_feed_counter_sum">Vaihta tilauksien laskurin näyttämää informaatiota. Tämä vaikuttaa tilauksien järjestykseen jos \"Tilausjärjestys\" on asetettu \"Laskuri\".</string>
- <string name="pref_set_theme_sum">Vaihda AntennaPodin näkymää</string>
+ <string name="pref_nav_drawer_feed_counter_title">Aseta tilauslaskuri</string>
+ <string name="pref_nav_drawer_feed_counter_sum">Vaihda tilauslaskurin näyttämiä tietoja. Tämä vaikuttaa myös tilauksien järjestykseen, jos \"Tilausjärjestys\" on \"Laskuri\".</string>
+ <string name="pref_set_theme_sum">Muuta AntennaPodin ulkonäköä</string>
<string name="pref_automatic_download_title">Automaattinen lataus</string>
<string name="pref_automatic_download_sum">Aseta jaksojen automaattinen lataus</string>
- <string name="pref_autodl_wifi_filter_title">Aseta Wi-Fi filtteri</string>
- <string name="pref_autodl_wifi_filter_sum">Salli automaatiset lataukset vain sallittujen Wi-Fi verkkojen kautta.</string>
- <string name="pref_automatic_download_on_battery_title">Lataa kun ei ladata akkua</string>
- <string name="pref_automatic_download_on_battery_sum">Salli automaattiset lataukset kun akku ei ole latautumassa</string>
+ <string name="pref_autodl_wifi_filter_title">Aseta Wi-Fi-suodatin</string>
+ <string name="pref_autodl_wifi_filter_sum">Salli automaattiset lataukset vain sallittujen Wi-Fi-verkkojen kautta.</string>
+ <string name="pref_automatic_download_on_battery_title">Lataa, kun akkua ei ladata</string>
+ <string name="pref_automatic_download_on_battery_sum">Salli automaattiset lataukset, kun akku ei ole latautumassa</string>
<string name="pref_parallel_downloads_title">Yhtäaikaiset lataukset</string>
<string name="pref_episode_cache_title">Jaksojen välimuisti</string>
- <string name="pref_episode_cache_summary">Ladattuja jaksoja yhteensä välimuistissa tällä laitteella. Automaattinen lataaminen pysäytetään jos tämä raja ylittyy.</string>
+ <string name="pref_episode_cache_summary">Ladattuja jaksoja yhteensä välimuistissa tällä laitteella. Automaattinen lataaminen pysäytetään, jos tämä raja ylittyy.</string>
+ <string name="pref_episode_cover_title">Käytä jakson kansikuvaa</string>
+ <string name="pref_episode_cover_summary">Käytä jaksokohtaista kansikuvaa, kun se on saatavilla. Jos tämä ei ole valittuna, sovellus käyttää aina podcastin kansikuvaa.</string>
<string name="pref_theme_title_light">Vaalea</string>
<string name="pref_theme_title_dark">Tumma</string>
<string name="pref_theme_title_trueblack">Musta (AMOLED valmis)</string>
diff --git a/core/src/main/res/values-fr/strings.xml b/core/src/main/res/values-fr/strings.xml
index 85423fb8a..c602960c3 100644
--- a/core/src/main/res/values-fr/strings.xml
+++ b/core/src/main/res/values-fr/strings.xml
@@ -487,7 +487,7 @@
<string name="media_player_switch_to_exoplayer">Utiliser ExoPlayer pour la lecture</string>
<string name="media_player_switched_to_exoplayer">Lecteur changé pour ExoPlayer</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_title">Sortie 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>
@@ -507,10 +507,11 @@
<!--About screen-->
<string name="about_pref">À propos</string>
<string name="antennapod_version">Version d\'AntennaPod</string>
+ <string name="contributors">Contributeurs</string>
+ <string name="contributors_summary">Tout le monde peut contribuer à l\'amélioration d\'AntennaPod - avec du code, des traductions ou en aidant les utilisateurs dans notre forum.</string>
<string name="developers">Développeurs</string>
- <string name="developers_summary">Tout le monde peut améliorer AntennaPod</string>
<string name="translators">Traducteurs</string>
- <string name="translators_summary">La traduction est faite par les utilisateurs d\'AntennaPod sur Transifex</string>
+ <string name="special_thanks">Remerciements spéciaux</string>
<string name="privacy_policy">Politique de confidentialité</string>
<string name="licenses">Licences</string>
<string name="licenses_summary">AntennaPod utilise le code d\'autres logiciels</string>
@@ -554,6 +555,8 @@
<string name="import_select_file">Sélectionner le fichier à importer</string>
<string name="import_ok">Import réussi.\n\nAppuyer sur OK pour redémarrer AntennaPod</string>
<string name="import_no_downgrade">La base de données a été exportée avec une version plus récente d\'AntennaPod. L\'application actuelle ne sait pas comment l\'importer.</string>
+ <string name="favorites_export_label">Exporter les favoris</string>
+ <string name="favorites_export_summary">Exporter les favoris dans un fichier</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">Activer le minuteur</string>
<string name="disable_sleeptimer_label">Désactiver le minuteur</string>
diff --git a/core/src/main/res/values-gl/strings.xml b/core/src/main/res/values-gl/strings.xml
index 7ae7d4767..5b8278bbe 100644
--- a/core/src/main/res/values-gl/strings.xml
+++ b/core/src/main/res/values-gl/strings.xml
@@ -145,7 +145,7 @@
<string name="hide_not_queued_episodes_label">Fora da cola</string>
<string name="hide_downloaded_episodes_label">Descargado</string>
<string name="hide_not_downloaded_episodes_label">Non descargado</string>
- <string name="hide_has_media_label">Ten medios</string>
+ <string name="hide_has_media_label">Ten multimedia</string>
<string name="hide_is_favorite_label">É favorito</string>
<string name="filtered_label">Filtrado</string>
<string name="refresh_failed_msg">{fa-exclamation-circle} Erro na última actualización</string>
@@ -487,7 +487,7 @@
<string name="media_player_switch_to_exoplayer">Cambiar a ExoPlayer</string>
<string name="media_player_switched_to_exoplayer">Cambiaches a ExoPlayer.</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_title">Ó 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>
@@ -507,10 +507,11 @@
<!--About screen-->
<string name="about_pref">Sobre</string>
<string name="antennapod_version">Versión AntennaPod</string>
+ <string name="contributors">Colaboradoras</string>
+ <string name="contributors_summary">Calquera persoa pode axudar a mellorar AntennaPod - con código, traducións ou botando unha man no foro</string>
<string name="developers">Desenvolvedoras</string>
- <string name="developers_summary">Todas podemos axudar a mellorar AntennaPod</string>
<string name="translators">Tradutores</string>
- <string name="translators_summary">As traducións de AntennaPod realízanse utilizando Transifex</string>
+ <string name="special_thanks">Grazas especialmente a</string>
<string name="privacy_policy">Política de privacidade</string>
<string name="licenses">Licenzas</string>
<string name="licenses_summary">AntennaPod toma como fonte outro software</string>
@@ -554,6 +555,8 @@
<string name="import_select_file">Escolle o ficheiro a importar</string>
<string name="import_ok">Importación correcta.\n\nPulse OK para reiniciar AntennaPod</string>
<string name="import_no_downgrade">A base de datos foi exportada cunha versión máis recente de AntennaPod. A instalación actual non sabe como xestionar este ficheiro.</string>
+ <string name="favorites_export_label">Exportar favoritos</string>
+ <string name="favorites_export_summary">Exportar os favoritos a un ficheiro</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">Establecer apagado automático</string>
<string name="disable_sleeptimer_label">Desactivar o apagado automático</string>
diff --git a/core/src/main/res/values-hu/strings.xml b/core/src/main/res/values-hu/strings.xml
index 23cf5df9f..55f7a5dbd 100644
--- a/core/src/main/res/values-hu/strings.xml
+++ b/core/src/main/res/values-hu/strings.xml
@@ -430,6 +430,8 @@
<string name="pref_feed_playback_speed_sum">A podcast epizódjainak indításakor használandó lejátszási sebesség</string>
<string name="pref_feed_skip">Automatikus kihagyás</string>
<string name="pref_feed_skip_sum">Bevezetők és lezárások kihagyása</string>
+ <string name="pref_feed_skip_ending">Utolsó másodpercek átugrása</string>
+ <string name="pref_feed_skip_intro">Első másodpercek átugrása</string>
<string name="pref_feed_skip_ending_toast">Utolsó %d másodperc kihagyvas</string>
<string name="pref_feed_skip_intro_toast">Első %d másodperc kihagyva</string>
<string name="pref_playback_time_respects_speed_title">Médiainformáció hozzáigazítása a lejátszási sebességhez</string>
@@ -505,10 +507,11 @@
<!--About screen-->
<string name="about_pref">Névjegy</string>
<string name="antennapod_version">AntennaPod verzió</string>
+ <string name="contributors">Közreműködők</string>
+ <string name="contributors_summary">Mindenki, aki segített az AntennaPod még jobbá tételében – kóddal, fordítással vagy a felhasználók segítésével a fórumon.</string>
<string name="developers">Fejlesztők</string>
- <string name="developers_summary">Bárki segíthet az AntennaPod jobbá tételében</string>
<string name="translators">Fordítók</string>
- <string name="translators_summary">A fordításokat AntennaPod felhasználók készítik a Transifex segítségével</string>
+ <string name="special_thanks">Külön köszönet</string>
<string name="privacy_policy">Adatvédelmi nyilatkozat</string>
<string name="licenses">Licencek</string>
<string name="licenses_summary">Az AntennaPod más remek szoftvereket használ</string>
@@ -517,6 +520,13 @@
<string name="search_label">Keresés</string>
<string name="no_results_for_query">Nincs találat a következőre: „%1$s”</string>
<!--Synchronization-->
+ <string name="sync_status_started">Szinkronizálás elindítva</string>
+ <string name="sync_status_episodes_upload">Epizódváltozások feltöltése…</string>
+ <string name="sync_status_episodes_download">Epizódváltozások letöltése…</string>
+ <string name="sync_status_upload_played">Lejátszott állapot feltöltése…</string>
+ <string name="sync_status_subscriptions">Feliratkozások szinkronizálása…</string>
+ <string name="sync_status_success">Szinkronizálás sikeres</string>
+ <string name="sync_status_error">Szinkronizálás sikertelen</string>
<!--import and export-->
<string name="import_export_summary">Feliratkozások áthelyezése, és sorbaállítás egy másik eszközön</string>
<string name="database">Adatbázis</string>
@@ -536,6 +546,7 @@
<string name="html_export_label">HTML exportálása</string>
<string name="database_export_label">Adatbázis exportálása</string>
<string name="database_import_label">Adatbázis importálása</string>
+ <string name="database_import_warning">Az adatbázis importálása lecseréli a jelenlegi feliratkozásait és lejátszási előzményeit. Célszerű biztonsági mentésként exportálni a jelenlegi adatbázist. Biztos, hogy lecseréli?</string>
<string name="please_wait">Várjon…</string>
<string name="export_error_label">Exportálási hiba</string>
<string name="export_success_title">Exportálás sikeres</string>
@@ -544,13 +555,15 @@
<string name="import_select_file">Importálandó fájl kiválasztása</string>
<string name="import_ok">Importálás sikeres.\n\nNyomja meg az OK gombot az AntennaPod újraindításához</string>
<string name="import_no_downgrade">Az adatbázis az AntennaPod egy újabb verziójából lett exportálva. A jelenlegi telepítése még nem tudja, hogyan kezelje ezt a fájlt.</string>
+ <string name="favorites_export_label">Kedvencek exportálása</string>
+ <string name="favorites_export_summary">Mentett kedvencek fájlba exportálása</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">Alvási időzítő beállítása</string>
<string name="disable_sleeptimer_label">Alvási időzítő letiltása</string>
<string name="sleep_timer_label">Alvási időzít</string>
<string name="time_dialog_invalid_input">Érvénytelen bemenet, az időnek egész számnak kell lennie</string>
<string name="shake_to_reset_label">Rázás a visszaállításához</string>
- <string name="timer_vibration_label">Rövid vibrálás a befejezés előtt</string>
+ <string name="timer_vibration_label">Rövid rezgés a befejezés előtt</string>
<string name="time_seconds">másodperc</string>
<string name="time_minutes">perc</string>
<string name="time_hours">óra</string>
@@ -589,7 +602,7 @@
<string name="gpodnetauth_device_errorAlreadyUsed">Az eszközazonosító már használatban van</string>
<string name="gpodnetauth_device_caption_errorEmpty">A felirat nem lehet üres</string>
<string name="gpodnetauth_device_butChoose">Kiválasztás</string>
- <string name="gpodnetauth_finish_title">Bejelentkezés sikertelen</string>
+ <string name="gpodnetauth_finish_title">Bejelentkezés sikeres!</string>
<string name="gpodnetauth_finish_descr">Gratulálunk! A gpodder.net fiókja most már össze van kapcsolva az eszközével. Az AntennaPod automatikusan szinkronizálja az eszközén lévő feliratkozásait a gpodder.net fiókjával.</string>
<string name="gpodnetauth_finish_butsyncnow">Szinkronizálás indítása most</string>
<string name="gpodnetauth_finish_butgomainscreen">Ugrás a főképernyőre</string>
@@ -627,16 +640,23 @@
<string name="subscribe_label">Feliratkozás</string>
<string name="subscribing_label">Feliratkozás…</string>
<string name="preview_episode">Előnézet</string>
+ <string name="stop_preview">Előnézet leállítása</string>
<!--Content descriptions for image buttons-->
<string name="rewind_label">Visszatekerés</string>
<string name="fast_forward_label">Előretekerés</string>
+ <string name="increase_speed">Sebesség növelése</string>
+ <string name="decrease_speed">Sebesség csökkentése</string>
<string name="media_type_audio_label">Hang</string>
<string name="media_type_video_label">Videó</string>
<string name="navigate_upwards_label">Navigálás felfelé</string>
<string name="status_downloading_label">Az epizód letöltés alatt van</string>
<string name="in_queue_label">Az epizód sorba van állítva </string>
+ <string name="is_favorite_label">Epizód megjelölve kedvencként</string>
<string name="drag_handle_content_description">Húzza az elem pozíciójának módosításához</string>
<string name="load_next_page_label">Következő oldal betöltése</string>
+ <string name="switch_pages">Lapok váltása</string>
+ <string name="position">Pozíció: %1$s</string>
+ <string name="apply_action">Művelet alkalmazása</string>
<!--Feed information screen-->
<string name="authentication_label">Hitelesítés</string>
<string name="authentication_descr">A felhasználónév és jelszó módosítása ennél a podcastnál és az epizódoknál.</string>
@@ -662,6 +682,7 @@
<string name="browse_gpoddernet_label">A gpodder.net böngészése</string>
<string name="discover">Felfedezés</string>
<string name="discover_more">több »</string>
+ <string name="search_powered_by">Keresés a(z) %1$s segítségével</string>
<string name="filter">Szűrő</string>
<!--Episodes apply actions-->
<string name="all_label">Összes</string>
@@ -689,6 +710,12 @@
<string name="sort_date_old_new">Dátum (régi \u2192 új)</string>
<string name="sort_duration_short_long">Hossz (rövid \u2192 hosszú)</string>
<string name="sort_duration_long_short">Hossz (hosszú \u2192 rövid)</string>
+ <string name="sort_a_z">A \u2192 Z</string>
+ <string name="sort_z_a">Z \u2192 A</string>
+ <string name="sort_new_old">Új \u2192 régi</string>
+ <string name="sort_old_new">Régi \u2192 új</string>
+ <string name="sort_short_long">Rövid \u2192 hosszú</string>
+ <string name="sort_long_short">Hosszú \u2192 rövid</string>
<!--Rating dialog-->
<string name="rating_title">Kedveli az AntennaPodot?</string>
<string name="rating_message">Értékelnénk, ha időt szánna az AntennaPod értékelésére.</string>
@@ -726,7 +753,7 @@
<string name="cast_failed_to_play">A médialejátszás indítása sikertelen</string>
<string name="cast_failed_to_stop">A médialejátszás leállítása sikertelen</string>
<string name="cast_failed_to_pause">A médialejátszás szüneteltetése sikertelen</string>
- <string name="cast_failed_setting_volume">Hiba a hangerő beállításakor</string>
+ <string name="cast_failed_setting_volume">A hangerő beállítása sikertelen</string>
<string name="cast_failed_no_connection">Nincs kapcsolat a továbbításhoz használandó eszközzel</string>
<string name="cast_failed_no_connection_trans">A kapcsolat megszakadt a továbbításhoz használandó eszközzel. Az alkalmazás próbál újrakapcsolódni, ha lehetséges. Várjon néhány másodpercet, és próbálja újra.</string>
<string name="cast_failed_status_request">Nem sikerült szinkronizálni a továbbításhoz használt eszközön</string>
@@ -749,4 +776,7 @@
<string name="widget_create_button">Widget létrehozása</string>
<string name="widget_opacity">Átlátszatlanság</string>
<!--On-Demand configuration-->
+ <string name="on_demand_config_setting_changed">Beállítás sikeresen frissítve.</string>
+ <string name="on_demand_config_stream_text">Úgy néz ki, hogy sokszor használja a közvetítést. Szeretné megjeleníteni a közvetítési gombokat az epizódlistákban?</string>
+ <string name="on_demand_config_download_text">Úgy néz ki, hogy sokszor tölt le. Szeretné megjeleníteni a letöltési gombokat az epizódlistákban?</string>
</resources>
diff --git a/core/src/main/res/values-it/strings.xml b/core/src/main/res/values-it/strings.xml
index 988e5472b..abd08d2cc 100644
--- a/core/src/main/res/values-it/strings.xml
+++ b/core/src/main/res/values-it/strings.xml
@@ -507,10 +507,11 @@
<!--About screen-->
<string name="about_pref">Informazioni</string>
<string name="antennapod_version">Versione di AntennaPod</string>
+ <string name="contributors">Contributori</string>
+ <string name="contributors_summary">Tutti possono contribuire a rendere AntennaPod migliore - programmando, traducendo o aiutando gli utenti nel nostro forum</string>
<string name="developers">Sviluppatori</string>
- <string name="developers_summary">Chiunque può contribuire a rendere AntennaPod migliore</string>
<string name="translators">Traduttori</string>
- <string name="translators_summary">Le traduzioni sono create dagli utenti di AntennaPod grazie a Transifex</string>
+ <string name="special_thanks">Ringraziamenti speciali</string>
<string name="privacy_policy">Privacy policy</string>
<string name="licenses">Licenze</string>
<string name="licenses_summary">AntennaPod usa altri ottimi software</string>
@@ -554,6 +555,8 @@
<string name="import_select_file">Scegli file da importare</string>
<string name="import_ok">Importazione eseguita.\n\nPremi OK per riavviare AntennaPod</string>
<string name="import_no_downgrade">Questo database è stato esportato da una versione più recente di AntennaPod. La tua applicazione attuale non sa ancora come gestire questo file.</string>
+ <string name="favorites_export_label">Esporta preferiti</string>
+ <string name="favorites_export_summary">Esporta preferiti su file</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">Imposta timer</string>
<string name="disable_sleeptimer_label">Disabilita il timer di spegnimento</string>
diff --git a/core/src/main/res/values-iw/strings.xml b/core/src/main/res/values-iw/strings.xml
index 2b9f57f52..1e9f3f246 100644
--- a/core/src/main/res/values-iw/strings.xml
+++ b/core/src/main/res/values-iw/strings.xml
@@ -527,10 +527,11 @@
<!--About screen-->
<string name="about_pref">על אודות</string>
<string name="antennapod_version">גרסת אנטנה־פּוֹד</string>
+ <string name="contributors">מתנדבים</string>
+ <string name="contributors_summary">כל אחד ואחת יכולים לסייע בשיפור AntennaPod באמצעות תרומת קוד, תרגום או באמצעות סיוע למשתמשים שלנו בפורום</string>
<string name="developers">מפתחים</string>
- <string name="developers_summary">כולם יכולים לסייע בשיפור אנטנה־פּוֹד</string>
<string name="translators">מתרגמים</string>
- <string name="translators_summary">תרגומים נוצרים על ידי משתמשים של אנטנה־פּוֹד בעזרת Transifex</string>
+ <string name="special_thanks">תודות מיוחדות</string>
<string name="privacy_policy">מדיניות פרטיות</string>
<string name="licenses">רישיונות</string>
<string name="licenses_summary">היישומון אנטנה־פּוֹד משתמש בתכניות נהדרות נוספות</string>
@@ -574,6 +575,8 @@
<string name="import_select_file">בחירת קובץ לייבוא</string>
<string name="import_ok">הייבוא הצליח.\n\nנא ללחוץ על אישור כדי להפעיל את אנטנה־פּוֹד מחדש</string>
<string name="import_no_downgrade">מסד נתונים זה ייוצא עם גרסה עדכנית יותר של אנטנה־פ‎וֹד</string>
+ <string name="favorites_export_label">ייצוא מועדפים</string>
+ <string name="favorites_export_summary">ייצור המועדפים השמורים לקובץ</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">הגדרת מתזמן שינה</string>
<string name="disable_sleeptimer_label">השבתת מתזמן שינה</string>
diff --git a/core/src/main/res/values-ja/strings.xml b/core/src/main/res/values-ja/strings.xml
index b1d14e9d4..ac9c49a2e 100644
--- a/core/src/main/res/values-ja/strings.xml
+++ b/core/src/main/res/values-ja/strings.xml
@@ -481,9 +481,7 @@
<string name="about_pref">AntennaPodについて</string>
<string name="antennapod_version">AntennaPod バージョン</string>
<string name="developers">開発者</string>
- <string name="developers_summary">誰でも AntennaPod の改善に貢献できます</string>
<string name="translators">翻訳者</string>
- <string name="translators_summary">翻訳は、Transifex を使用してAntennaPod のユーザーが作成します</string>
<string name="privacy_policy">プライバシーポリシー</string>
<string name="licenses">ライセンス</string>
<string name="licenses_summary">AntennaPod は他の優れたソフトウェアを使用しています</string>
diff --git a/core/src/main/res/values-ko/strings.xml b/core/src/main/res/values-ko/strings.xml
index 04e732a3c..28f79aca7 100644
--- a/core/src/main/res/values-ko/strings.xml
+++ b/core/src/main/res/values-ko/strings.xml
@@ -497,10 +497,11 @@
<!--About screen-->
<string name="about_pref">정보</string>
<string name="antennapod_version">안테나팟 버전</string>
+ <string name="contributors">기여한 분들</string>
+ <string name="contributors_summary">코드, 번역, 포럼에서 사용자를 돕는 일 등, 안테나팟을 더 좋게 만드는데 누구나 도움을 주실 수 있습니다. </string>
<string name="developers">개발자</string>
- <string name="developers_summary">안테나팟을 더 낫게 만드는데 도움을 준 모든 분</string>
<string name="translators">번역자</string>
- <string name="translators_summary">번역은 안테나팟 사용자들이 Transifex를 사용해 만듭니다.</string>
+ <string name="special_thanks">특별히 감사</string>
<string name="privacy_policy">개인 정보 정책</string>
<string name="licenses">라이선스</string>
<string name="licenses_summary">안테나팟은 여러가지 위대한 소프트웨어를 사용하고 있습니다</string>
@@ -544,6 +545,8 @@
<string name="import_select_file">가져올 파일을 선택하십시오</string>
<string name="import_ok">내보내기 성공.\n\n안테나팟을 다시 시작하려면 확인을 누르십시오</string>
<string name="import_no_downgrade">이 데이터베이스는 더 새로운 버전의 안테나팟에서 내보낸 데이터베이스입니다. 현재 설치된 버전의 안테나팟에서는 이 파일을 제대로 처리하지 못할 수도 있습니다.</string>
+ <string name="favorites_export_label">즐겨찾기 내보내기</string>
+ <string name="favorites_export_summary">저장한 즐겨찾기를 파일로 내보내기</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">취침 타이머 설정</string>
<string name="disable_sleeptimer_label">취침 타이머 사용 않음</string>
diff --git a/core/src/main/res/values-lt/strings.xml b/core/src/main/res/values-lt/strings.xml
index ad6f4bc71..380a68120 100644
--- a/core/src/main/res/values-lt/strings.xml
+++ b/core/src/main/res/values-lt/strings.xml
@@ -2,13 +2,14 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<!--Activity and fragment titles-->
<string name="feed_update_receiver_name">Atnaujinti prenumeratas</string>
+ <string name="feeds_label">Tinklalaidės</string>
<string name="statistics_label">Statistika</string>
<string name="add_feed_label">Pridėti tinklalaidę</string>
<string name="episodes_label">Epizodai</string>
<string name="all_episodes_short_label">Visi</string>
<string name="new_episodes_label">Nauji</string>
- <string name="favorite_episodes_label">Mėgiami</string>
- <string name="new_label">Nauji</string>
+ <string name="favorite_episodes_label">Mėgstami</string>
+ <string name="new_label">Naujas</string>
<string name="settings_label">Nustatymai</string>
<string name="downloads_label">Atsiuntimai</string>
<string name="downloads_running_label">Vykdomi</string>
@@ -22,6 +23,8 @@
<string name="gpodnet_auth_label">gpodder.net prisijungimas</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="playback_statistics_label">Atkūrimas</string>
+ <string name="download_statistics_label">Atsiuntimai</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>
@@ -30,7 +33,9 @@
<string name="statistics_mode_count_all">Sumuoti visas tinklalaides, pažymėtas kaip perklausytas</string>
<string name="statistics_speed_not_counted">Atkreipkite dėmesį: į atkūrimo spartą neatsižvelgiama.</string>
<string name="statistics_reset_data">Nustatyti statistikos duomenis iš naujo</string>
+ <string name="statistics_reset_data_msg">Bus išvalyta visų epizodų perklausytos trukmės istorija. Ar tikrai norite tęsti?</string>
<!--Download Statistics fragment-->
+ <string name="total_size_downloaded_podcasts">Bendras atsiųstų tinklalaidžių dydis:</string>
<!--Main activity-->
<string name="drawer_open">Atverti meniu</string>
<string name="drawer_close">Užverti meniu</string>
@@ -38,7 +43,7 @@
<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>
+ <string name="drawer_feed_order_most_played">Rikiuoti pagal perklausytų epizodų skaičių</string>
<string name="drawer_feed_counter_new_unplayed">Naujų, dar neperklausytų epizodų skaičius</string>
<string name="drawer_feed_counter_new">Naujų epizodų skaičius</string>
<string name="drawer_feed_counter_unplayed">Neperklausytų epizodų skaičius</string>
@@ -79,6 +84,11 @@
<string name="auto_download_apply_to_items_title">Pritaikyti ankstesniems epizodams</string>
<string name="auto_download_apply_to_items_message">Naujieji <i>Automatinio atsiuntimo</i> nustatymai bus automatiškai pritaikyti naujiems epizodams.\nAr norite šiuos nustatymus taip pat pritaikyti ir anksčiau išleistiems epizodams?</string>
<string name="auto_delete_label">Automatiškai trinti epizodus</string>
+ <string name="feed_volume_reduction">Garsio mažinimas</string>
+ <string name="feed_volume_reduction_summary">Sumažinti garsį šio sklaidos kanalo epizodams: %1$s</string>
+ <string name="feed_volume_reduction_off">Išjungta</string>
+ <string name="feed_volume_reduction_light">Švelniai</string>
+ <string name="feed_volume_reduction_heavy">Gausiai</string>
<string name="parallel_downloads_suffix">\u0020lygiagretūs atsiuntimai</string>
<string name="feed_auto_download_global">Globali numatytoji</string>
<string name="feed_auto_download_always">Visada</string>
@@ -87,17 +97,33 @@
<string name="episode_cleanup_never">Niekada</string>
<string name="episode_cleanup_queue_removal">Jei nėra eilėje</string>
<string name="episode_cleanup_after_listening">Pabaigus klausyti</string>
+ <plurals name="episode_cleanup_hours_after_listening">
+ <item quantity="one">Praėjus 1 valandai po perklausymo</item>
+ <item quantity="few">Praėjus %d valandoms po perklausymo</item>
+ <item quantity="many">Praėjus %d valandoms po perklausymo</item>
+ <item quantity="other">Praėjus %d valandoms po perklausymo</item>
+ </plurals>
<plurals name="episode_cleanup_days_after_listening">
<item quantity="one">Praėjus 1 dienai nuo perklausymo</item>
<item quantity="few">Praėjus %d dienoms nuo perklausymo</item>
<item quantity="many">Praėjus %d dienų nuo perklausymo</item>
<item quantity="other">Praėjus %d dienų nuo perklausymo</item>
</plurals>
+ <plurals name="num_selected_label">
+ <item quantity="one">%d pažymėtas</item>
+ <item quantity="few">%d pažymėti</item>
+ <item quantity="many">%d pažymėti</item>
+ <item quantity="other">%d pažymėti</item>
+ </plurals>
+ <string name="loading_more">Įkeliama daugiau...</string>
<!--Actions on feeds-->
<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="remove_all_new_flags_label">Pašalinti visas „naujas“ gaireles</string>
+ <string name="removed_all_new_flags_msg">Visos „naujas“ gairelės pašalintos</string>
+ <string name="remove_all_new_flags_confirmation_msg">Patvirtinkite, jog norite pašalinti „naujas“ gairelę visiems epizodams.</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>
@@ -108,11 +134,14 @@
<string name="share_link_label">Dalintis epizodo URL</string>
<string name="share_link_with_position_label">Dalintis epizodo URL su pozicija</string>
<string name="share_file_label">Dalintis failu</string>
+ <string name="share_website_url_label">Dalintis svetainės URL</string>
+ <string name="share_feed_url_label">Dalintis tinklalaidės 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="multi_select">Pažymėti keletą</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>
@@ -123,10 +152,11 @@
<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="hide_is_favorite_label">Mėgstami</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>
+ <string name="please_wait_for_data">Prašome luktelėti, kol duomenys bus įkelti</string>
<!--actions on feeditems-->
<string name="download_label">Atsisiųsti</string>
<plurals name="downloading_batch_label">
@@ -147,22 +177,53 @@
<item quantity="many">%d epizodai ištrinti.</item>
<item quantity="other">%d epizodai ištrinti.</item>
</plurals>
+ <string name="remove_new_flag_label">Pašalinti „naujas“ gairelę</string>
+ <string name="removed_new_flag_label">„naujas“ gairelė pašalinta</string>
<string name="mark_read_label">Pažymėti kaip perklausytą</string>
<string name="marked_as_read_label">Pažymėtas kaip perklausytas</string>
+ <string name="mark_read_no_media_label">Pažymėti kaip perskaitytą</string>
+ <string name="marked_as_read_no_media_label">Pažymėtas kaip perskaitytas</string>
+ <string name="play_this_to_seek_position">Norint peršokti į poziciją reikia pradėti epizodo atkūrimą</string>
+ <plurals name="marked_read_batch_label">
+ <item quantity="one">%d epizodas pažymėtas kaip perklausytas.</item>
+ <item quantity="few">%d epizodai pažymėti kaip perklausyti.</item>
+ <item quantity="many">%d epizodai pažymėti kaip perklausyti.</item>
+ <item quantity="other">%d epizodai pažymėti kaip perklausyti.</item>
+ </plurals>
<string name="mark_unread_label">Pažymėti kaip neperklausytą</string>
+ <string name="mark_unread_label_no_media">Pažymėti kaip neperskaitytą</string>
+ <plurals name="marked_unread_batch_label">
+ <item quantity="one">%d epizodas pažymėtas kaip neperklausytas.</item>
+ <item quantity="few">%d epizodai pažymėti kaip neperklausyti.</item>
+ <item quantity="many">%d epizodai pažymėti kaip neperklausyti.</item>
+ <item quantity="other">%d epizodai pažymėti kaip neperklausyti.</item>
+ </plurals>
<string name="add_to_queue_label">Pridėti į eilę</string>
<string name="added_to_queue_label">Pridėtas į eilę</string>
+ <plurals name="added_to_queue_batch_label">
+ <item quantity="one">%d epizodas pridėtas į eilę.</item>
+ <item quantity="few">%d epizodai pridėti į eilę.</item>
+ <item quantity="many">%d epizodai pridėti į eilę.</item>
+ <item quantity="other">%d epizodai pridėti į eilę.</item>
+ </plurals>
<string name="remove_from_queue_label">Pašalinti iš eilės</string>
- <string name="add_to_favorite_label">Pridėti prie mėgiamų</string>
- <string name="added_to_favorites">Pridėtas prie mėgiamų</string>
- <string name="remove_from_favorite_label">Pašalinti iš mėgiamų</string>
- <string name="removed_from_favorites">Pašalintas iš mėgiamų</string>
+ <plurals name="removed_from_queue_batch_label">
+ <item quantity="one">%d epizodas pašalintas iš eilės.</item>
+ <item quantity="few">%d epizodai pašalinti iš eilės.</item>
+ <item quantity="many">%d epizodai pašalinti iš eilės.</item>
+ <item quantity="other">%d epizodai pašalinti iš eilės.</item>
+ </plurals>
+ <string name="add_to_favorite_label">Pridėti prie mėgstamų</string>
+ <string name="added_to_favorites">Pridėtas prie mėgstamų</string>
+ <string name="remove_from_favorite_label">Pašalinti iš mėgstamų</string>
+ <string name="removed_from_favorites">Pašalintas iš mėgstamų</string>
<string name="visit_website_label">Aplankyti svetainę</string>
<string name="skip_episode_label">Praleisti epizodą</string>
<string name="activate_auto_download">Įjungti automatinį atsiuntimą</string>
<string name="deactivate_auto_download">Išjungti automatinį atsiuntimą</string>
<string name="reset_position">Nustatyti atkūrimo poziciją iš naujo</string>
<string name="removed_item">Elementas pašalintas</string>
+ <string name="no_items_selected">Nėra pažymėtų elementų</string>
<!--Download messages and labels-->
<string name="download_successful">sėkmingi</string>
<string name="download_pending">Laukia atsiuntimo</string>
@@ -183,6 +244,7 @@
<string name="download_canceled_msg">Atsiuntimas atšauktas</string>
<string name="download_canceled_autodownload_enabled_msg">Atsiuntimas atšauktas\n<i>Automatinis atsiuntimas</i> šiam elementui išjungtas</string>
<string name="download_report_title">Atsiuntimai užbaigti su klaida (-omis)</string>
+ <string name="auto_download_report_title">Automatiniai atsiuntimai užbaigti</string>
<string name="download_report_content_title">Atsiuntimų ataskaita</string>
<string name="download_error_malformed_url">Netvarkingas URL</string>
<string name="download_error_io_error">Įvesties/išvesties klaida</string>
@@ -201,11 +263,14 @@
<string name="download_type_feed">Sklaidos kanalas</string>
<string name="download_type_media">Medijos failas</string>
<string name="download_request_error_dialog_message_prefix">Įvyko klaida bandant atsisiųsti failą:\u0020</string>
+ <string name="null_value_podcast_error">Nėra pateiktų tinklalaidžių, kurios galėtų būti rodomos.</string>
<string name="authentication_notification_title">Reikalingas tapatumo nustatymas</string>
<string name="authentication_notification_msg">Šis išteklius reikalauja vartotojo vardo bei slaptažodžio</string>
<string name="confirm_mobile_download_dialog_title">Patvirtinkite atsiuntimą mobiliuoju internetu</string>
<string name="confirm_mobile_download_dialog_message_not_in_queue">Atsiuntimas mobiliuoju internetu išjungtas nustatymuose.\n\nGalite pasirinkti tik pridėti epizodą į eilę arba laikinai leisti atsiuntimą.\n\n<small>Jūsų pasirinkimas bus prisimenamas 10 minučių.</small></string>
<string name="confirm_mobile_download_dialog_message">Atsiuntimas mobiliuoju internetu išjungtas nustatymuose.\n\nAr norite laikinai leisti atsiuntimą?\n\n<small>Jūsų pasirinkimas bus prisimenamas 10 minučių.</small></string>
+ <string name="confirm_mobile_streaming_notification_title">Patvirtinkite tiesioginį klausymąsi mobiliuoju internetu</string>
+ <string name="confirm_mobile_streaming_notification_message">Tiesioginis klausymasis mobiliuoju internetu išjungtas nustatymuose. Spustelėkite, jei vis tiek norite klausytis tiesiogiai.</string>
<string name="confirm_mobile_streaming_button_always">Leisti visada</string>
<string name="confirm_mobile_download_dialog_only_add_to_queue">Pridėti į eilę</string>
<string name="confirm_mobile_download_dialog_enable_temporarily">Laikinai leisti</string>
@@ -216,22 +281,28 @@
<string name="player_ready_msg">Pasiruošęs</string>
<string name="player_seeking_msg">Ieškoma</string>
<string name="playback_error_server_died">Serveris nepasiekiamas</string>
+ <string name="playback_error_unsupported">Nepalaikomas medijos tipas</string>
+ <string name="playback_error_timeout">Baigėsi operacijai skirtas laikas</string>
+ <string name="playback_error_source">Prieiga prie medijos failo negalima</string>
<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="unknown_media_key">„AntennaPod“ – nežinomas medijos klavišas: %1$d</string>
+ <string name="error_file_not_found">Failas nerastas</string>
<!--Queue operations-->
<string name="lock_queue">Užrakinti eilę</string>
<string name="unlock_queue">Atrakinti eilę</string>
<string name="queue_locked">Eilė užrakinta</string>
<string name="queue_unlocked">Eilė atrakinta</string>
+ <string name="queue_lock_warning">Užrakinus eilę negalima mostelėti ar pertvarkyti epizodų.</string>
<string name="checkbox_do_not_show_again">Daugiau neberodyti</string>
<string name="clear_queue_label">Išvalyti eilę</string>
<string name="undo">Atšaukti</string>
<string name="move_to_top_label">Perkelti į viršų</string>
<string name="move_to_bottom_label">Perkelti į apačią</string>
<string name="sort">Rikiuoti</string>
+ <string name="keep_sorted">Išlaikyti rikiavimą</string>
<string name="date">Data</string>
<string name="duration">Trukmė</string>
<string name="episode_title">Epizodo pavadinimas</string>
@@ -245,34 +316,52 @@
<!--Variable Speed-->
<string name="download_plugin_label">Atsiųsti įskiepį</string>
<string name="no_playback_plugin_title">Įskiepis neįdiegtas</string>
+ <string name="no_playback_plugin_or_sonic_msg">Tinkamam kintamos atkūrimo spartos veikimui rekomenduojame įjungti įtaisytąją „Sonic“ medijos leistuvę.</string>
<string name="set_playback_speed_label">Atkūrimo spartos</string>
<string name="enable_sonic">Įjungti „Sonic“</string>
<!--Empty list labels-->
+ <string name="no_items_header_label">Epizodų eilėje nėra</string>
+ <string name="no_items_label">Pridėkite epizodą jį atsisiųsdami arba ilgai paspausdami ant epizodo ir pasirinkdami „Pridėti į eilę“.</string>
<string name="no_shownotes_label">Šis epizodas neturi užrašų.</string>
<string name="no_run_downloads_head_label">Nėra vykstančių atsiuntimų</string>
+ <string name="no_run_downloads_label">Atsisiųsti epizodų galite tinklalaidės informacijos ekrane.</string>
<string name="no_comp_downloads_head_label">Atsisiųstų epizodų nėra</string>
+ <string name="no_comp_downloads_label">Atsisiųsti epizodų galite tinklalaidės informacijos ekrane.</string>
+ <string name="no_log_downloads_head_label">Nėra atsiuntimo žurnalų</string>
+ <string name="no_log_downloads_label">Prieinami atsiuntimo žurnalai bus rodomi čia.</string>
<string name="no_history_head_label">Istorijos nėra</string>
+ <string name="no_history_label">Perklausius epizodą jis atsiras čia.</string>
<string name="no_all_episodes_head_label">Epizodų nėra</string>
+ <string name="no_all_episodes_label">Pridėjus tinklalaidę čia bus rodomi epizodai.</string>
<string name="no_new_episodes_head_label">Naujų epizodų nėra</string>
- <string name="no_fav_episodes_head_label">Mėgiamų epizodų nėra</string>
+ <string name="no_new_episodes_label">Čia bus rodomi naujai atkeliavę epizodai.</string>
+ <string name="no_fav_episodes_head_label">Mėgstamų epizodų nėra</string>
+ <string name="no_fav_episodes_label">Ilgai paspausdami ant epizodų pridėsite juos prie mėgstamų.</string>
<string name="no_chapters_head_label">Skyrių nėra</string>
<string name="no_chapters_label">Šis epizodas neturi skyrių.</string>
<string name="no_subscriptions_head_label">Prenumeratų nėra</string>
+ <string name="no_subscriptions_label">Jei norite prenumeruoti tinklalaidę, paspauskite žemiau esančią pliuso piktogramą.</string>
<!--Preferences-->
<string name="storage_pref">Laikmena</string>
+ <string name="storage_sum">Automatinis epizodų trynimas, importas, eksportas</string>
<string name="project_pref">Projektas</string>
<string name="queue_label">Eilė</string>
+ <string name="synchronization_pref">Sinchronizavimas</string>
+ <string name="synchronization_sum">Sinchronizuoti su kitais įrenginiais naudojantis „gpodder.net“</string>
<string name="automation">Automatizacija</string>
<string name="download_pref_details">Išsamiau</string>
<string name="import_export_pref">Importas/Eksportas</string>
+ <string name="import_export_search_keywords">atsarginės kopijos, atkūrimas</string>
<string name="appearance">Išvaizda</string>
<string name="external_elements">Išoriniai elementai</string>
<string name="interruptions">Pertraukimai</string>
<string name="playback_control">Atkūrimo valdymas</string>
+ <string name="preference_search_hint">Ieškoti...</string>
+ <string name="preference_search_no_results">Rezultatų nėra</string>
<string name="preference_search_clear_history">Išvalyti istoriją</string>
<string name="media_player">Medijos grotuvas</string>
<string name="pref_episode_cleanup_title">Epizodų valymas</string>
- <string name="pref_episode_cleanup_summary">Epizodai, nesantys eilėje ar tarp mėgiamųjų, gali būti ištrinti automatinio atsiuntimo metu pritrūkus laisvos vietos naujiems epizodams </string>
+ <string name="pref_episode_cleanup_summary">Epizodai, nesantys eilėje ar tarp mėgstamųjų, gali būti ištrinti automatinio atsiuntimo metu pritrūkus laisvos vietos naujiems epizodams </string>
<string name="pref_pauseOnDisconnect_sum">Pristabdyti atkūrimą, kai atjungiamos ausinės ar „Bluetooth“</string>
<string name="pref_unpauseOnHeadsetReconnect_sum">Pratęsti atkūrimą, kai ausinės pakartotinai prijungiamos</string>
<string name="pref_unpauseOnBluetoothReconnect_sum">Pratęsti atkūrimą, kai pakartotinai prisijungiama prie „Bluetooth“</string>
@@ -287,11 +376,14 @@
<string name="pref_smart_mark_as_played_title">Išmanus perklausų žymėjimas</string>
<string name="pref_skip_keeps_episodes_sum">Palikti epizodus, kai šie praleidžiami</string>
<string name="pref_skip_keeps_episodes_title">Palikti praleistus epizodus</string>
- <string name="pref_favorite_keeps_episodes_sum">Palikti epizodus, kurie yra pažymėti kaip mėgiami</string>
- <string name="pref_favorite_keeps_episodes_title">Palikti mėgiamus epizodus</string>
+ <string name="pref_favorite_keeps_episodes_sum">Palikti epizodus, kurie yra pažymėti kaip mėgstami</string>
+ <string name="pref_favorite_keeps_episodes_title">Palikti mėgstamus epizodus</string>
<string name="playback_pref">Atkūrimas</string>
+ <string name="playback_pref_sum">Ausinių valdikliai, praleidimo intervalai, eilė</string>
<string name="network_pref">Tinklas</string>
+ <string name="network_pref_sum">Atnaujinimų intervalas, atsiuntimų valdymas, mobilieji duomenys</string>
<string name="pref_autoUpdateIntervallOrTime_title">Atnaujinimų intervalas ar dienos metas</string>
+ <string name="pref_autoUpdateIntervallOrTime_sum">Nurodykite automatinio tinklalaidžių atnaujinimo intervalą ar tikslų dienos metą</string>
<string name="pref_autoUpdateIntervallOrTime_message">Galite nustatyti <i>intervalą</i>, pvz. „kas 2 valandas“, nurodyti tikslų <i>dienos metą</i>, pvz. „07:00“ arba visiškai <i>išjungti</i> automatinius atnaujinimus.\n\n<small>Atkreipkite dėmesį: atnaujinimo laikas nėra tikslus, galimas trumpas uždelsimas.</small></string>
<string name="pref_autoUpdateIntervallOrTime_Disable">Išjungti</string>
<string name="pref_autoUpdateIntervallOrTime_Interval">Nustatyti intervalą</string>
@@ -302,8 +394,17 @@
<string name="pref_pauseOnHeadsetDisconnect_title">Ausinių atjungimas</string>
<string name="pref_unpauseOnHeadsetReconnect_title">Pakartotinai prijungus ausines</string>
<string name="pref_unpauseOnBluetoothReconnect_title">Pakartotinai prisijungus prie „Bluetooth“</string>
+ <string name="pref_stream_over_download_title">Teikti pirmenybę klausymuisi tiesiogiai</string>
+ <string name="pref_stream_over_download_sum">Vietoje atsiuntimo mygtuko sąrašuose atvaizduoti tiesioginio klausymosi mygtuką.</string>
<string name="pref_mobileUpdate_title">Atnaujinimai mobiliuoju internetu</string>
+ <string name="pref_mobileUpdate_sum">Pasirinkite, kas bus leidžiama naudojantis mobiliuoju internetu</string>
+ <string name="pref_mobileUpdate_refresh">Tinklalaidžių atnaujinimas</string>
+ <string name="pref_mobileUpdate_images">Viršelio paveikslėliai</string>
+ <string name="pref_mobileUpdate_auto_download">Automatinis atsiuntimas</string>
+ <string name="pref_mobileUpdate_episode_download">Epizodų atsiuntimas</string>
+ <string name="pref_mobileUpdate_streaming">Klausymasis tiesiogiai</string>
<string name="user_interface_label">Vartotojo sąsaja</string>
+ <string name="user_interface_sum">Išvaizda, prenumeratų tvarka, ekrano užraktas</string>
<string name="pref_set_theme_title">Pasirinkti temą</string>
<string name="pref_nav_drawer_items_title">Nustatyti naršymo stalčiaus elementus</string>
<string name="pref_nav_drawer_items_sum">Keisti naršymo stalčiuje rodomus elementus.</string>
@@ -320,6 +421,10 @@
<string name="pref_automatic_download_on_battery_sum">Leisti automatinį atsiuntimą kai baterija nėra įkraunama</string>
<string name="pref_parallel_downloads_title">Lygiagretūs atsiuntimai</string>
<string name="pref_episode_cache_title">Epizodų podėlis</string>
+ <string name="pref_episode_cache_summary">Bendras podėlyje atsiųstų epizodų skaičius šiame įrenginyje. Pasiekus šį skaičių automatinis atsiuntimas bus pristabdytas.</string>
+ <string name="pref_episode_cover_title">Naudoti epizodo viršelį</string>
+ <string name="pref_episode_cover_summary">Naudoti epizodo viršelį, kai prieinama. Nepažymėjus, programėlė visada naudos tinklalaidės viršelio paveikslėlį.</string>
+ <string name="pref_theme_title_use_system">Naudoti sistemos temą</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>
@@ -333,13 +438,24 @@
<string name="pref_gpodnet_logout_toast">Sėkmingai atsijungta</string>
<string name="pref_gpodnet_setlogin_information_title">Keisti prisijungimo duomenis</string>
<string name="pref_gpodnet_setlogin_information_sum">Keisti prisijungimo prie „gpodder.net“ paskyros duomenis.</string>
+ <string name="pref_gpodnet_sync_changes_title">Sinchronizuoti dabar</string>
<string name="pref_gpodnet_sync_changes_sum">Sinchronizuoti prenumeratų bei epizodų būsenų pasikeitimus su „gpodder.net“.</string>
+ <string name="pref_gpodnet_full_sync_title">Priverstinis pilnas sinchronizavimas</string>
<string name="pref_gpodnet_full_sync_sum">Sinchronizuoti visas prenumeratas bei epizodų būsenas su „gpodder.net“.</string>
<string name="pref_gpodnet_login_status"><![CDATA[Prisijungta kaip <i>%1$s</i> naudojant įrenginį <i>%2$s</i>]]></string>
<string name="pref_gpodnet_notifications_title">Rodyti sinchronizavimo klaidų pranešimus</string>
<string name="pref_gpodnet_notifications_sum">Šis nustatymas negalioja tapatumo nustatymo klaidoms.</string>
<string name="pref_playback_speed_title">Atkūrimo sparta</string>
<string name="pref_playback_speed_sum">Derinkite prieinamas garso atkūrimo spartas</string>
+ <string name="pref_feed_playback_speed_sum">Atkūrimo sparta, naudojama pradedant šios tinklalaidės epizodų atkūrimą</string>
+ <string name="pref_feed_skip">Automatinis praleidimas</string>
+ <string name="pref_feed_skip_sum">Praleisti įvadą ir pabaigos žodį.</string>
+ <string name="pref_feed_skip_ending">Praleisti pirmas</string>
+ <string name="pref_feed_skip_intro">Praleisti paskutines</string>
+ <string name="pref_feed_skip_ending_toast">Praleistos paskutinės %d sekundžių</string>
+ <string name="pref_feed_skip_intro_toast">Praleistos pirmos %d sekundžių</string>
+ <string name="pref_playback_time_respects_speed_title">Derinti medijos informaciją pagal atkūrimo spartą</string>
+ <string name="pref_playback_time_respects_speed_sum">Atvaizduojama pozicija ir trukmė yra pritakyta prie atkūrimo spartos</string>
<string name="pref_fast_forward">Persukimo į priekį trukmė</string>
<string name="pref_fast_forward_sum">Derinkite, per kiek sekundžių šoktelėti į priekį kai paspaudžiamas persukimo į priekį mygtukas</string>
<string name="pref_rewind">Atsukimo atgal trukmė</string>
@@ -358,10 +474,21 @@
<string name="pref_lockscreen_background_sum">Atkuriamo epizodo paveikslėlį naudoti kaip ekrano užrakto foną. Paveikslėlis taip pat bus matomas trečiųjų šalių programėlėse.</string>
<string name="pref_showDownloadReport_title">Rodyti atsiuntimų ataskaitą</string>
<string name="pref_showDownloadReport_sum">Atsiuntimui nepavykus, sukurti ataskaitą su išsamiu klaidų aprašymu.</string>
+ <string name="pref_showAutoDownloadReport_title">Rodyti automatinių atsiuntimų ataskaitą</string>
+ <string name="pref_showAutoDownloadReport_sum">Rodyti pranešimą automatiškai atsiuntus epizodus.</string>
<string name="pref_expand_notify_unsupport_toast">Ankstesnės nei 4.1 „Android“ versijos nepalaiko išplėstų programos pranešimų.</string>
+ <string name="pref_enqueue_location_title">Pridėjimo į eilę vieta</string>
+ <string name="pref_enqueue_location_sum">Epizodus pridėti: %1$s</string>
+ <string name="enqueue_location_back">Į galą</string>
+ <string name="enqueue_location_front">Į pradžią</string>
+ <string name="enqueue_location_after_current">Po dabartinio epizodo</string>
<string name="pref_smart_mark_as_played_disabled">Išjungtas</string>
<string name="pref_image_cache_size_title">Paveikslėlių podėlio dydis</string>
<string name="pref_image_cache_size_sum">Paveikslėlių podėlio diske dydis.</string>
+ <string name="visit_user_forum">Naudotojų forumas</string>
+ <string name="bug_report_title">Pranešti apie klaidą</string>
+ <string name="open_bug_tracker">Atverti klaidų sekimo sistemą</string>
+ <string name="export_logs">Eksportuoti žurnalus</string>
<string name="copy_to_clipboard">Kopijuoti į iškarpinę</string>
<string name="copied_to_clipboard">Nukopijuotas į iškarpinę</string>
<string name="experimental_pref">Eksperimentinis</string>
@@ -377,6 +504,9 @@
<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="media_player_switch_to_exoplayer">Perjungti į „ExoPlayer“</string>
+ <string name="media_player_switched_to_exoplayer">Perjungta į „ExoPlayer“.</string>
+ <string name="pref_skip_silence_title">Praleisti tylą</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>
@@ -392,14 +522,41 @@
<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>
+ <string name="pref_delete_removes_from_queue_title">Ištrynus pašalinti iš eilės</string>
+ <string name="pref_delete_removes_from_queue_sum">Ištrynus epizodą automatiškai pašalinti jį iš eilės</string>
<!--About screen-->
<string name="about_pref">Apie</string>
+ <string name="antennapod_version">„AntennaPod“ versija</string>
+ <string name="contributors">Autoriai</string>
+ <string name="contributors_summary">Visi gali padėti padaryti „AntennaPod“ geresnę - programiniu kodu, vertimais ar pagalba naudotojams mūsų forume</string>
+ <string name="developers">Kūrėjai</string>
+ <string name="translators">Vertėjai</string>
+ <string name="special_thanks">Ypatinga padėka</string>
+ <string name="privacy_policy">Privatumo politika</string>
+ <string name="licenses">Licencijos</string>
+ <string name="licenses_summary">„AntennaPod“ naudojama kita puiki programinė įranga</string>
<!--Search-->
<string name="search_status_no_results">Nieko nerasta</string>
<string name="search_label">Paieška</string>
<string name="no_results_for_query">Rezultatų paieškai \"%1$s\" nėra.</string>
<!--Synchronization-->
+ <string name="sync_status_started">Sinchronizavimas pradėtas</string>
+ <string name="sync_status_episodes_upload">Išsiunčiami epizodų pasikeitimai...</string>
+ <string name="sync_status_episodes_download">Atsiunčiami epizodų pasikeitimai...</string>
+ <string name="sync_status_upload_played">Išsiunčiama atkūrimo būsena...</string>
+ <string name="sync_status_subscriptions">Sinchronizuojamos prenumeratos...</string>
+ <string name="sync_status_success">Sinchronizavimas sėkmingas</string>
+ <string name="sync_status_error">Sinchronizavimas nepavyko</string>
<!--import and export-->
+ <string name="import_export_summary">Perkelti prenumeratas ir eilę į kitą įrenginį</string>
+ <string name="database">Duomenų bazė</string>
+ <string name="opml">OPML</string>
+ <string name="html">HTML</string>
+ <string name="html_export_summary">Parodyti prenumeratas draugui</string>
+ <string name="opml_export_summary">Perkelti prenumeratas į kitą tinklalaidžių programėlę</string>
+ <string name="opml_import_summary">Importuoti prenumeratas iš kitos tinklalaidžių programėlės</string>
+ <string name="database_export_summary">Perkelti prenumeratas, perklausytus epizodus ir eilę į „AntennaPod“ kitame įrenginyje</string>
+ <string name="database_import_summary">Importuoti „AntennaPod“ duomenų bazę iš kito įrenginio</string>
<string name="opml_import_label">OPML importas</string>
<string name="opml_reader_error">Skaitant OPML failą įvyko klaida:</string>
<string name="opml_import_error_no_file">Nepasirinktas failas!</string>
@@ -407,6 +564,10 @@
<string name="deselect_all_label">Nepažymėti nieko</string>
<string name="opml_export_label">OPML eksportas</string>
<string name="html_export_label">HTML eksportas</string>
+ <string name="database_export_label">Duomenų bazės eksportas</string>
+ <string name="database_import_label">Duomenų bazės importas</string>
+ <string name="database_import_warning">Importuojant duomenų bazę bus pakeistos visos dabartinės jūsų prenumeratos ir atkūrimo istorija. Rekomenduojame eksportuoti dabartinę duomenų bazę kaip atsarginę kopiją. Ar norite pakeisti?</string>
+ <string name="please_wait">Prašome luktelėti...</string>
<string name="export_error_label">Eksporto klaida</string>
<string name="export_success_title">Sėkmingai eksportuota</string>
<string name="export_success_sum">Eksporto failas išsaugotas:\n\n%1$s</string>
@@ -415,11 +576,16 @@
<string name="import_ok">Importuota sėkmingai.
Spauskite „OK“, kad paleisti „AntennaPod“ iš naujo.</string>
+ <string name="import_no_downgrade">Ši duomenų bazė buvo eksportuota naudojant naujesnę „AntennaPod“ versija. Dabartinė įdiegtis nežino, kaip apdorotį šį failą.</string>
+ <string name="favorites_export_label">Mėgstamųjų eksportas</string>
+ <string name="favorites_export_summary">Mėgstamieji išsaugoti faile</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">Nustatyti miego laikmatį</string>
<string name="disable_sleeptimer_label">Išjungti miego laikmatį</string>
<string name="sleep_timer_label">Miego laikmatis</string>
<string name="time_dialog_invalid_input">Netinkama įvestis, laikas turi būti sveikasis skaičius</string>
+ <string name="shake_to_reset_label">Pakratykite, kad nustatyti iš naujo</string>
+ <string name="timer_vibration_label">Vibruoti prieš pat pabaigą</string>
<string name="time_seconds">sekundės</string>
<string name="time_minutes">minutės</string>
<string name="time_hours">valandos</string>
@@ -474,12 +640,14 @@ Spauskite „OK“, kad paleisti „AntennaPod“ iš naujo.</string>
<string name="gpodnetsync_error_descr">Sinchronizavimo metu įvyko klaida:\u0020</string>
<string name="gpodnetsync_pref_report_successful">Pavyko</string>
<string name="gpodnetsync_pref_report_failed">Nepavyko</string>
+ <string name="gpodnetsync_username_characters_error">Naudotojo vardą sudaryti gali tik raidės, skaitmenys, brūkšniai ir pabraukimo brūkšniai.</string>
<!--Directory chooser-->
<string name="selected_folder_label">Pasirinktas aplankas:</string>
<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 išorinės laikmenos</string>
+ <string name="choose_data_directory_available_space">%1$s iš %2$s laisva</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>
@@ -498,16 +666,25 @@ Spauskite „OK“, kad paleisti „AntennaPod“ iš naujo.</string>
<string name="pref_restart_required">Kad pakeitimas įsigaliotų, reikia paleisti „AntennaPod“ iš naujo.</string>
<!--Online feed view-->
<string name="subscribe_label">Prenumeruoti</string>
+ <string name="subscribing_label">Prenumeruojama...</string>
+ <string name="preview_episode">Peržiūra</string>
+ <string name="stop_preview">Stabdyti peržiūrą</string>
<!--Content descriptions for image buttons-->
<string name="rewind_label">Atsukti</string>
<string name="fast_forward_label">Persukti į priekį</string>
+ <string name="increase_speed">Padidinti spartą</string>
+ <string name="decrease_speed">Sumažinti spartą</string>
<string name="media_type_audio_label">Garsas</string>
<string name="media_type_video_label">Vaizdas</string>
<string name="navigate_upwards_label">Eiti aukštyn</string>
<string name="status_downloading_label">Epizodas atsiunčiamas</string>
<string name="in_queue_label">Epizodas yra eilėje</string>
+ <string name="is_favorite_label">Epizodas pažymėtas kaip mėgstamas</string>
<string name="drag_handle_content_description">Tempkite norėdami pakeisti šio elemento poziciją</string>
<string name="load_next_page_label">Įkelti kitą puslapį</string>
+ <string name="switch_pages">Perjungti puslapius</string>
+ <string name="position">Pozicija: %1$s</string>
+ <string name="apply_action">Pritaikyti veiksmą</string>
<!--Feed information screen-->
<string name="authentication_label">Tapatumo nustatymas</string>
<string name="authentication_descr">Keisti vartotojo vardą ir slaptažodį šiai tinklalaidei ir jos epizodams.</string>
@@ -518,16 +695,22 @@ Spauskite „OK“, kad paleisti „AntennaPod“ iš naujo.</string>
<string name="episode_filters_exclude">Išbraukti</string>
<string name="episode_filters_hint">Pavieniai žodžiai\n\"frazės kabutėse\"</string>
<string name="keep_updated">Pastoviai atnaujinti</string>
+ <string name="keep_updated_summary">Įtraukti šią tinklalaidę į (automatinį) visų tinklalaidžių atnaujinimą</string>
+ <string name="auto_download_disabled_globally">Automatinis atsiuntimas išjungtas pagrindiniuose „AntennaPod“ nustatymuose</string>
<!--Progress information-->
<string name="progress_upgrading_database">Atnaujinama duomenų bazė</string>
<!--AntennaPodSP-->
<string name="sp_apps_importing_feeds_msg">Įkeliamos prenumeratos iš specializuotų programėlių...</string>
<!--Add podcast fragment-->
+ <string name="search_podcast_hint">Ieškoti tinklalaidės...</string>
<string name="search_itunes_label">Ieškoti „iTunes“</string>
<string name="search_fyyd_label">Ieškoti „fyyd“</string>
+ <string name="advanced">Išplėstinis</string>
+ <string name="add_podcast_by_url">Pridėti tinklalaidę pagal URL adresą</string>
<string name="browse_gpoddernet_label">Naršyti gpodder.net svetainėje</string>
<string name="discover">Atraskite</string>
<string name="discover_more">daugiau »</string>
+ <string name="search_powered_by">Paiešką įgalina %1$s</string>
<string name="filter">Filtruoti</string>
<!--Episodes apply actions-->
<string name="all_label">Visi</string>
@@ -555,6 +738,12 @@ Spauskite „OK“, kad paleisti „AntennaPod“ iš naujo.</string>
<string name="sort_date_old_new">Data (Seni \u2192 Nauji)</string>
<string name="sort_duration_short_long">Trukmė (Trumpi \u2192 Ilgi)</string>
<string name="sort_duration_long_short">Trukmė (Ilgi \u2192 Trumpi)</string>
+ <string name="sort_a_z">A \u2192 Z</string>
+ <string name="sort_z_a">Z \u2192 A</string>
+ <string name="sort_new_old">Nauji \u2192 Seni</string>
+ <string name="sort_old_new">Seni \u2192 Nauji</string>
+ <string name="sort_short_long">Trumpi \u2192 Ilgi</string>
+ <string name="sort_long_short">Ilgi \u2192 Trumpi</string>
<!--Rating dialog-->
<string name="rating_title">Patinka „AntennaPod“?</string>
<string name="rating_message">Būtume dėkingi, jei skirtumėte laiko įvertinti „AntennaPod“.</string>
@@ -570,6 +759,7 @@ Spauskite „OK“, kad paleisti „AntennaPod“ iš naujo.</string>
<string name="audio_effects">Garso efektai</string>
<string name="stereo_to_mono">Kanalų mažinimas: iš stereo į mono</string>
<string name="sonic_only">Tik „Sonic“</string>
+ <string name="exoplayer_only">Tik „ExoPlayer“</string>
<!--proxy settings-->
<string name="proxy_type_label">Tipas</string>
<string name="host_label">Serveris</string>
@@ -583,6 +773,7 @@ Spauskite „OK“, kad paleisti „AntennaPod“ iš naujo.</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-->
+ <string name="subscription_num_columns">Stulpelių skaičius</string>
<!--Casting-->
<string name="cast_media_route_menu_title">Atkurti naudojant...</string>
<string name="cast_disconnect_label">Atjungti „Chromecast“ sesiją</string>
@@ -606,6 +797,14 @@ Spauskite „OK“, kad paleisti „AntennaPod“ iš naujo.</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>
+ <string name="notification_channel_auto_download">Automatiniai atsiuntimai</string>
+ <string name="notification_channel_episode_auto_download">Rodomas automatiškai atsiuntus epizodus.</string>
<!--Widget settings-->
+ <string name="widget_settings">Valdiklio nustatymai</string>
+ <string name="widget_create_button">Sukurti valdiklį</string>
+ <string name="widget_opacity">Dengiamumas</string>
<!--On-Demand configuration-->
+ <string name="on_demand_config_setting_changed">Nustatymas sėkmingai atnaujintas.</string>
+ <string name="on_demand_config_stream_text">Panašu, jog dažnai klausotės tiesiogiai. Ar norite, jog epizodų sąraše būtų rodomi tiesioginio klausymosi mygtukai?</string>
+ <string name="on_demand_config_download_text">Panašu, jog dažnai atsisiunčiate epizodus. Ar norite, jog epizodų sąraše būtų rodomi atsiuntimo mygtukai?</string>
</resources>
diff --git a/core/src/main/res/values-nb/strings.xml b/core/src/main/res/values-nb/strings.xml
index fd2c927b9..ccdc9a28c 100644
--- a/core/src/main/res/values-nb/strings.xml
+++ b/core/src/main/res/values-nb/strings.xml
@@ -28,7 +28,7 @@
<!--Statistics fragment-->
<string name="total_time_listened_to_podcasts">Sum av tid i avspilte podkaster:</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">Statistikkmodus</string>
<string name="statistics_mode_normal">Beregn faktisk avspilt varighet. Dobbel avspilling telles to ganger, mens markering som avspilt telles ikke</string>
<string name="statistics_mode_count_all">Oppsummer alle podkaster merket som avspilt</string>
<string name="statistics_speed_not_counted">Merk: Avspillingshastighet tas aldri med i betraktningen.</string>
@@ -320,6 +320,7 @@
<string name="storage_sum">Auto-slett episoder, importer, eksporter</string>
<string name="project_pref">Prosjekt</string>
<string name="queue_label">Kø</string>
+ <string name="synchronization_pref">Synkronisering</string>
<string name="automation">Automasjon</string>
<string name="download_pref_details">Detaljer</string>
<string name="import_export_pref">Importer/Eksporter</string>
@@ -490,9 +491,7 @@
<string name="about_pref">Om</string>
<string name="antennapod_version">AntennaPod versjon</string>
<string name="developers">Utviklere</string>
- <string name="developers_summary">Alle kan hjelpe til med å gjøre AntennaPod bedre</string>
<string name="translators">Oversettere</string>
- <string name="translators_summary">Oversettelser er laget av brukere av AntennaPod ved hjelp av Transifex</string>
<string name="privacy_policy">Personvern</string>
<string name="licenses">Lisenser</string>
<string name="licenses_summary">AntennaPod bruker annen flott programvare</string>
diff --git a/core/src/main/res/values-nl/strings.xml b/core/src/main/res/values-nl/strings.xml
index 8ca668dd8..6e7f08ddf 100644
--- a/core/src/main/res/values-nl/strings.xml
+++ b/core/src/main/res/values-nl/strings.xml
@@ -452,9 +452,9 @@
<string name="pref_compact_notification_buttons_dialog_error">Je kunt maximaal %1$d knoppen kiezen.</string>
<string name="pref_lockscreen_background_title">Achtergrondafbeelding vergrendelscherm</string>
<string name="pref_lockscreen_background_sum">Toon de afbeelding van de huidige aflevering op het vergrendelscherm. Hierdoor is de afbeelding ook beschikbaar voor andere apps.</string>
- <string name="pref_showDownloadReport_title">Downloadverslag tonen</string>
+ <string name="pref_showDownloadReport_title">Toon downloadverslag</string>
<string name="pref_showDownloadReport_sum">Stel een verslag op met foutdetails als downloads mislukken.</string>
- <string name="pref_showAutoDownloadReport_title">Downloadverslag tonen</string>
+ <string name="pref_showAutoDownloadReport_title">Toon verslag automatische downloads</string>
<string name="pref_showAutoDownloadReport_sum">Toon een melding bij automatisch gedownloade afleveringen.</string>
<string name="pref_expand_notify_unsupport_toast">Android-versies lager dan 4.1 ondersteunen geen knoppen op meldingen.</string>
<string name="pref_enqueue_location_title">Wachtrijlocatie</string>
@@ -507,10 +507,11 @@
<!--About screen-->
<string name="about_pref">Over AntennaPod</string>
<string name="antennapod_version">AntennaPod-versie</string>
+ <string name="contributors">Bijdragers</string>
+ <string name="contributors_summary">Iedereen kan helpen AntennaPod te verbeteren middels programmeren, vertalen of het helpen van gebruikers op het forum</string>
<string name="developers">Ontwikkelaars</string>
- <string name="developers_summary">Iedereen kan helpen AntennaPod te verbeteren</string>
<string name="translators">Vertalers</string>
- <string name="translators_summary">De vertalingen zijn gedaan door AntennaPod-gebruikers op Transifex</string>
+ <string name="special_thanks">Met dank aan</string>
<string name="privacy_policy">Privacybeleid</string>
<string name="licenses">Licenties</string>
<string name="licenses_summary">AntennaPod maakt gebruik van andere geweldige software</string>
@@ -554,6 +555,8 @@
<string name="import_select_file">Kies een te importeren bestand</string>
<string name="import_ok">Geïmporteerd.\n\nDruk op Oké om AntennaPod opnieuw te starten.</string>
<string name="import_no_downgrade">Deze databank is geëxporteerd door een nieuwere versie van Antennapod. Je huidige versie weet nog niet hoe daar mee om te gaan.</string>
+ <string name="favorites_export_label">Favorieten exporteren</string>
+ <string name="favorites_export_summary">Exporteer opgeslagen favorieten naar een bestand</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">Slaaptimer instellen</string>
<string name="disable_sleeptimer_label">Slaaptimer uitschakelen</string>
diff --git a/core/src/main/res/values-pl/strings.xml b/core/src/main/res/values-pl/strings.xml
index b06ca5fd1..f5fa5e310 100644
--- a/core/src/main/res/values-pl/strings.xml
+++ b/core/src/main/res/values-pl/strings.xml
@@ -27,7 +27,7 @@
<string name="download_statistics_label">Pobrane</string>
<!--Statistics fragment-->
<string name="total_time_listened_to_podcasts">Całkowity czas odtwarzania podcastów:</string>
- <string name="statistics_details_dialog">%1$d z %2$d odcinków rozpoczęto.\n\nZagrano %3$s z %4$s.</string>
+ <string name="statistics_details_dialog">%1$d z %2$d odcinków rozpoczęto.\n\nOdtworzono %3$s z %4$s.</string>
<string name="statistics_mode">Tryb statystyk</string>
<string name="statistics_mode_normal">Oblicz łączny czas rzeczywistego odtwarzania. Dwukrotne odtworzenie będzie policzone ale zaznaczenie jako odtworzone nie będzie policzone.</string>
<string name="statistics_mode_count_all">Podsumuj wszystkie podcasty oznaczone jako odtworzone</string>
@@ -85,6 +85,7 @@
<string name="auto_download_apply_to_items_message">Nowe ustawienie <i>automatycznego pobierania</i> zostanie zastosowane do nowych odcinków.\n Czy chcesz zastosować je także do odcinków opublikowanych wcześniej?</string>
<string name="auto_delete_label">Automatyczne usuwanie odcinków</string>
<string name="feed_volume_reduction">Redukcja głośności</string>
+ <string name="feed_volume_reduction_summary">Zmniejsz głośność dla odcinków z tego kanału: %1$s</string>
<string name="feed_volume_reduction_off">Wyłączona</string>
<string name="feed_volume_reduction_light">Średnia</string>
<string name="feed_volume_reduction_heavy">Silna</string>
@@ -108,6 +109,12 @@
<item quantity="many">%d dni po odtworzeniu</item>
<item quantity="other">%d dni po odtworzeniu</item>
</plurals>
+ <plurals name="num_selected_label">
+ <item quantity="one">%d zaznaczono</item>
+ <item quantity="few"> %d zaznaczono</item>
+ <item quantity="many">%d zaznaczono</item>
+ <item quantity="other">%d zaznaczono</item>
+ </plurals>
<string name="loading_more">Ładowanie więcej...</string>
<!--Actions on feeds-->
<string name="mark_all_read_label">Oznacz wszystkie jako odtworzone</string>
@@ -207,7 +214,7 @@
<item quantity="other">%d odcinki(ów) usunięto z kolejki.</item>
</plurals>
<string name="add_to_favorite_label">Dodaj do Ulubionych</string>
- <string name="added_to_favorites">Dodaj do ulubionych</string>
+ <string name="added_to_favorites">Dodano do ulubionych</string>
<string name="remove_from_favorite_label">Usuń z Ulubionych</string>
<string name="removed_from_favorites">Usunięto z ulubionych</string>
<string name="visit_website_label">Odwiedź stronę</string>
@@ -216,6 +223,7 @@
<string name="deactivate_auto_download">Wyłącz automatyczne pobieranie</string>
<string name="reset_position">Zresetuj pozycję odtwarzania</string>
<string name="removed_item">Pozycja usunięta</string>
+ <string name="no_items_selected">Nie zaznaczono żadnego elementu</string>
<!--Download messages and labels-->
<string name="download_successful">Operacja zakończona sukcesem</string>
<string name="download_pending">Pobieranie w toku</string>
@@ -315,7 +323,7 @@
<!--Empty list labels-->
<string name="no_items_header_label">Brak odcinków w kolejce</string>
<string name="no_items_label">Dodaj odcinek, pobierając go, lub przytrzymaj dłużej na odcinku i wybierz \"Dodaj do kolejki\".</string>
- <string name="no_shownotes_label">Ten epizod nie ma notatek.</string>
+ <string name="no_shownotes_label">Ten odcinek nie ma notatek.</string>
<string name="no_run_downloads_head_label">Brak aktywnych pobierań</string>
<string name="no_run_downloads_label">Możesz pobrać odcinki z ekranu informacji o podcaście</string>
<string name="no_comp_downloads_head_label">Brak pobranych odcinków</string>
@@ -339,6 +347,8 @@
<string name="storage_sum">Automatyczne kasowanie odcinków, Import, Eksport</string>
<string name="project_pref">Projekt</string>
<string name="queue_label">Kolejka</string>
+ <string name="synchronization_pref">Synchronizacja</string>
+ <string name="synchronization_sum">Synchronizuj z innymi urządzeniami za pomocą gpodder.net</string>
<string name="automation">Automatyzacja</string>
<string name="download_pref_details">Szczegóły</string>
<string name="import_export_pref">Import/Eksport</string>
@@ -429,7 +439,9 @@
<string name="pref_gpodnet_logout_toast">Wylogowanie się powiodło</string>
<string name="pref_gpodnet_setlogin_information_title">Zmień informacje logowania</string>
<string name="pref_gpodnet_setlogin_information_sum">Zmień dane logowania konta gpodder.net.</string>
+ <string name="pref_gpodnet_sync_changes_title">Synchronizuj teraz</string>
<string name="pref_gpodnet_sync_changes_sum">Synchronizuj subskrypcje oraz stan odcinków z pomocą gpodder.net.</string>
+ <string name="pref_gpodnet_full_sync_title">Wymuś pełną synchronizację</string>
<string name="pref_gpodnet_full_sync_sum">Synchronizuj wszystkie subskrypcje oraz stan odcinków z pomocą gpodder.net.</string>
<string name="pref_gpodnet_login_status"><![CDATA[Zalogowano jako <i>%1$s</i> na urządzeniu <i>%2$s</i>]]></string>
<string name="pref_gpodnet_notifications_title">Pokaż powiadomienia błędów synchronizacji</string>
@@ -437,6 +449,12 @@
<string name="pref_playback_speed_title">Prędkość odtwarzania</string>
<string name="pref_playback_speed_sum">Dostosuj prędkości dostępne dla odtwarzania audio o zmiennej prędkości</string>
<string name="pref_feed_playback_speed_sum">Prędkość używana podczas odtwarzania odcinków z tego kanału</string>
+ <string name="pref_feed_skip">Automatyczne pomijanie</string>
+ <string name="pref_feed_skip_sum">Pomijaj wstęp i napisy końcowe</string>
+ <string name="pref_feed_skip_ending">Pomijaj na końcu</string>
+ <string name="pref_feed_skip_intro">Pomijaj na początku</string>
+ <string name="pref_feed_skip_ending_toast">Pominięto ostatnie %d sekund(y)</string>
+ <string name="pref_feed_skip_intro_toast">Pominięto pierwsze %d sekund(y)</string>
<string name="pref_playback_time_respects_speed_title">Dostosuj informacje do prędkości odtwarzania</string>
<string name="pref_playback_time_respects_speed_sum">Wyświetlana pozycja i czas trwania są dostosowane do prędkości odtwarzania</string>
<string name="pref_fast_forward">Szybkie przewijanie do przodu</string>
@@ -487,6 +505,8 @@
<string name="pref_enqueue_downloaded_title">Kolejkuj pobrane</string>
<string name="pref_enqueue_downloaded_summary">Dodaj pobrane odcinki do kolejki</string>
<string name="media_player_builtin">Wbudowany odtwarzacz Androida</string>
+ <string name="media_player_switch_to_exoplayer">Zmień na ExoPlayer</string>
+ <string name="media_player_switched_to_exoplayer">Zmieniono na ExoPlayer</string>
<string name="pref_skip_silence_title">Pomiń ciszę w plikach audio</string>
<string name="pref_videoBehavior_title">Kończenie odtwarzania wideo</string>
<string name="pref_videoBehavior_sum">Zachowanie przy wyjściu z odtwarzania wideo</string>
@@ -508,10 +528,10 @@
<!--About screen-->
<string name="about_pref">O...</string>
<string name="antennapod_version">Wersja AntennaPod</string>
+ <string name="contributors">Kontrybutorzy</string>
<string name="developers">Twórcy</string>
- <string name="developers_summary">Każdy może pomóc ulepszyć AntennaPod</string>
<string name="translators">Tłumacze</string>
- <string name="translators_summary">Tłumaczenie tworzone przez użytkowników AntennaPod używających Transifex</string>
+ <string name="special_thanks">Specjalne podziękowania</string>
<string name="privacy_policy">Polityka prywatności</string>
<string name="licenses">Licencje</string>
<string name="licenses_summary">AntennaPod używa różnego świetnego oprogramowania/bibliotek</string>
@@ -520,6 +540,13 @@
<string name="search_label">Szukaj</string>
<string name="no_results_for_query">Brak wyników dla \"%1$s\"</string>
<!--Synchronization-->
+ <string name="sync_status_started">Rozpoczęto synchronizację</string>
+ <string name="sync_status_episodes_upload">Wysyłanie zmian odcinków...</string>
+ <string name="sync_status_episodes_download">Pobieranie zmian odcinków...</string>
+ <string name="sync_status_upload_played">Wysyłanie statusu odtworzeń...</string>
+ <string name="sync_status_subscriptions">Synchronizowanie subskrypcji...</string>
+ <string name="sync_status_success">Synchronizacja udana</string>
+ <string name="sync_status_error">Synchronizacja nie powiodła się</string>
<!--import and export-->
<string name="import_export_summary">Przenieś subskrypcje i kolejkę na inne urządzenie</string>
<string name="database">Baza danych</string>
@@ -539,6 +566,7 @@
<string name="html_export_label">Eksport HTML</string>
<string name="database_export_label">Eksport bazy danych</string>
<string name="database_import_label">Import bazy danych</string>
+ <string name="database_import_warning">Import bazy danych nadpisze wszystkie twoje aktualne subskrypcje i historię odtworzeń. Zalecany jest eksport aktualnej bazy danych jako kopia zapasowa. Czy chcesz zamienić?</string>
<string name="please_wait">Proszę czekać...</string>
<string name="export_error_label">Błąd eksportu</string>
<string name="export_success_title">Export zakończony powodzeniem</string>
@@ -547,6 +575,8 @@
<string name="import_select_file">Wybierz plik do Importowania</string>
<string name="import_ok">Import zakończony powodzeniem.\n\nNaciśnij OK aby zrestartować AntennaPod</string>
<string name="import_no_downgrade">Baza danych została eksportowana z nowszej wersji AntennaPod. Twoja wersja nie potrafi obsłużyć tego pliku. </string>
+ <string name="favorites_export_label">Eksport ulubionych</string>
+ <string name="favorites_export_summary">Ulubione wyeksportowano do pliku</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">Ustaw czas do wyłączenia</string>
<string name="disable_sleeptimer_label">Wyłącz wyłącznik czasowy</string>
@@ -637,16 +667,23 @@ https://gpodder.net/register/</string>
<string name="subscribe_label">Subskrybuj</string>
<string name="subscribing_label">Subskrybuję...</string>
<string name="preview_episode">Podgląd</string>
+ <string name="stop_preview">Zakończ podgląd</string>
<!--Content descriptions for image buttons-->
<string name="rewind_label">Cofnij</string>
<string name="fast_forward_label">Przewiń</string>
+ <string name="increase_speed">Zwiększ prędkość</string>
+ <string name="decrease_speed">Zmniejsz prędkość</string>
<string name="media_type_audio_label">Audio</string>
<string name="media_type_video_label">Wideo</string>
<string name="navigate_upwards_label">Przesuń w górę</string>
<string name="status_downloading_label">Odcinek jest pobierany</string>
<string name="in_queue_label">Odcinek jest w kolejce</string>
+ <string name="is_favorite_label">Odcinek oznaczony jako ulubiony</string>
<string name="drag_handle_content_description">Przeciągnij aby zmienić pozycję elementu</string>
<string name="load_next_page_label">Załaduj następną stronę</string>
+ <string name="switch_pages">Zamień strony</string>
+ <string name="position">Pozycja: %1$s</string>
+ <string name="apply_action">Zastosuj</string>
<!--Feed information screen-->
<string name="authentication_label">Autoryzacja</string>
<string name="authentication_descr">Zmień swoją nazwę użytkownika oraz hasło dla tego podcastu i jego odcinków</string>
@@ -672,6 +709,7 @@ https://gpodder.net/register/</string>
<string name="browse_gpoddernet_label">Przeglądaj gpodder.net</string>
<string name="discover">Odkryj</string>
<string name="discover_more">więcej »</string>
+ <string name="search_powered_by">Wyszukiwanie przy pomocy %1$s</string>
<string name="filter">Filtruj</string>
<!--Episodes apply actions-->
<string name="all_label">Wszystkie</string>
@@ -699,6 +737,12 @@ https://gpodder.net/register/</string>
<string name="sort_date_old_new">Data (Stare \u2192 Nowe)</string>
<string name="sort_duration_short_long">Długość (Krótkie \u2192 Długie)</string>
<string name="sort_duration_long_short">Długość (Długie \u2192 Krótkie)</string>
+ <string name="sort_a_z">A \u2192 Z</string>
+ <string name="sort_z_a">Z \u2192 A</string>
+ <string name="sort_new_old">Nowe \u2192 Stare</string>
+ <string name="sort_old_new">Stare \u2192 Nowe</string>
+ <string name="sort_short_long">Krótkie \u2192 Długie</string>
+ <string name="sort_long_short">Długie \u2192 Krótkie</string>
<!--Rating dialog-->
<string name="rating_title">Podoba Ci się AntennaPod?</string>
<string name="rating_message">Bylibyśmy wdzięczni, jeśli poświęciłbyś chwilę aby ocenić AntennaPod.</string>
@@ -759,4 +803,7 @@ https://gpodder.net/register/</string>
<string name="widget_create_button">Dodaj widżet</string>
<string name="widget_opacity">Nieprzezroczystość</string>
<!--On-Demand configuration-->
+ <string name="on_demand_config_setting_changed">Ustawienia uaktualnione pomyślnie.</string>
+ <string name="on_demand_config_stream_text">Wygląda na to, że dużo streamujesz. Czy chcesz, aby na listach odcinków pokazywać przyciski do stermowania.</string>
+ <string name="on_demand_config_download_text">Wygląda na to, że dużo pobierasz. Czy chcesz, aby na listach odcinków pokazywać przyciski do pobierania.</string>
</resources>
diff --git a/core/src/main/res/values-pt-rBR/strings.xml b/core/src/main/res/values-pt-rBR/strings.xml
index 24f89aa4d..59e3af044 100644
--- a/core/src/main/res/values-pt-rBR/strings.xml
+++ b/core/src/main/res/values-pt-rBR/strings.xml
@@ -23,6 +23,7 @@
<string name="gpodnet_auth_label">gpodder.net login</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="playback_statistics_label">Reprodução</string>
<string name="download_statistics_label">Downloads</string>
<!--Statistics fragment-->
<string name="total_time_listened_to_podcasts">Tempo total de podcasts reproduzidos:</string>
@@ -31,7 +32,10 @@
<string name="statistics_mode_normal">Calcular a duração que já foi tocada. Tocar das vezes é contado o dobro, enquanto marcar como tocada não é contado</string>
<string name="statistics_mode_count_all">Somar todos os podcasts marcados como tocados</string>
<string name="statistics_speed_not_counted">Nota: A velocidade de reprodução nunca é levada em conta.</string>
+ <string name="statistics_reset_data">Limpar dados de estatísticas</string>
+ <string name="statistics_reset_data_msg">Isso ira apagar o histórico de reprodução de todos os episódios. Tem certeza que deseja continuar?</string>
<!--Download Statistics fragment-->
+ <string name="total_size_downloaded_podcasts">Tamanho total dos episódios baixados.</string>
<!--Main activity-->
<string name="drawer_open">Abrir menu</string>
<string name="drawer_close">Fechar menu</string>
@@ -41,7 +45,7 @@
<string name="drawer_feed_order_last_update">Ordenar por data de publicação</string>
<string name="drawer_feed_order_most_played">Ordenar pelo número de episódios reproduzidos</string>
<string name="drawer_feed_counter_new_unplayed">Número de episódios novos e não reproduzidos</string>
- <string name="drawer_feed_counter_new">Numero de novos episódios</string>
+ <string name="drawer_feed_counter_new">Número de novos episódios</string>
<string name="drawer_feed_counter_unplayed">Número de episódios não reproduzidos</string>
<string name="drawer_feed_counter_downloaded">Número de episódios baixados</string>
<string name="drawer_feed_counter_none">Nenhum</string>
@@ -80,6 +84,9 @@
<string name="auto_download_apply_to_items_title">Aplicar aos episódios anteriores</string>
<string name="auto_download_apply_to_items_message">A nova configuração de <i>Download Automático</i> será aplicada automaticamente a novos episódios.\nVocê deseja aplicá-la aos episódios anteriores?</string>
<string name="auto_delete_label">Apagar episódio automaticamente</string>
+ <string name="feed_volume_reduction">Redução de Volume</string>
+ <string name="feed_volume_reduction_summary">Diminuir o volume para episódios deste feed: %1$s</string>
+ <string name="feed_volume_reduction_off">Desligar</string>
<string name="feed_volume_reduction_light">Leve</string>
<string name="feed_volume_reduction_heavy">Forte</string>
<string name="parallel_downloads_suffix">\u0020 downloads paralelos</string>
@@ -90,10 +97,18 @@
<string name="episode_cleanup_never">Nunca</string>
<string name="episode_cleanup_queue_removal">Quando não está na fila</string>
<string name="episode_cleanup_after_listening">Depois de concluído</string>
+ <plurals name="episode_cleanup_hours_after_listening">
+ <item quantity="one">1 hora após finalizar</item>
+ <item quantity="other">%d horas após finalizar</item>
+ </plurals>
<plurals name="episode_cleanup_days_after_listening">
<item quantity="one">1 dia depois de concluído</item>
<item quantity="other">%d dias depois de concluído</item>
</plurals>
+ <plurals name="num_selected_label">
+ <item quantity="one">%d selecionado</item>
+ <item quantity="other">%d selecionados</item>
+ </plurals>
<string name="loading_more">Carregando...</string>
<!--Actions on feeds-->
<string name="mark_all_read_label">Marcar todos como reproduzidos</string>
@@ -135,11 +150,12 @@
<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>
+ <string name="please_wait_for_data">Por favor, aguarde até que os dados sejam carregados</string>
<!--actions on feeditems-->
<string name="download_label">Download</string>
<plurals name="downloading_batch_label">
- <item quantity="one">Baixar %d episódio.</item>
- <item quantity="other">Baixar %d episódios.</item>
+ <item quantity="one">Baixando %d episódio.</item>
+ <item quantity="other">Baixando %d episódios.</item>
</plurals>
<string name="play_label">Reproduzir</string>
<string name="pause_label">Pausar</string>
@@ -157,6 +173,7 @@
<string name="marked_as_read_label">Marcado como reproduzido</string>
<string name="mark_read_no_media_label">Marcar como reproduzido</string>
<string name="marked_as_read_no_media_label">Marcado como reproduzido</string>
+ <string name="play_this_to_seek_position">Para pular para as posições, você precisa reproduzir o episódio</string>
<plurals name="marked_read_batch_label">
<item quantity="one">%d episódio marcado como reproduzido.</item>
<item quantity="other">%d episódios marcados como reproduzidos.</item>
@@ -209,6 +226,7 @@
<string name="download_canceled_msg">Download cancelado</string>
<string name="download_canceled_autodownload_enabled_msg">Download cancelado\nDesabilitado <i>Download Automático</i> para este item</string>
<string name="download_report_title">Downloads finalizados com erro(s)</string>
+ <string name="auto_download_report_title">Download automático finalizado</string>
<string name="download_report_content_title">Reportar Download</string>
<string name="download_error_malformed_url">URL inválida</string>
<string name="download_error_io_error">Erro de IO</string>
@@ -225,11 +243,14 @@
<string name="download_type_feed">Feed</string>
<string name="download_type_media">Arquivo de mídia</string>
<string name="download_request_error_dialog_message_prefix">Ocorreu um erro durante download do arquivo:\u0020</string>
+ <string name="null_value_podcast_error">Nenhum podcast foi fornecido para ser exibido.</string>
<string name="authentication_notification_title">Autenticação requerida</string>
<string name="authentication_notification_msg">O recurso que você solicitou requer um usuário e uma senha</string>
<string name="confirm_mobile_download_dialog_title">Confirmar Download utilizando dados móveis</string>
<string name="confirm_mobile_download_dialog_message_not_in_queue">O download utilizando plano de dados foi desabilitado nas configurações.\n\nVocê pode escolher entre apenas adicionar o episódio na fila ou você pode permitir o download temporáriamente.\n\n<small>Sua escolha será lembrada por 10 minutos.</small></string>
<string name="confirm_mobile_download_dialog_message">O download sobre plano de dados foi desabilitado nas configurações.\n\n Você deseja permitir o download temporáriamente?\n\n<small>Sua escolha será lembrada por 10 minutos</small></string>
+ <string name="confirm_mobile_streaming_notification_title">Confirmar streaming móvel</string>
+ <string name="confirm_mobile_streaming_notification_message">O streaming pela conexão de dados móveis está desativado nas configurações. Toque para transmitir de qualquer maneira.</string>
<string name="confirm_mobile_streaming_button_always">Sempre permitir</string>
<string name="confirm_mobile_download_dialog_only_add_to_queue">Adicionar à fila</string>
<string name="confirm_mobile_download_dialog_enable_temporarily">Permitir temporariamente</string>
@@ -240,6 +261,9 @@
<string name="player_ready_msg">Pronto</string>
<string name="player_seeking_msg">Buscando</string>
<string name="playback_error_server_died">Servidor morreu</string>
+ <string name="playback_error_unsupported">Tipo de mídia não suportado</string>
+ <string name="playback_error_timeout">Tempo da operação expirou</string>
+ <string name="playback_error_source">Não foi possível acessar o arquivo de mídia</string>
<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>
@@ -251,6 +275,7 @@
<string name="unlock_queue">Desbloquear Fila</string>
<string name="queue_locked">Fila bloqueada</string>
<string name="queue_unlocked">Fila desbloqueada</string>
+ <string name="queue_lock_warning">Se você bloquear a fila, não poderá mais deslizar ou reorganizar os episódios.</string>
<string name="checkbox_do_not_show_again">Não mostrar novamente</string>
<string name="clear_queue_label">Limpar fila</string>
<string name="undo">Desfazer</string>
@@ -271,22 +296,49 @@
<!--Variable Speed-->
<string name="download_plugin_label">Download Plugin</string>
<string name="no_playback_plugin_title">Plugin Não Instalado</string>
+ <string name="no_playback_plugin_or_sonic_msg">Para que a reprodução de velocidade variável funcione, recomendamos habilitar o reprodutor de mídia Sonic integrado.</string>
<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_header_label">Nenhum episódio na fila</string>
+ <string name="no_items_label">Adicione um episódio baixando-o ou mantenha pressionado um episódio e selecione \"Adicionar à fila\".</string>
<string name="no_shownotes_label">Este episódio não possui notas.</string>
+ <string name="no_run_downloads_head_label">Nenhum download em andamento</string>
+ <string name="no_run_downloads_label">Você pode baixar episódios na tela de detalhes do podcast.</string>
+ <string name="no_comp_downloads_head_label">Nenhum episódios baixado</string>
+ <string name="no_comp_downloads_label">Você pode baixar episódios na tela de detalhes do podcast.</string>
+ <string name="no_log_downloads_head_label">Sem registro de download</string>
+ <string name="no_log_downloads_label">Os logs de download aparecerão aqui quando disponíveis.</string>
+ <string name="no_history_head_label">Sem Histórico</string>
+ <string name="no_history_label">Depois de ouvir um episódio, ele aparecerá aqui.</string>
+ <string name="no_all_episodes_head_label">Nenhum Episódio</string>
+ <string name="no_all_episodes_label">Quando você adiciona um podcast, os episódios são mostrados aqui.</string>
+ <string name="no_new_episodes_head_label">Nenhum episódio novo</string>
+ <string name="no_new_episodes_label">Quando novos episódios chegarem, eles serão mostrados aqui.</string>
+ <string name="no_fav_episodes_head_label">Nenhum episódio favorito</string>
+ <string name="no_fav_episodes_label">Você pode adicionar episódios aos favoritos mantendo-os pressionados.</string>
+ <string name="no_chapters_head_label">Nenhum capítulo</string>
<string name="no_chapters_label">Este episódio não possui capítulos</string>
+ <string name="no_subscriptions_head_label">Nenhuma assinatura</string>
+ <string name="no_subscriptions_label">Para assinar um podcast, pressione o ícone de adição abaixo.</string>
<!--Preferences-->
<string name="storage_pref">Armazenamento</string>
+ <string name="storage_sum">Exclusão automática de episódio, importação, exportação</string>
<string name="project_pref">Projeto</string>
<string name="queue_label">Fila</string>
+ <string name="synchronization_pref">Sincronização</string>
+ <string name="synchronization_sum">Sincroniza com outros dispositivos usando gpodder.net</string>
<string name="automation">Automação</string>
<string name="download_pref_details">Detalhes</string>
<string name="import_export_pref">Importar/Exportar</string>
+ <string name="import_export_search_keywords">backup, cópia, restore, restaurar</string>
<string name="appearance">Aparência</string>
<string name="external_elements">Elementos externos</string>
<string name="interruptions">Interrupções</string>
+ <string name="playback_control">Controle de reprodução</string>
+ <string name="preference_search_hint">Procurar...</string>
+ <string name="preference_search_no_results">Nenhum resultado</string>
+ <string name="preference_search_clear_history">Limpar histórico</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>
@@ -298,7 +350,7 @@
<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>
- <string name="pref_auto_delete_sum">Apagar os episódios quando a reprodução for concluída</string>
+ <string name="pref_auto_delete_sum">Remover episódio quando a reprodução for concluída</string>
<string name="pref_auto_delete_title">Deletar automaticamente</string>
<string name="pref_smart_mark_as_played_sum">Marcar episódios como reproduzidos mesmo que restem alguns segundos de reprodução</string>
<string name="pref_smart_mark_as_played_title">Marcar automaticamente como reproduzido</string>
@@ -307,8 +359,11 @@
<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="playback_pref_sum">Controles de fone de ouvido, intervalos para saltar, Fila</string>
<string name="network_pref">Rede</string>
+ <string name="network_pref_sum">Intervalo de atualização, Controles de download, Dados móveis</string>
<string name="pref_autoUpdateIntervallOrTime_title">Atualizar intervalo ou momento do dia</string>
+ <string name="pref_autoUpdateIntervallOrTime_sum">Especifique um intervalo ou uma hora específica do dia para atualizar os podcasts automaticamente</string>
<string name="pref_autoUpdateIntervallOrTime_message">Você pode configurar um <i>intervalo</i> como \"cada 2 horas\", configurar um <i>horário do dia</i> específico como \"7:00 AM\" ou <i>desabilitar</i> atualizações automaticas completamente.\n\n<small>Observe: Horários de atualização não são precisos. Você deve considar um possível atraso.</small></string>
<string name="pref_autoUpdateIntervallOrTime_Disable">Desabilitar</string>
<string name="pref_autoUpdateIntervallOrTime_Interval">Configurar Intervalo</string>
@@ -319,8 +374,17 @@
<string name="pref_pauseOnHeadsetDisconnect_title">Fones de ouvido desconectados</string>
<string name="pref_unpauseOnHeadsetReconnect_title">Fones de ouvido reconectados</string>
<string name="pref_unpauseOnBluetoothReconnect_title">Bluetooth reconectado</string>
+ <string name="pref_stream_over_download_title">Preferir streaming</string>
+ <string name="pref_stream_over_download_sum">Mostrar o botão de streaming ao invés do botão de download nas listas.</string>
<string name="pref_mobileUpdate_title">Atualizações via Rede de Dados Celular</string>
+ <string name="pref_mobileUpdate_sum">Selecione o que deve ser permitido na conexão de dados móveis</string>
+ <string name="pref_mobileUpdate_refresh">Atualizar podcast</string>
+ <string name="pref_mobileUpdate_images">Imagens de capa</string>
+ <string name="pref_mobileUpdate_auto_download">Download automático</string>
+ <string name="pref_mobileUpdate_episode_download">Download de episódios</string>
+ <string name="pref_mobileUpdate_streaming">Streaming</string>
<string name="user_interface_label">Interface com usuário</string>
+ <string name="user_interface_sum">Aparência, pedidos de assinatura, tela de bloqueio</string>
<string name="pref_set_theme_title">Selecionar tema</string>
<string name="pref_nav_drawer_items_title">Configurar itens da Gaveta de Navegação</string>
<string name="pref_nav_drawer_items_sum">Escolher quais itens irão aparecer na gaveta de navegação.</string>
@@ -337,6 +401,10 @@
<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_episode_cache_summary">Número total de episódios baixados em cache no dispositivo. O download automático será suspenso se esse número for atingido.</string>
+ <string name="pref_episode_cover_title">Usar capa do episódio</string>
+ <string name="pref_episode_cover_summary">Use a capa específica do episódio sempre que disponível. Se desmarcado, o aplicativo sempre usará a imagem da capa do podcast.</string>
+ <string name="pref_theme_title_use_system">Usar tema do sistema</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>
@@ -350,13 +418,24 @@
<string name="pref_gpodnet_logout_toast">Saiu com sucesso</string>
<string name="pref_gpodnet_setlogin_information_title">Alterar informações de login</string>
<string name="pref_gpodnet_setlogin_information_sum">Alterar informações de login da sua conta gpodder.net</string>
+ <string name="pref_gpodnet_sync_changes_title">Sincronizar agora</string>
<string name="pref_gpodnet_sync_changes_sum">Sincronizar as alterações de estado da inscrição e de episódios com o gpodder.net.</string>
+ <string name="pref_gpodnet_full_sync_title">Forçar sincronização completa</string>
<string name="pref_gpodnet_full_sync_sum">Sincronizar os estados das inscrições e episódios com o gpodder.net.</string>
<string name="pref_gpodnet_login_status"><![CDATA[Entrou como <i>%1$s</i> com o dispositivo <i>%2$s</i>]]></string>
<string name="pref_gpodnet_notifications_title">Exibir notificações de erros de sincronismo</string>
<string name="pref_gpodnet_notifications_sum">Essa configuração não se aplica a erros de autenticação.</string>
<string name="pref_playback_speed_title">Velocidades de Reprodução</string>
<string name="pref_playback_speed_sum">Personalize as velocidades variáveis de reprodução de áudio.</string>
+ <string name="pref_feed_playback_speed_sum">A velocidade a ser usada ao iniciar a reprodução de áudio para episódios neste podcast</string>
+ <string name="pref_feed_skip">Salto automático</string>
+ <string name="pref_feed_skip_sum">Pule as introduções e os créditos finais.</string>
+ <string name="pref_feed_skip_ending">Pular últimos</string>
+ <string name="pref_feed_skip_intro">Pular primeiros</string>
+ <string name="pref_feed_skip_ending_toast">Pulou últimos %d segundos</string>
+ <string name="pref_feed_skip_intro_toast">Pulou os primeiros %d segundos</string>
+ <string name="pref_playback_time_respects_speed_title">Ajuste as informações da mídia para a velocidade de reprodução</string>
+ <string name="pref_playback_time_respects_speed_sum">A posição exibida e a duração são adaptadas à velocidade de reprodução</string>
<string name="pref_fast_forward">Tempo de avanço rápido</string>
<string name="pref_fast_forward_sum">Personalize os segundos para avançar quando o botão avanço rápido for clicado</string>
<string name="pref_rewind">Tempo de retroceder</string>
@@ -375,15 +454,29 @@
<string name="pref_lockscreen_background_sum">Configurar o plano de fundo da tela de bloqueio para a imagem do episódio atual. Como um efeito colateral, também ira mostrar imagens de aplicativos de terceiros.</string>
<string name="pref_showDownloadReport_title">Mostrar Relatório de Downloads</string>
<string name="pref_showDownloadReport_sum">Se os downloads falharem, gerar um relatório que mostra os detalhes da falha.</string>
+ <string name="pref_showAutoDownloadReport_title">Mostrar relatório de downloads automáticos</string>
+ <string name="pref_showAutoDownloadReport_sum">Mostra uma notificação para episódios baixados automaticamente.</string>
<string name="pref_expand_notify_unsupport_toast">Versões do Android inferiores a 4.1 não suportam notificações expansíveis</string>
+ <string name="pref_enqueue_location_title">Local da fila</string>
+ <string name="pref_enqueue_location_sum">Adicionar episódios para: %1$s</string>
+ <string name="enqueue_location_back">Final</string>
+ <string name="enqueue_location_front">Início</string>
+ <string name="enqueue_location_after_current">Depois do episódio atual</string>
<string name="pref_smart_mark_as_played_disabled">Desabilitado</string>
<string name="pref_image_cache_size_title">Tamanho da Imagem em Cache</string>
<string name="pref_image_cache_size_sum">Tamanho do cache de disco para imagens.</string>
+ <string name="visit_user_forum">Fórum de usuários</string>
+ <string name="bug_report_title">Reportar um bug</string>
+ <string name="open_bug_tracker">Abrir registro de bugs</string>
+ <string name="export_logs">Exportar logs</string>
+ <string name="copy_to_clipboard">Copiar para clipboard</string>
+ <string name="copied_to_clipboard">Copiado para clipboard</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>
+ <string name="pref_faq">Perguntas mais frequentes</string>
<string name="pref_no_browser_found">Nenhum navegador web encontrado.</string>
<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>
@@ -391,6 +484,8 @@
<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="media_player_switch_to_exoplayer">Alterar para ExoPlayer</string>
+ <string name="media_player_switched_to_exoplayer">Alterado para ExoPlayer</string>
<string name="pref_skip_silence_title">Pular silêncio no áudio</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>
diff --git a/core/src/main/res/values-pt/strings.xml b/core/src/main/res/values-pt/strings.xml
index 375fa5426..64a381953 100644
--- a/core/src/main/res/values-pt/strings.xml
+++ b/core/src/main/res/values-pt/strings.xml
@@ -33,7 +33,7 @@
<string name="statistics_mode_count_all">Somar todos os podcasts marcados como reproduzidos</string>
<string name="statistics_speed_not_counted">Aviso: a velocidade de reprodução nunca será considerada.</string>
<string name="statistics_reset_data">Reiniciar estatísticas dos dados</string>
- <string name="statistics_reset_data_msg">Isto irá apagar o histórico do tempo de reprodução pata todos os episódios. Tem a certeza de que deseja continuar?</string>
+ <string name="statistics_reset_data_msg">Isto irá apagar o histórico do tempo de reprodução para todos os episódios. Tem a certeza de que deseja continuar?</string>
<!--Download Statistics fragment-->
<string name="total_size_downloaded_podcasts">Tamanho total dos podcasts descarregados:</string>
<!--Main activity-->
@@ -176,7 +176,7 @@
<string name="play_this_to_seek_position">Se quiser ir para uma posição, tem que reproduzir o episódio</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>
+ <item quantity="other">%depisódios marcados como reproduzidos. </item>
</plurals>
<string name="mark_unread_label">Marcar como não reproduzido</string>
<string name="mark_unread_label_no_media">Marcar como não lida</string>
@@ -507,10 +507,11 @@
<!--About screen-->
<string name="about_pref">Acerca</string>
<string name="antennapod_version">Versão do AntennaPod</string>
+ <string name="contributors">Contributos</string>
+ <string name="contributors_summary">Todos podem ajudar a melhorar o AntennaPod - com código, com traduções ou até mesmo auxiliando os utilizadores do nosso fórum</string>
<string name="developers">Programadores</string>
- <string name="developers_summary">Todos podem ajudar a tornar o AntennaPod melhor</string>
<string name="translators">Tradutores</string>
- <string name="translators_summary">As traduções são criadas pelos utilizadores do AntennaPod, através da plataforma Transifex</string>
+ <string name="special_thanks">Especial agradecimento</string>
<string name="privacy_policy">Política de privacidade</string>
<string name="licenses">Licenças</string>
<string name="licenses_summary">AntennaPod utiliza outro software grandioso</string>
@@ -554,6 +555,8 @@
<string name="import_select_file">Selecione o ficheiro a importar</string>
<string name="import_ok">Importação bem sucedida.\n\nPor favor prima OK para reiniciar o AntennaPod</string>
<string name="import_no_downgrade">A base de dados foi exportada de uma versão mais recente do AntennaPod. A sua versão da aplicação não sabe como manipular este ficheiro.</string>
+ <string name="favorites_export_label">Exportação de favoritos</string>
+ <string name="favorites_export_summary">Exportar favoritos para um ficheiro</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">Definir temporizador</string>
<string name="disable_sleeptimer_label">Desativar temporizador</string>
diff --git a/core/src/main/res/values-ru/strings.xml b/core/src/main/res/values-ru/strings.xml
index fc01e6bad..58c177f95 100644
--- a/core/src/main/res/values-ru/strings.xml
+++ b/core/src/main/res/values-ru/strings.xml
@@ -22,13 +22,13 @@
<string name="gpodnet_main_label">gpodder.net</string>
<string name="gpodnet_auth_label">Войти на gpodder.net</string>
<string name="episode_cache_full_title">Кэш выпусков заполнен</string>
- <string name="episode_cache_full_message">Достигнут предел кэша выпусков. Объём кэша можно увеличить в Настройках.</string>
+ <string name="episode_cache_full_message">Достигнут предел кэша выпусков. Объем кэша можно увеличить в настройках.</string>
<string name="playback_statistics_label">Воспроизведение</string>
<string name="download_statistics_label">Загрузки</string>
<!--Statistics fragment-->
<string name="total_time_listened_to_podcasts">Общее время прослушивания подкастов:</string>
<string name="statistics_details_dialog">%1$d из %2$d выпусков начато.\n\nПрослушано %3$s из %4$s.</string>
- <string name="statistics_mode">Режим подсчёта статистики</string>
+ <string name="statistics_mode">Режим подсчета статистики</string>
<string name="statistics_mode_normal">Рассчитывать длительность действительного воспроизведения. Повторное воспроизведение засчитывается, а отметка о прослушивании — нет</string>
<string name="statistics_mode_count_all">Прибавлять также все подкасты, отмеченные как прослушанные</string>
<string name="statistics_speed_not_counted">Замечание: Скорость воспроизведения не учитывается никогда.</string>
@@ -85,6 +85,7 @@
<string name="auto_download_apply_to_items_message">Новые настройки <i>Автозагрузки</i> будут автоматически применены к новым выпускам. \nХотите ли вы применить их к ранее опубликованным выпускам?</string>
<string name="auto_delete_label">Автоматически удалить выпуск</string>
<string name="feed_volume_reduction">Уменьшение громкости</string>
+ <string name="feed_volume_reduction_summary">Уменьшать громкость выпусков этого канала: %1$s</string>
<string name="feed_volume_reduction_off">Выключено</string>
<string name="feed_volume_reduction_light">Слабое</string>
<string name="feed_volume_reduction_heavy">Сильное</string>
@@ -108,6 +109,12 @@
<item quantity="many">%d дней после прослушивания</item>
<item quantity="other">%d дней после прослушивания</item>
</plurals>
+ <plurals name="num_selected_label">
+ <item quantity="one">Выбрано: %d</item>
+ <item quantity="few">Выбрано: %d</item>
+ <item quantity="many">Выбрано: %d</item>
+ <item quantity="other">Выбрано: %d</item>
+ </plurals>
<string name="loading_more">Загружается...</string>
<!--Actions on feeds-->
<string name="mark_all_read_label">Отметить как прослушанное</string>
@@ -165,10 +172,10 @@
<string name="delete_failed">Невозможно удалить файл. Попробуйте перезагрузить устройство.</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>
+ <item quantity="one">%d выпуск удален.</item>
+ <item quantity="few">%d выпуска удалены.</item>
+ <item quantity="many">%d выпусков удалены.</item>
+ <item quantity="other">%d выпусков удалено.</item>
</plurals>
<string name="remove_new_flag_label">Убрать пометку «Новый»</string>
<string name="removed_new_flag_label">Пометка «Новый» убрана</string>
@@ -201,7 +208,7 @@
</plurals>
<string name="remove_from_queue_label">Удалить из очереди</string>
<plurals name="removed_from_queue_batch_label">
- <item quantity="one">%d выпуск удалён из очереди.</item>
+ <item quantity="one">%d выпуск удален из очереди.</item>
<item quantity="few">%d выпуска удалены из очереди.</item>
<item quantity="many">%d выпусков удалены из очереди.</item>
<item quantity="other">%d выпусков удалено из очереди.</item>
@@ -216,6 +223,7 @@
<string name="deactivate_auto_download">Отключить автоматическую загрузку</string>
<string name="reset_position">Сбросить время воспроизведения</string>
<string name="removed_item">Удалено</string>
+ <string name="no_items_selected">Ничего не выбрано</string>
<!--Download messages and labels-->
<string name="download_successful">успешно</string>
<string name="download_pending">Загрузка в ожидании</string>
@@ -232,12 +240,12 @@
<string name="download_error_unknown_host">Неизвестный узел</string>
<string name="download_error_unauthorized">Ошибка авторизации</string>
<string name="download_error_file_type_type">Ошибка типа файла</string>
- <string name="download_error_forbidden">Доступ запрещён</string>
+ <string name="download_error_forbidden">Запрещено</string>
<string name="download_canceled_msg">Загрузка отменена</string>
<string name="download_canceled_autodownload_enabled_msg">Загрузка отменена\n <i>Автозагрузка</i> отключена для этого выпуска</string>
<string name="download_report_title">Загрузки завершились с ошибкой</string>
<string name="auto_download_report_title">Автозагрузка завершена</string>
- <string name="download_report_content_title">Отчёт о загрузках</string>
+ <string name="download_report_content_title">Отчет о загрузках</string>
<string name="download_error_malformed_url">Неправильная ссылка</string>
<string name="download_error_io_error">Ошибка ввода-вывода</string>
<string name="download_error_request_error">Ошибка запроса</string>
@@ -332,13 +340,14 @@
<string name="no_chapters_head_label">Без оглавления</string>
<string name="no_chapters_label">Этот выпуск не содержит оглавления.</string>
<string name="no_subscriptions_head_label">Подписки не оформлены</string>
- <string name="no_subscriptions_label">Чтобы подписаться на подкаст, нажмите значок \"плюс\" внизу.</string>
+ <string name="no_subscriptions_label">Чтобы подписаться на подкаст, нажмите значок «плюс» внизу.</string>
<!--Preferences-->
<string name="storage_pref">Хранилище</string>
<string name="storage_sum">Автоматическое удаление выпусков, импорт, экспорт</string>
<string name="project_pref">Проект</string>
<string name="queue_label">Очередь</string>
<string name="synchronization_pref">Синхронизация</string>
+ <string name="synchronization_sum">Синхронизация с другими устройствами с помощью gpodder.net</string>
<string name="automation">Автоматизация</string>
<string name="download_pref_details">Подробнее</string>
<string name="import_export_pref">Импорт/экспорт</string>
@@ -356,14 +365,14 @@
<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_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>
<string name="pref_auto_delete_sum">Удалять выпуск после воспроизведения</string>
<string name="pref_auto_delete_title">Автоматическое удаление</string>
- <string name="pref_smart_mark_as_played_sum">Отмечать выпуски как прослушанные, даже если до завершения остаётся некоторое время</string>
+ <string name="pref_smart_mark_as_played_sum">Отмечать выпуски как прослушанные, даже если до завершения остается некоторое время</string>
<string name="pref_smart_mark_as_played_title">Отметка «Прослушанное» до окончания</string>
<string name="pref_skip_keeps_episodes_sum">Сохранять выпуски, помеченные как пропущенные</string>
<string name="pref_skip_keeps_episodes_title">Сохранять пропущенные выпуски</string>
@@ -401,8 +410,8 @@
<string name="pref_nav_drawer_items_sum">Изменение отображения пунктов меню боковой панели</string>
<string name="pref_nav_drawer_feed_order_title">Упорядочить подписки</string>
<string name="pref_nav_drawer_feed_order_sum">Выбрать порядок отображения подписок</string>
- <string name="pref_nav_drawer_feed_counter_title">Выбрать счётчик подписок</string>
- <string name="pref_nav_drawer_feed_counter_sum">Какую информацию показывать в счётчике подписок. Влияет также на очерёдность подписок, если сортировка подписок производится по счётчику.</string>
+ <string name="pref_nav_drawer_feed_counter_title">Выбрать счетчик подписок</string>
+ <string name="pref_nav_drawer_feed_counter_sum">Какую информацию показывать в счетчике подписок. Влияет также на очередность подписок, если сортировка подписок производится по счетчику.</string>
<string name="pref_set_theme_sum">Изменить тему оформления AntennaPod</string>
<string name="pref_automatic_download_title">Автоматическая загрузка</string>
<string name="pref_automatic_download_sum">Настроить автоматическую загрузку выпусков.</string>
@@ -417,8 +426,8 @@
<string name="pref_episode_cover_summary">Отображать вместо обложки подкаста обложку выпуска, если она доступна.</string>
<string name="pref_theme_title_use_system">Использовать системное оформление</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_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>
@@ -426,10 +435,12 @@
<string name="pref_gpodnet_authenticate_title">Войти</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_logout_toast">Выход успешно выполнен</string>
<string name="pref_gpodnet_setlogin_information_title">Изменить информацию авторизации</string>
<string name="pref_gpodnet_setlogin_information_sum">Изменить информацию авторизации для аккаунта gpodder.net</string>
+ <string name="pref_gpodnet_sync_changes_title">Синхронизировать сейчас</string>
<string name="pref_gpodnet_sync_changes_sum">Синхронизировать изменения подписок и выпусков при помощи gpodder.net.</string>
+ <string name="pref_gpodnet_full_sync_title">Выполнить полную синхронизацию</string>
<string name="pref_gpodnet_full_sync_sum">Синхронизировать состояния всех подписок и выпусков при помощи gpodder.net.</string>
<string name="pref_gpodnet_login_status"><![CDATA[Вход как <i>%1$s</i> с устройства <i>%2$s</i>]]></string>
<string name="pref_gpodnet_notifications_title">Показывать уведомления об ошибках синхронизации</string>
@@ -437,11 +448,16 @@
<string name="pref_playback_speed_title">Скорости воспроизведения</string>
<string name="pref_playback_speed_sum">Выбрать значения скорости, доступные при воспроизведении</string>
<string name="pref_feed_playback_speed_sum">Скорость, с которой будут изначально воспроизводиться выпуски этого подкаста</string>
- <string name="pref_feed_skip_intro_toast">Пропусить первые %d секунд</string>
+ <string name="pref_feed_skip">Автоматический пропуск</string>
+ <string name="pref_feed_skip_sum">Пропускать вступительную и заключительную часть.</string>
+ <string name="pref_feed_skip_ending">Пропуск в конце</string>
+ <string name="pref_feed_skip_intro">Пропуск в начале</string>
+ <string name="pref_feed_skip_ending_toast">Пропущено %d сек. в конце</string>
+ <string name="pref_feed_skip_intro_toast">Пропущено %d сек. в начале</string>
<string name="pref_playback_time_respects_speed_title">Подстройка метаданных под скорость воспроизведения</string>
<string name="pref_playback_time_respects_speed_sum">Значения позиции и длительности зависят от скорости воспроизведения</string>
<string name="pref_fast_forward">Интервал быстрой перемотки вперед</string>
- <string name="pref_fast_forward_sum">Настройте длину шага в секундах при нажатии кнопки перемотки вперёд</string>
+ <string name="pref_fast_forward_sum">Настройте длину шага в секундах при нажатии кнопки перемотки вперед</string>
<string name="pref_rewind">Интервал быстрой перемотки назад</string>
<string name="pref_rewind_sum">Настройте длину шага в секундах при нажатии кнопки перемотки назад</string>
<string name="pref_gpodnet_sethostname_title">Задать имя узла</string>
@@ -456,8 +472,8 @@
<string name="pref_compact_notification_buttons_dialog_error">Нельзя выбрать больше %1$d элементов.</string>
<string name="pref_lockscreen_background_title">Менять фон экрана блокировки</string>
<string name="pref_lockscreen_background_sum">Изменяет фон экрана блокировки на обложку выпуска. Кроме того показывает обложку в сторонних приложениях.</string>
- <string name="pref_showDownloadReport_title">Показывать отчёт о загрузках</string>
- <string name="pref_showDownloadReport_sum">Если загрузка не удаётся, показывать отчёт с подробностями об ошибке.</string>
+ <string name="pref_showDownloadReport_title">Показывать отчет о загрузках</string>
+ <string name="pref_showDownloadReport_sum">Если загрузка не удается, показывать отчет с подробностями об ошибке.</string>
<string name="pref_showAutoDownloadReport_title">Показывать результаты автозагрузки</string>
<string name="pref_showAutoDownloadReport_sum">Показывать уведомление при автоматической загрузке выпусков</string>
<string name="pref_expand_notify_unsupport_toast">Версии Android ниже 4.1 не поддерживают расширенные уведомления.</string>
@@ -488,6 +504,8 @@
<string name="pref_enqueue_downloaded_title">Добавлять загруженные в очередь</string>
<string name="pref_enqueue_downloaded_summary">Добавлять загруженные выпуски в очередь</string>
<string name="media_player_builtin">Встроенный в Android</string>
+ <string name="media_player_switch_to_exoplayer">Переключить на ExoPlayer</string>
+ <string name="media_player_switched_to_exoplayer">Переключено на ExoPlayer.</string>
<string name="pref_skip_silence_title">Пропускать участки тишины</string>
<string name="pref_videoBehavior_title">При завершении видео</string>
<string name="pref_videoBehavior_sum">При сворачивании проигрывателя видео</string>
@@ -501,7 +519,7 @@
<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="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>
@@ -509,10 +527,11 @@
<!--About screen-->
<string name="about_pref">О программе</string>
<string name="antennapod_version">Версия AntennaPod</string>
+ <string name="contributors">Участники</string>
+ <string name="contributors_summary">Каждый может сделать свой вклад в улучшение AntennaPod — с помощью кода, перевода или помогая пользователям на форуме</string>
<string name="developers">Разработчики</string>
- <string name="developers_summary">Любой может помочь улучшить AntennaPod</string>
<string name="translators">Переводчики</string>
- <string name="translators_summary">Перевод выполнен пользователями AntennaPod при помощи Transifex</string>
+ <string name="special_thanks">Особая благодарность</string>
<string name="privacy_policy">Политика конфиденциальности</string>
<string name="licenses">Лицензии</string>
<string name="licenses_summary">В AntennaPod используется другое отличное ПО</string>
@@ -522,7 +541,12 @@
<string name="no_results_for_query">По запросу «%1$s» ничего не найдено</string>
<!--Synchronization-->
<string name="sync_status_started">Синхронизация запущена</string>
+ <string name="sync_status_episodes_upload">Отправка изменений выпуска…</string>
+ <string name="sync_status_episodes_download">Загрузка изменений выпуска…</string>
+ <string name="sync_status_upload_played">Отправка состояния прослушивания…</string>
<string name="sync_status_subscriptions">Синхронизация подписок ...</string>
+ <string name="sync_status_success">Синхронизация выполнена</string>
+ <string name="sync_status_error">Сбой синхронизации</string>
<!--import and export-->
<string name="import_export_summary">Перенести подписку и очередь на другое устройство</string>
<string name="database">База данных</string>
@@ -542,16 +566,17 @@
<string name="html_export_label">Экспорт в HTML</string>
<string name="database_export_label">Экспорт базы данных</string>
<string name="database_import_label">Импорт базы данных</string>
+ <string name="database_import_warning">Импорт базы данных приведет к замене всех текущих подписок и истории воспроизведения. Рекомендуется экспортировать текущую базу данных, чтобы иметь резервную копию. Хотите заменить?</string>
<string name="please_wait">Подождите…</string>
<string name="export_error_label">Ошибка экспорта</string>
- <string name="export_success_title">Экспорт завершён успешно</string>
- <string name="export_success_sum">Экспорт осуществлён в файл:
-
-%1$s</string>
+ <string name="export_success_title">Экспорт выполнен</string>
+ <string name="export_success_sum">Файл экспорта был сохранен в папку:\n\n%1$s</string>
<string name="opml_import_ask_read_permission">Для чтения файла OPML необходим доступ к внешнему хранилищу</string>
<string name="import_select_file">Выбрать файл для импорта</string>
<string name="import_ok">Успешно импортировано.\n\nНажмите OK, чтобы перезапустить AntennaPod</string>
<string name="import_no_downgrade">Выбранная база данных экспортирована из более поздней версии AntennaPod. Установленная версия не сможет воспользоваться этой базой.</string>
+ <string name="favorites_export_label">Экспорт избранного</string>
+ <string name="favorites_export_summary">Экспортировать сохраненное избранное в файл</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">Установить таймер сна</string>
<string name="disable_sleeptimer_label">Отключить таймер сна</string>
@@ -581,7 +606,7 @@
<item quantity="other">%d часа</item>
</plurals>
<string name="auto_enable_label">Запускать автоматически</string>
- <string name="sleep_timer_enabled_label">Таймер сна включён</string>
+ <string name="sleep_timer_enabled_label">Таймер сна включен</string>
<!--gpodder.net-->
<string name="gpodnet_taglist_header">Категории</string>
<string name="gpodnet_toplist_header">Лучшее</string>
@@ -590,7 +615,7 @@
<string name="gpodnetauth_login_title">Войти</string>
<string name="gpodnetauth_login_descr">Добро пожаловать в процесс авторизации на gpodder.net. Сначала введите вашу информацию для авторизации:</string>
<string name="gpodnetauth_login_butLabel">Войти</string>
- <string name="gpodnetauth_login_register">Если у вас ещё нет аккаунта, вы можете создать его здесь:\nhttps://gpodder.net/register/</string>
+ <string name="gpodnetauth_login_register">Если у вас еще нет аккаунта, вы можете создать его здесь:\nhttps://gpodder.net/register/</string>
<string name="username_label">Имя пользователя</string>
<string name="password_label">Пароль</string>
<string name="gpodnetauth_device_title">Выбор устройства</string>
@@ -641,9 +666,10 @@
<string name="subscribe_label">Подписаться</string>
<string name="subscribing_label">Подписка оформляется…</string>
<string name="preview_episode">Предпросмотр</string>
+ <string name="stop_preview">Остановить предпросмотр</string>
<!--Content descriptions for image buttons-->
<string name="rewind_label">Назад</string>
- <string name="fast_forward_label">Вперёд</string>
+ <string name="fast_forward_label">Вперед</string>
<string name="increase_speed">Увеличить скорость</string>
<string name="decrease_speed">Уменьшить скорость</string>
<string name="media_type_audio_label">Аудио</string>
@@ -654,6 +680,9 @@
<string name="is_favorite_label">Эпизод отмечен как избранный</string>
<string name="drag_handle_content_description">Перетяните чтобы изменить позицию этого элемента</string>
<string name="load_next_page_label">Загрузить следующую страницу</string>
+ <string name="switch_pages">Переключить страницу</string>
+ <string name="position">Позиция: %1$s</string>
+ <string name="apply_action">Применить действие</string>
<!--Feed information screen-->
<string name="authentication_label">Авторизация</string>
<string name="authentication_descr">Изменить имя пользователя и пароль для этого подкаста и его выпусков.</string>
@@ -662,7 +691,7 @@
<string name="episode_filters_description">Перечень условий по включению или исключению выпуска из списков автоматической загрузки</string>
<string name="episode_filters_include">Включить</string>
<string name="episode_filters_exclude">Исключить</string>
- <string name="episode_filters_hint">По одному слову \n\"По фразе\"</string>
+ <string name="episode_filters_hint">По одному слову \n«По фразе»</string>
<string name="keep_updated">Постоянно обновлять</string>
<string name="keep_updated_summary">Обновлять подкаст при (авто)обновлении всех подкастов</string>
<string name="auto_download_disabled_globally">Автоматическая загрузка отключена в основных настройках AntennaPod</string>
@@ -678,7 +707,8 @@
<string name="add_podcast_by_url">Добавить подкаст по адресу</string>
<string name="browse_gpoddernet_label">Просмотр gpodder.net</string>
<string name="discover">Ознакомиться</string>
- <string name="discover_more">ещё »</string>
+ <string name="discover_more">еще »</string>
+ <string name="search_powered_by">Для поиска используется %1$s</string>
<string name="filter">Фильтровать</string>
<!--Episodes apply actions-->
<string name="all_label">Все</string>
@@ -706,10 +736,16 @@
<string name="sort_date_old_new">от старых к новым</string>
<string name="sort_duration_short_long">от коротких к длинным</string>
<string name="sort_duration_long_short">от длинных к коротким</string>
+ <string name="sort_a_z">от А к Я</string>
+ <string name="sort_z_a">от Я к А</string>
+ <string name="sort_new_old">от новых к старым</string>
+ <string name="sort_old_new">от старых к новым</string>
+ <string name="sort_short_long">от коротких к длинным</string>
+ <string name="sort_long_short">от длинных к коротким</string>
<!--Rating dialog-->
<string name="rating_title">Нравится AntennaPod?</string>
- <string name="rating_message">Мы будем Вам благодарны за оценку AntennaPod.</string>
- <string name="rating_never_label">Не дождётесь</string>
+ <string name="rating_message">Мы будем рады, если вы поставите оценку AntennaPod.</string>
+ <string name="rating_never_label">Не дождетесь</string>
<string name="rating_later_label">Позже, не сейчас</string>
<string name="rating_now_label">Конечно, давай!</string>
<!--Audio controls-->
@@ -748,7 +784,7 @@
<string name="cast_failed_no_connection_trans">Соединение с устройством Google Cast потеряно. Соединение восстанавливается. Попробуйте снова через несколько секунд.</string>
<string name="cast_failed_status_request">Не удалось синхронизироваться с устройством Google cast</string>
<string name="cast_failed_seek">Не удалось выполнить перемотку на устройстве Google cast</string>
- <string name="cast_failed_receiver_player_error">Серьёзная ошибка воспроизведения в устройстве Google cast</string>
+ <string name="cast_failed_receiver_player_error">Серьезная ошибка воспроизведения в устройстве Google cast</string>
<string name="cast_failed_media_error_skipping">Ошибка воспроизведения. Пропускаю…</string>
<!--Notification channels-->
<string name="notification_channel_user_action">Требуется действие</string>
@@ -767,4 +803,6 @@
<string name="widget_opacity">Непрозрачность</string>
<!--On-Demand configuration-->
<string name="on_demand_config_setting_changed">Настройки успешно обновлены.</string>
+ <string name="on_demand_config_stream_text">Похоже, вы часто слушаете по сети. Хотите, чтобы в списке выпусков отображались кнопки для потокового воспроизведения?</string>
+ <string name="on_demand_config_download_text">Похоже, вы часто слушаете загружаете выпуски. Хотите, чтобы в списке выпусков отображались кнопки для загрузки?</string>
</resources>
diff --git a/core/src/main/res/values-sv/strings.xml b/core/src/main/res/values-sv/strings.xml
index f5d85e18c..632d5f94a 100644
--- a/core/src/main/res/values-sv/strings.xml
+++ b/core/src/main/res/values-sv/strings.xml
@@ -507,10 +507,11 @@
<!--About screen-->
<string name="about_pref">Om</string>
<string name="antennapod_version">AntennaPod version</string>
+ <string name="contributors">Medverkare</string>
+ <string name="contributors_summary">Alla kan hjälpa till att göra AntennaPod bättre - med kod, översättningar eller genom att hjälpa användare i vårt forum.</string>
<string name="developers">Utvecklare</string>
- <string name="developers_summary">Alla kan hjälpa till att göra AntennaPod bättre</string>
<string name="translators">Översättare</string>
- <string name="translators_summary">Översättningar skapas av AntennaPods användare med hjälp av Transifex</string>
+ <string name="special_thanks">Speciellt tack</string>
<string name="privacy_policy">Integritetspolicy</string>
<string name="licenses">Licenser</string>
<string name="licenses_summary">AntennaPod förlitar sig på annan bra programvara</string>
@@ -554,6 +555,8 @@
<string name="import_select_file">Välj fil att importera</string>
<string name="import_ok">Importen lyckades.\n\nTryck OK för att starta om AntennaPod</string>
<string name="import_no_downgrade">Denna databas var exporterad med en nyare version av AntennaPod. Din nuvarande installation vet inte hur den ska hantera filen än.</string>
+ <string name="favorites_export_label">Favoritexport</string>
+ <string name="favorites_export_summary">Exportera sparade favoriter till fil</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">Ställ in sömntimer</string>
<string name="disable_sleeptimer_label">Stäng av sömntimer</string>
diff --git a/core/src/main/res/values-uk/strings.xml b/core/src/main/res/values-uk/strings.xml
index 24a405e45..d61cb5977 100644
--- a/core/src/main/res/values-uk/strings.xml
+++ b/core/src/main/res/values-uk/strings.xml
@@ -453,9 +453,7 @@
<string name="about_pref">Про програму</string>
<string name="antennapod_version">Версія AntennaPod</string>
<string name="developers">Розробники</string>
- <string name="developers_summary">Кожен може допомогти AntennaPod стати краще</string>
<string name="translators">Перекладачі</string>
- <string name="translators_summary">Переклади створюються користувачами AntennaPod за допомогою Transifex</string>
<string name="privacy_policy">Політика конфіденційності</string>
<string name="licenses">Ліцензії</string>
<string name="licenses_summary">AntennaPod використовує інше чудове програмне забезпечення</string>
diff --git a/core/src/main/res/values-zh-rCN/strings.xml b/core/src/main/res/values-zh-rCN/strings.xml
index 6b02a07e6..829f63846 100644
--- a/core/src/main/res/values-zh-rCN/strings.xml
+++ b/core/src/main/res/values-zh-rCN/strings.xml
@@ -129,7 +129,7 @@
<string name="share_feed_url_label">分享播客URL</string>
<string name="share_item_url_label">分享媒体文件地址</string>
<string name="share_item_url_with_position_label">分享带播放位置的媒体文件地址</string>
- <string name="feed_delete_confirmation_msg">请确认您想删除播客“1%1$s” 及其所有节目(包括已经下载的)</string>
+ <string name="feed_delete_confirmation_msg">请确认您想删除播客“%1$s” 及其所有节目(包括已经下载的)</string>
<string name="feed_remover_msg">正在移除播客</string>
<string name="load_complete_feed">刷新所有播客</string>
<string name="multi_select">多选</string>
@@ -151,7 +151,7 @@
<!--actions on feeditems-->
<string name="download_label">下载</string>
<plurals name="downloading_batch_label">
- <item quantity="other">正下载1%d个音频节目</item>
+ <item quantity="other">正下载%d个音频节目</item>
</plurals>
<string name="play_label">播放</string>
<string name="pause_label">暂停</string>
@@ -160,7 +160,7 @@
<string name="delete_failed">无法删除文件。重启可能解决该问题。</string>
<string name="delete_episode_label">删除节目</string>
<plurals name="deleted_episode_batch_label">
- <item quantity="other">已删除1%d个节目</item>
+ <item quantity="other">已删除%d个节目</item>
</plurals>
<string name="remove_new_flag_label">移除“新的”标签</string>
<string name="removed_new_flag_label">已移除“新的”标签</string>
@@ -170,21 +170,21 @@
<string name="marked_as_read_no_media_label">已标为已读</string>
<string name="play_this_to_seek_position">要跳转到某处,你需要播放这一集</string>
<plurals name="marked_read_batch_label">
- <item quantity="other">已将1%d个节目标记为已播放</item>
+ <item quantity="other">已将%d个节目标记为已播放</item>
</plurals>
<string name="mark_unread_label">标记未播放</string>
<string name="mark_unread_label_no_media">标为未读</string>
<plurals name="marked_unread_batch_label">
- <item quantity="other">已将1%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="other">已将1%d个节目添加到序列中</item>
+ <item quantity="other">已将%d个节目添加到序列中</item>
</plurals>
<string name="remove_from_queue_label">从播放列表中删除</string>
<plurals name="removed_from_queue_batch_label">
- <item quantity="other">已从序列中移除1%d个节目</item>
+ <item quantity="other">已从序列中移除%d个节目</item>
</plurals>
<string name="add_to_favorite_label">加入收藏</string>
<string name="added_to_favorites">添加到收藏</string>
@@ -498,10 +498,11 @@
<!--About screen-->
<string name="about_pref">关于</string>
<string name="antennapod_version">AntennaPod版本</string>
+ <string name="contributors">贡献者</string>
+ <string name="contributors_summary">每个人都可以通过代码,翻译或通过帮助我们论坛中的用户来让AntennaPod变得更好</string>
<string name="developers">开发者</string>
- <string name="developers_summary">每个人都可以帮助改进AntennaPod</string>
<string name="translators">译者</string>
- <string name="translators_summary">翻译由AntennPod用户使用Transifex创建</string>
+ <string name="special_thanks">特别感谢</string>
<string name="privacy_policy">隐私政策</string>
<string name="licenses">许可证</string>
<string name="licenses_summary">AntennaPod使用其他伟大的软件</string>
@@ -540,11 +541,13 @@
<string name="please_wait">请等待...</string>
<string name="export_error_label">导出出错</string>
<string name="export_success_title">成功导出</string>
- <string name="export_success_sum">导出文件被写入:\n\n 1%1$s</string>
+ <string name="export_success_sum">导出文件被写入:\n\n %1$s</string>
<string name="opml_import_ask_read_permission">读取 OPML 文件需要访问外部存储的权限</string>
<string name="import_select_file">选择导入文件</string>
<string name="import_ok">成功导入,请按OK重启AntennaPod</string>
<string name="import_no_downgrade">该数据库是使用较新版本的AntennaPod导出的。您当前安装的版本尚不知如何处理该文件。</string>
+ <string name="favorites_export_label">收藏导出</string>
+ <string name="favorites_export_summary">将保存的收藏夹导出到文件</string>
<!--Sleep timer-->
<string name="set_sleeptimer_label">设置休眠计时器</string>
<string name="disable_sleeptimer_label">禁用休眠计时器</string>
@@ -661,7 +664,7 @@
<!--Add podcast fragment-->
<string name="search_podcast_hint">搜索播客……</string>
<string name="search_itunes_label">搜索 iTunes</string>
- <string name="search_fyyd_label">搜索 fydd</string>
+ <string name="search_fyyd_label">搜索 fyyd</string>
<string name="advanced">高级</string>
<string name="add_podcast_by_url">通过URL添加播客</string>
<string name="browse_gpoddernet_label">浏览 gpodder.net</string>
diff --git a/core/src/main/res/values-zh-rTW/strings.xml b/core/src/main/res/values-zh-rTW/strings.xml
new file mode 100644
index 000000000..0b3f88797
--- /dev/null
+++ b/core/src/main/res/values-zh-rTW/strings.xml
@@ -0,0 +1,768 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources xmlns:tools="http://schemas.android.com/tools">
+ <!--Activity and fragment titles-->
+ <string name="feed_update_receiver_name">更新訂閱</string>
+ <string name="feeds_label">Podcast</string>
+ <string name="statistics_label">統計</string>
+ <string name="add_feed_label">新增 Podcast</string>
+ <string name="episodes_label">單集</string>
+ <string name="all_episodes_short_label">全部</string>
+ <string name="new_episodes_label">最新</string>
+ <string name="favorite_episodes_label">最愛</string>
+ <string name="new_label">新</string>
+ <string name="settings_label">設定</string>
+ <string name="downloads_label">下載</string>
+ <string name="downloads_running_label">進行中</string>
+ <string name="downloads_completed_label">已完成</string>
+ <string name="downloads_log_label">日誌</string>
+ <string name="subscriptions_label">訂閱</string>
+ <string name="subscriptions_list_label">訂閱列表</string>
+ <string name="cancel_download_label">取消下載</string>
+ <string name="playback_history_label">播放歷史</string>
+ <string name="gpodnet_main_label">gpodder.net</string>
+ <string name="gpodnet_auth_label">gpodder.net 登錄</string>
+ <string name="episode_cache_full_title">暫存集數已達上限</string>
+ <string name="episode_cache_full_message">暫存集數已達上限,您可以在設定中調整限制。</string>
+ <string name="playback_statistics_label">播放</string>
+ <string name="download_statistics_label">下載</string>
+ <!--Statistics fragment-->
+ <string name="total_time_listened_to_podcasts">Podcast 總播放時長:</string>
+ <string name="statistics_details_dialog">聽過 %1$d/%2$d集。\n\n播過%3$s/%4$s集。</string>
+ <string name="statistics_mode">統計模式</string>
+ <string name="statistics_mode_normal">計算真實的播放時長。如果播放同一劇集兩遍,則會記錄兩遍的市場。如果只是標記為已播放,則不會被計入播放時長。</string>
+ <string name="statistics_mode_count_all">累加所有標記為已播放的 Podcast</string>
+ <string name="statistics_speed_not_counted">注意:播放速度不被計入。</string>
+ <string name="statistics_reset_data">重設統計數據</string>
+ <string name="statistics_reset_data_msg">這會清除過去的播放紀錄,您確定要進行嗎?</string>
+ <!--Download Statistics fragment-->
+ <string name="total_size_downloaded_podcasts">Podcast 總下載容量:</string>
+ <!--Main activity-->
+ <string name="drawer_open">打開選單</string>
+ <string name="drawer_close">關閉選單</string>
+ <string name="drawer_preferences">側邊選單設定</string>
+ <string name="drawer_feed_order_unplayed_episodes">按計數器排序</string>
+ <string name="drawer_feed_order_alphabetical">按字母排序</string>
+ <string name="drawer_feed_order_last_update">按發布日期排序</string>
+ <string name="drawer_feed_order_most_played">按已播放的集數排序</string>
+ <string name="drawer_feed_counter_new_unplayed">新增及未播放集數</string>
+ <string name="drawer_feed_counter_new">新集數</string>
+ <string name="drawer_feed_counter_unplayed">未播放集數</string>
+ <string name="drawer_feed_counter_downloaded">已下載集數</string>
+ <string name="drawer_feed_counter_none">沒有</string>
+ <!--Webview actions-->
+ <string name="open_in_browser_label">在瀏覽器中打開</string>
+ <string name="copy_url_label">複製鏈接</string>
+ <string name="share_url_label">分析鏈接</string>
+ <string name="copied_url_msg">複製鏈接到剪貼板</string>
+ <string name="go_to_position_label">跳至此處</string>
+ <!--Playback history-->
+ <string name="clear_history_label">清除歷史</string>
+ <!--Other-->
+ <string name="confirm_label">確定</string>
+ <string name="cancel_label">取消</string>
+ <string name="yes">是</string>
+ <string name="no">否</string>
+ <string name="reset">重置</string>
+ <string name="author_label">作者</string>
+ <string name="language_label">語言</string>
+ <string name="url_label">鏈接</string>
+ <string name="cover_label">圖片</string>
+ <string name="error_label">錯誤</string>
+ <string name="error_msg_prefix">發生錯誤:</string>
+ <string name="needs_storage_permission">此操作需要儲存空間權限</string>
+ <string name="refresh_label">刷新</string>
+ <string name="external_storage_error_msg">找不到外部儲存空間。請確保您已掛載外部儲存空間,這樣本軟體才能正常運行。</string>
+ <string name="chapters_label">章節</string>
+ <string name="chapter_duration">時長: %1$s</string>
+ <string name="description_label">描述</string>
+ <string name="episodes_suffix">\u0020單集</string>
+ <string name="processing_label">處理中</string>
+ <string name="save_username_password_label">保存帳號及密碼</string>
+ <string name="close_label">關閉</string>
+ <string name="retry_label">重試</string>
+ <string name="auto_download_label">加入自動下載</string>
+ <string name="auto_download_apply_to_items_title">套用至先前的單集</string>
+ <string name="auto_download_apply_to_items_message">往後各集將採用新的 <i>自動下載</i> 設定,\n您希望先前已經發佈的各集也使用同樣的設定嗎?</string>
+ <string name="auto_delete_label">自動刪除單集</string>
+ <string name="feed_volume_reduction">降低音量</string>
+ <string name="feed_volume_reduction_summary">將此單集的音量調降:%1$s</string>
+ <string name="feed_volume_reduction_off">關閉</string>
+ <string name="feed_volume_reduction_light">輕</string>
+ <string name="feed_volume_reduction_heavy">重</string>
+ <string name="parallel_downloads_suffix">\u0020同時下載</string>
+ <string name="feed_auto_download_global">預設值</string>
+ <string name="feed_auto_download_always">總是</string>
+ <string name="feed_auto_download_never">不予下載</string>
+ <string name="send_label">發送中…</string>
+ <string name="episode_cleanup_never">不予刪除</string>
+ <string name="episode_cleanup_queue_removal">若未列入待播清單</string>
+ <string name="episode_cleanup_after_listening">聽完後</string>
+ <plurals name="episode_cleanup_hours_after_listening">
+ <item quantity="other">聽完後 %d 小時</item>
+ </plurals>
+ <plurals name="episode_cleanup_days_after_listening">
+ <item quantity="other">聽完後 %d 天</item>
+ </plurals>
+ <plurals name="num_selected_label">
+ <item quantity="other">選取了 %d 集</item>
+ </plurals>
+ <string name="loading_more">載入更多…</string>
+ <!--Actions on feeds-->
+ <string name="mark_all_read_label">全部標記為已播放</string>
+ <string name="mark_all_read_msg">全部標記為已播放</string>
+ <string name="mark_all_read_confirmation_msg">請確認您要將每一集都標記為已播放。</string>
+ <string name="mark_all_read_feed_confirmation_msg">請確定您是否要將此 Podcast 的每一集都標為已播放。</string>
+ <string name="remove_all_new_flags_label">移除所有「新的」標籤</string>
+ <string name="removed_all_new_flags_msg">移除所有「新的」標記</string>
+ <string name="remove_all_new_flags_confirmation_msg">請確定您是否要將每一集的「new」標記移除。</string>
+ <string name="show_info_label">顯示資料</string>
+ <string name="show_feed_settings_label">顯示 Podcast 設定</string>
+ <string name="feed_info_label">Podcast 資訊</string>
+ <string name="feed_settings_label">Podcast 設定</string>
+ <string name="rename_feed_label">重新命名 Podcast</string>
+ <string name="remove_feed_label">移除 Podcast</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_website_url_label">分享網站網址</string>
+ <string name="share_feed_url_label">分享 Podcast 的網址</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」這個 Podcast 及當中下載的每一集。</string>
+ <string name="feed_remover_msg">移除 Podcast</string>
+ <string name="load_complete_feed">重新整理 Podcast</string>
+ <string name="multi_select">多重選取</string>
+ <string name="select_all_above">選取以上全部</string>
+ <string name="select_all_below">選取以下全部</string>
+ <string name="hide_unplayed_episodes_label">未播放</string>
+ <string name="hide_paused_episodes_label">暫停</string>
+ <string name="hide_played_episodes_label">已播放</string>
+ <string name="hide_queued_episodes_label">已列入待播清單</string>
+ <string name="hide_not_queued_episodes_label">未列入待播清單</string>
+ <string name="hide_downloaded_episodes_label">已下載</string>
+ <string name="hide_not_downloaded_episodes_label">未下載</string>
+ <string name="hide_has_media_label">包含媒體</string>
+ <string name="hide_is_favorite_label">為最愛</string>
+ <string name="filtered_label">已過濾</string>
+ <string name="refresh_failed_msg">{fa-exclamation-circle} 上次刷新失敗</string>
+ <string name="open_podcast">打開 Podcast</string>
+ <string name="please_wait_for_data">資料載入中,請稍候</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="stream_label">流</string>
+ <string name="delete_label">刪除</string>
+ <string name="delete_failed">刪除文件失敗。重啟設備試試看。</string>
+ <string name="delete_episode_label">刪除這一集</string>
+ <plurals name="deleted_episode_batch_label">
+ <item quantity="other">已刪除 %d 集。</item>
+ </plurals>
+ <string name="remove_new_flag_label">移除「新」的標記</string>
+ <string name="removed_new_flag_label">已移除「新」的標記</string>
+ <string name="mark_read_label">標記為已播放</string>
+ <string name="marked_as_read_label">已標記為已播放</string>
+ <string name="mark_read_no_media_label">標示為已讀</string>
+ <string name="marked_as_read_no_media_label">已標示為已讀</string>
+ <string name="play_this_to_seek_position">若想指定播放位置,請先播放該單集</string>
+ <plurals name="marked_read_batch_label">
+ <item quantity="other">共有 %d 集標示為已播放。</item>
+ </plurals>
+ <string name="mark_unread_label">標記為未播放</string>
+ <string name="mark_unread_label_no_media">標示為未讀</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>
+ <string name="removed_from_favorites">已從最愛移除</string>
+ <string name="visit_website_label">訪問網站</string>
+ <string name="skip_episode_label">跳過這一集</string>
+ <string name="activate_auto_download">啟用自動下載</string>
+ <string name="deactivate_auto_download">停用自動下載</string>
+ <string name="reset_position">重置播放進度</string>
+ <string name="removed_item">項目已移除</string>
+ <string name="no_items_selected">未選擇任何項目</string>
+ <!--Download messages and labels-->
+ <string name="download_successful">成功</string>
+ <string name="download_pending">下載等待中</string>
+ <string name="download_running">下載中</string>
+ <string name="download_error_details">詳情</string>
+ <string name="download_error_details_message">%1$s \n\n檔案 URL:\n%2$s</string>
+ <string name="download_error_device_not_found">沒找到儲存空間</string>
+ <string name="download_error_insufficient_space">儲存空間不足</string>
+ <string name="download_error_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_connection_error">鏈接錯誤</string>
+ <string name="download_error_unknown_host">不明主機</string>
+ <string name="download_error_unauthorized">驗證失敗</string>
+ <string name="download_error_file_type_type">文件格式錯誤</string>
+ <string name="download_error_forbidden">禁止存取</string>
+ <string name="download_canceled_msg">下載已取消</string>
+ <string name="download_canceled_autodownload_enabled_msg">下載已取消\n此項目的 <i>自動下載</i> 已停用</string>
+ <string name="download_report_title">下載已完成,但可能有錯誤</string>
+ <string name="auto_download_report_title">自動下載完畢</string>
+ <string name="download_report_content_title">下載報告</string>
+ <string name="download_error_malformed_url">鏈接格式不正確</string>
+ <string name="download_error_io_error">IO 錯誤</string>
+ <string name="download_error_request_error">請求錯誤</string>
+ <string name="download_error_db_access">資料庫存取錯誤</string>
+ <plurals name="downloads_left">
+ <item quantity="other">剩餘%d 個下載</item>
+ </plurals>
+ <string name="downloads_processing">正在下載</string>
+ <string name="download_notification_title">Podcast 資料下載中</string>
+ <string name="download_report_content">%1$d 個成功下載, %2$d 個失敗</string>
+ <string name="download_log_title_unknown">標題不明</string>
+ <string name="download_type_feed">資料來源</string>
+ <string name="download_type_media">媒體檔案</string>
+ <string name="download_request_error_dialog_message_prefix">下載此檔案時出錯:\u0020</string>
+ <string name="null_value_podcast_error">無法顯示 Podcast</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\n1<small>暫時允許的效期為 10 分鐘</small></string>
+ <string name="confirm_mobile_streaming_notification_title">確認以行動網路串流播放</string>
+ <string name="confirm_mobile_streaming_notification_message">目前您設定為不可使用行動網路串流播放,輕觸後可強制以串流播放。</string>
+ <string name="confirm_mobile_streaming_button_always">永遠允許</string>
+ <string name="confirm_mobile_download_dialog_only_add_to_queue">列入待播清單</string>
+ <string name="confirm_mobile_download_dialog_enable_temporarily">臨時允許</string>
+ <!--Mediaplayer messages-->
+ <string name="player_error_msg">錯誤!</string>
+ <string name="player_stopped_msg">播放完畢</string>
+ <string name="player_preparing_msg">準備中</string>
+ <string name="player_ready_msg">準備</string>
+ <string name="player_seeking_msg">搜索中</string>
+ <string name="playback_error_server_died">服務器未響應</string>
+ <string name="playback_error_unsupported">不支援的媒體格式</string>
+ <string name="playback_error_timeout">操作逾時</string>
+ <string name="playback_error_source">無法取得該媒體檔案</string>
+ <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="unknown_media_key">AntennaPod - 媒體按鍵無法辨識:%1$d</string>
+ <string name="error_file_not_found">找不到檔案</string>
+ <!--Queue operations-->
+ <string name="lock_queue">鎖定待播清單</string>
+ <string name="unlock_queue">解鎖待播清單</string>
+ <string name="queue_locked">待播清單已鎖定</string>
+ <string name="queue_unlocked">待播清單已解鎖</string>
+ <string name="queue_lock_warning">一旦鎖定待播清單,就無法調整各集次序或使用滑動選單</string>
+ <string name="checkbox_do_not_show_again">不再顯示</string>
+ <string name="clear_queue_label">清空待播清單</string>
+ <string name="undo">返回</string>
+ <string name="move_to_top_label">移動到頂部</string>
+ <string name="move_to_bottom_label">移動的底部</string>
+ <string name="sort">排序</string>
+ <string name="keep_sorted">維持排序</string>
+ <string name="date">日期</string>
+ <string name="duration">時長</string>
+ <string name="episode_title">單集標題</string>
+ <string name="feed_title">Podcast 標題</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>
+ <string name="time_left_label">時間尚餘:\u0020</string>
+ <!--Variable Speed-->
+ <string name="download_plugin_label">已下載的插件</string>
+ <string name="no_playback_plugin_title">插件未安裝</string>
+ <string name="no_playback_plugin_or_sonic_msg">為了方便您以不同速度聆聽節目,我們建議您啟用內建的 Sonic 播放器。</string>
+ <string name="set_playback_speed_label">播放速度</string>
+ <string name="enable_sonic">啟用Sonic</string>
+ <!--Empty list labels-->
+ <string name="no_items_header_label">待播清單裡沒有任何單集</string>
+ <string name="no_items_label">下載或長按後選擇「加入待播清單」即可將這一集放入待播清單。</string>
+ <string name="no_shownotes_label">本集沒有附註</string>
+ <string name="no_run_downloads_head_label">當前並未下載任何劇集</string>
+ <string name="no_run_downloads_label">您可以到 Podcast 詳情畫面下載各單集。</string>
+ <string name="no_comp_downloads_head_label">尚未下載任何一集</string>
+ <string name="no_comp_downloads_label">您可以到 Podcast 詳情畫面下載各單集。</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">當您添增 Podcast 後,其中的各單集會顯示於此。</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>
+ <string name="no_chapters_head_label">無章節</string>
+ <string name="no_chapters_label">本集沒有章節資訊。</string>
+ <string name="no_subscriptions_head_label">無訂閱</string>
+ <string name="no_subscriptions_label">請按下方加號以訂閱 Podcast</string>
+ <!--Preferences-->
+ <string name="storage_pref">儲存空間</string>
+ <string name="storage_sum">自動刪除、匯入、匯出</string>
+ <string name="project_pref">項目</string>
+ <string name="queue_label">待播清單</string>
+ <string name="synchronization_pref">同步</string>
+ <string name="synchronization_sum">利用 gpodder.net 與其他裝置同步</string>
+ <string name="automation">自動化</string>
+ <string name="download_pref_details">細節</string>
+ <string name="import_export_pref">匯入/匯出</string>
+ <string name="import_export_search_keywords">備份, 還原, backup, restore, export, import, 匯出, 匯入</string>
+ <string name="appearance">外觀</string>
+ <string name="external_elements">外部元素</string>
+ <string name="interruptions">中斷</string>
+ <string name="playback_control">播放控制</string>
+ <string name="preference_search_hint">搜尋…</string>
+ <string name="preference_search_no_results">無結果</string>
+ <string name="preference_search_clear_history">清除歷史紀錄</string>
+ <string name="media_player">媒體播放器</string>
+ <string name="pref_episode_cleanup_title">刪除單集時機</string>
+ <string name="pref_episode_cleanup_summary">在暫存集數已滿、自動下載功能需要更多空間的情形下,不在待播清單也未設定為最愛的各單集將被刪除。</string>
+ <string name="pref_pauseOnDisconnect_sum">耳機或藍牙斷開連接時暫停播放</string>
+ <string name="pref_unpauseOnHeadsetReconnect_sum">當耳機再次連接時繼續播放</string>
+ <string name="pref_unpauseOnBluetoothReconnect_sum">當藍牙再次連接時繼續播放</string>
+ <string name="pref_hardwareForwardButtonSkips_title">快進按鈕跳過</string>
+ <string name="pref_hardwareForwardButtonSkips_sum">當按下藍牙連接裝置上的快轉鈕時,不要快轉,而是播放下一集</string>
+ <string name="pref_hardwarePreviousButtonRestarts_title">後退鍵重新播放</string>
+ <string name="pref_hardwarePreviousButtonRestarts_sum">當按下實體的倒轉鈕時,不要倒轉,而是重新播放本集。</string>
+ <string name="pref_followQueue_sum">當播放完畢時自動跳至待播清單中的下一集</string>
+ <string name="pref_auto_delete_sum">播放完畢後刪除該集</string>
+ <string name="pref_auto_delete_title">自動刪除</string>
+ <string name="pref_smart_mark_as_played_sum">若離開時還剩下特定秒數以內,也將該集標記為已播放。</string>
+ <string name="pref_smart_mark_as_played_title">智慧標記為已播放過</string>
+ <string name="pref_skip_keeps_episodes_sum">當跳過時,保留該集</string>
+ <string name="pref_skip_keeps_episodes_title">保留跳過</string>
+ <string name="pref_favorite_keeps_episodes_sum">保留標記為最愛的各單集</string>
+ <string name="pref_favorite_keeps_episodes_title">保留最愛單集</string>
+ <string name="playback_pref">播放</string>
+ <string name="playback_pref_sum">耳機線控、快轉時間、待播清單</string>
+ <string name="network_pref">網路</string>
+ <string name="network_pref_sum">更新週期、下載控制、行動網路</string>
+ <string name="pref_autoUpdateIntervallOrTime_title">更新週期</string>
+ <string name="pref_autoUpdateIntervallOrTime_sum">設定 Podcast 節目清單的更新週期</string>
+ <string name="pref_autoUpdateIntervallOrTime_message">您可以設定「每 2 小時」這類的<i>週期</i>或指定「每天早上 7 點」這種<i>每日定時</i>,也可以<i>停用</i> 自動更新。\n\n<small>請注意:這裡的時間並非十分精準,可能會有些許延遲。</small></string>
+ <string name="pref_autoUpdateIntervallOrTime_Disable">停用</string>
+ <string name="pref_autoUpdateIntervallOrTime_Interval">設定週期</string>
+ <string name="pref_autoUpdateIntervallOrTime_TimeOfDay">設定每日定時</string>
+ <string name="pref_autoUpdateIntervallOrTime_every">每 %1$s</string>
+ <string name="pref_autoUpdateIntervallOrTime_at">於 %1$s</string>
+ <string name="pref_followQueue_title">連續播放</string>
+ <string name="pref_pauseOnHeadsetDisconnect_title">拔除耳機時暫停播放</string>
+ <string name="pref_unpauseOnHeadsetReconnect_title">接上耳機時繼續播放</string>
+ <string name="pref_unpauseOnBluetoothReconnect_title">連上藍牙時繼續播放</string>
+ <string name="pref_stream_over_download_title">偏好串流</string>
+ <string name="pref_stream_over_download_sum">在清單中顯示串流播放按鈕取代下載鈕</string>
+ <string name="pref_mobileUpdate_title">允許以行動網路…</string>
+ <string name="pref_mobileUpdate_sum">選擇以行動網路連線時可以做的事</string>
+ <string name="pref_mobileUpdate_refresh">更新 Podcast</string>
+ <string name="pref_mobileUpdate_images">更新封面圖</string>
+ <string name="pref_mobileUpdate_auto_download">自動下載</string>
+ <string name="pref_mobileUpdate_episode_download">下載單集</string>
+ <string name="pref_mobileUpdate_streaming">串流播放</string>
+ <string name="user_interface_label">使用者介面</string>
+ <string name="user_interface_sum">外觀、訂閱排序、鎖定畫面</string>
+ <string name="pref_set_theme_title">選擇主題</string>
+ <string name="pref_nav_drawer_items_title">設定側邊選單</string>
+ <string name="pref_nav_drawer_items_sum">調整側邊選單裡要顯示的項目</string>
+ <string name="pref_nav_drawer_feed_order_title">設定訂閱排序方式</string>
+ <string name="pref_nav_drawer_feed_order_sum">更改您訂閱頻道的排序方式</string>
+ <string name="pref_nav_drawer_feed_counter_title">設定訂閱計數器</string>
+ <string name="pref_nav_drawer_feed_counter_sum">調整訂閱計數器中要顯示的東西,同時也會在排序方式設定為「計數」時影響排序。</string>
+ <string name="pref_set_theme_sum">更改 AntennaPod 的外觀</string>
+ <string name="pref_automatic_download_title">自動下載</string>
+ <string name="pref_automatic_download_sum">設定單集自動下載機制</string>
+ <string name="pref_autodl_wifi_filter_title">限定 Wi-Fi</string>
+ <string name="pref_autodl_wifi_filter_sum">限定於特定 Wi-Fi 連線時自動下載</string>
+ <string name="pref_automatic_download_on_battery_title">未充電時下載</string>
+ <string name="pref_automatic_download_on_battery_sum">允許未充電時也自動下載</string>
+ <string name="pref_parallel_downloads_title">平行下載</string>
+ <string name="pref_episode_cache_title">暫存集數</string>
+ <string name="pref_episode_cache_summary">在本機中可以暫存的集數,若達上限則將停止自動下載。</string>
+ <string name="pref_episode_cover_title">使用單集的封面圖</string>
+ <string name="pref_episode_cover_summary">在單集有專屬封面的情況下使用該封面圖。如果取消,則一律使用 Podcast 的封面圖。</string>
+ <string name="pref_theme_title_use_system">依據系統設定</string>
+ <string name="pref_theme_title_light">淡色</string>
+ <string name="pref_theme_title_dark">深色</string>
+ <string name="pref_theme_title_trueblack">黑色 (適用 AMOLED 螢幕)</string>
+ <string name="pref_episode_cache_unlimited">無限</string>
+ <string name="pref_update_interval_hours_plural">小時</string>
+ <string name="pref_update_interval_hours_singular">小時</string>
+ <string name="pref_update_interval_hours_manual">手動</string>
+ <string name="pref_gpodnet_authenticate_title">登入</string>
+ <string name="pref_gpodnet_authenticate_sum">登入您的 gpodder.net 帳戶以同步訂閱資訊</string>
+ <string name="pref_gpodnet_logout_title">登出</string>
+ <string name="pref_gpodnet_logout_toast">成功登出</string>
+ <string name="pref_gpodnet_setlogin_information_title">變更登入資訊</string>
+ <string name="pref_gpodnet_setlogin_information_sum">修改您的 gpodder.net 帳號登入資訊</string>
+ <string name="pref_gpodnet_sync_changes_title">馬上同步</string>
+ <string name="pref_gpodnet_sync_changes_sum">與 gpodder.net 同步訂閱及聆聽狀態。</string>
+ <string name="pref_gpodnet_full_sync_title">強制全部同步</string>
+ <string name="pref_gpodnet_full_sync_sum">與 gpodder.net 同步所有的訂閱及聆聽狀態。</string>
+ <string name="pref_gpodnet_login_status"><![CDATA[以 <i>%1$s</i> 登入,設備為 <i>%2$s</i>]]></string>
+ <string name="pref_gpodnet_notifications_title">顯示同步錯誤通知</string>
+ <string name="pref_gpodnet_notifications_sum">此設定不影響登入驗證錯誤。</string>
+ <string name="pref_playback_speed_title">播放速度</string>
+ <string name="pref_playback_speed_sum">自訂可選用的播放速度</string>
+ <string name="pref_feed_playback_speed_sum">播放此 Podcast 中各單集時的播放速度</string>
+ <string name="pref_feed_skip">自動跳過</string>
+ <string name="pref_feed_skip_sum">跳過開場和結尾鳴謝</string>
+ <string name="pref_feed_skip_ending">跳過最後幾秒</string>
+ <string name="pref_feed_skip_intro">跳過最初幾秒</string>
+ <string name="pref_feed_skip_ending_toast">跳過最後 %d 秒</string>
+ <string name="pref_feed_skip_intro_toast">跳過最初 %d 秒</string>
+ <string name="pref_playback_time_respects_speed_title">依據播放速度調整媒體資訊</string>
+ <string name="pref_playback_time_respects_speed_sum">根據播放速度調整播放進度、時長等資訊</string>
+ <string name="pref_fast_forward">快轉時間</string>
+ <string name="pref_fast_forward_sum">自訂快轉鈕要往前快轉多少時間</string>
+ <string name="pref_rewind">倒轉時間</string>
+ <string name="pref_rewind_sum">自訂倒轉鈕要往後倒轉多少時間</string>
+ <string name="pref_gpodnet_sethostname_title">設定主機</string>
+ <string name="pref_gpodnet_sethostname_use_default_host">使用預設主機</string>
+ <string name="pref_expandNotify_title">優先通知</string>
+ <string name="pref_expandNotify_sum">此功能通常會加大通知訊息以便顯示控制鈕</string>
+ <string name="pref_persistNotify_title">保留播放控制鈕</string>
+ <string name="pref_persistNotify_sum">暫停播放時,在通知列及鎖定畫面上保留播放控制鈕。</string>
+ <string name="pref_compact_notification_buttons_title">設定鎖定畫面按鈕</string>
+ <string name="pref_compact_notification_buttons_sum">設定鎖定畫面上的播放控制鈕。「暫停/播放」鈕一定會出現。</string>
+ <string name="pref_compact_notification_buttons_dialog_title">最多可選擇 %1$d 項</string>
+ <string name="pref_compact_notification_buttons_dialog_error">您最多只能選擇 %1$d 項。</string>
+ <string name="pref_lockscreen_background_title">設定鎖定畫面背景</string>
+ <string name="pref_lockscreen_background_sum">在鎖定畫面背景採用本單集的圖片,同時也會在第三方 App 裡顯示圖片。</string>
+ <string name="pref_showDownloadReport_title">顯示下載報告</string>
+ <string name="pref_showDownloadReport_sum">如果下載失敗,產生錯誤相關細節的報告。</string>
+ <string name="pref_showAutoDownloadReport_title">顯示自動下載報告</string>
+ <string name="pref_showAutoDownloadReport_sum">顯示自動下載通知。</string>
+ <string name="pref_expand_notify_unsupport_toast">Android 4.1 以前尚未支援延伸通知工具。</string>
+ <string name="pref_enqueue_location_title">待播清單新增位置</string>
+ <string name="pref_enqueue_location_sum">將這幾集加到:%1$s</string>
+ <string name="enqueue_location_back">放到清單最後</string>
+ <string name="enqueue_location_front">放到清單最前</string>
+ <string name="enqueue_location_after_current">當前這集以後</string>
+ <string name="pref_smart_mark_as_played_disabled">停用</string>
+ <string name="pref_image_cache_size_title">圖片快取容量</string>
+ <string name="pref_image_cache_size_sum">設定圖片的快取容量</string>
+ <string name="visit_user_forum">使用者論壇</string>
+ <string name="bug_report_title">回報錯誤</string>
+ <string name="open_bug_tracker">開啟錯誤追蹤</string>
+ <string name="export_logs">匯出紀錄</string>
+ <string name="copy_to_clipboard">複製到剪貼簿</string>
+ <string name="copied_to_clipboard">已複製到剪貼簿</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>
+ <string name="pref_faq">常見問題</string>
+ <string name="pref_no_browser_found">找不到任何瀏覽器</string>
+ <string name="pref_cast_title">支援 Chromecast</string>
+ <string name="pref_cast_message_play_flavor">啟用 Cast 設備(如 Chromecast、Audio Speakers、Google TV 等)遙控播放</string>
+ <string name="pref_cast_message_free_flavor">Chromecast 相關支援需要其他第三方的私權軟體,所以在此版 AntennaPod 中停用。</string>
+ <string name="pref_enqueue_downloaded_title">下載後加入待播清單</string>
+ <string name="pref_enqueue_downloaded_summary">下載單集以後自動加入待播清單</string>
+ <string name="media_player_builtin">Android 內建播放器</string>
+ <string name="media_player_switch_to_exoplayer">切換至 ExoPlayer</string>
+ <string name="media_player_switched_to_exoplayer">已切換至 ExoPlayer</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">按兩下後離開 App</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>
+ <!--About screen-->
+ <string name="about_pref">關於</string>
+ <string name="antennapod_version">AntennaPod 版本</string>
+ <string name="contributors">貢獻者</string>
+ <string name="contributors_summary">無論寫程式、翻譯或幫助其他使用者,每個人都能讓 AntennaPod 更加完美!</string>
+ <string name="developers">開發人員</string>
+ <string name="translators">譯者</string>
+ <string name="special_thanks">特別感謝</string>
+ <string name="privacy_policy">隱私條款</string>
+ <string name="licenses">授權條款</string>
+ <string name="licenses_summary">AntennaPod 中也用了其他很棒的軟體</string>
+ <!--Search-->
+ <string name="search_status_no_results">搜尋無結果</string>
+ <string name="search_label">搜尋</string>
+ <string name="no_results_for_query">找不到「%1$s」</string>
+ <!--Synchronization-->
+ <string name="sync_status_started">已開始同步</string>
+ <string name="sync_status_episodes_upload">上傳本集變更中…</string>
+ <string name="sync_status_episodes_download">下載本集變更中…</string>
+ <string name="sync_status_upload_played">上傳播放狀態…</string>
+ <string name="sync_status_subscriptions">同步訂閱中</string>
+ <string name="sync_status_success">同步成功</string>
+ <string name="sync_status_error">同步失敗</string>
+ <!--import and export-->
+ <string name="import_export_summary">將訂閱及待播清單移到另一台設備</string>
+ <string name="database">資料庫</string>
+ <string name="opml">OPML</string>
+ <string name="html">HTML</string>
+ <string name="html_export_summary">顯示您的訂閱給朋友</string>
+ <string name="opml_export_summary">將您的訂閱清單移到另一個 Podcast 軟體</string>
+ <string name="opml_import_summary">從其他 Podcast 軟體匯入訂閱清單</string>
+ <string name="database_export_summary">將訂閱、聆聽紀錄、待播清單等資訊傳送到其他設備上的 AntennaPod</string>
+ <string name="database_import_summary">自其他設備匯入 AntennaPod 資料庫</string>
+ <string name="opml_import_label">OPML 匯入</string>
+ <string name="opml_reader_error">讀取 OPML 時發生錯誤:</string>
+ <string name="opml_import_error_no_file">未選擇任何檔案!</string>
+ <string name="select_all_label">全選</string>
+ <string name="deselect_all_label">取消選取</string>
+ <string name="opml_export_label">匯出 OPML</string>
+ <string name="html_export_label">匯出 HTML</string>
+ <string name="database_export_label">資料庫匯出</string>
+ <string name="database_import_label">資料庫匯入</string>
+ <string name="database_import_warning">匯入的資料將取代您目前的訂閱清單與播放歷史紀錄,您最好先匯出當前的資料庫以便備份。要取代目前的資料嗎?</string>
+ <string name="please_wait">請稍候…</string>
+ <string name="export_error_label">匯出錯誤</string>
+ <string name="export_success_title">匯出成功</string>
+ <string name="export_success_sum">檔案已匯出至:\n\n%1$s</string>
+ <string name="opml_import_ask_read_permission">讀取 OPML 檔需要存取外部儲存空間的權限</string>
+ <string name="import_select_file">選取要匯入的檔案</string>
+ <string name="import_ok">匯入成功。\n\n請按下 OK 重新啟動 AntennaPod</string>
+ <string name="import_no_downgrade">此資料庫是以新版 AntennaPod 匯出的,您目前使用的版本無法使用這份資料。</string>
+ <string name="favorites_export_label">匯出我的最愛</string>
+ <string name="favorites_export_summary">將儲存的我的最愛清單匯出為檔案</string>
+ <!--Sleep timer-->
+ <string name="set_sleeptimer_label">設定睡眠定時</string>
+ <string name="disable_sleeptimer_label">停用睡眠定時</string>
+ <string name="sleep_timer_label">睡眠定時</string>
+ <string name="time_dialog_invalid_input">輸入無效,請輸入數值</string>
+ <string name="shake_to_reset_label">晃動手機以重置計時</string>
+ <string name="timer_vibration_label">在時間到之前短暫震動手機</string>
+ <string name="time_seconds">秒</string>
+ <string name="time_minutes">分鐘</string>
+ <string name="time_hours">小時</string>
+ <plurals name="time_seconds_quantified">
+ <item quantity="other">%d 秒</item>
+ </plurals>
+ <plurals name="time_minutes_quantified">
+ <item quantity="other">%d 分鐘</item>
+ </plurals>
+ <plurals name="time_hours_quantified">
+ <item quantity="other">%d 小時</item>
+ </plurals>
+ <string name="auto_enable_label">自動啟用</string>
+ <string name="sleep_timer_enabled_label">已設定睡眠定時</string>
+ <!--gpodder.net-->
+ <string name="gpodnet_taglist_header">分類</string>
+ <string name="gpodnet_toplist_header">最夯 Podcast</string>
+ <string name="gpodnet_suggestions_header">建議</string>
+ <string name="gpodnet_search_hint">搜尋 gpodder.net</string>
+ <string name="gpodnetauth_login_title">登入</string>
+ <string name="gpodnetauth_login_descr">歡迎登入 gpodder.net,請先輸入您的登入資訊:</string>
+ <string name="gpodnetauth_login_butLabel">登入</string>
+ <string name="gpodnetauth_login_register">如果您還沒有帳號,可以先註冊一個:\nhttps://gpodder.net/register/</string>
+ <string name="username_label">帳號</string>
+ <string name="password_label">密碼</string>
+ <string name="gpodnetauth_device_title">裝置選擇</string>
+ <string name="gpodnetauth_device_descr">為您的 gpodder.net 帳號建立新設備或選取既有設備:</string>
+ <string name="gpodnetauth_device_deviceID">設備代號:\u0020</string>
+ <string name="gpodnetauth_device_caption">標題</string>
+ <string name="gpodnetauth_device_butCreateNewDevice">新增新裝置</string>
+ <string name="gpodnetauth_device_chooseExistingDevice">選擇現存裝置:</string>
+ <string name="gpodnetauth_device_errorEmpty">設備代號不能留白</string>
+ <string name="gpodnetauth_device_errorAlreadyUsed">已經使用此設備代號</string>
+ <string name="gpodnetauth_device_caption_errorEmpty">標題不能留白</string>
+ <string name="gpodnetauth_device_butChoose">選擇</string>
+ <string name="gpodnetauth_finish_title">登入成功!</string>
+ <string name="gpodnetauth_finish_descr">恭喜,您的 gpodder.net 帳號已經成功連結到當前的設備!AntennaPod 今後將自動與 gpodder.net 同步此設備的訂閱清單。</string>
+ <string name="gpodnetauth_finish_butsyncnow">現在開始同步</string>
+ <string name="gpodnetauth_finish_butgomainscreen">進入主螢幕</string>
+ <string name="gpodnetsync_auth_error_title">gpodder.net 驗證錯誤</string>
+ <string name="gpodnetsync_auth_error_descr">帳號或密碼錯誤</string>
+ <string name="gpodnetsync_error_title">gpodder.net 同步錯誤</string>
+ <string name="gpodnetsync_error_descr">更新時發生錯誤:\u0020</string>
+ <string name="gpodnetsync_pref_report_successful">成功</string>
+ <string name="gpodnetsync_pref_report_failed">失敗</string>
+ <string name="gpodnetsync_username_characters_error">帳號中只能包含英文字母、數字、橫線及底線</string>
+ <!--Directory chooser-->
+ <string name="selected_folder_label">選擇資料夾:</string>
+ <string name="create_folder_label">新增資料夾</string>
+ <string name="choose_data_directory">選擇儲存資料夾</string>
+ <string name="choose_data_directory_message">請選擇您儲存檔案用的資料夾,AntennaPod 會自動建立相應的子資料夾。</string>
+ <string name="choose_data_directory_permission_rationale">更動資料夾需要存取外部儲存空間的權限</string>
+ <string name="choose_data_directory_available_space">可用空間 %1$s/%2$s</string>
+ <string name="create_folder_msg">建立一個「%1$s」資料夾?</string>
+ <string name="create_folder_success">新資料夾已建立完畢</string>
+ <string name="create_folder_error_no_write_access">無法寫入此資料夾</string>
+ <string name="create_folder_error_already_exists">資料夾已經存在</string>
+ <string name="create_folder_error">無法新增資料夾</string>
+ <string name="folder_does_not_exist_error">找不到「%1$s」</string>
+ <string name="folder_not_readable_error">無法讀取「%1$s」</string>
+ <string name="folder_not_writable_error">無法寫入「%1$s」</string>
+ <string name="folder_not_empty_dialog_title">資料夾並非空白</string>
+ <string name="folder_not_empty_dialog_msg">您所選的資料夾裡已經存在其他檔案,AntennaPod 下載的媒體及其他檔案將直接放進此資料夾裡,確定要繼續嗎?</string>
+ <string name="set_to_default_folder">選擇預設資料夾</string>
+ <string name="pref_pausePlaybackForFocusLoss_sum">有其他 App 也要播放聲音時,停止播放 Podcast(而非降低音量)</string>
+ <string name="pref_pausePlaybackForFocusLoss_title">其他音訊介入時暫停播放</string>
+ <string name="pref_resumeAfterCall_sum">通話結束後,繼續播放 Podcast</string>
+ <string name="pref_resumeAfterCall_title">通話後繼續播放</string>
+ <string name="pref_restart_required">此更動需要重新啟動 AntennaPod。</string>
+ <!--Online feed view-->
+ <string name="subscribe_label">訂閱</string>
+ <string name="subscribing_label">訂閱中</string>
+ <string name="preview_episode">預覽</string>
+ <string name="stop_preview">停止預覽</string>
+ <!--Content descriptions for image buttons-->
+ <string name="rewind_label">倒轉</string>
+ <string name="fast_forward_label">快轉</string>
+ <string name="increase_speed">加速</string>
+ <string name="decrease_speed">放慢</string>
+ <string name="media_type_audio_label">聲音</string>
+ <string name="media_type_video_label">影片</string>
+ <string name="status_downloading_label">正在下載這集</string>
+ <string name="in_queue_label">單集已在待播清單中</string>
+ <string name="is_favorite_label">已將此單集標為最愛</string>
+ <string name="drag_handle_content_description">拖曳以更動此項目的位置</string>
+ <string name="load_next_page_label">載入下一頁</string>
+ <string name="switch_pages">切換不同頁面</string>
+ <string name="position">播放進度:%1$s</string>
+ <string name="apply_action">套用</string>
+ <!--Feed information screen-->
+ <string name="authentication_label">驗證</string>
+ <string name="authentication_descr">修改此 Podcast 的帳號與密碼。</string>
+ <string name="auto_download_settings_label">自動下載設定</string>
+ <string name="episode_filters_label">篩選</string>
+ <string name="episode_filters_description">自動下載時要列入或排除的條件清單</string>
+ <string name="episode_filters_include">包含</string>
+ <string name="episode_filters_exclude">排除</string>
+ <string name="episode_filters_hint">Single words \n\"Multiple Words\"</string>
+ <string name="keep_updated">維持更新</string>
+ <string name="keep_updated_summary">自動更新所有 Podcast 時,也包括此 Podcast</string>
+ <string name="auto_download_disabled_globally">AntennaPod 的主設定中已停用自動下載功能</string>
+ <!--Progress information-->
+ <string name="progress_upgrading_database">更新資料庫</string>
+ <!--AntennaPodSP-->
+ <string name="sp_apps_importing_feeds_msg">從 AntennaPodSP 匯入訂閱清單</string>
+ <!--Add podcast fragment-->
+ <string name="search_podcast_hint">搜尋 Podcast…</string>
+ <string name="search_itunes_label">搜尋 iTunes</string>
+ <string name="search_fyyd_label">搜尋 fyyd</string>
+ <string name="advanced">進階</string>
+ <string name="add_podcast_by_url">以 URL 新增 Podcast</string>
+ <string name="browse_gpoddernet_label">瀏覽gpodder.net</string>
+ <string name="discover">探索</string>
+ <string name="discover_more">更多 »</string>
+ <string name="search_powered_by">搜尋內容來自 %1$s</string>
+ <string name="filter">篩選</string>
+ <!--Episodes apply actions-->
+ <string name="all_label">全部</string>
+ <string name="selected_all_label">全選</string>
+ <string name="none_label">無</string>
+ <string name="deselected_all_label">不選</string>
+ <string name="played_label">播過的</string>
+ <string name="selected_played_label">選擇播放過的單集</string>
+ <string name="unplayed_label">未播過的</string>
+ <string name="selected_unplayed_label">選擇沒播過的單集</string>
+ <string name="downloaded_label">已下載的</string>
+ <string name="selected_downloaded_label">選擇下載過的單集</string>
+ <string name="not_downloaded_label">未下載的</string>
+ <string name="selected_not_downloaded_label">選擇沒下載過的單集</string>
+ <string name="queued_label">已列入待播清單</string>
+ <string name="selected_queued_label">選擇待播清單中的單集</string>
+ <string name="not_queued_label">未列入待播清單</string>
+ <string name="selected_not_queued_label">選擇不在待播清單中的單集</string>
+ <string name="has_media">有額外媒體檔</string>
+ <string name="selected_has_media_label">選擇包含額外媒體的單集</string>
+ <!--Sort-->
+ <string name="sort_title_a_z">標題 (A \u2192 Z)</string>
+ <string name="sort_title_z_a">標題 (Z \u2192 A)</string>
+ <string name="sort_date_new_old">日期 (新 \u2192 舊)</string>
+ <string name="sort_date_old_new">日期 (舊 \u2192 新)</string>
+ <string name="sort_duration_short_long">單集時間 (短 \u2192 長)</string>
+ <string name="sort_duration_long_short">單集時間 (長 \u2192 短)</string>
+ <string name="sort_a_z">A \u2192 Z</string>
+ <string name="sort_z_a">Z \u2192 A</string>
+ <string name="sort_new_old">新 \u2192 舊</string>
+ <string name="sort_old_new">舊 \u2192 新</string>
+ <string name="sort_short_long">短 \u2192 長</string>
+ <string name="sort_long_short">長 \u2192 短</string>
+ <!--Rating dialog-->
+ <string name="rating_title">喜歡 AntennaPod 嗎?</string>
+ <string name="rating_message">如果您能花點時間為 AntennaPod 評個分,就太感謝啦!</string>
+ <string name="rating_never_label">別吵我</string>
+ <string name="rating_later_label">以後再說</string>
+ <string name="rating_now_label">好啊,這就去!</string>
+ <!--Audio controls-->
+ <string name="audio_controls">聲音控制</string>
+ <string name="playback_speed">播放速度</string>
+ <string name="volume">音量</string>
+ <string name="left_short">左</string>
+ <string name="right_short">右</string>
+ <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>
+ <string name="port_label">埠號</string>
+ <string name="optional_hint">(選填)</string>
+ <string name="proxy_test_label">測試</string>
+ <string name="proxy_checking">檢查中…</string>
+ <string name="proxy_test_successful">測試成功</string>
+ <string name="proxy_test_failed">測試失敗</string>
+ <string name="proxy_host_empty_error">主機不可留白</string>
+ <string name="proxy_host_invalid_error">主機並非有效的 IP 或網域名稱</string>
+ <string name="proxy_port_invalid_error">埠號無效</string>
+ <!--Subscriptions fragment-->
+ <string name="subscription_num_columns">顯示欄數</string>
+ <!--Casting-->
+ <string name="cast_media_route_menu_title">播放到…</string>
+ <string name="cast_disconnect_label">中止 Cast 連線</string>
+ <string name="cast_not_castable">此 Cast 設備不支援所選的媒體</string>
+ <string name="cast_failed_to_play">媒體播放失敗</string>
+ <string name="cast_failed_to_stop">媒體停止播放失敗</string>
+ <string name="cast_failed_to_pause">媒體暫停播放失敗</string>
+ <string name="cast_failed_setting_volume">音量設定失敗</string>
+ <string name="cast_failed_no_connection">沒有連結到任何 Cast 設備</string>
+ <string name="cast_failed_no_connection_trans">與 Cast 設備的連線中斷了,App 將試著重新連線。請稍候幾秒後再試一次。</string>
+ <string name="cast_failed_status_request">與 Cast 設備同步時發生錯誤</string>
+ <string name="cast_failed_seek">Cast 設備的播放進度調整失敗</string>
+ <string name="cast_failed_receiver_player_error">Cast 播放器發生錯誤</string>
+ <string name="cast_failed_media_error_skipping">播放錯誤,跳過此項…</string>
+ <!--Notification channels-->
+ <string name="notification_channel_user_action">需要介入</string>
+ <string name="notification_channel_user_action_description">需要您有進一步行動(比方說輸入密碼)時顯示。</string>
+ <string name="notification_channel_downloading">下載資訊</string>
+ <string name="notification_channel_downloading_description">下載時顯示</string>
+ <string name="notification_channel_playing">現正播放</string>
+ <string name="notification_channel_playing_description">允許播放控制。這是您在播放 Podcast 時會看到的主要通知。</string>
+ <string name="notification_channel_error">錯誤通知</string>
+ <string name="notification_channel_error_description">如果有任何錯誤(比方說下載或 gpodder 同步出錯)時顯示</string>
+ <string name="notification_channel_auto_download">自動下載</string>
+ <string name="notification_channel_episode_auto_download">自動下載後顯示</string>
+ <!--Widget settings-->
+ <string name="widget_settings">小工具設定</string>
+ <string name="widget_create_button">建立小工具</string>
+ <string name="widget_opacity">透明度</string>
+ <!--On-Demand configuration-->
+ <string name="on_demand_config_setting_changed">設定更新成功</string>
+ <string name="on_demand_config_stream_text">看來您常常用串流方式聆聽,您希望在單集清單中顯示串流按鈕嗎?</string>
+ <string name="on_demand_config_download_text">看來您常常用下載方式聆聽,您希望在單集清單中顯示下載按鈕嗎?</string>
+</resources>
diff --git a/core/src/main/res/values/arrays.xml b/core/src/main/res/values/arrays.xml
index ba6c2f196..13ff092b0 100644
--- a/core/src/main/res/values/arrays.xml
+++ b/core/src/main/res/values/arrays.xml
@@ -233,16 +233,6 @@
<item>3</item>
</string-array>
- <string-array name="nav_drawer_feed_filter_values">
- <item>0</item>
- <item>1</item>
- </string-array>
-
- <string-array name="nav_drawer_feed_filter_options">
- <item>@string/no_filter_label</item>
- <item>@string/hide_subscriptions_where_counter_is_zero</item>
- </string-array>
-
<string-array name="media_player_options">
<item>@string/media_player_builtin</item>
<item>@string/media_player_sonic</item>
diff --git a/core/src/main/res/values/attrs.xml b/core/src/main/res/values/attrs.xml
index 4a18f6ae6..a78f837bf 100644
--- a/core/src/main/res/values/attrs.xml
+++ b/core/src/main/res/values/attrs.xml
@@ -60,6 +60,7 @@
<attr name="background_elevated" format="color"/>
<attr name="filter_dialog_clear" format="reference"/>
<attr name="filter_dialog_button_background" format="reference"/>
+ <attr name="ic_notifications" format="reference"/>
<declare-styleable name="SquareImageView">
<attr name="direction" format="enum">
diff --git a/core/src/main/res/values/colors.xml b/core/src/main/res/values/colors.xml
index ed0b239a5..d09f53d64 100644
--- a/core/src/main/res/values/colors.xml
+++ b/core/src/main/res/values/colors.xml
@@ -24,7 +24,8 @@
<color name="accent_light">#0078C2</color>
<color name="accent_dark">#3D8BFF</color>
- <color name="ic_launcher_background">#008AB8</color>
+ <color name="icon_background_gradient_start">#0ba2ff</color>
+ <color name="icon_background_gradient_end">#0878ff</color>
<color name="master_switch_background_light">#DDDDDD</color>
<color name="master_switch_background_dark">#191919</color>
diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml
index f2f8b5bec..8cb369961 100644
--- a/core/src/main/res/values/strings.xml
+++ b/core/src/main/res/values/strings.xml
@@ -30,6 +30,7 @@
<string name="episode_cache_full_message">The episode cache limit has been reached. You can increase the cache size in the Settings.</string>
<string name="playback_statistics_label">Playback</string>
<string name="download_statistics_label">Downloads</string>
+ <string name="notification_pref_fragment">Notifications</string>
<!-- Statistics fragment -->
<string name="total_time_listened_to_podcasts">Total time of podcasts played:</string>
@@ -42,7 +43,7 @@
<string name="statistics_reset_data_msg">This will erase the history of duration played for all episodes. Are you sure you want to proceed?</string>
<!-- Download Statistics fragment -->
- <string name="total_size_downloaded_podcasts">Total size of downloaded podcasts:</string>
+ <string name="total_size_downloaded_podcasts">Total size of episodes on the device:</string>
<!-- Main activity -->
<string name="drawer_open">Open menu</string>
@@ -58,6 +59,9 @@
<string name="drawer_feed_counter_downloaded">Number of downloaded episodes</string>
<string name="drawer_feed_counter_none">None</string>
+ <!-- Bug report activity -->
+ <string name="log_file_share_exception">No compatible apps found</string>
+
<!-- Webview actions -->
<string name="open_in_browser_label">Open in Browser</string>
<string name="copy_url_label">Copy URL</string>
@@ -249,7 +253,10 @@
</plurals>
<string name="downloads_processing">Processing downloads</string>
<string name="download_notification_title">Downloading podcast data</string>
- <string name="download_report_content">%1$d downloads succeeded, %2$d failed</string>
+ <plurals name="download_report_content">
+ <item quantity="one">%d download succeeded, %d failed</item>
+ <item quantity="other">%d downloads succeeded, %d failed</item>
+ </plurals>
<string name="download_log_title_unknown">Unknown Title</string>
<string name="download_type_feed">Feed</string>
<string name="download_type_media">Media file</string>
@@ -441,7 +448,7 @@
<string name="pref_gpodnet_full_sync_title">Force full synchronization</string>
<string name="pref_gpodnet_full_sync_sum">Sync all subscriptions and episode states with gpodder.net.</string>
<string name="pref_gpodnet_login_status"><![CDATA[Logged in as <i>%1$s</i> with device <i>%2$s</i>]]></string>
- <string name="pref_gpodnet_notifications_title">Show sync error notifications</string>
+ <string name="pref_gpodnet_notifications_title">Synchronization failed</string>
<string name="pref_gpodnet_notifications_sum">This setting does not apply to authentication errors.</string>
<string name="pref_playback_speed_sum">Customize the speeds available for variable speed playback</string>
<string name="pref_feed_playback_speed_sum">The speed to use when starting audio playback for episodes in this podcast</string>
@@ -463,15 +470,15 @@
<string name="pref_expandNotify_sum">This usually expands the notification to show playback buttons.</string>
<string name="pref_persistNotify_title">Persistent Playback Controls</string>
<string name="pref_persistNotify_sum">Keep notification and lockscreen controls when playback is paused.</string>
- <string name="pref_compact_notification_buttons_title">Set Lockscreen Buttons</string>
- <string name="pref_compact_notification_buttons_sum">Change the playback buttons on the lockscreen. The play/pause button is always included.</string>
+ <string name="pref_compact_notification_buttons_title">Set Compact Notification Buttons</string>
+ <string name="pref_compact_notification_buttons_sum">Change the playback buttons when the notification is collapsed. The play/pause button is always included.</string>
<string name="pref_compact_notification_buttons_dialog_title">Select a maximum of %1$d items</string>
<string name="pref_compact_notification_buttons_dialog_error">You can only select a maximum of %1$d items.</string>
<string name="pref_lockscreen_background_title">Set Lockscreen Background</string>
<string name="pref_lockscreen_background_sum">Set the lockscreen background to the current episode\'s image. As a side effect, this will also show the image in third party apps.</string>
- <string name="pref_showDownloadReport_title">Show Download Report</string>
+ <string name="pref_showDownloadReport_title">Download failed</string>
<string name="pref_showDownloadReport_sum">If downloads fail, generate a report that shows the details of the failure.</string>
- <string name="pref_showAutoDownloadReport_title">Show Auto Download Report</string>
+ <string name="pref_showAutoDownloadReport_title">Automatic download completed</string>
<string name="pref_showAutoDownloadReport_sum">Show a notification for automatically downloaded episodes.</string>
<string name="pref_expand_notify_unsupport_toast">Android versions before 4.1 do not support expanded notifications.</string>
<string name="pref_enqueue_location_title">Enqueue Location</string>
@@ -525,17 +532,22 @@
<string name="pref_delete_removes_from_queue_sum">Automatically remove an episode from the queue when it is deleted.</string>
<string name="pref_filter_feed_title">Subscription Filter</string>
<string name="pref_filter_feed_sum">Filter your subscriptions in navigation drawer and subscriptions screen.</string>
- <string name="hide_subscriptions_where_counter_is_zero">Hide if counter is zero</string>
<string name="no_filter_label">None</string>
<string name="subscriptions_are_filtered">Subscriptions are filtered.</string>
+ <string name="subscriptions_counter_greater_zero">Counter greater zero</string>
+ <string name="auto_downloaded">Auto downloaded</string>
+ <string name="not_auto_downloaded">Not auto downloaded</string>
+ <string name="kept_updated">Kept updated</string>
+ <string name="not_kept_updated">Not kept updated</string>
<!-- About screen -->
<string name="about_pref">About</string>
<string name="antennapod_version">AntennaPod version</string>
+ <string name="contributors">Contributors</string>
+ <string name="contributors_summary">Everyone can help to make AntennaPod better - with code, translations or by helping users in our forum</string>
<string name="developers">Developers</string>
- <string name="developers_summary">Everyone can help to make AntennaPod better</string>
<string name="translators">Translators</string>
- <string name="translators_summary">Translations are created by users of AntennaPod using Transifex</string>
+ <string name="special_thanks">Special thanks</string>
<string name="privacy_policy">Privacy policy</string>
<string name="licenses">Licenses</string>
<string name="licenses_summary">AntennaPod uses other great software</string>
@@ -565,6 +577,7 @@
<string name="database_export_summary">Transfer subscriptions, listened episodes and queue to AntennaPod on another device</string>
<string name="database_import_summary">Import AntennaPod database from another device</string>
<string name="opml_import_label">OPML Import</string>
+ <string name="opml_add_podcast_label">Import podcast list (OPML)</string>
<string name="opml_reader_error">An error has occurred while reading the OPML document:</string>
<string name="opml_import_error_no_file">No file selected!</string>
<string name="select_all_label">Select all</string>
@@ -580,7 +593,8 @@
<string name="export_success_sum">The exported file was written to:\n\n%1$s</string>
<string name="opml_import_ask_read_permission">Access to external storage is required to read the OPML file</string>
<string name="import_select_file">Select file to import</string>
- <string name="import_ok">Import successful.\n\nPlease press OK to restart AntennaPod</string>
+ <string name="successful_import_label">Import successful</string>
+ <string name="import_ok">Please press OK to restart AntennaPod</string>
<string name="import_no_downgrade">This database was exported with a newer version of AntennaPod. Your current installation does not yet know how to handle this file.</string>
<string name="favorites_export_label">Favorites export</string>
<string name="favorites_export_summary">Export saved favorites to file</string>
@@ -682,7 +696,6 @@
<string name="decrease_speed">Decrease speed</string>
<string name="media_type_audio_label">Audio</string>
<string name="media_type_video_label">Video</string>
- <string name="navigate_upwards_label">Navigate upwards</string>
<string name="status_downloading_label">Episode is being downloaded</string>
<string name="in_queue_label">Episode is in the queue</string>
<string name="is_favorite_label">Episode is marked as favorite</string>
@@ -714,12 +727,15 @@
<!-- Add podcast fragment -->
<string name="search_podcast_hint">Search podcast…</string>
<string name="search_itunes_label">Search iTunes</string>
+ <string name="search_podcastindex_label">Search Podcastindex.org</string>
<string name="search_fyyd_label">Search fyyd</string>
<string name="advanced">Advanced</string>
<string name="add_podcast_by_url">Add Podcast by RSS address</string>
<string name="add_podcast_by_url_hint" translatable="false">www.example.com/feed</string>
<string name="browse_gpoddernet_label">Browse gpodder.net</string>
<string name="discover">Discover</string>
+ <string name="discover_hide">Hide</string>
+ <string name="discover_is_hidden">You selected to hide suggestions.</string>
<string name="discover_more">more »</string>
<string name="discover_powered_by_itunes">Suggestions by iTunes</string>
<string name="search_powered_by">Results by %1$s</string>
@@ -728,7 +744,7 @@
<string name="local_feed_description">This virtual podcast was created by adding a folder to AntennaPod.</string>
<string name="filter">Filter</string>
-
+
<!-- Episodes apply actions -->
<string name="all_label">All</string>
<string name="selected_all_label">Selected all Episodes</string>
@@ -837,7 +853,9 @@
<string name="notification_channel_playing">Currently playing</string>
<string name="notification_channel_playing_description">Allows to control playback. This is the main notification you see while playing a podcast.</string>
<string name="notification_channel_error">Errors</string>
- <string name="notification_channel_error_description">Shown if something went wrong, for example if download or gpodder sync fails.</string>
+ <string name="notification_channel_error_description">Shown if something went wrong, for example if download or feed update fails.</string>
+ <string name="notification_channel_sync_error">Synchronization Errors</string>
+ <string name="notification_channel_sync_error_description">Shown when gpodder synchronization fails.</string>
<string name="notification_channel_auto_download">Auto Downloads</string>
<string name="notification_channel_episode_auto_download">Shown when episodes have been automatically downloaded.</string>
diff --git a/core/src/main/res/values/styles.xml b/core/src/main/res/values/styles.xml
index 972174da5..9ec82215a 100644
--- a/core/src/main/res/values/styles.xml
+++ b/core/src/main/res/values/styles.xml
@@ -74,7 +74,8 @@
<item name="ic_volume_adaption">@drawable/ic_volume_adaption_black</item>
<item name="scrollbar_thumb">@drawable/scrollbar_thumb_light</item>
<item name="filter_dialog_clear">@color/filter_dialog_clear_light</item>
- <item name="filter_dialog_button_background">@color/filter_dialog_background_light</item>
+ <item name="filter_dialog_button_background">@drawable/filter_dialog_background_light</item>
+ <item name="ic_notifications">@drawable/ic_notifications_black</item>
</style>
<style name="Theme.AntennaPod.Dark" parent="Theme.Base.AntennaPod.Dark">
@@ -151,7 +152,8 @@
<item name="ic_volume_adaption">@drawable/ic_volume_adaption_white</item>
<item name="scrollbar_thumb">@drawable/scrollbar_thumb_dark</item>
<item name="filter_dialog_clear">@color/filter_dialog_clear_dark</item>
- <item name="filter_dialog_button_background">@color/filter_dialog_background_dark</item>
+ <item name="filter_dialog_button_background">@drawable/filter_dialog_background_dark</item>
+ <item name="ic_notifications">@drawable/ic_notifications_white</item>
</style>
<style name="Theme.AntennaPod.TrueBlack" parent="Theme.Base.AntennaPod.TrueBlack">
@@ -228,8 +230,8 @@
<style name="Theme.AntennaPod.Splash" parent="Theme.MaterialComponents.NoActionBar">
<item name="android:windowBackground">@drawable/bg_splash</item>
- <item name="colorPrimary">@color/ic_launcher_background</item>
- <item name="colorPrimaryDark">@color/ic_launcher_background</item>
+ <item name="colorPrimary">@color/icon_background_gradient_start</item>
+ <item name="colorPrimaryDark">@color/icon_background_gradient_start</item>
</style>
<style name="Theme.AntennaPod.VideoPlayer" parent="@style/Theme.AntennaPod.Dark">
@@ -306,4 +308,14 @@
<style name="Widget.AntennaPod.ActionBar.Black" parent="Widget.MaterialComponents.Light.ActionBar.Solid">
<item name="background">@color/black</item>
</style>
+
+ <style name="AddPodcastTextView">
+ <item name="android:drawablePadding">8dp</item>
+ <item name="android:paddingTop">8dp</item>
+ <item name="android:paddingBottom">8dp</item>
+ <item name="android:background">?android:attr/selectableItemBackground</item>
+ <item name="android:textColor">?android:attr/textColorPrimary</item>
+ <item name="android:clickable">true</item>
+ </style>
+
</resources>