diff options
Diffstat (limited to 'core/src/main')
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 Binary files differnew file mode 100644 index 000000000..e0b0f7f18 --- /dev/null +++ b/core/src/main/res/drawable-hdpi/ic_notification.png diff --git a/core/src/main/res/drawable-mdpi/ic_notification.png b/core/src/main/res/drawable-mdpi/ic_notification.png Binary files differnew file mode 100644 index 000000000..42943c7f0 --- /dev/null +++ b/core/src/main/res/drawable-mdpi/ic_notification.png 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 Binary files differnew file mode 100644 index 000000000..33a5b3fe4 --- /dev/null +++ b/core/src/main/res/drawable-nodpi/ic_launcher_foreground_no_finish.png diff --git a/core/src/main/res/drawable-nodpi/teaser.png b/core/src/main/res/drawable-nodpi/teaser.png Binary files differindex 3b5261b28..d339ed512 100644 --- a/core/src/main/res/drawable-nodpi/teaser.png +++ b/core/src/main/res/drawable-nodpi/teaser.png diff --git a/core/src/main/res/drawable-xhdpi/ic_notification.png b/core/src/main/res/drawable-xhdpi/ic_notification.png Binary files differnew file mode 100644 index 000000000..2c633ba6b --- /dev/null +++ b/core/src/main/res/drawable-xhdpi/ic_notification.png diff --git a/core/src/main/res/drawable-xxhdpi/ic_notification.png b/core/src/main/res/drawable-xxhdpi/ic_notification.png Binary files differnew file mode 100644 index 000000000..16cc2aaf4 --- /dev/null +++ b/core/src/main/res/drawable-xxhdpi/ic_notification.png diff --git a/core/src/main/res/drawable-xxxhdpi/ic_notification.png b/core/src/main/res/drawable-xxxhdpi/ic_notification.png Binary files differnew file mode 100644 index 000000000..fbbb94cd0 --- /dev/null +++ b/core/src/main/res/drawable-xxxhdpi/ic_notification.png 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 Binary files differindex 12e9b3395..9c922ce1c 100644 --- a/core/src/main/res/mipmap-hdpi/ic_launcher.png +++ b/core/src/main/res/mipmap-hdpi/ic_launcher.png diff --git a/core/src/main/res/mipmap-hdpi/ic_launcher_background.png b/core/src/main/res/mipmap-hdpi/ic_launcher_background.png Binary files differnew file mode 100644 index 000000000..92b669f3e --- /dev/null +++ b/core/src/main/res/mipmap-hdpi/ic_launcher_background.png diff --git a/core/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/core/src/main/res/mipmap-hdpi/ic_launcher_foreground.png Binary files differindex 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 diff --git a/core/src/main/res/mipmap-hdpi/ic_launcher_round.png b/core/src/main/res/mipmap-hdpi/ic_launcher_round.png Binary files differindex 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 diff --git a/core/src/main/res/mipmap-mdpi/ic_launcher.png b/core/src/main/res/mipmap-mdpi/ic_launcher.png Binary files differindex 1da13d374..ef741cee7 100644 --- a/core/src/main/res/mipmap-mdpi/ic_launcher.png +++ b/core/src/main/res/mipmap-mdpi/ic_launcher.png diff --git a/core/src/main/res/mipmap-mdpi/ic_launcher_background.png b/core/src/main/res/mipmap-mdpi/ic_launcher_background.png Binary files differnew file mode 100644 index 000000000..7f16ee8ba --- /dev/null +++ b/core/src/main/res/mipmap-mdpi/ic_launcher_background.png diff --git a/core/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/core/src/main/res/mipmap-mdpi/ic_launcher_foreground.png Binary files differindex 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 diff --git a/core/src/main/res/mipmap-mdpi/ic_launcher_round.png b/core/src/main/res/mipmap-mdpi/ic_launcher_round.png Binary files differindex 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 diff --git a/core/src/main/res/mipmap-xhdpi/ic_launcher.png b/core/src/main/res/mipmap-xhdpi/ic_launcher.png Binary files differindex 32b022ada..b05c50d44 100644 --- a/core/src/main/res/mipmap-xhdpi/ic_launcher.png +++ b/core/src/main/res/mipmap-xhdpi/ic_launcher.png diff --git a/core/src/main/res/mipmap-xhdpi/ic_launcher_background.png b/core/src/main/res/mipmap-xhdpi/ic_launcher_background.png Binary files differnew file mode 100644 index 000000000..170e2f72e --- /dev/null +++ b/core/src/main/res/mipmap-xhdpi/ic_launcher_background.png diff --git a/core/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/core/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png Binary files differindex 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 diff --git a/core/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/core/src/main/res/mipmap-xhdpi/ic_launcher_round.png Binary files differindex 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 diff --git a/core/src/main/res/mipmap-xxhdpi/ic_launcher.png b/core/src/main/res/mipmap-xxhdpi/ic_launcher.png Binary files differindex 321600e15..9d0116d26 100644 --- a/core/src/main/res/mipmap-xxhdpi/ic_launcher.png +++ b/core/src/main/res/mipmap-xxhdpi/ic_launcher.png diff --git a/core/src/main/res/mipmap-xxhdpi/ic_launcher_background.png b/core/src/main/res/mipmap-xxhdpi/ic_launcher_background.png Binary files differnew file mode 100644 index 000000000..adf055c06 --- /dev/null +++ b/core/src/main/res/mipmap-xxhdpi/ic_launcher_background.png diff --git a/core/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/core/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png Binary files differindex 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 diff --git a/core/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/core/src/main/res/mipmap-xxhdpi/ic_launcher_round.png Binary files differindex 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 diff --git a/core/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/core/src/main/res/mipmap-xxxhdpi/ic_launcher.png Binary files differindex ff2870dca..3c61e7dfc 100644 --- a/core/src/main/res/mipmap-xxxhdpi/ic_launcher.png +++ b/core/src/main/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/core/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png b/core/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png Binary files differnew file mode 100644 index 000000000..f0be130f2 --- /dev/null +++ b/core/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png diff --git a/core/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/core/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png Binary files differindex 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 diff --git a/core/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/core/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png Binary files differindex 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 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<br></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> |